openclaw-multi-auto 1.8.3 → 1.8.5
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/{audio-preflight-DcneE70v.js → audio-preflight-SOY4qjTl.js} +6 -6
- package/dist/{audit-membership-runtime-BDoMjPgy.js → audit-membership-runtime-BQmoiW7f.js} +3 -3
- package/dist/{auth-profiles-Dta-Mhaw.js → auth-profiles-CEEqFOKJ.js} +438 -438
- package/dist/auth-profiles.runtime-DXPqJP5A.js +7 -0
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/compact.runtime-DS9UVeOh.js +7 -0
- package/dist/daemon-cli.js +53 -53
- package/dist/deliver-runtime-D929PgeO.js +7 -0
- package/dist/{fetch-Bdod8UI1.js → fetch-wjPVlu-r.js} +3 -3
- package/dist/{github-copilot-token-BgPOyCXe.js → github-copilot-token-C-NbPL95.js} +7 -7
- package/dist/image-runtime-CkdY0-Oo.js +7 -0
- package/dist/{logger-Budylr6i.js → logger-mQKrXyAc.js} +18 -18
- package/dist/{login-Bk8BjEUN.js → login-Ctt81ov4.js} +3 -3
- package/dist/{login-qr-CVQlH0l0.js → login-qr-CHrXhUJY.js} +7 -7
- package/dist/manager-runtime-PqJtJx-b.js +7 -0
- package/dist/{manager.runtime-KPIwNjNW.js → manager.runtime-C5odxL4B.js} +12 -12
- package/dist/{paths-BnSNMlFT.js → paths-jtwudEDq.js} +5 -5
- package/dist/{pi-model-discovery-runtime-CLfgSk3o.js → pi-model-discovery-runtime-C-YPAOQR.js} +6 -6
- package/dist/{pi-tools.before-tool-call.runtime-CKzFGrVv.js → pi-tools.before-tool-call.runtime-CWgsv7kC.js} +6 -6
- package/dist/{pw-ai-BZnl84YT.js → pw-ai-BFfAJexr.js} +6 -6
- package/dist/{qmd-manager-BmuMJQP3.js → qmd-manager-rY-Y6sbN.js} +3 -3
- package/dist/{query-expansion-BMQzl41m.js → query-expansion-BIMwPSMg.js} +89 -89
- package/dist/runtime-whatsapp-login.runtime-DeV-bhiR.js +9 -0
- package/dist/runtime-whatsapp-outbound.runtime-BFY32bnC.js +8 -0
- package/dist/{send-CHO1gc7n.js → send-UG1n3OAg.js} +2 -2
- package/dist/{session-r38wrRC6.js → session-Bpmn--zO.js} +6 -6
- package/dist/{slash-commands.runtime-J-gBOPcL.js → slash-commands.runtime-DIrX0Ynq.js} +6 -6
- package/dist/{slash-dispatch.runtime-CwO02PY8.js → slash-dispatch.runtime-CG-xSDdf.js} +6 -6
- package/dist/slash-skill-commands.runtime-JEA80FeR.js +7 -0
- package/dist/{subagent-registry-runtime-1IiL0xom.js → subagent-registry-runtime-rBYzVSXG.js} +6 -6
- package/dist/{web-B_GcnsRF.js → web-DbsQPRh2.js} +9 -9
- package/dist/{whatsapp-actions-BCgsmzOa.js → whatsapp-actions-CnWp29AN.js} +7 -7
- package/package.json +2 -1
- package/scripts/create-instance.sh +21 -37
- package/dist/auth-profiles.runtime-CLSx3zsq.js +0 -7
- package/dist/compact.runtime-BgRco6mO.js +0 -7
- package/dist/deliver-runtime-BBwve6gL.js +0 -7
- package/dist/image-runtime-DiA6CU2y.js +0 -7
- package/dist/manager-runtime-BW_M_Kzt.js +0 -7
- package/dist/runtime-whatsapp-login.runtime-Dd6rJjLo.js +0 -9
- package/dist/runtime-whatsapp-outbound.runtime-CatYliOE.js +0 -8
- package/dist/slash-skill-commands.runtime-BQRfyLdb.js +0 -7
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./paths-
|
|
2
|
-
import { B as shouldLogVerbose, Q as resolvePreferredOpenClawTmpDir, R as logVerbose, a as createSubsystemLogger, l as defaultRuntime } from "./logger-
|
|
3
|
-
import { $ as prepareSessionManagerForRun, $n as resolveDiscordOwnerAccess, An as toAcpRuntimeError, Br as getChannelPlugin, Bt as normalizeOutboundPayloads, Ca as formatXHighModelHint, Cr as resolveSessionTranscriptFile, Ct as hasNonzeroUsage, Da as formatCliCommand, Dn as isSilentReplyPrefixText, Ea as supportsXHighThinking, Fr as resolveSessionResetPolicy, Ft as resolveOutboundTarget, G as resolveSendPolicy, H as getSkillsSnapshotVersion, I as getCliSessionId, Ir as resolveSessionResetType, It as resolveSessionDeliveryTarget, Kt as FailoverError, L as setCliSessionId, Lr as mergeSessionEntry, Lt as buildOutboundSessionContext, Mr as resolveSessionKey, Nr as evaluateSessionFreshness, On as isSilentReplyText, Or as updateSessionStore, Ot as normalizeReplyPayload, Pr as resolveChannelResetConfig, Q as runEmbeddedPiAgent, R as runCliAgent, Rr as setSessionRuntimeModel, Rt as deliverOutboundPayloads, Sa as formatThinkingLevels, St as deriveSessionTotalTokens, Ta as normalizeVerboseLevel, Tr as loadSessionStore, U as clearSessionAuthProfileOverride, Ut as resolveMessageChannelSelection, V as getRemoteSkillEligibility, Vr as normalizeChannelId, Vt as normalizeOutboundPayloadsForJson, Wi as buildWorkspaceSkillSnapshot, Wn as resolveAgentRoute, Wt as runWithModelFallback, Yn as formatMention, _r as buildProviderRegistry, _t as resolveAcpAgentPolicyError, a as modelKey, aa as loadModelCatalog, ba as DEFAULT_MODEL, bt as AGENT_LANE_SUBAGENT, c as resolveConfiguredModelRef, ci as isDeliverableMessageChannel, da as setRuntimeConfigSnapshot, di as normalizeMessageChannel, dr as parseTtsDirectives, dt as formatAgentInternalEventsForPrompt, er as formatDiscordUserTag, et as resolveBootstrapWarningSignaturesSeen, f as getAgentRuntimeCommandSecretTargetIds, fi as resolveMessageChannel, ft as normalizeSpawnedRunMetadata, gt as resolveAcpSessionCwd, ht as registerAgentRunContext, i as isCliProvider, jr as normalizeAccountId, k as isDangerousNameMatchingEnabled, kn as getAcpSessionManager, l as resolveDefaultModelForAgent, li as isGatewayMessageChannel, lr as resolveTtsConfig, mt as emitAgentEvent, na as formatErrorMessage, o as normalizeModelRef, p as resolveCommandSecretRefsViaGateway, pt as clearAgentRunContext, r as buildAllowedModelSet, s as normalizeProviderId, sa as loadConfig, si as INTERNAL_MESSAGE_CHANNEL, t as ensureAuthProfileStore, u as resolveThinkingDefault, ua as readConfigFileSnapshotForWrite, ui as isInternalMessageChannel, ur as textToSpeech, ut as resolveAgentTimeoutMs, vr as createMediaAttachmentCache, vt as resolveAcpDispatchPolicyError, wa as normalizeThinkLevel, wr as emitSessionTranscriptUpdate, wt as resolveContextTokensForModel, xa as DEFAULT_PROVIDER, xn as clearBootstrapSnapshotOnSessionRollover, xr as runCapability, xt as applyModelOverrideToSessionEntry, yr as normalizeMediaAttachments, yt as AGENT_LANE_NESTED, z as applyVerboseOverride, zr as resolveExplicitAgentSessionKey, zt as formatOutboundPayloadLog } from "./auth-profiles-
|
|
4
|
-
import { Et as resolveSessionAgentId, It as ensureAgentWorkspace, R as resolveStorePath, St as resolveAgentWorkspaceDir, fn as normalizeAgentId, gt as listAgentIds, mn as resolveAgentIdFromSessionKey, pn as normalizeMainKey, vt as resolveAgentDir, wt as resolveEffectiveModelFallbacks, xt as resolveAgentSkillsFilter } from "./query-expansion-
|
|
5
|
-
import "./github-copilot-token-
|
|
6
|
-
import "./fetch-
|
|
1
|
+
import "./paths-jtwudEDq.js";
|
|
2
|
+
import { B as shouldLogVerbose, Q as resolvePreferredOpenClawTmpDir, R as logVerbose, a as createSubsystemLogger, l as defaultRuntime } from "./logger-mQKrXyAc.js";
|
|
3
|
+
import { $ as prepareSessionManagerForRun, $n as resolveDiscordOwnerAccess, An as toAcpRuntimeError, Br as getChannelPlugin, Bt as normalizeOutboundPayloads, Ca as formatXHighModelHint, Cr as resolveSessionTranscriptFile, Ct as hasNonzeroUsage, Da as formatCliCommand, Dn as isSilentReplyPrefixText, Ea as supportsXHighThinking, Fr as resolveSessionResetPolicy, Ft as resolveOutboundTarget, G as resolveSendPolicy, H as getSkillsSnapshotVersion, I as getCliSessionId, Ir as resolveSessionResetType, It as resolveSessionDeliveryTarget, Kt as FailoverError, L as setCliSessionId, Lr as mergeSessionEntry, Lt as buildOutboundSessionContext, Mr as resolveSessionKey, Nr as evaluateSessionFreshness, On as isSilentReplyText, Or as updateSessionStore, Ot as normalizeReplyPayload, Pr as resolveChannelResetConfig, Q as runEmbeddedPiAgent, R as runCliAgent, Rr as setSessionRuntimeModel, Rt as deliverOutboundPayloads, Sa as formatThinkingLevels, St as deriveSessionTotalTokens, Ta as normalizeVerboseLevel, Tr as loadSessionStore, U as clearSessionAuthProfileOverride, Ut as resolveMessageChannelSelection, V as getRemoteSkillEligibility, Vr as normalizeChannelId, Vt as normalizeOutboundPayloadsForJson, Wi as buildWorkspaceSkillSnapshot, Wn as resolveAgentRoute, Wt as runWithModelFallback, Yn as formatMention, _r as buildProviderRegistry, _t as resolveAcpAgentPolicyError, a as modelKey, aa as loadModelCatalog, ba as DEFAULT_MODEL, bt as AGENT_LANE_SUBAGENT, c as resolveConfiguredModelRef, ci as isDeliverableMessageChannel, da as setRuntimeConfigSnapshot, di as normalizeMessageChannel, dr as parseTtsDirectives, dt as formatAgentInternalEventsForPrompt, er as formatDiscordUserTag, et as resolveBootstrapWarningSignaturesSeen, f as getAgentRuntimeCommandSecretTargetIds, fi as resolveMessageChannel, ft as normalizeSpawnedRunMetadata, gt as resolveAcpSessionCwd, ht as registerAgentRunContext, i as isCliProvider, jr as normalizeAccountId, k as isDangerousNameMatchingEnabled, kn as getAcpSessionManager, l as resolveDefaultModelForAgent, li as isGatewayMessageChannel, lr as resolveTtsConfig, mt as emitAgentEvent, na as formatErrorMessage, o as normalizeModelRef, p as resolveCommandSecretRefsViaGateway, pt as clearAgentRunContext, r as buildAllowedModelSet, s as normalizeProviderId, sa as loadConfig, si as INTERNAL_MESSAGE_CHANNEL, t as ensureAuthProfileStore, u as resolveThinkingDefault, ua as readConfigFileSnapshotForWrite, ui as isInternalMessageChannel, ur as textToSpeech, ut as resolveAgentTimeoutMs, vr as createMediaAttachmentCache, vt as resolveAcpDispatchPolicyError, wa as normalizeThinkLevel, wr as emitSessionTranscriptUpdate, wt as resolveContextTokensForModel, xa as DEFAULT_PROVIDER, xn as clearBootstrapSnapshotOnSessionRollover, xr as runCapability, xt as applyModelOverrideToSessionEntry, yr as normalizeMediaAttachments, yt as AGENT_LANE_NESTED, z as applyVerboseOverride, zr as resolveExplicitAgentSessionKey, zt as formatOutboundPayloadLog } from "./auth-profiles-CEEqFOKJ.js";
|
|
4
|
+
import { Et as resolveSessionAgentId, It as ensureAgentWorkspace, R as resolveStorePath, St as resolveAgentWorkspaceDir, fn as normalizeAgentId, gt as listAgentIds, mn as resolveAgentIdFromSessionKey, pn as normalizeMainKey, vt as resolveAgentDir, wt as resolveEffectiveModelFallbacks, xt as resolveAgentSkillsFilter } from "./query-expansion-BIMwPSMg.js";
|
|
5
|
+
import "./github-copilot-token-C-NbPL95.js";
|
|
6
|
+
import "./fetch-wjPVlu-r.js";
|
|
7
7
|
import { createRequire } from "node:module";
|
|
8
8
|
import path from "node:path";
|
|
9
9
|
import fs from "node:fs/promises";
|
|
@@ -64,12 +64,12 @@ function createLazySender(channelId, loader, exportName) {
|
|
|
64
64
|
}
|
|
65
65
|
function createDefaultDeps() {
|
|
66
66
|
return {
|
|
67
|
-
whatsapp: createLazySender("whatsapp", () => import("./web-
|
|
68
|
-
telegram: createLazySender("telegram", () => import("./auth-profiles-
|
|
69
|
-
discord: createLazySender("discord", () => import("./auth-profiles-
|
|
70
|
-
slack: createLazySender("slack", () => import("./auth-profiles-
|
|
71
|
-
signal: createLazySender("signal", () => import("./auth-profiles-
|
|
72
|
-
imessage: createLazySender("imessage", () => import("./auth-profiles-
|
|
67
|
+
whatsapp: createLazySender("whatsapp", () => import("./web-DbsQPRh2.js"), "sendMessageWhatsApp"),
|
|
68
|
+
telegram: createLazySender("telegram", () => import("./auth-profiles-CEEqFOKJ.js").then((n) => n.v), "sendMessageTelegram"),
|
|
69
|
+
discord: createLazySender("discord", () => import("./auth-profiles-CEEqFOKJ.js").then((n) => n.Jn), "sendMessageDiscord"),
|
|
70
|
+
slack: createLazySender("slack", () => import("./auth-profiles-CEEqFOKJ.js").then((n) => n.b), "sendMessageSlack"),
|
|
71
|
+
signal: createLazySender("signal", () => import("./auth-profiles-CEEqFOKJ.js").then((n) => n.Ht), "sendMessageSignal"),
|
|
72
|
+
imessage: createLazySender("imessage", () => import("./auth-profiles-CEEqFOKJ.js").then((n) => n.x), "sendMessageIMessage")
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "node:fs";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
//#region src/infra/home-dir.ts
|
|
@@ -105,10 +105,10 @@ function resolveStateDir(env = process.env, homedir = envHomedir(env)) {
|
|
|
105
105
|
const newDir = newStateDir(effectiveHomedir);
|
|
106
106
|
if (env.OPENCLAW_TEST_FAST === "1") return newDir;
|
|
107
107
|
const legacyDirs = legacyStateDirs(effectiveHomedir);
|
|
108
|
-
if (
|
|
108
|
+
if (fs.existsSync(newDir)) return newDir;
|
|
109
109
|
const existingLegacy = legacyDirs.find((dir) => {
|
|
110
110
|
try {
|
|
111
|
-
return
|
|
111
|
+
return fs.existsSync(dir);
|
|
112
112
|
} catch {
|
|
113
113
|
return false;
|
|
114
114
|
}
|
|
@@ -141,7 +141,7 @@ function resolveConfigPathCandidate(env = process.env, homedir = envHomedir(env)
|
|
|
141
141
|
if (env.OPENCLAW_TEST_FAST === "1") return resolveCanonicalConfigPath(env, resolveStateDir(env, homedir));
|
|
142
142
|
const existing = resolveDefaultConfigCandidates(env, homedir).find((candidate) => {
|
|
143
143
|
try {
|
|
144
|
-
return
|
|
144
|
+
return fs.existsSync(candidate);
|
|
145
145
|
} catch {
|
|
146
146
|
return false;
|
|
147
147
|
}
|
|
@@ -159,7 +159,7 @@ function resolveConfigPath(env = process.env, stateDir = resolveStateDir(env, en
|
|
|
159
159
|
const stateOverride = env.OPENCLAW_STATE_DIR?.trim();
|
|
160
160
|
const existing = [path.join(stateDir, CONFIG_FILENAME), ...LEGACY_CONFIG_FILENAMES.map((name) => path.join(stateDir, name))].find((candidate) => {
|
|
161
161
|
try {
|
|
162
|
-
return
|
|
162
|
+
return fs.existsSync(candidate);
|
|
163
163
|
} catch {
|
|
164
164
|
return false;
|
|
165
165
|
}
|
package/dist/{pi-model-discovery-runtime-CLfgSk3o.js → pi-model-discovery-runtime-C-YPAOQR.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./paths-
|
|
2
|
-
import "./logger-
|
|
3
|
-
import { fr as PiAuthStorageClass, hr as discoverModels, mr as discoverAuthStorage, pr as PiModelRegistryClass } from "./auth-profiles-
|
|
4
|
-
import "./query-expansion-
|
|
5
|
-
import "./github-copilot-token-
|
|
6
|
-
import "./fetch-
|
|
1
|
+
import "./paths-jtwudEDq.js";
|
|
2
|
+
import "./logger-mQKrXyAc.js";
|
|
3
|
+
import { fr as PiAuthStorageClass, hr as discoverModels, mr as discoverAuthStorage, pr as PiModelRegistryClass } from "./auth-profiles-CEEqFOKJ.js";
|
|
4
|
+
import "./query-expansion-BIMwPSMg.js";
|
|
5
|
+
import "./github-copilot-token-C-NbPL95.js";
|
|
6
|
+
import "./fetch-wjPVlu-r.js";
|
|
7
7
|
export { PiAuthStorageClass as AuthStorage, PiModelRegistryClass as ModelRegistry, discoverAuthStorage, discoverModels };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./paths-
|
|
2
|
-
import { F as isPlainObject, a as createSubsystemLogger } from "./logger-
|
|
3
|
-
import { Cn as getDiagnosticSessionState, Sn as logToolLoopAction } from "./auth-profiles-
|
|
4
|
-
import "./query-expansion-
|
|
5
|
-
import "./github-copilot-token-
|
|
6
|
-
import "./fetch-
|
|
1
|
+
import "./paths-jtwudEDq.js";
|
|
2
|
+
import { F as isPlainObject, a as createSubsystemLogger } from "./logger-mQKrXyAc.js";
|
|
3
|
+
import { Cn as getDiagnosticSessionState, Sn as logToolLoopAction } from "./auth-profiles-CEEqFOKJ.js";
|
|
4
|
+
import "./query-expansion-BIMwPSMg.js";
|
|
5
|
+
import "./github-copilot-token-C-NbPL95.js";
|
|
6
|
+
import "./fetch-wjPVlu-r.js";
|
|
7
7
|
import { createHash } from "node:crypto";
|
|
8
8
|
//#region src/agents/tool-loop-detection.ts
|
|
9
9
|
const log = createSubsystemLogger("agents/loop-detection");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./paths-
|
|
2
|
-
import { Q as resolvePreferredOpenClawTmpDir } from "./logger-
|
|
3
|
-
import { Bi as assertBrowserNavigationAllowed, Ci as getHeadersWithAuth, Da as formatCliCommand, Di as getChromeWebSocketUrl, Fi as DEFAULT_UPLOAD_DIR, Hi as assertBrowserNavigationResultAllowed, Ii as resolveStrictExistingPathsWithinRoot, Li as matchBrowserUrlPattern, Mi as withNoProxyForCdpUrl, Pi as DEFAULT_TRACE_DIR, Si as fetchJson, Ti as withCdpSocket, Ui as withBrowserNavigationPolicy, Vi as assertBrowserNavigationRedirectChainAllowed, _i as getRoleSnapshotStats, bi as normalizeCdpWsUrl, gi as buildRoleSnapshotFromAriaSnapshot, hi as buildRoleSnapshotFromAiSnapshot, ji as markPwAiLoaded, na as formatErrorMessage, vi as parseRoleRef, wi as normalizeCdpHttpBaseForJsonEndpoints, xi as appendCdpPath, yi as formatAriaSnapshot, zi as BrowserTabNotFoundError } from "./auth-profiles-
|
|
4
|
-
import { J as writeFileFromPathWithinRoot } from "./query-expansion-
|
|
5
|
-
import "./github-copilot-token-
|
|
6
|
-
import "./fetch-
|
|
1
|
+
import "./paths-jtwudEDq.js";
|
|
2
|
+
import { Q as resolvePreferredOpenClawTmpDir } from "./logger-mQKrXyAc.js";
|
|
3
|
+
import { Bi as assertBrowserNavigationAllowed, Ci as getHeadersWithAuth, Da as formatCliCommand, Di as getChromeWebSocketUrl, Fi as DEFAULT_UPLOAD_DIR, Hi as assertBrowserNavigationResultAllowed, Ii as resolveStrictExistingPathsWithinRoot, Li as matchBrowserUrlPattern, Mi as withNoProxyForCdpUrl, Pi as DEFAULT_TRACE_DIR, Si as fetchJson, Ti as withCdpSocket, Ui as withBrowserNavigationPolicy, Vi as assertBrowserNavigationRedirectChainAllowed, _i as getRoleSnapshotStats, bi as normalizeCdpWsUrl, gi as buildRoleSnapshotFromAriaSnapshot, hi as buildRoleSnapshotFromAiSnapshot, ji as markPwAiLoaded, na as formatErrorMessage, vi as parseRoleRef, wi as normalizeCdpHttpBaseForJsonEndpoints, xi as appendCdpPath, yi as formatAriaSnapshot, zi as BrowserTabNotFoundError } from "./auth-profiles-CEEqFOKJ.js";
|
|
4
|
+
import { J as writeFileFromPathWithinRoot } from "./query-expansion-BIMwPSMg.js";
|
|
5
|
+
import "./github-copilot-token-C-NbPL95.js";
|
|
6
|
+
import "./fetch-wjPVlu-r.js";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import fs from "node:fs/promises";
|
|
9
9
|
import crypto from "node:crypto";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { l as resolveStateDir } from "./paths-
|
|
2
|
-
import { a as createSubsystemLogger } from "./logger-
|
|
3
|
-
import { B as resolveWindowsSpawnProgram, C as isFileMissingError, On as parseAgentSessionKey, St as resolveAgentWorkspaceDir, Y as writeFileWithinRoot, a as listSessionFilesForAgent, i as buildSessionEntry, r as requireNodeSqlite, t as extractKeywords, w as statRegularFile, z as materializeWindowsSpawnProgram } from "./query-expansion-
|
|
1
|
+
import { l as resolveStateDir } from "./paths-jtwudEDq.js";
|
|
2
|
+
import { a as createSubsystemLogger } from "./logger-mQKrXyAc.js";
|
|
3
|
+
import { B as resolveWindowsSpawnProgram, C as isFileMissingError, On as parseAgentSessionKey, St as resolveAgentWorkspaceDir, Y as writeFileWithinRoot, a as listSessionFilesForAgent, i as buildSessionEntry, r as requireNodeSqlite, t as extractKeywords, w as statRegularFile, z as materializeWindowsSpawnProgram } from "./query-expansion-BIMwPSMg.js";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import fs from "node:fs/promises";
|