__vite_ssr_exportName__("VcsDriverKind", () => { try { return VcsDriverKind } catch {} });
__vite_ssr_exportName__("VcsFreshnessSource", () => { try { return VcsFreshnessSource } catch {} });
__vite_ssr_exportName__("VcsFreshness", () => { try { return VcsFreshness } catch {} });
__vite_ssr_exportName__("VcsDriverCapabilities", () => { try { return VcsDriverCapabilities } catch {} });
__vite_ssr_exportName__("VcsRepositoryIdentity", () => { try { return VcsRepositoryIdentity } catch {} });
__vite_ssr_exportName__("VcsListWorkspaceFilesResult", () => { try { return VcsListWorkspaceFilesResult } catch {} });
__vite_ssr_exportName__("VcsRemote", () => { try { return VcsRemote } catch {} });
__vite_ssr_exportName__("VcsListRemotesResult", () => { try { return VcsListRemotesResult } catch {} });
__vite_ssr_exportName__("VcsProcessExitFailureKind", () => { try { return VcsProcessExitFailureKind } catch {} });
__vite_ssr_exportName__("VcsProcessSpawnError", () => { try { return VcsProcessSpawnError } catch {} });
__vite_ssr_exportName__("VcsProcessExitError", () => { try { return VcsProcessExitError } catch {} });
__vite_ssr_exportName__("VcsProcessTimeoutError", () => { try { return VcsProcessTimeoutError } catch {} });
__vite_ssr_exportName__("VcsProcessStdinWriteError", () => { try { return VcsProcessStdinWriteError } catch {} });
__vite_ssr_exportName__("VcsProcessOutputReadError", () => { try { return VcsProcessOutputReadError } catch {} });
__vite_ssr_exportName__("VcsProcessOutputLimitError", () => { try { return VcsProcessOutputLimitError } catch {} });
__vite_ssr_exportName__("VcsProcessMissingExitCodeError", () => { try { return VcsProcessMissingExitCodeError } catch {} });
__vite_ssr_exportName__("VcsOutputDecodeError", () => { try { return VcsOutputDecodeError } catch {} });
__vite_ssr_exportName__("VcsRepositoryDetectionError", () => { try { return VcsRepositoryDetectionError } catch {} });
__vite_ssr_exportName__("VcsUnsupportedOperationError", () => { try { return VcsUnsupportedOperationError } catch {} });
__vite_ssr_exportName__("VcsError", () => { try { return VcsError } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Schema.js");
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["NonNegativeInt","TrimmedNonEmptyString"]});


const VcsDriverKind = __vite_ssr_import_0__.Literals([
	"git",
	"jj",
	"unknown"
]);
const VcsFreshnessSource = __vite_ssr_import_0__.Literals([
	"live-local",
	"cached-local",
	"cached-remote",
	"explicit-remote"
]);
const VcsFreshness = __vite_ssr_import_0__.Struct({
	source: VcsFreshnessSource,
	observedAt: __vite_ssr_import_0__.DateTimeUtc,
	expiresAt: __vite_ssr_import_0__.Option(__vite_ssr_import_0__.DateTimeUtc)
});
const VcsDriverCapabilities = __vite_ssr_import_0__.Struct({
	kind: VcsDriverKind,
	supportsWorktrees: __vite_ssr_import_0__.Boolean,
	supportsBookmarks: __vite_ssr_import_0__.Boolean,
	supportsAtomicSnapshot: __vite_ssr_import_0__.Boolean,
	supportsPushDefaultRemote: __vite_ssr_import_0__.Boolean,
	ignoreClassifier: __vite_ssr_import_0__.Literals(["native", "git-compatible-fallback"])
});
const VcsRepositoryIdentity = __vite_ssr_import_0__.Struct({
	kind: VcsDriverKind,
	rootPath: __vite_ssr_import_1__.TrimmedNonEmptyString,
	metadataPath: __vite_ssr_import_0__.NullOr((0,__vite_ssr_import_1__.TrimmedNonEmptyString)),
	freshness: VcsFreshness
});
const VcsListWorkspaceFilesResult = __vite_ssr_import_0__.Struct({
	paths: __vite_ssr_import_0__.Array((0,__vite_ssr_import_1__.TrimmedNonEmptyString)),
	truncated: __vite_ssr_import_0__.Boolean,
	freshness: VcsFreshness
});
const VcsRemote = __vite_ssr_import_0__.Struct({
	name: __vite_ssr_import_1__.TrimmedNonEmptyString,
	url: __vite_ssr_import_1__.TrimmedNonEmptyString,
	pushUrl: __vite_ssr_import_0__.Option((0,__vite_ssr_import_1__.TrimmedNonEmptyString)),
	isPrimary: __vite_ssr_import_0__.Boolean
});
const VcsListRemotesResult = __vite_ssr_import_0__.Struct({
	remotes: __vite_ssr_import_0__.Array(VcsRemote),
	freshness: VcsFreshness
});
const VcsProcessExitFailureKind = __vite_ssr_import_0__.Literals([
	"authentication",
	"not-found",
	"rate-limited",
	"command-failed"
]);
class VcsProcessSpawnError extends __vite_ssr_import_0__.TaggedError()("VcsProcessSpawnError", {
	operation: __vite_ssr_import_0__.String,
	command: __vite_ssr_import_0__.String,
	cwd: __vite_ssr_import_0__.String,
	argumentCount: __vite_ssr_import_0__.optional((0,__vite_ssr_import_1__.NonNegativeInt)),
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return `VCS process failed to spawn in ${this.operation}: ${this.command} (${this.cwd})`;
	}
	static fromProcessSpawnError(context, error) {
		return new VcsProcessSpawnError({
			...context,
			cause: error.cause
		});
	}
};
class VcsProcessExitError extends __vite_ssr_import_0__.TaggedError()("VcsProcessExitError", {
	operation: __vite_ssr_import_0__.String,
	command: __vite_ssr_import_0__.String,
	cwd: __vite_ssr_import_0__.String,
	argumentCount: __vite_ssr_import_0__.optional((0,__vite_ssr_import_1__.NonNegativeInt)),
	exitCode: __vite_ssr_import_0__.Number,
	detail: __vite_ssr_import_0__.String,
	failureKind: __vite_ssr_import_0__.optional(VcsProcessExitFailureKind),
	retryable: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	stderrLength: __vite_ssr_import_0__.optional((0,__vite_ssr_import_1__.NonNegativeInt)),
	stderrTruncated: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
}) {
	get message() {
		return `VCS process failed in ${this.operation}: ${this.command} (${this.cwd}) exited with ${this.exitCode} - ${this.detail}`;
	}
	static fromProcessExit(context, error, failureKind, options) {
		const detail = failureKind === "authentication" ? "Authentication failed." : failureKind === "rate-limited" ? "API rate limit exceeded." : failureKind === "not-found" ? options?.notFoundDetail ?? "VCS resource not found." : "Process exited with a non-zero status.";
		return new VcsProcessExitError({
			...context,
			exitCode: error.exitCode,
			detail,
			failureKind,
			...options?.retryable === true ? { retryable: true } : {},
			stderrLength: error.stderr.length,
			stderrTruncated: error.stderrTruncated
		});
	}
};
class VcsProcessTimeoutError extends __vite_ssr_import_0__.TaggedError()("VcsProcessTimeoutError", {
	operation: __vite_ssr_import_0__.String,
	command: __vite_ssr_import_0__.String,
	cwd: __vite_ssr_import_0__.String,
	argumentCount: __vite_ssr_import_0__.optional((0,__vite_ssr_import_1__.NonNegativeInt)),
	timeoutMs: __vite_ssr_import_0__.Number
}) {
	get message() {
		return `VCS process timed out in ${this.operation}: ${this.command} (${this.cwd}) after ${this.timeoutMs}ms`;
	}
	static fromProcessTimeoutError(context, error) {
		return new VcsProcessTimeoutError({
			...context,
			timeoutMs: error.timeoutMs
		});
	}
};
const VcsProcessBoundaryErrorFields = {
	operation: __vite_ssr_import_0__.String,
	command: __vite_ssr_import_0__.String,
	cwd: __vite_ssr_import_0__.String,
	argumentCount: __vite_ssr_import_0__.optional((0,__vite_ssr_import_1__.NonNegativeInt))
};
class VcsProcessStdinWriteError extends __vite_ssr_import_0__.TaggedError()("VcsProcessStdinWriteError", {
	...VcsProcessBoundaryErrorFields,
	stdinBytes: __vite_ssr_import_1__.NonNegativeInt,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return `VCS process failed to write ${this.stdinBytes} bytes to stdin in ${this.operation}: ${this.command} (${this.cwd})`;
	}
};
class VcsProcessOutputReadError extends __vite_ssr_import_0__.TaggedError()("VcsProcessOutputReadError", {
	...VcsProcessBoundaryErrorFields,
	stream: __vite_ssr_import_0__.Literals([
		"stdout",
		"stderr",
		"exitCode"
	]),
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return `VCS process failed to read ${this.stream} in ${this.operation}: ${this.command} (${this.cwd})`;
	}
};
class VcsProcessOutputLimitError extends __vite_ssr_import_0__.TaggedError()("VcsProcessOutputLimitError", {
	...VcsProcessBoundaryErrorFields,
	stream: __vite_ssr_import_0__.Literals(["stdout", "stderr"]),
	maxBytes: __vite_ssr_import_1__.NonNegativeInt,
	observedBytes: __vite_ssr_import_1__.NonNegativeInt
}) {
	get message() {
		return `VCS process ${this.stream} produced ${this.observedBytes} bytes in ${this.operation}: ${this.command} (${this.cwd}), exceeding the ${this.maxBytes} byte limit`;
	}
};
class VcsProcessMissingExitCodeError extends __vite_ssr_import_0__.TaggedError()("VcsProcessMissingExitCodeError", VcsProcessBoundaryErrorFields) {
	get message() {
		return `VCS process completed without an exit code in ${this.operation}: ${this.command} (${this.cwd})`;
	}
};
const VcsOutputDecodeError = __vite_ssr_import_0__.Union([
	VcsProcessStdinWriteError,
	VcsProcessOutputReadError,
	VcsProcessOutputLimitError,
	VcsProcessMissingExitCodeError
]);
class VcsRepositoryDetectionError extends __vite_ssr_import_0__.TaggedError()("VcsRepositoryDetectionError", {
	operation: __vite_ssr_import_0__.String,
	cwd: __vite_ssr_import_0__.String,
	detail: __vite_ssr_import_0__.String,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {
	get message() {
		return `VCS repository detection failed in ${this.operation}: ${this.cwd} - ${this.detail}`;
	}
};
class VcsUnsupportedOperationError extends __vite_ssr_import_0__.TaggedError()("VcsUnsupportedOperationError", {
	operation: __vite_ssr_import_0__.String,
	kind: VcsDriverKind,
	detail: __vite_ssr_import_0__.String
}) {
	get message() {
		return `VCS operation is unsupported for ${this.kind} in ${this.operation}: ${this.detail}`;
	}
};
const VcsError = __vite_ssr_import_0__.Union([
	VcsProcessSpawnError,
	VcsProcessExitError,
	VcsProcessTimeoutError,
	VcsProcessStdinWriteError,
	VcsProcessOutputReadError,
	VcsProcessOutputLimitError,
	VcsProcessMissingExitCodeError,
	VcsRepositoryDetectionError,
	VcsUnsupportedOperationError
]);
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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TztDQUNsQixNQUFNO0NBQ04sUUFBUSxzQkFBTztBQUNqQixDQUNGLENBQUMsQ0FBQztDQUNBLElBQWEsVUFBa0I7RUFDN0IsT0FBTyxvQ0FBb0MsS0FBSyxLQUFLLE1BQU0sS0FBSyxVQUFVLElBQUksS0FBSztDQUNyRjtBQUNGO0FBRU8sTUFBTSxXQUFXLHNCQUFPLE1BQU07Q0FDbkM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0FBQ0YsQ0FBQyIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsidmNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFNjaGVtYSBmcm9tIFwiZWZmZWN0L1NjaGVtYVwiO1xuaW1wb3J0IHsgTm9uTmVnYXRpdmVJbnQsIFRyaW1tZWROb25FbXB0eVN0cmluZyB9IGZyb20gXCIuL2Jhc2VTY2hlbWFzLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBWY3NEcml2ZXJLaW5kID0gU2NoZW1hLkxpdGVyYWxzKFtcImdpdFwiLCBcImpqXCIsIFwidW5rbm93blwiXSk7XG5leHBvcnQgdHlwZSBWY3NEcml2ZXJLaW5kID0gdHlwZW9mIFZjc0RyaXZlcktpbmQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc0ZyZXNobmVzc1NvdXJjZSA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwibGl2ZS1sb2NhbFwiLFxuICBcImNhY2hlZC1sb2NhbFwiLFxuICBcImNhY2hlZC1yZW1vdGVcIixcbiAgXCJleHBsaWNpdC1yZW1vdGVcIixcbl0pO1xuZXhwb3J0IHR5cGUgVmNzRnJlc2huZXNzU291cmNlID0gdHlwZW9mIFZjc0ZyZXNobmVzc1NvdXJjZS5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzRnJlc2huZXNzID0gU2NoZW1hLlN0cnVjdCh7XG4gIHNvdXJjZTogVmNzRnJlc2huZXNzU291cmNlLFxuICBvYnNlcnZlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gIGV4cGlyZXNBdDogU2NoZW1hLk9wdGlvbihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxufSk7XG5leHBvcnQgdHlwZSBWY3NGcmVzaG5lc3MgPSB0eXBlb2YgVmNzRnJlc2huZXNzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBWY3NEcml2ZXJDYXBhYmlsaXRpZXMgPSBTY2hlbWEuU3RydWN0KHtcbiAga2luZDogVmNzRHJpdmVyS2luZCxcbiAgc3VwcG9ydHNXb3JrdHJlZXM6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c0Jvb2ttYXJrczogU2NoZW1hLkJvb2xlYW4sXG4gIHN1cHBvcnRzQXRvbWljU25hcHNob3Q6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c1B1c2hEZWZhdWx0UmVtb3RlOiBTY2hlbWEuQm9vbGVhbixcbiAgaWdub3JlQ2xhc3NpZmllcjogU2NoZW1hLkxpdGVyYWxzKFtcIm5hdGl2ZVwiLCBcImdpdC1jb21wYXRpYmxlLWZhbGxiYWNrXCJdKSxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzRHJpdmVyQ2FwYWJpbGl0aWVzID0gdHlwZW9mIFZjc0RyaXZlckNhcGFiaWxpdGllcy5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzUmVwb3NpdG9yeUlkZW50aXR5ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGtpbmQ6IFZjc0RyaXZlcktpbmQsXG4gIHJvb3RQYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIG1ldGFkYXRhUGF0aDogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBmcmVzaG5lc3M6IFZjc0ZyZXNobmVzcyxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzUmVwb3NpdG9yeUlkZW50aXR5ID0gdHlwZW9mIFZjc1JlcG9zaXRvcnlJZGVudGl0eS5UeXBlO1xuXG5leHBvcnQgY29uc3QgVmNzTGlzdFdvcmtzcGFjZUZpbGVzUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHBhdGhzOiBTY2hlbWEuQXJyYXkoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgdHJ1bmNhdGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgZnJlc2huZXNzOiBWY3NGcmVzaG5lc3MsXG59KTtcbmV4cG9ydCB0eXBlIFZjc0xpc3RXb3Jrc3BhY2VGaWxlc1Jlc3VsdCA9IHR5cGVvZiBWY3NMaXN0V29ya3NwYWNlRmlsZXNSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc1JlbW90ZSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBuYW1lOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIHVybDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBwdXNoVXJsOiBTY2hlbWEuT3B0aW9uKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIGlzUHJpbWFyeTogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIFZjc1JlbW90ZSA9IHR5cGVvZiBWY3NSZW1vdGUuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFZjc0xpc3RSZW1vdGVzUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHJlbW90ZXM6IFNjaGVtYS5BcnJheShWY3NSZW1vdGUpLFxuICBmcmVzaG5lc3M6IFZjc0ZyZXNobmVzcyxcbn0pO1xuZXhwb3J0IHR5cGUgVmNzTGlzdFJlbW90ZXNSZXN1bHQgPSB0eXBlb2YgVmNzTGlzdFJlbW90ZXNSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGludGVyZmFjZSBWY3NQcm9jZXNzRXJyb3JDb250ZXh0IHtcbiAgcmVhZG9ubHkgb3BlcmF0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbW1hbmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFyZ3VtZW50Q291bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmNzUHJvY2Vzc1NwYXduRmFpbHVyZSB7XG4gIHJlYWRvbmx5IGNhdXNlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZjc1Byb2Nlc3NUaW1lb3V0RmFpbHVyZSB7XG4gIHJlYWRvbmx5IHRpbWVvdXRNczogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgVmNzUHJvY2Vzc0V4aXRGYWlsdXJlS2luZCA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwiYXV0aGVudGljYXRpb25cIixcbiAgXCJub3QtZm91bmRcIixcbiAgXCJyYXRlLWxpbWl0ZWRcIixcbiAgXCJjb21tYW5kLWZhaWxlZFwiLFxuXSk7XG5leHBvcnQgdHlwZSBWY3NQcm9jZXNzRXhpdEZhaWx1cmVLaW5kID0gdHlwZW9mIFZjc1Byb2Nlc3NFeGl0RmFpbHVyZUtpbmQuVHlwZTtcblxuZXhwb3J0IGludGVyZmFjZSBWY3NQcm9jZXNzRXhpdEZhaWx1cmUge1xuICByZWFkb25seSBleGl0Q29kZTogbnVtYmVyO1xuICByZWFkb25seSBzdGRlcnI6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RkZXJyVHJ1bmNhdGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgVmNzUHJvY2Vzc1NwYXduRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8VmNzUHJvY2Vzc1NwYXduRXJyb3I+KCkoXG4gIFwiVmNzUHJvY2Vzc1NwYXduRXJyb3JcIixcbiAge1xuICAgIG9wZXJhdGlvbjogU2NoZW1hLlN0cmluZyxcbiAgICBjb21tYW5kOiBTY2hlbWEuU3RyaW5nLFxuICAgIGN3ZDogU2NoZW1hLlN0cmluZyxcbiAgICBhcmd1bWVudENvdW50OiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICAgIGNhdXNlOiBTY2hlbWEuRGVmZWN0KCksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFZDUyBwcm9jZXNzIGZhaWxlZCB0byBzcGF3biBpbiAke3RoaXMub3BlcmF0aW9ufTogJHt0aGlzLmNvbW1hbmR9ICgke3RoaXMuY3dkfSlgO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9jZXNzU3Bhd25FcnJvcihjb250ZXh0OiBWY3NQcm9jZXNzRXJyb3JDb250ZXh0LCBlcnJvcjogVmNzUHJvY2Vzc1NwYXduRmFpbHVyZSkge1xuICAgIHJldHVybiBuZXcgVmNzUHJvY2Vzc1NwYXduRXJyb3Ioe1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIGNhdXNlOiBlcnJvci5jYXVzZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmNzUHJvY2Vzc0V4aXRFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxWY3NQcm9jZXNzRXhpdEVycm9yPigpKFxuICBcIlZjc1Byb2Nlc3NFeGl0RXJyb3JcIixcbiAge1xuICAgIG9wZXJhdGlvbjogU2NoZW1hLlN0cmluZyxcbiAgICBjb21tYW5kOiBTY2hlbWEuU3RyaW5nLFxuICAgIGN3ZDogU2NoZW1hLlN0cmluZyxcbiAgICBhcmd1bWVudENvdW50OiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICAgIGV4aXRDb2RlOiBTY2hlbWEuTnVtYmVyLFxuICAgIGRldGFpbDogU2NoZW1hLlN0cmluZyxcbiAgICBmYWlsdXJlS2luZDogU2NoZW1hLm9wdGlvbmFsKFZjc1Byb2Nlc3NFeGl0RmFpbHVyZUtpbmQpLFxuICAgIHJldHJ5YWJsZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgICBzdGRlcnJMZW5ndGg6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gICAgc3RkZXJyVHJ1bmNhdGVkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBWQ1MgcHJvY2VzcyBmYWlsZWQgaW4gJHt0aGlzLm9wZXJhdGlvbn06ICR7dGhpcy5jb21tYW5kfSAoJHt0aGlzLmN3ZH0pIGV4aXRlZCB3aXRoICR7dGhpcy5leGl0Q29kZX0gLSAke3RoaXMuZGV0YWlsfWA7XG4gIH1cblxuICBzdGF0aWMgZnJvbVByb2Nlc3NFeGl0KFxuICAgIGNvbnRleHQ6IFZjc1Byb2Nlc3NFcnJvckNvbnRleHQsXG4gICAgZXJyb3I6IFZjc1Byb2Nlc3NFeGl0RmFpbHVyZSxcbiAgICBmYWlsdXJlS2luZDogVmNzUHJvY2Vzc0V4aXRGYWlsdXJlS2luZCxcbiAgICBvcHRpb25zPzogeyByZWFkb25seSByZXRyeWFibGU/OiBib29sZWFuOyByZWFkb25seSBub3RGb3VuZERldGFpbD86IHN0cmluZyB9LFxuICApIHtcbiAgICBjb25zdCBkZXRhaWwgPVxuICAgICAgZmFpbHVyZUtpbmQgPT09IFwiYXV0aGVudGljYXRpb25cIlxuICAgICAgICA/IFwiQXV0aGVudGljYXRpb24gZmFpbGVkLlwiXG4gICAgICAgIDogZmFpbHVyZUtpbmQgPT09IFwicmF0ZS1saW1pdGVkXCJcbiAgICAgICAgICA/IFwiQVBJIHJhdGUgbGltaXQgZXhjZWVkZWQuXCJcbiAgICAgICAgICA6IGZhaWx1cmVLaW5kID09PSBcIm5vdC1mb3VuZFwiXG4gICAgICAgICAgICA/IChvcHRpb25zPy5ub3RGb3VuZERldGFpbCA/PyBcIlZDUyByZXNvdXJjZSBub3QgZm91bmQuXCIpXG4gICAgICAgICAgICA6IFwiUHJvY2VzcyBleGl0ZWQgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cy5cIjtcblxuICAgIHJldHVybiBuZXcgVmNzUHJvY2Vzc0V4aXRFcnJvcih7XG4gICAgICAuLi5jb250ZXh0LFxuICAgICAgZXhpdENvZGU6IGVycm9yLmV4aXRDb2RlLFxuICAgICAgZGV0YWlsLFxuICAgICAgZmFpbHVyZUtpbmQsXG4gICAgICAuLi4ob3B0aW9ucz8ucmV0cnlhYmxlID09PSB0cnVlID8geyByZXRyeWFibGU6IHRydWUgfSA6IHt9KSxcbiAgICAgIHN0ZGVyckxlbmd0aDogZXJyb3Iuc3RkZXJyLmxlbmd0aCxcbiAgICAgIHN0ZGVyclRydW5jYXRlZDogZXJyb3Iuc3RkZXJyVHJ1bmNhdGVkLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWY3NQcm9jZXNzVGltZW91dEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFZjc1Byb2Nlc3NUaW1lb3V0RXJyb3I+KCkoXG4gIFwiVmNzUHJvY2Vzc1RpbWVvdXRFcnJvclwiLFxuICB7XG4gICAgb3BlcmF0aW9uOiBTY2hlbWEuU3RyaW5nLFxuICAgIGNvbW1hbmQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgY3dkOiBTY2hlbWEuU3RyaW5nLFxuICAgIGFyZ3VtZW50Q291bnQ6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gICAgdGltZW91dE1zOiBTY2hlbWEuTnVtYmVyLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBWQ1MgcHJvY2VzcyB0aW1lZCBvdXQgaW4gJHt0aGlzLm9wZXJhdGlvbn06ICR7dGhpcy5jb21tYW5kfSAoJHt0aGlzLmN3ZH0pIGFmdGVyICR7dGhpcy50aW1lb3V0TXN9bXNgO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9jZXNzVGltZW91dEVycm9yKGNvbnRleHQ6IFZjc1Byb2Nlc3NFcnJvckNvbnRleHQsIGVycm9yOiBWY3NQcm9jZXNzVGltZW91dEZhaWx1cmUpIHtcbiAgICByZXR1cm4gbmV3IFZjc1Byb2Nlc3NUaW1lb3V0RXJyb3Ioe1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIHRpbWVvdXRNczogZXJyb3IudGltZW91dE1zLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IFZjc1Byb2Nlc3NCb3VuZGFyeUVycm9yRmllbGRzID0ge1xuICBvcGVyYXRpb246IFNjaGVtYS5TdHJpbmcsXG4gIGNvbW1hbmQ6IFNjaGVtYS5TdHJpbmcsXG4gIGN3ZDogU2NoZW1hLlN0cmluZyxcbiAgYXJndW1lbnRDb3VudDogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbn07XG5cbmV4cG9ydCBjbGFzcyBWY3NQcm9jZXNzU3RkaW5Xcml0ZUVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFZjc1Byb2Nlc3NTdGRpbldyaXRlRXJyb3I+KCkoXG4gIFwiVmNzUHJvY2Vzc1N0ZGluV3JpdGVFcnJvclwiLFxuICB7XG4gICAgLi4uVmNzUHJvY2Vzc0JvdW5kYXJ5RXJyb3JGaWVsZHMsXG4gICAgc3RkaW5CeXRlczogTm9uTmVnYXRpdmVJbnQsXG4gICAgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgVkNTIHByb2Nlc3MgZmFpbGVkIHRvIHdyaXRlICR7dGhpcy5zdGRpbkJ5dGVzfSBieXRlcyB0byBzdGRpbiBpbiAke3RoaXMub3BlcmF0aW9ufTogJHt0aGlzLmNvbW1hbmR9ICgke3RoaXMuY3dkfSlgO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWY3NQcm9jZXNzT3V0cHV0UmVhZEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFZjc1Byb2Nlc3NPdXRwdXRSZWFkRXJyb3I+KCkoXG4gIFwiVmNzUHJvY2Vzc091dHB1dFJlYWRFcnJvclwiLFxuICB7XG4gICAgLi4uVmNzUHJvY2Vzc0JvdW5kYXJ5RXJyb3JGaWVsZHMsXG4gICAgc3RyZWFtOiBTY2hlbWEuTGl0ZXJhbHMoW1wic3Rkb3V0XCIsIFwic3RkZXJyXCIsIFwiZXhpdENvZGVcIl0pLFxuICAgIGNhdXNlOiBTY2hlbWEuRGVmZWN0KCksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFZDUyBwcm9jZXNzIGZhaWxlZCB0byByZWFkICR7dGhpcy5zdHJlYW19IGluICR7dGhpcy5vcGVyYXRpb259OiAke3RoaXMuY29tbWFuZH0gKCR7dGhpcy5jd2R9KWA7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZjc1Byb2Nlc3NPdXRwdXRMaW1pdEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFZjc1Byb2Nlc3NPdXRwdXRMaW1pdEVycm9yPigpKFxuICBcIlZjc1Byb2Nlc3NPdXRwdXRMaW1pdEVycm9yXCIsXG4gIHtcbiAgICAuLi5WY3NQcm9jZXNzQm91bmRhcnlFcnJvckZpZWxkcyxcbiAgICBzdHJlYW06IFNjaGVtYS5MaXRlcmFscyhbXCJzdGRvdXRcIiwgXCJzdGRlcnJcIl0pLFxuICAgIG1heEJ5dGVzOiBOb25OZWdhdGl2ZUludCxcbiAgICBvYnNlcnZlZEJ5dGVzOiBOb25OZWdhdGl2ZUludCxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgVkNTIHByb2Nlc3MgJHt0aGlzLnN0cmVhbX0gcHJvZHVjZWQgJHt0aGlzLm9ic2VydmVkQnl0ZXN9IGJ5dGVzIGluICR7dGhpcy5vcGVyYXRpb259OiAke3RoaXMuY29tbWFuZH0gKCR7dGhpcy5jd2R9KSwgZXhjZWVkaW5nIHRoZSAke3RoaXMubWF4Qnl0ZXN9IGJ5dGUgbGltaXRgO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWY3NQcm9jZXNzTWlzc2luZ0V4aXRDb2RlRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8VmNzUHJvY2Vzc01pc3NpbmdFeGl0Q29kZUVycm9yPigpKFxuICBcIlZjc1Byb2Nlc3NNaXNzaW5nRXhpdENvZGVFcnJvclwiLFxuICBWY3NQcm9jZXNzQm91bmRhcnlFcnJvckZpZWxkcyxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgVkNTIHByb2Nlc3MgY29tcGxldGVkIHdpdGhvdXQgYW4gZXhpdCBjb2RlIGluICR7dGhpcy5vcGVyYXRpb259OiAke3RoaXMuY29tbWFuZH0gKCR7dGhpcy5jd2R9KWA7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFZjc091dHB1dERlY29kZUVycm9yID0gU2NoZW1hLlVuaW9uKFtcbiAgVmNzUHJvY2Vzc1N0ZGluV3JpdGVFcnJvcixcbiAgVmNzUHJvY2Vzc091dHB1dFJlYWRFcnJvcixcbiAgVmNzUHJvY2Vzc091dHB1dExpbWl0RXJyb3IsXG4gIFZjc1Byb2Nlc3NNaXNzaW5nRXhpdENvZGVFcnJvcixcbl0pO1xuZXhwb3J0IHR5cGUgVmNzT3V0cHV0RGVjb2RlRXJyb3IgPSB0eXBlb2YgVmNzT3V0cHV0RGVjb2RlRXJyb3IuVHlwZTtcblxuZXhwb3J0IGNsYXNzIFZjc1JlcG9zaXRvcnlEZXRlY3Rpb25FcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxWY3NSZXBvc2l0b3J5RGV0ZWN0aW9uRXJyb3I+KCkoXG4gIFwiVmNzUmVwb3NpdG9yeURldGVjdGlvbkVycm9yXCIsXG4gIHtcbiAgICBvcGVyYXRpb246IFNjaGVtYS5TdHJpbmcsXG4gICAgY3dkOiBTY2hlbWEuU3RyaW5nLFxuICAgIGRldGFpbDogU2NoZW1hLlN0cmluZyxcbiAgICBjYXVzZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5EZWZlY3QoKSksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFZDUyByZXBvc2l0b3J5IGRldGVjdGlvbiBmYWlsZWQgaW4gJHt0aGlzLm9wZXJhdGlvbn06ICR7dGhpcy5jd2R9IC0gJHt0aGlzLmRldGFpbH1gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWY3NVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFZjc1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3I+KCkoXG4gIFwiVmNzVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvclwiLFxuICB7XG4gICAgb3BlcmF0aW9uOiBTY2hlbWEuU3RyaW5nLFxuICAgIGtpbmQ6IFZjc0RyaXZlcktpbmQsXG4gICAgZGV0YWlsOiBTY2hlbWEuU3RyaW5nLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBWQ1Mgb3BlcmF0aW9uIGlzIHVuc3VwcG9ydGVkIGZvciAke3RoaXMua2luZH0gaW4gJHt0aGlzLm9wZXJhdGlvbn06ICR7dGhpcy5kZXRhaWx9YDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgVmNzRXJyb3IgPSBTY2hlbWEuVW5pb24oW1xuICBWY3NQcm9jZXNzU3Bhd25FcnJvcixcbiAgVmNzUHJvY2Vzc0V4aXRFcnJvcixcbiAgVmNzUHJvY2Vzc1RpbWVvdXRFcnJvcixcbiAgVmNzUHJvY2Vzc1N0ZGluV3JpdGVFcnJvcixcbiAgVmNzUHJvY2Vzc091dHB1dFJlYWRFcnJvcixcbiAgVmNzUHJvY2Vzc091dHB1dExpbWl0RXJyb3IsXG4gIFZjc1Byb2Nlc3NNaXNzaW5nRXhpdENvZGVFcnJvcixcbiAgVmNzUmVwb3NpdG9yeURldGVjdGlvbkVycm9yLFxuICBWY3NVbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yLFxuXSk7XG5leHBvcnQgdHlwZSBWY3NFcnJvciA9IHR5cGVvZiBWY3NFcnJvci5UeXBlO1xuIl0sImZpbGUiOiIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvdmNzLnRzIn0=

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy92Y3MudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvdmNzLnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiXSxbXSxbIjgiLCI5Il0se30sIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvU2NoZW1hLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Jhc2VTY2hlbWFzLnRzIl0=