openchrome-mcp 1.10.0 → 1.10.2
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/README.md +3 -0
- package/dist/browser-state/snapshot.d.ts +12 -0
- package/dist/browser-state/snapshot.d.ts.map +1 -1
- package/dist/browser-state/snapshot.js +39 -7
- package/dist/browser-state/snapshot.js.map +1 -1
- package/dist/cdp/client.d.ts +31 -1
- package/dist/cdp/client.d.ts.map +1 -1
- package/dist/cdp/client.js +181 -35
- package/dist/cdp/client.js.map +1 -1
- package/dist/cdp/tab-health-monitor.d.ts +16 -1
- package/dist/cdp/tab-health-monitor.d.ts.map +1 -1
- package/dist/cdp/tab-health-monitor.js +47 -12
- package/dist/cdp/tab-health-monitor.js.map +1 -1
- package/dist/chrome/headed-fallback.d.ts +1 -0
- package/dist/chrome/headed-fallback.d.ts.map +1 -1
- package/dist/chrome/headed-fallback.js +32 -6
- package/dist/chrome/headed-fallback.js.map +1 -1
- package/dist/chrome/launcher.d.ts.map +1 -1
- package/dist/chrome/launcher.js +9 -2
- package/dist/chrome/launcher.js.map +1 -1
- package/dist/chrome/process-watchdog.d.ts +18 -0
- package/dist/chrome/process-watchdog.d.ts.map +1 -1
- package/dist/chrome/process-watchdog.js +42 -8
- package/dist/chrome/process-watchdog.js.map +1 -1
- package/dist/dashboard/types.d.ts +1 -1
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/desktop/dashboard-state.d.ts +2 -2
- package/dist/desktop/dashboard-state.d.ts.map +1 -1
- package/dist/desktop/dashboard-state.js.map +1 -1
- package/dist/index.js +143 -7
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +26 -9
- package/dist/mcp-server.js.map +1 -1
- package/dist/metrics/collector.d.ts.map +1 -1
- package/dist/metrics/collector.js +3 -0
- package/dist/metrics/collector.js.map +1 -1
- package/dist/orchestration/workflow-engine.d.ts.map +1 -1
- package/dist/orchestration/workflow-engine.js +6 -3
- package/dist/orchestration/workflow-engine.js.map +1 -1
- package/dist/security/audit-logger.d.ts +4 -0
- package/dist/security/audit-logger.d.ts.map +1 -1
- package/dist/security/audit-logger.js +5 -1
- package/dist/security/audit-logger.js.map +1 -1
- package/dist/session-manager.d.ts +12 -0
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +42 -4
- package/dist/session-manager.js.map +1 -1
- package/dist/session-state-persistence.d.ts +17 -0
- package/dist/session-state-persistence.d.ts.map +1 -1
- package/dist/session-state-persistence.js +36 -1
- package/dist/session-state-persistence.js.map +1 -1
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +14 -2
- package/dist/transports/http.js.map +1 -1
- package/dist/utils/health-endpoint-gating.d.ts +19 -0
- package/dist/utils/health-endpoint-gating.d.ts.map +1 -0
- package/dist/utils/health-endpoint-gating.js +28 -0
- package/dist/utils/health-endpoint-gating.js.map +1 -0
- package/dist/utils/idle-state.d.ts +62 -0
- package/dist/utils/idle-state.d.ts.map +1 -0
- package/dist/utils/idle-state.js +88 -0
- package/dist/utils/idle-state.js.map +1 -0
- package/dist/utils/idle-timeout.d.ts +69 -0
- package/dist/utils/idle-timeout.d.ts.map +1 -0
- package/dist/utils/idle-timeout.js +139 -0
- package/dist/utils/idle-timeout.js.map +1 -0
- package/dist/utils/parent-watcher.d.ts +33 -0
- package/dist/utils/parent-watcher.d.ts.map +1 -0
- package/dist/utils/parent-watcher.js +78 -0
- package/dist/utils/parent-watcher.js.map +1 -0
- package/dist/utils/pid-manager.d.ts +1 -0
- package/dist/utils/pid-manager.d.ts.map +1 -1
- package/dist/utils/pid-manager.js +26 -1
- package/dist/utils/pid-manager.js.map +1 -1
- package/dist/utils/process-guardian.d.ts +11 -0
- package/dist/utils/process-guardian.d.ts.map +1 -0
- package/dist/utils/process-guardian.js +110 -0
- package/dist/utils/process-guardian.js.map +1 -0
- package/dist/utils/safe-listener.d.ts +5 -0
- package/dist/utils/safe-listener.d.ts.map +1 -1
- package/dist/utils/safe-listener.js +42 -0
- package/dist/utils/safe-listener.js.map +1 -1
- package/dist/watchdog/chrome-monitor.d.ts +16 -0
- package/dist/watchdog/chrome-monitor.d.ts.map +1 -1
- package/dist/watchdog/chrome-monitor.js +35 -3
- package/dist/watchdog/chrome-monitor.js.map +1 -1
- package/dist/watchdog/disk-monitor.d.ts +17 -0
- package/dist/watchdog/disk-monitor.d.ts.map +1 -1
- package/dist/watchdog/disk-monitor.js +41 -8
- package/dist/watchdog/disk-monitor.js.map +1 -1
- package/dist/watchdog/event-loop-monitor.d.ts +23 -0
- package/dist/watchdog/event-loop-monitor.d.ts.map +1 -1
- package/dist/watchdog/event-loop-monitor.js +61 -25
- package/dist/watchdog/event-loop-monitor.js.map +1 -1
- package/dist/watchdog/health-endpoint.d.ts +7 -0
- package/dist/watchdog/health-endpoint.d.ts.map +1 -1
- package/dist/watchdog/health-endpoint.js +1 -0
- package/dist/watchdog/health-endpoint.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -535,6 +535,9 @@ docker run openchrome
|
|
|
535
535
|
| `CHROME_USER_DATA_DIR` | Custom profile directory |
|
|
536
536
|
| `CI` | Detected automatically; adds `--no-sandbox` |
|
|
537
537
|
| `DOCKER` | Detected automatically; adds `--no-sandbox` |
|
|
538
|
+
| `OPENCHROME_PPID_WATCH` | Set to `0` to disable the parent-process watcher in stdio mode. Default: enabled. The watcher exits the server when its launching MCP-client parent dies, so abrupt parent termination (force-quit, `kill -9`, tmux teardown) does not orphan the openchrome process. HTTP and `both` transport modes ignore this flag — they remain daemon-capable. |
|
|
539
|
+
| `OPENCHROME_PPID_WATCH_INTERVAL_MS` | Polling interval for the parent watcher in milliseconds. Default: `2000`. Clamped to `[500, 60000]`. |
|
|
540
|
+
| `OPENCHROME_HEALTH_ENDPOINT` | Force-enable (`1`/`true`) or force-disable (`0`/`false`) the `/health` and `/metrics` HTTP listener. Default: on for `--transport http` / `both`, off for `--transport stdio`. Stdio-mode instances usually talk to a single MCP client over the pipe and do not need an external monitoring port; disabling it saves ~200-300 KB heap + one file descriptor per instance. Operators who run stdio under a supervisor can opt in with `OPENCHROME_HEALTH_ENDPOINT=1`; daemon-mode operators who run the health check externally can opt out with `OPENCHROME_HEALTH_ENDPOINT=0`. Invalid values (e.g. `yes`, `2`) fall through to the transport-mode default. |
|
|
538
541
|
|
|
539
542
|
### Individual flags
|
|
540
543
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* - Old snapshots are pruned to keep disk usage bounded.
|
|
14
14
|
* - All restore operations are best-effort (try/catch, non-fatal).
|
|
15
15
|
*/
|
|
16
|
+
import { IdleState } from '../utils/idle-state';
|
|
16
17
|
export interface BrowserSnapshot {
|
|
17
18
|
timestamp: number;
|
|
18
19
|
cookies: Array<{
|
|
@@ -32,13 +33,17 @@ export declare class BrowserStateManager {
|
|
|
32
33
|
private readonly intervalMs;
|
|
33
34
|
private readonly maxSnapshots;
|
|
34
35
|
private readonly snapshotDir;
|
|
36
|
+
private readonly idleState;
|
|
35
37
|
private lastSnapshotAt;
|
|
36
38
|
private snapshotCount;
|
|
39
|
+
private stopped;
|
|
40
|
+
private lastDelayMs;
|
|
37
41
|
private getCookiesFn;
|
|
38
42
|
private getTabUrlsFn;
|
|
39
43
|
constructor(opts?: {
|
|
40
44
|
intervalMs?: number;
|
|
41
45
|
maxSnapshots?: number;
|
|
46
|
+
idleState?: IdleState;
|
|
42
47
|
});
|
|
43
48
|
/**
|
|
44
49
|
* Register the cookie retrieval function (called from index.ts after CDP client is ready).
|
|
@@ -51,6 +56,13 @@ export declare class BrowserStateManager {
|
|
|
51
56
|
setTabUrlProvider(fn: () => Promise<string[]>): void;
|
|
52
57
|
start(): Promise<void>;
|
|
53
58
|
stop(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Current scheduling delay in ms — exposed for tests asserting the
|
|
61
|
+
* active/idle rate transition (issue #649 §3.1).
|
|
62
|
+
*/
|
|
63
|
+
getCurrentDelayMs(): number;
|
|
64
|
+
private nextDelayMs;
|
|
65
|
+
private scheduleNext;
|
|
54
66
|
takeSnapshot(): Promise<void>;
|
|
55
67
|
/**
|
|
56
68
|
* Load the latest snapshot's cookies (raw data for the caller to apply via CDP).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/browser-state/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/browser-state/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EAAgC,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAQ9E,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAA0C;gBAElD,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE;IAOxF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI;IAI9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,IAAI,IAAI,IAAI;IAQZ;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAed,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BnC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAmBjC,cAAc;IAkB5B,SAAS,IAAI;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;CAG/D"}
|
|
@@ -53,19 +53,29 @@ const path = __importStar(require("path"));
|
|
|
53
53
|
const os = __importStar(require("os"));
|
|
54
54
|
const fs = __importStar(require("fs/promises"));
|
|
55
55
|
const defaults_1 = require("../config/defaults");
|
|
56
|
+
const idle_state_1 = require("../utils/idle-state");
|
|
57
|
+
/**
|
|
58
|
+
* Idle cadence. 300 s is 5× slower than the default 60 s active rate
|
|
59
|
+
* (issue #649 Part A §3.1 — snapshot is rebuilt on next RPC regardless).
|
|
60
|
+
*/
|
|
61
|
+
const IDLE_SNAPSHOT_INTERVAL_MS = 300_000;
|
|
56
62
|
class BrowserStateManager {
|
|
57
63
|
timer = null;
|
|
58
64
|
intervalMs;
|
|
59
65
|
maxSnapshots;
|
|
60
66
|
snapshotDir;
|
|
67
|
+
idleState;
|
|
61
68
|
lastSnapshotAt = 0;
|
|
62
69
|
snapshotCount = 0;
|
|
70
|
+
stopped = true;
|
|
71
|
+
lastDelayMs = 0;
|
|
63
72
|
getCookiesFn = null;
|
|
64
73
|
getTabUrlsFn = null;
|
|
65
74
|
constructor(opts) {
|
|
66
75
|
this.intervalMs = opts?.intervalMs ?? defaults_1.DEFAULT_SNAPSHOT_INTERVAL_MS;
|
|
67
76
|
this.maxSnapshots = opts?.maxSnapshots ?? defaults_1.DEFAULT_SNAPSHOT_MAX_COUNT;
|
|
68
77
|
this.snapshotDir = path.join(os.homedir(), '.openchrome', 'snapshots');
|
|
78
|
+
this.idleState = opts?.idleState ?? (0, idle_state_1.getIdleState)();
|
|
69
79
|
}
|
|
70
80
|
/**
|
|
71
81
|
* Register the cookie retrieval function (called from index.ts after CDP client is ready).
|
|
@@ -82,22 +92,44 @@ class BrowserStateManager {
|
|
|
82
92
|
}
|
|
83
93
|
async start() {
|
|
84
94
|
this.stop();
|
|
95
|
+
this.stopped = false;
|
|
85
96
|
await fs.mkdir(this.snapshotDir, { recursive: true });
|
|
86
97
|
// Don't take immediate snapshot — wait for first interval
|
|
87
|
-
this.
|
|
88
|
-
this.takeSnapshot().catch(err => {
|
|
89
|
-
console.error('[BrowserState] Snapshot failed:', err);
|
|
90
|
-
});
|
|
91
|
-
}, this.intervalMs);
|
|
92
|
-
this.timer.unref();
|
|
98
|
+
this.scheduleNext(this.nextDelayMs());
|
|
93
99
|
console.error(`[BrowserState] Snapshot service started (interval: ${this.intervalMs}ms, dir: ${this.snapshotDir})`);
|
|
94
100
|
}
|
|
95
101
|
stop() {
|
|
102
|
+
this.stopped = true;
|
|
96
103
|
if (this.timer) {
|
|
97
|
-
|
|
104
|
+
clearTimeout(this.timer);
|
|
98
105
|
this.timer = null;
|
|
99
106
|
}
|
|
100
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Current scheduling delay in ms — exposed for tests asserting the
|
|
110
|
+
* active/idle rate transition (issue #649 §3.1).
|
|
111
|
+
*/
|
|
112
|
+
getCurrentDelayMs() {
|
|
113
|
+
return this.lastDelayMs;
|
|
114
|
+
}
|
|
115
|
+
nextDelayMs() {
|
|
116
|
+
return this.idleState.isIdle(idle_state_1.IDLE_WINDOW_MS) ? IDLE_SNAPSHOT_INTERVAL_MS : this.intervalMs;
|
|
117
|
+
}
|
|
118
|
+
scheduleNext(delay) {
|
|
119
|
+
if (this.stopped)
|
|
120
|
+
return;
|
|
121
|
+
this.lastDelayMs = delay;
|
|
122
|
+
this.timer = setTimeout(() => {
|
|
123
|
+
this.takeSnapshot()
|
|
124
|
+
.catch(err => {
|
|
125
|
+
console.error('[BrowserState] Snapshot failed:', err);
|
|
126
|
+
})
|
|
127
|
+
.finally(() => {
|
|
128
|
+
this.scheduleNext(this.nextDelayMs());
|
|
129
|
+
});
|
|
130
|
+
}, delay);
|
|
131
|
+
this.timer.unref();
|
|
132
|
+
}
|
|
101
133
|
async takeSnapshot() {
|
|
102
134
|
if (!this.getCookiesFn)
|
|
103
135
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/browser-state/snapshot.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAC7B,uCAAyB;AACzB,gDAAkC;AAClC,iDAG4B;
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/browser-state/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/cdp/client.d.ts
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Browser, BrowserContext, Page, Target, CDPSession } from 'puppeteer-core';
|
|
5
5
|
import { Budget } from '../utils/budget';
|
|
6
|
+
export type CookieScanStatus = 'complete' | 'partial' | 'no_candidates' | 'no_cookies';
|
|
7
|
+
export interface CookieScanResult {
|
|
8
|
+
status: CookieScanStatus;
|
|
9
|
+
targetId: string | null;
|
|
10
|
+
scanned: number;
|
|
11
|
+
total: number;
|
|
12
|
+
elapsedMs: number;
|
|
13
|
+
warning?: string;
|
|
14
|
+
}
|
|
6
15
|
export interface CDPClientOptions {
|
|
7
16
|
port?: number;
|
|
8
17
|
maxReconnectAttempts?: number;
|
|
@@ -37,7 +46,9 @@ export declare class CDPClient {
|
|
|
37
46
|
private cookieSourceCache;
|
|
38
47
|
private cookieDataCache;
|
|
39
48
|
private targetIdIndex;
|
|
49
|
+
private targetActivityAt;
|
|
40
50
|
private inFlightCookieScans;
|
|
51
|
+
private lastCookieScanResult;
|
|
41
52
|
/** Coalesces concurrent connect() calls — only one connectInternal() runs at a time. */
|
|
42
53
|
private pendingConnect;
|
|
43
54
|
/** Timestamp of last successful connection verification (heartbeat or active probe). */
|
|
@@ -49,6 +60,8 @@ export declare class CDPClient {
|
|
|
49
60
|
private pingLatencies;
|
|
50
61
|
private static readonly MAX_PING_SAMPLES;
|
|
51
62
|
private static readonly COOKIE_CACHE_TTL;
|
|
63
|
+
private static readonly COOKIE_SOURCE_CACHE_MAX;
|
|
64
|
+
private static readonly COOKIE_DATA_CACHE_MAX;
|
|
52
65
|
private reconnecting;
|
|
53
66
|
private reconnectingAttempt;
|
|
54
67
|
private reconnectNextRetryAt;
|
|
@@ -88,6 +101,22 @@ export declare class CDPClient {
|
|
|
88
101
|
* Handle target destroyed event
|
|
89
102
|
*/
|
|
90
103
|
private onTargetDestroyed;
|
|
104
|
+
private touchTargetActivity;
|
|
105
|
+
/**
|
|
106
|
+
* Insert or refresh an entry in cookieSourceCache with a FIFO size cap.
|
|
107
|
+
* When the cache is at capacity AND the key is new, the oldest-inserted
|
|
108
|
+
* entry is evicted. Existing keys update in place without eviction.
|
|
109
|
+
* See issue #647.
|
|
110
|
+
*/
|
|
111
|
+
private setCookieSourceCacheEntry;
|
|
112
|
+
/**
|
|
113
|
+
* Insert or refresh an entry in cookieDataCache with a FIFO size cap.
|
|
114
|
+
* When the cache is at capacity AND the key is new, the oldest-inserted
|
|
115
|
+
* entry is evicted. Existing keys update in place without eviction.
|
|
116
|
+
* See issue #647.
|
|
117
|
+
*/
|
|
118
|
+
private setCookieDataCacheEntry;
|
|
119
|
+
getLastCookieScanResult(): CookieScanResult | null;
|
|
91
120
|
/**
|
|
92
121
|
* Emit connection event
|
|
93
122
|
*/
|
|
@@ -228,13 +257,14 @@ export declare class CDPClient {
|
|
|
228
257
|
*
|
|
229
258
|
* @param targetDomain Optional domain to prioritize when selecting cookie source
|
|
230
259
|
*/
|
|
260
|
+
findAuthenticatedPageTarget(targetDomain?: string): Promise<CookieScanResult>;
|
|
231
261
|
findAuthenticatedPageTargetId(targetDomain?: string): Promise<string | null>;
|
|
232
262
|
/**
|
|
233
263
|
* Internal implementation of the authenticated-page probe.
|
|
234
264
|
* Uses Target.attachToTarget (multiplexed CDP) instead of raw WebSocket connections.
|
|
235
265
|
* Uses Target.getTargets result directly instead of /json/list HTTP calls.
|
|
236
266
|
*/
|
|
237
|
-
private
|
|
267
|
+
private _doFindAuthenticatedPageTarget;
|
|
238
268
|
/**
|
|
239
269
|
* Copy all cookies from authenticated page to destination page.
|
|
240
270
|
* Uses Target.attachToTarget (multiplexed CDP) to bypass Puppeteer's context isolation —
|
package/dist/cdp/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cdp/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA0B9F,OAAO,EAAE,MAAM,EAAsB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cdp/client.ts"],"names":[],"mappings":"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"}
|