instar 1.3.1117 → 1.3.1118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/MutualSshHealthController.d.ts +14 -2
- package/dist/core/MutualSshHealthController.d.ts.map +1 -1
- package/dist/core/MutualSshHealthController.js +59 -5
- package/dist/core/MutualSshHealthController.js.map +1 -1
- package/dist/core/MutualSshRuntime.d.ts +33 -17
- package/dist/core/MutualSshRuntime.d.ts.map +1 -1
- package/dist/core/MutualSshRuntime.js +33 -11
- package/dist/core/MutualSshRuntime.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/upgrades/1.3.1118.md +48 -0
- package/upgrades/side-effects/mutual-ssh-failure-evidence.md +170 -0
|
@@ -7,15 +7,21 @@ export interface MutualSshPairHealth {
|
|
|
7
7
|
state: 'verified' | 'repairing' | 'blocked';
|
|
8
8
|
proof?: DirectionalSshProof;
|
|
9
9
|
lastFailureClass?: MutualSshFailureClass;
|
|
10
|
+
lastFailureDetail?: string;
|
|
10
11
|
attempts: number;
|
|
11
12
|
breakerOpenUntil?: string;
|
|
12
13
|
}
|
|
14
|
+
export interface CapturedMutualSshFailure {
|
|
15
|
+
failureClass: MutualSshFailureClass;
|
|
16
|
+
/** Bounded, credential- and endpoint-scrubbed evidence from the thrown value. */
|
|
17
|
+
detail: string;
|
|
18
|
+
}
|
|
13
19
|
export interface MutualSshRepairHooks {
|
|
14
20
|
refreshAdvert(target: SshProbeTarget): Promise<void>;
|
|
15
21
|
reconcileAdmission(target: SshProbeTarget): Promise<void>;
|
|
16
22
|
rotateSourceKey(target: SshProbeTarget): Promise<void>;
|
|
17
|
-
notifySecurity(target: SshProbeTarget, failure: MutualSshFailureClass): Promise<void>;
|
|
18
|
-
notifyExhausted(target: SshProbeTarget, failure: MutualSshFailureClass): Promise<void>;
|
|
23
|
+
notifySecurity(target: SshProbeTarget, failure: MutualSshFailureClass, detail: string): Promise<void>;
|
|
24
|
+
notifyExhausted(target: SshProbeTarget, failure: MutualSshFailureClass, detail: string): Promise<void>;
|
|
19
25
|
}
|
|
20
26
|
/** Bounded detector/remediator. It emits proof signals and never chooses routing. */
|
|
21
27
|
export declare class MutualSshHealthController {
|
|
@@ -30,4 +36,10 @@ export declare class MutualSshHealthController {
|
|
|
30
36
|
health(targets: SshProbeTarget[], now?: number): MutualSshPairHealth[];
|
|
31
37
|
}
|
|
32
38
|
export declare function classifyMutualSshFailure(error: unknown): MutualSshFailureClass;
|
|
39
|
+
/**
|
|
40
|
+
* Retain the thrown evidence without exposing endpoint identity or key material.
|
|
41
|
+
* Classification deliberately runs over the original value; scrubbing affects
|
|
42
|
+
* only the operator-facing detail and can never broaden the match table.
|
|
43
|
+
*/
|
|
44
|
+
export declare function captureMutualSshFailure(error: unknown): CapturedMutualSshFailure;
|
|
33
45
|
//# sourceMappingURL=MutualSshHealthController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutualSshHealthController.d.ts","sourceRoot":"","sources":["../../src/core/MutualSshHealthController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MutualSshHealthController.d.ts","sourceRoot":"","sources":["../../src/core/MutualSshHealthController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGrG,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,SAAS,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEjO,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,qBAAqB,CAAC;IACpC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtG,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxG;AAID,qFAAqF;AAErF,qBAAa,yBAAyB;IAGxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAqB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAwB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFpI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,OAAO,CAAK;gBACS,QAAQ,EAAE,iBAAiB,EAAmB,KAAK,EAAE,oBAAoB,EAAmB,WAAW,SAAI;IAIxI,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,SAAI,EAAE,UAAU,SAAQ,EAAE,WAAW,SAAU,GAAG,IAAI;IAKzG,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAa,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAuC1F,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,GAAG,SAAa,GAAG,mBAAmB,EAAE;CAe3E;AAKD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAc9E;AAgBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAsBhF"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isIP } from 'node:net';
|
|
2
|
+
import { scrubForStore } from './durableSecretScrub.js';
|
|
1
3
|
/** Bounded detector/remediator. It emits proof signals and never chooses routing. */
|
|
2
4
|
/* @self-action-controller: mutual-ssh-repair-sweep */
|
|
3
5
|
export class MutualSshHealthController {
|
|
@@ -47,9 +49,9 @@ export class MutualSshHealthController {
|
|
|
47
49
|
// @silent-fallback-ok — a failed bounded probe is the controller's
|
|
48
50
|
// expected input: it is classified, retained in health state, and
|
|
49
51
|
// ultimately surfaced through notifyExhausted/notifySecurity.
|
|
50
|
-
current.failure =
|
|
51
|
-
if (current.failure === 'host-key-changed') {
|
|
52
|
-
await this.hooks.notifySecurity(target, current.failure);
|
|
52
|
+
current.failure = captureMutualSshFailure(error);
|
|
53
|
+
if (current.failure.failureClass === 'host-key-changed') {
|
|
54
|
+
await this.hooks.notifySecurity(target, current.failure.failureClass, current.failure.detail);
|
|
53
55
|
break;
|
|
54
56
|
}
|
|
55
57
|
if (attempt < 4)
|
|
@@ -59,7 +61,8 @@ export class MutualSshHealthController {
|
|
|
59
61
|
current.failures.push(now);
|
|
60
62
|
if (current.failures.length >= 3)
|
|
61
63
|
current.breakerUntil = now + 15 * 60_000;
|
|
62
|
-
|
|
64
|
+
const failure = current.failure ?? captureMutualSshFailure(new Error('mutual-ssh-probe-failed-without-error'));
|
|
65
|
+
await this.hooks.notifyExhausted(target, failure.failureClass, failure.detail);
|
|
63
66
|
this.state.set(key, current);
|
|
64
67
|
return null;
|
|
65
68
|
}
|
|
@@ -75,7 +78,9 @@ export class MutualSshHealthController {
|
|
|
75
78
|
return {
|
|
76
79
|
sourceMachineId: target.sourceMachineId, targetMachineId: target.targetMachineId, mutual,
|
|
77
80
|
state: mutual ? 'verified' : state.attempts > 0 ? 'repairing' : 'blocked', proof: state.proof,
|
|
78
|
-
lastFailureClass: state.failure,
|
|
81
|
+
lastFailureClass: state.failure?.failureClass,
|
|
82
|
+
lastFailureDetail: state.failure?.detail,
|
|
83
|
+
attempts: state.attempts,
|
|
79
84
|
breakerOpenUntil: state.breakerUntil ? new Date(state.breakerUntil).toISOString() : undefined,
|
|
80
85
|
};
|
|
81
86
|
});
|
|
@@ -108,6 +113,55 @@ export function classifyMutualSshFailure(error) {
|
|
|
108
113
|
return 'connect-refused';
|
|
109
114
|
return 'unknown';
|
|
110
115
|
}
|
|
116
|
+
const MUTUAL_SSH_FAILURE_DETAIL_MAX_CHARS = 512;
|
|
117
|
+
const MUTUAL_SSH_FAILURE_DETAIL_SCRUB_LIMIT = 16_384;
|
|
118
|
+
const SSH_PUBLIC_KEY_RE = /\b(?:ssh-(?:ed25519|rsa|dss)|ecdsa-sha2-nistp(?:256|384|521))\s+[A-Za-z0-9+/=]{16,}(?:\s+\S+)?/gi;
|
|
119
|
+
const HOME_PATH_RE = /\/(?:Users|home)\/[^/\s]+/g;
|
|
120
|
+
const IPV4_RE = /\b(?:\d{1,3}\.){3}\d{1,3}\b/g;
|
|
121
|
+
const IPV6_CANDIDATE_RE = /(?<![A-Za-z0-9])(\[?[0-9A-Fa-f:.]*:[0-9A-Fa-f:.]*(?:%[A-Za-z0-9_.-]+)?\]?)(?![A-Za-z0-9])/g;
|
|
122
|
+
const HOST_LABEL_PATTERN = '[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?';
|
|
123
|
+
const HOST_TOKEN_PATTERN = `${HOST_LABEL_PATTERN}(?:\\.${HOST_LABEL_PATTERN})*`;
|
|
124
|
+
const DNS_FAILURE_HOST_RE = new RegExp(`(\\b(?:getaddrinfo\\s+)?(?:ENOTFOUND|EAI_AGAIN)\\s+)(${HOST_TOKEN_PATTERN})\\b`, 'gi');
|
|
125
|
+
const LABELED_HOST_RE = new RegExp(`(\\b(?:host(?:name)?|endpoint|destination|server)\\s*[=:]\\s*)(${HOST_TOKEN_PATTERN})\\b`, 'gi');
|
|
126
|
+
const CONNECT_TO_HOST_RE = new RegExp(`(\\b(?:connect(?:ing|ed)?\\s+to(?:\\s+host)?|could not resolve hostname)\\s+)(${HOST_TOKEN_PATTERN})\\b`, 'gi');
|
|
127
|
+
const PRIVATE_HOSTNAME_RE = new RegExp(`\\b${HOST_TOKEN_PATTERN}\\.(?:internal|local|lan|home\\.arpa|ts\\.net)\\b`, 'gi');
|
|
128
|
+
const SSH_USER_HOST_RE = new RegExp(`(\\b[a-z_][a-z0-9_-]*@)(${HOST_TOKEN_PATTERN})\\b`, 'gi');
|
|
129
|
+
/**
|
|
130
|
+
* Retain the thrown evidence without exposing endpoint identity or key material.
|
|
131
|
+
* Classification deliberately runs over the original value; scrubbing affects
|
|
132
|
+
* only the operator-facing detail and can never broaden the match table.
|
|
133
|
+
*/
|
|
134
|
+
export function captureMutualSshFailure(error) {
|
|
135
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
136
|
+
const source = raw.length > 0 ? raw : '<empty error message>';
|
|
137
|
+
let detail = scrubForStore(source, { maxBytes: MUTUAL_SSH_FAILURE_DETAIL_SCRUB_LIMIT }).text;
|
|
138
|
+
detail = detail
|
|
139
|
+
.replace(SSH_PUBLIC_KEY_RE, '[REDACTED:ssh-key]')
|
|
140
|
+
.replace(HOME_PATH_RE, '<HOME>')
|
|
141
|
+
.replace(IPV4_RE, '[REDACTED:address]')
|
|
142
|
+
.replace(IPV6_CANDIDATE_RE, (whole) => isIpv6Literal(whole) ? '[REDACTED:address]' : whole)
|
|
143
|
+
.replace(DNS_FAILURE_HOST_RE, '$1[REDACTED:hostname]')
|
|
144
|
+
.replace(LABELED_HOST_RE, '$1[REDACTED:hostname]')
|
|
145
|
+
.replace(CONNECT_TO_HOST_RE, '$1[REDACTED:hostname]')
|
|
146
|
+
.replace(PRIVATE_HOSTNAME_RE, '[REDACTED:hostname]')
|
|
147
|
+
.replace(SSH_USER_HOST_RE, '$1[REDACTED:hostname]')
|
|
148
|
+
.replace(/[\u0000-\u001f\u007f]+/g, ' ')
|
|
149
|
+
.replace(/\s+/g, ' ')
|
|
150
|
+
.trim();
|
|
151
|
+
if (detail.length === 0)
|
|
152
|
+
detail = '<empty error detail after scrubbing>';
|
|
153
|
+
if (detail.length > MUTUAL_SSH_FAILURE_DETAIL_MAX_CHARS) {
|
|
154
|
+
detail = `${detail.slice(0, MUTUAL_SSH_FAILURE_DETAIL_MAX_CHARS - 1)}…`;
|
|
155
|
+
}
|
|
156
|
+
return { failureClass: classifyMutualSshFailure(error), detail };
|
|
157
|
+
}
|
|
158
|
+
function isIpv6Literal(value) {
|
|
159
|
+
let candidate = value.startsWith('[') && value.endsWith(']') ? value.slice(1, -1) : value;
|
|
160
|
+
const zone = candidate.indexOf('%');
|
|
161
|
+
if (zone >= 0)
|
|
162
|
+
candidate = candidate.slice(0, zone);
|
|
163
|
+
return isIP(candidate) === 6;
|
|
164
|
+
}
|
|
111
165
|
function hasAny(value, needles) { return needles.some(needle => value.includes(needle)); }
|
|
112
166
|
function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
|
|
113
167
|
//# sourceMappingURL=MutualSshHealthController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutualSshHealthController.js","sourceRoot":"","sources":["../../src/core/MutualSshHealthController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MutualSshHealthController.js","sourceRoot":"","sources":["../../src/core/MutualSshHealthController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DirectionalSshProof } from './MutualSshVerifier.js';
|
|
2
|
-
import { type MutualSshPairHealth } from './MutualSshHealthController.js';
|
|
2
|
+
import { type MutualSshFailureClass, type MutualSshPairHealth } from './MutualSshHealthController.js';
|
|
3
3
|
import { type SshBootstrapAdvert } from './SshBootstrapAdvert.js';
|
|
4
4
|
export interface MutualSshPeer {
|
|
5
5
|
machineId: string;
|
|
@@ -41,6 +41,36 @@ export type MutualSshWireCommand = {
|
|
|
41
41
|
type: 'ssh-proof-publish';
|
|
42
42
|
proof: DirectionalSshProof;
|
|
43
43
|
};
|
|
44
|
+
interface CapturedBootstrapFailure {
|
|
45
|
+
reason: string;
|
|
46
|
+
failureClass: MutualSshFailureClass;
|
|
47
|
+
detail: string;
|
|
48
|
+
}
|
|
49
|
+
interface NamedBootstrapFailure {
|
|
50
|
+
reason: string;
|
|
51
|
+
}
|
|
52
|
+
type BootstrapFailure = CapturedBootstrapFailure | NamedBootstrapFailure;
|
|
53
|
+
export type MutualSshBootstrapFailureStatus = BootstrapFailure & {
|
|
54
|
+
machineId: string;
|
|
55
|
+
};
|
|
56
|
+
export interface MutualSshRuntimeStatus {
|
|
57
|
+
enabled: true;
|
|
58
|
+
dryRun: boolean;
|
|
59
|
+
listener: boolean;
|
|
60
|
+
readinessRequired: boolean;
|
|
61
|
+
ready: boolean;
|
|
62
|
+
enrollmentState: 'paired' | 'ssh-bootstrap' | 'ssh-bootstrap-blocked' | 'ssh-proving' | 'ready';
|
|
63
|
+
blockedReasons: string[];
|
|
64
|
+
directions: MutualSshPairHealth[];
|
|
65
|
+
pairs: Array<{
|
|
66
|
+
machines: string[];
|
|
67
|
+
mutual: boolean;
|
|
68
|
+
standingKeyInstalled: boolean;
|
|
69
|
+
standingReachable: boolean;
|
|
70
|
+
}>;
|
|
71
|
+
/** Present only when caught bootstrap errors exist, preserving healthy/single-machine output. */
|
|
72
|
+
bootstrapFailures?: MutualSshBootstrapFailureStatus[];
|
|
73
|
+
}
|
|
44
74
|
/** Production coordinator for endpoint lifecycle, signed adverts, directional probes and rollback. */
|
|
45
75
|
export declare class MutualSshRuntime {
|
|
46
76
|
private readonly d;
|
|
@@ -79,22 +109,7 @@ export declare class MutualSshRuntime {
|
|
|
79
109
|
};
|
|
80
110
|
/** Delayed journal delivery is observational only and fails closed when stale. */
|
|
81
111
|
handleJournalProof(raw: unknown, authenticatedSender: string): boolean;
|
|
82
|
-
status():
|
|
83
|
-
enabled: true;
|
|
84
|
-
dryRun: boolean;
|
|
85
|
-
listener: boolean;
|
|
86
|
-
readinessRequired: boolean;
|
|
87
|
-
ready: boolean;
|
|
88
|
-
enrollmentState: 'paired' | 'ssh-bootstrap' | 'ssh-bootstrap-blocked' | 'ssh-proving' | 'ready';
|
|
89
|
-
blockedReasons: string[];
|
|
90
|
-
directions: MutualSshPairHealth[];
|
|
91
|
-
pairs: Array<{
|
|
92
|
-
machines: string[];
|
|
93
|
-
mutual: boolean;
|
|
94
|
-
standingKeyInstalled: boolean;
|
|
95
|
-
standingReachable: boolean;
|
|
96
|
-
}>;
|
|
97
|
-
};
|
|
112
|
+
status(): MutualSshRuntimeStatus;
|
|
98
113
|
revoke(machineId: string): void;
|
|
99
114
|
rollback(): Promise<void>;
|
|
100
115
|
private startEndpoint;
|
|
@@ -118,4 +133,5 @@ export declare class MutualSshRuntime {
|
|
|
118
133
|
private invalidatePersistedProofs;
|
|
119
134
|
private persistProofs;
|
|
120
135
|
}
|
|
136
|
+
export {};
|
|
121
137
|
//# sourceMappingURL=MutualSshRuntime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutualSshRuntime.d.ts","sourceRoot":"","sources":["../../src/core/MutualSshRuntime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmD,KAAK,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AACxI,OAAO,
|
|
1
|
+
{"version":3,"file":"MutualSshRuntime.d.ts","sourceRoot":"","sources":["../../src/core/MutualSshRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,21 @@ import { createHash, randomUUID } from 'node:crypto';
|
|
|
4
4
|
import { MachineSshIdentity } from './MachineSshIdentity.js';
|
|
5
5
|
import { MachineSshEndpoint } from './MachineSshEndpoint.js';
|
|
6
6
|
import { MutualSshVerifier, canonicalDirectionalSshProof } from './MutualSshVerifier.js';
|
|
7
|
-
import { MutualSshHealthController,
|
|
7
|
+
import { MutualSshHealthController, captureMutualSshFailure, } from './MutualSshHealthController.js';
|
|
8
8
|
import { MutualSshProbeScheduler } from './MutualSshProbeScheduler.js';
|
|
9
9
|
import { SshPeerAdmissionStore } from './SshPeerAdmissionStore.js';
|
|
10
10
|
import { SshHostKeyLifecycle, canonicalHostKeyProposal } from './SshHostKeyLifecycle.js';
|
|
11
11
|
import { canonicalSshBootstrapAdvert, validateSshBootstrapAdvert } from './SshBootstrapAdvert.js';
|
|
12
12
|
import { PeerAuthorizedKeys } from './PeerAuthorizedKeys.js';
|
|
13
13
|
import { StandingSshVerifier } from './StandingSshVerifier.js';
|
|
14
|
+
function capturedBootstrapFailure(error, prefix) {
|
|
15
|
+
const captured = captureMutualSshFailure(error);
|
|
16
|
+
return {
|
|
17
|
+
reason: prefix ? `${prefix}:${captured.failureClass}` : captured.failureClass,
|
|
18
|
+
failureClass: captured.failureClass,
|
|
19
|
+
detail: captured.detail,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
14
22
|
/** Production coordinator for endpoint lifecycle, signed adverts, directional probes and rollback. */
|
|
15
23
|
export class MutualSshRuntime {
|
|
16
24
|
d;
|
|
@@ -57,8 +65,8 @@ export class MutualSshRuntime {
|
|
|
57
65
|
target.expectedSourceClientKeyFingerprint = MachineSshIdentity.fingerprint(this.identity.clientPublicKey);
|
|
58
66
|
await this.exchangeAdvert(target.targetMachineId);
|
|
59
67
|
},
|
|
60
|
-
notifySecurity: async (target) => this.d.notifySecurity?.({ type: 'host-key-change', target: target.targetMachineId }),
|
|
61
|
-
notifyExhausted: async (target, failure) => this.audit({ type: 'repair-exhausted', target: target.targetMachineId, failure }),
|
|
68
|
+
notifySecurity: async (target, _failure, detail) => this.d.notifySecurity?.({ type: 'host-key-change', target: target.targetMachineId, detail }),
|
|
69
|
+
notifyExhausted: async (target, failure, detail) => this.audit({ type: 'repair-exhausted', target: target.targetMachineId, failure, detail }),
|
|
62
70
|
}, concurrency);
|
|
63
71
|
this.proofFile = path.join(d.stateDir, 'machine-ssh', 'directional-proofs.json');
|
|
64
72
|
this.peerAuthorizedKeys = d.peerExecution ? new PeerAuthorizedKeys(d.peerExecution.agentHome, d.peerExecution.dryRun) : null;
|
|
@@ -115,7 +123,7 @@ export class MutualSshRuntime {
|
|
|
115
123
|
catch (error) {
|
|
116
124
|
// @silent-fallback-ok — an advert exchange failure is retained as a
|
|
117
125
|
// named readiness blocker and retried on the next bounded sweep.
|
|
118
|
-
this.bootstrapFailures.set(peer.machineId,
|
|
126
|
+
this.bootstrapFailures.set(peer.machineId, capturedBootstrapFailure(error));
|
|
119
127
|
}
|
|
120
128
|
}
|
|
121
129
|
if (this.d.dryRun) {
|
|
@@ -215,7 +223,7 @@ export class MutualSshRuntime {
|
|
|
215
223
|
standingKeyInstalled = Boolean(advert && this.peerAuthorizedKeys?.has(this.authorizedKey(advert)));
|
|
216
224
|
}
|
|
217
225
|
catch (error) {
|
|
218
|
-
this.bootstrapFailures.set(peer.machineId,
|
|
226
|
+
this.bootstrapFailures.set(peer.machineId, capturedBootstrapFailure(error, 'standing-key-store'));
|
|
219
227
|
}
|
|
220
228
|
return {
|
|
221
229
|
machines: [this.d.selfMachineId, peer.machineId],
|
|
@@ -232,13 +240,27 @@ export class MutualSshRuntime {
|
|
|
232
240
|
const standingReady = !standingRequired || pairs.every(pair => pair.mutual && pair.standingKeyInstalled && pair.standingReachable);
|
|
233
241
|
const combinedReadinessRequired = readinessRequired || standingRequired;
|
|
234
242
|
const ready = !combinedReadinessRequired || (proofReady && standingReady);
|
|
235
|
-
const blockedReasons = [...this.bootstrapFailures.values()];
|
|
243
|
+
const blockedReasons = [...this.bootstrapFailures.values()].map(failure => failure.reason);
|
|
236
244
|
if (standingRequired)
|
|
237
245
|
for (const pair of pairs)
|
|
238
246
|
if (!pair.mutual || !pair.standingKeyInstalled || !pair.standingReachable)
|
|
239
247
|
blockedReasons.push(`standing-key-unreachable:${pair.machines[1]}`);
|
|
240
248
|
const enrollmentState = this.stopped || peerCount === 0 ? 'ready' : this.bootstrapFailures.size > 0 || (combinedReadinessRequired && !standingReady) ? 'ssh-bootstrap-blocked' : this.d.dryRun || this.adverts.size < peerCount || !this.endpoint ? 'ssh-bootstrap' : proofReady ? 'ready' : 'ssh-proving';
|
|
241
|
-
|
|
249
|
+
const capturedFailures = [...this.bootstrapFailures.entries()]
|
|
250
|
+
.flatMap(([machineId, failure]) => 'detail' in failure ? [{ machineId, ...failure }] : [])
|
|
251
|
+
.sort((a, b) => a.machineId.localeCompare(b.machineId) || a.reason.localeCompare(b.reason));
|
|
252
|
+
return {
|
|
253
|
+
enabled: true,
|
|
254
|
+
dryRun: this.d.dryRun,
|
|
255
|
+
listener: this.endpoint !== null,
|
|
256
|
+
readinessRequired: combinedReadinessRequired,
|
|
257
|
+
ready,
|
|
258
|
+
enrollmentState,
|
|
259
|
+
blockedReasons: [...new Set(blockedReasons)].sort(),
|
|
260
|
+
directions,
|
|
261
|
+
pairs,
|
|
262
|
+
...(capturedFailures.length > 0 ? { bootstrapFailures: capturedFailures } : {}),
|
|
263
|
+
};
|
|
242
264
|
}
|
|
243
265
|
revoke(machineId) {
|
|
244
266
|
this.clearPeerEvidence(machineId);
|
|
@@ -291,7 +313,7 @@ export class MutualSshRuntime {
|
|
|
291
313
|
});
|
|
292
314
|
this.endpoint = null;
|
|
293
315
|
this.listen = null;
|
|
294
|
-
this.bootstrapFailures.set(this.d.selfMachineId,
|
|
316
|
+
this.bootstrapFailures.set(this.d.selfMachineId, capturedBootstrapFailure(error));
|
|
295
317
|
}
|
|
296
318
|
}
|
|
297
319
|
localAdvert(pairingEpoch) {
|
|
@@ -437,7 +459,7 @@ export class MutualSshRuntime {
|
|
|
437
459
|
this.bootstrapFailures.delete(machineId);
|
|
438
460
|
}
|
|
439
461
|
catch (error) {
|
|
440
|
-
this.bootstrapFailures.set(machineId,
|
|
462
|
+
this.bootstrapFailures.set(machineId, capturedBootstrapFailure(error, 'standing-key-store'));
|
|
441
463
|
}
|
|
442
464
|
}
|
|
443
465
|
async probeStandingAccess(machineId) {
|
|
@@ -446,7 +468,7 @@ export class MutualSshRuntime {
|
|
|
446
468
|
const advert = this.adverts.get(machineId);
|
|
447
469
|
if (!advert?.standingSsh) {
|
|
448
470
|
this.standingEvidence.delete(machineId);
|
|
449
|
-
this.bootstrapFailures.set(machineId, 'standing-ssh-endpoint-missing');
|
|
471
|
+
this.bootstrapFailures.set(machineId, { reason: 'standing-ssh-endpoint-missing' });
|
|
450
472
|
return;
|
|
451
473
|
}
|
|
452
474
|
try {
|
|
@@ -459,7 +481,7 @@ export class MutualSshRuntime {
|
|
|
459
481
|
}
|
|
460
482
|
catch (error) {
|
|
461
483
|
this.standingEvidence.delete(machineId);
|
|
462
|
-
this.bootstrapFailures.set(machineId,
|
|
484
|
+
this.bootstrapFailures.set(machineId, capturedBootstrapFailure(error, 'standing-ssh'));
|
|
463
485
|
}
|
|
464
486
|
}
|
|
465
487
|
authorizedKey(advert) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutualSshRuntime.js","sourceRoot":"","sources":["../../src/core/MutualSshRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAiD,MAAM,wBAAwB,CAAC;AACxI,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAA4B,MAAM,gCAAgC,CAAC;AAC/H,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAA2B,MAAM,yBAAyB,CAAC;AAC3H,OAAO,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAuC/D,sGAAsG;AACtG,MAAM,OAAO,gBAAgB;IA0BE;IAzBZ,eAAe,CAAqB;IACpC,cAAc,CAAwB;IACtC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACnC,UAAU,CAA4B;IACtC,SAAS,CAA0B;IAC5C,QAAQ,CAA4B;IACpC,QAAQ,GAA8B,IAAI,CAAC;IAC3C,MAAM,GAA0C,IAAI,CAAC;IAC5C,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;IAChD,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;IACzD,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IAClD,MAAM,GAAG,IAAI,GAAG,EAA+B,CAAC;IAChD,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,GAA0B,IAAI,CAAC;IACpC,gBAAgB,GAA0B,IAAI,CAAC;IAC/C,iBAAiB,GAAG,IAAI,CAAC;IACzB,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;IACP,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,SAAS,CAAS;IAClB,kBAAkB,CAA4B;IAC9C,gBAAgB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC7C,gBAAgB,GAAG,IAAI,GAAG,EAAsD,CAAC;IAElG,YAA6B,CAAuB;QAAvB,MAAC,GAAD,CAAC,CAAsB;QAClD,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;QACvC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACpG,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAuB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC7D,aAAa,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACrF,kBAAkB,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,MAAM;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxI,eAAe,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;gBAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,MAAM,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAClE,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACjE,MAAM,CAAC,kCAAkC,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC1G,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YACpD,CAAC;YACD,cAAc,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;YACpH,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;SAC9H,EAAE,WAAW,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAC;QACjF,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7H,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,0EAA0E;YAC1E,gDAAgD;YAChD,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACvH,IAAI,MAAM,CAAC,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAClE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,eAAe,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,eAAe,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC3I,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACpF,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,EAAE,cAAc,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC/I,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;gBAChC,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;oBAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;oBAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACzF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjG,KAAK,MAAM,SAAS,IAAI,WAAW;gBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAAC,CAAC;gBACjG,OAAO,KAAK,EAAE,CAAC;oBACb,oEAAoE;oBACpE,iEAAiE;oBACjE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YACzF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/G,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAC,SAAS,EAAC,EAAE;gBAC/P,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,eAAe,CAAC,CAAC;gBAC3I,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,KAAK;oBAAE,OAAO;gBACnB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACjF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC9C,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAAC,CAAC;IACrC,CAAC;IAED,YAAY,CAAC,GAAY,EAAE,mBAA2B;QACpD,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpF,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1J,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,mBAAmB,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,WAAW,CAAC,GAAY,EAAE,mBAA2B;QACnD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,GAA0B,CAAC;QACzC,IAAI,KAAK,CAAC,eAAe,KAAK,mBAAmB,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACnM,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC;YAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3P,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,uBAAuB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1I,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,mBAAmB,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACnG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,mBAAmB,KAAK,KAAK,CAAC,yBAAyB;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACzL,IAAI,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5H,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC1G,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrJ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,mBAAmB,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAClK,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,kFAAkF;IAClF,kBAAkB,CAAC,GAAY,EAAE,mBAA2B;QAC1D,IAAI,CAAC;YAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAChE,OAAO,KAAK,EAAE,CAAC;YACb,wEAAwE;YACxE,0EAA0E;YAC1E,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YACjJ,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5H,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrK,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBACnF,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE;gBAC/B,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;gBACpE,uBAAuB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACxI,qBAAqB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;aACnI,CAAC,CAAC,CAAC;YACJ,IAAI,oBAAoB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC;gBAAC,oBAAoB,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAC3G,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YACtH,OAAO;gBACL,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;gBAChD,MAAM;gBACN,oBAAoB;gBACpB,iBAAiB,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAS,GAAG,WAAW,CAAC,GAAG,EAAE;uBACxG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;aACpG,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;QACpG,MAAM,UAAU,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvG,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAChF,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,oBAAoB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;QAC7G,MAAM,aAAa,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACnI,MAAM,yBAAyB,GAAG,iBAAiB,IAAI,gBAAgB,CAAC;QACxE,MAAM,KAAK,GAAG,CAAC,yBAAyB,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,gBAAgB;YAAE,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,iBAAiB;oBAAE,cAAc,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/L,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;QAC3S,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAClO,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,gBAAgB;YAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC;YACrC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc;YACzF,mBAAmB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClL,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB;YAClF,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc;YAC5C,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;gBAChC,MAAM,QAAQ,GAAG,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAAE,0BAA0B,EAAE,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvM,OAAO,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC;YACjZ,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjG,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvF,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,sEAAsE;YACtE,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtC,wEAAwE;gBACxE,wEAAwE;YAC1E,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,YAAoB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY;YACtE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC;YAC9F,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ;SACjD,CAAC,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,QAAQ,GAAiD;YAC7D,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY;YACtE,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;YAC1F,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC/F,iBAAiB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC3J,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE;YACnG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E,CAAC;QACF,OAAO,EAAE,GAAG,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC/F,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAyB,CAAC;QACrJ,IAAI,QAAQ,EAAE,MAAM;YAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAEO,aAAa,CAAC,MAA0B;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC3Q,IAAI,KAAK,IAAI,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YAC5H,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAClF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,sCAAsC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1I,CAAC;QACD,IAAI,KAAK,IAAI,MAAM,CAAC,iBAAiB,KAAK,KAAK,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAAC,CAAC;QAC3Q,IAAI,KAAK,IAAI,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,0BAA0B;gBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACrG,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;gBACvF,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,CAAC,iBAAiB;gBACjF,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,0BAA0B;aACvH,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAC1B,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC;gBAC1G,kBAAkB,EAAE,GAAG,EAAE,CAAC,KAAK;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC7H,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1T,CAAC;IAEO,SAAS,CAAC,IAAmB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7F,MAAM,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS;YACtE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACzK,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc;YACtE,yBAAyB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,CAAC,iBAAiB;YAC5G,mBAAmB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB;YAC1G,0BAA0B,EAAE,IAAI,CAAC,kBAAkB;YACnD,kCAAkC,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjG,qBAAqB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;YAChG,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3C,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,KAA0B,EAAE,MAAc;QAC5D,IAAI,KAAK,CAAC,eAAe,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC9H,CAAC;IAEO,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,iBAAiB,KAAK,UAAU;YAAE,OAAO;QACnF,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,CAAC,mBAAmB,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACpS,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAEO,iBAAiB,CAAC,SAAiB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,OAAO,EAAE,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3I,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,sBAAsB,CAAC,SAAiB;QAC9C,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAAE,OAAO;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY;YAAE,OAAO;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;YACvD,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE;YAC/B,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YACpE,uBAAuB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACnI,qBAAqB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;SAC9H,CAAC;YAAE,OAAO;QACX,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7E,IAAI,MAAM,CAAC,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,sBAAsB,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM;YAAE,OAAO;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;YACvH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE;gBACnC,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC;gBAC7D,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;aAChD,CAAC,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,MAA0B;QAC9C,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,SAAS,EAAE,MAAM,CAAC,eAAe;SAClC,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,MAA0B;QACrD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;SACxC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B;YAAE,OAAO;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC;QAC/I,CAAC,CAAC,CAAC;QACH,IAAI,SAAS;YAAE,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACpD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,gBAAgB;YAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IACnG,CAAC;IAEO,UAAU,CAAC,KAAsC;QACvD,OAAO,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS,IAAI,KAAK,CAAC,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClK,CAAC;IACO,GAAG,CAAC,MAAc,EAAE,MAAc,IAAY,OAAO,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,KAAK,CAAC,KAA8B,IAAU,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3G,yBAAyB;QAC/B,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACtG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAiB,CAAC;YACpE,8EAA8E;YAC9E,gFAAgF;YAChF,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;IAC1F,CAAC;IAEO,aAAa;QACnB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvI,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/K,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF;AAED,SAAS,UAAU,CAAC,IAAY,IAAa,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"MutualSshRuntime.js","sourceRoot":"","sources":["../../src/core/MutualSshRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1118",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/canonical-migration-contracts.json",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "c7e902a39e0b11d13f2e944eb2e7fb456858b384ef87d087feedb415cf638749",
|
|
3
3
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1118"
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-08-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-08-03T03:59:59.738Z",
|
|
5
|
+
"instarVersion": "1.3.1118",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1118",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/canonical-migration-contracts.json",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "c7e902a39e0b11d13f2e944eb2e7fb456858b384ef87d087feedb415cf638749",
|
|
3
3
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1118"
|
|
5
5
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Mutual SSH enrollment now retains a structured failure record whenever an
|
|
9
|
+
endpoint, advert exchange, standing-key write, or standing-access probe throws.
|
|
10
|
+
The record keeps the existing failure class and adds the original error detail
|
|
11
|
+
after a deterministic privacy pass and a 512-character bound. The privacy pass
|
|
12
|
+
removes known credential shapes, private and public SSH key material, home
|
|
13
|
+
directory identities, IP addresses, and hostnames identified in SSH/DNS
|
|
14
|
+
endpoint contexts. Dotted JavaScript identifiers and filenames remain visible
|
|
15
|
+
rather than being mistaken for machines.
|
|
16
|
+
|
|
17
|
+
The classifier table is unchanged. Existing blocked-reason strings and
|
|
18
|
+
readiness calculations are unchanged. Healthy status responses, including the
|
|
19
|
+
single-machine case, do not gain an empty field; the new diagnostic array is
|
|
20
|
+
present only when caught failure evidence exists.
|
|
21
|
+
|
|
22
|
+
## What to Tell Your User
|
|
23
|
+
|
|
24
|
+
- “When secure machine-to-machine setup hits an error Instar does not recognize,
|
|
25
|
+
its status now keeps a safe diagnostic clue instead of reducing everything to
|
|
26
|
+
the word unknown.”
|
|
27
|
+
- “Machine names and SSH key material are removed before that clue is shown, and
|
|
28
|
+
the clue has a strict size limit.”
|
|
29
|
+
- “This does not change whether secure access is enabled or ready; it only makes
|
|
30
|
+
a real setup failure diagnosable.”
|
|
31
|
+
|
|
32
|
+
## Summary of New Capabilities
|
|
33
|
+
|
|
34
|
+
| Capability | How to Use |
|
|
35
|
+
|-----------|------------|
|
|
36
|
+
| Safe mutual SSH failure evidence | Read the existing mutual SSH status surface when enrollment is blocked |
|
|
37
|
+
| Unknown-class diagnosis without a new classifier rule | Use the attached bounded detail to identify the real cause |
|
|
38
|
+
|
|
39
|
+
## Evidence
|
|
40
|
+
|
|
41
|
+
The regression test first failed on the unmodified source with the exact live
|
|
42
|
+
shape: listener false, enrollment blocked, and a single unknown reason with no
|
|
43
|
+
failure record. After the change, the same forced unknown listener failure
|
|
44
|
+
surfaces its class plus a detail while removing a fixture hostname and a fixture
|
|
45
|
+
private key, preserving dotted JavaScript diagnostics, redacting IPv4/IPv6 and
|
|
46
|
+
bare/dotted endpoint identities, and enforcing the 512-character bound. Both
|
|
47
|
+
mutual SSH unit suites pass together: 18 tests across the hardened lifecycle and bootstrap security
|
|
48
|
+
invariants. TypeScript no-emit checking also passes.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Side-Effects Review — Mutual SSH failure evidence
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `mutual-ssh-failure-evidence`
|
|
4
|
+
**Date:** `2026-08-02`
|
|
5
|
+
**Author:** `Instar Agent (instar-codey)`
|
|
6
|
+
**Second-pass reviewer:** `/root/ssh_failure_review` (concurred after fixes)
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
`src/core/MutualSshHealthController.ts` now captures every classified SSH
|
|
11
|
+
failure as a class plus a bounded, privacy-scrubbed detail. `src/core/MutualSshRuntime.ts`
|
|
12
|
+
retains that object for caught bootstrap failures and adds it to the existing
|
|
13
|
+
status surface only when evidence exists. Existing blocked-reason strings,
|
|
14
|
+
retry behavior, and readiness calculations are preserved.
|
|
15
|
+
|
|
16
|
+
## Decision-point inventory
|
|
17
|
+
|
|
18
|
+
- `classifyMutualSshFailure` — pass-through — the existing classifier and every
|
|
19
|
+
match rule remain byte-identical; the change retains evidence beside its result.
|
|
20
|
+
- `MutualSshRuntime.status` readiness projection — pass-through — the existing
|
|
21
|
+
readiness and enrollment-state expressions are unchanged.
|
|
22
|
+
- Failure-detail privacy transform — add — deterministic structural scrubbing
|
|
23
|
+
controls what evidence may cross the operator-facing status/audit boundary.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 1. Over-block
|
|
28
|
+
|
|
29
|
+
No block/allow surface — over-block is not applicable. The change does not
|
|
30
|
+
reject a bootstrap, advert, key, proof, or peer-execution input.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. Under-block
|
|
35
|
+
|
|
36
|
+
No block/allow surface — under-block is not applicable. Privacy scrubbing is a
|
|
37
|
+
separate under-redaction risk: novel endpoint encodings may not match the
|
|
38
|
+
contextual patterns. Known credential shapes and SSH key material are scrubbed
|
|
39
|
+
first; IPv4, IPv6, DNS-failure hostnames, private-network suffixes, and labeled
|
|
40
|
+
SSH endpoints are covered; and the detail is bounded. The status already names
|
|
41
|
+
the machine associated with the failure. This change does not claim arbitrary
|
|
42
|
+
secret detection.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3. Level-of-abstraction fit
|
|
47
|
+
|
|
48
|
+
Evidence capture belongs beside the existing classifier because every caller
|
|
49
|
+
needs the same invariant: a class summarizes the error and never replaces it.
|
|
50
|
+
The helper reuses the shared durable-secret scrubber rather than creating a new
|
|
51
|
+
credential-pattern list, then applies SSH-specific endpoint/key removals that the
|
|
52
|
+
generic scrubber does not own. Runtime status remains the projection layer; it
|
|
53
|
+
does not learn new classification logic.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 4. Signal vs authority compliance
|
|
58
|
+
|
|
59
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
60
|
+
|
|
61
|
+
- [ ] No — this change produces a signal consumed by an existing smart gate.
|
|
62
|
+
- [x] No — this change has no block/allow surface.
|
|
63
|
+
- [ ] Yes — but the logic is a smart gate with full conversational context.
|
|
64
|
+
- [ ] ⚠️ Yes, with brittle logic — STOP.
|
|
65
|
+
|
|
66
|
+
The substring classifier remains a diagnostic signal. This change neither
|
|
67
|
+
grants it new authority nor uses the retained detail to alter readiness,
|
|
68
|
+
routing, admission, or peer execution.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 4b. Judgment-point check (Judgment Within Floors standard)
|
|
73
|
+
|
|
74
|
+
No new static heuristic at a competing-signals decision point. The new logic is
|
|
75
|
+
a structural information-disclosure bound over an already-caught error; its
|
|
76
|
+
domain is a fixed safety invariant, not a judgment among live signals.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 5. Interactions
|
|
81
|
+
|
|
82
|
+
- **Shadowing:** none. Classification occurs on the original thrown value before
|
|
83
|
+
the detail is scrubbed, so scrubbing cannot shadow an existing class match.
|
|
84
|
+
- **Double-fire:** none. One caught error produces one retained object at the
|
|
85
|
+
same call site that previously stored one string.
|
|
86
|
+
- **Races:** map keys and deletion/retry points are unchanged. A later successful
|
|
87
|
+
bootstrap still deletes the same machine-keyed failure entry.
|
|
88
|
+
- **Feedback loops:** none. The detail is observational and never feeds the
|
|
89
|
+
classifier, retry controller, readiness expression, or peer-execution gate.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 6. External surfaces
|
|
94
|
+
|
|
95
|
+
The existing mutual SSH status gains an optional `bootstrapFailures` array only
|
|
96
|
+
when caught evidence exists. Repair-direction health can now include
|
|
97
|
+
`lastFailureDetail`, and the existing exhaustion/security callbacks receive the
|
|
98
|
+
same scrubbed detail. No database or file format changes. No new operator action,
|
|
99
|
+
notification channel, route, timing dependency, or external service is added.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 6b. Operator-surface quality (Operator-Surface Quality standard)
|
|
104
|
+
|
|
105
|
+
No dashboard, approval, grant, revoke, or form surface is touched. The existing
|
|
106
|
+
machine-readable status remains the diagnostic surface, so this section is not
|
|
107
|
+
applicable.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
112
|
+
|
|
113
|
+
**Machine-local BY DESIGN:** a listener or SSH bootstrap error is a physical
|
|
114
|
+
truth about the machine on which it occurred. The existing per-machine status
|
|
115
|
+
continues to own it; this change does not replicate a local error as if it were a
|
|
116
|
+
peer's observation. It emits no user-facing notice, holds no durable state that
|
|
117
|
+
can strand on topic transfer, and generates no URL. Pool-level tooling may read
|
|
118
|
+
each machine's existing status, but no merged authority is introduced here.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 8. Rollback cost
|
|
123
|
+
|
|
124
|
+
Pure code and response-shape addition. Revert the source and test changes and
|
|
125
|
+
ship the next patch. No data migration, key rotation, agent-state repair, or
|
|
126
|
+
operator action is required. During rollback, unknown failures return to the old
|
|
127
|
+
less-diagnostic string-only surface.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Conclusion
|
|
132
|
+
|
|
133
|
+
The design preserves every existing authority boundary and retry/readiness
|
|
134
|
+
behavior while closing the evidence-loss seam. The main residual is ordinary
|
|
135
|
+
best-effort redaction coverage, bounded by the shared credential scrubber,
|
|
136
|
+
contextual SSH-specific patterns, the strict length limit, and a failing-before
|
|
137
|
+
privacy regression. The independent reviewer concurred after the initial
|
|
138
|
+
privacy findings were fixed.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Second-pass review (if required)
|
|
143
|
+
|
|
144
|
+
**Reviewer:** `/root/ssh_failure_review`
|
|
145
|
+
**Independent read of the artifact:** Initial read found broad dotted-token
|
|
146
|
+
redaction, missing bare-host/IPv6 coverage, an empty-detail edge case, and a
|
|
147
|
+
repair-controller coverage gap. The implementation now uses contextual endpoint
|
|
148
|
+
patterns, covers bare DNS failures and IPv6, guarantees a nonempty detail, and
|
|
149
|
+
asserts controller projection/callback detail. On re-review, the reviewer ran
|
|
150
|
+
the focused 18-test lane and TypeScript no-emit check, confirmed every finding
|
|
151
|
+
closed, and concurred with no remaining material issue.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Evidence pointers
|
|
156
|
+
|
|
157
|
+
- `tests/unit/mutual-ssh-hardening.test.ts` — listener-failure reproduction,
|
|
158
|
+
unknown-class evidence, contextual hostname/IP/private-key scrubbing, dotted
|
|
159
|
+
JavaScript identifier preservation, size bound, and healthy single-machine
|
|
160
|
+
compatibility.
|
|
161
|
+
- `tests/unit/mutual-ssh-autobootstrap.test.ts` — repair-controller regression
|
|
162
|
+
suite.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Class-Closure Declaration (display-only mirror)
|
|
167
|
+
|
|
168
|
+
No agent-authored-artifact defect — not applicable. This is an ordinary runtime
|
|
169
|
+
source defect, not a prompt, hook, configuration, skill, standards-text, or
|
|
170
|
+
self-triggered-controller class-closure change.
|