__vite_ssr_exportName__("ProjectScriptIcon", () => { try { return ProjectScriptIcon } catch {} });
__vite_ssr_exportName__("ProjectScript", () => { try { return ProjectScript } catch {} });
__vite_ssr_exportName__("ProjectIconColor", () => { try { return ProjectIconColor } catch {} });
__vite_ssr_exportName__("ProjectMonogramText", () => { try { return ProjectMonogramText } catch {} });
__vite_ssr_exportName__("ProjectFaviconPath", () => { try { return ProjectFaviconPath } catch {} });
__vite_ssr_exportName__("ProjectIconOverride", () => { try { return ProjectIconOverride } catch {} });
__vite_ssr_exportName__("StoredProjectIcon", () => { try { return StoredProjectIcon } catch {} });
__vite_ssr_exportName__("ReceivedProjectIcon", () => { try { return ReceivedProjectIcon } catch {} });
__vite_ssr_exportName__("Project", () => { try { return Project } catch {} });
__vite_ssr_exportName__("ProjectSnapshot", () => { try { return ProjectSnapshot } catch {} });
__vite_ssr_exportName__("ProjectChange", () => { try { return ProjectChange } catch {} });
__vite_ssr_exportName__("ProjectCreatePayload", () => { try { return ProjectCreatePayload } catch {} });
__vite_ssr_exportName__("ProjectUpdatePayload", () => { try { return ProjectUpdatePayload } catch {} });
__vite_ssr_exportName__("ProjectMutation", () => { try { return ProjectMutation } catch {} });
__vite_ssr_exportName__("ProjectMutationError", () => { try { return ProjectMutationError } catch {} });
__vite_ssr_exportName__("ProjectEntryKind", () => { try { return ProjectEntryKind } catch {} });
__vite_ssr_exportName__("ProjectSearchEntriesInput", () => { try { return ProjectSearchEntriesInput } catch {} });
__vite_ssr_exportName__("ProjectEntry", () => { try { return ProjectEntry } catch {} });
__vite_ssr_exportName__("ProjectSearchEntriesResult", () => { try { return ProjectSearchEntriesResult } catch {} });
__vite_ssr_exportName__("ProjectSearchContentsInput", () => { try { return ProjectSearchContentsInput } catch {} });
__vite_ssr_exportName__("ProjectContentMatchRange", () => { try { return ProjectContentMatchRange } catch {} });
__vite_ssr_exportName__("ProjectContentMatch", () => { try { return ProjectContentMatch } catch {} });
__vite_ssr_exportName__("ProjectSearchContentsResult", () => { try { return ProjectSearchContentsResult } catch {} });
__vite_ssr_exportName__("ProjectListEntriesInput", () => { try { return ProjectListEntriesInput } catch {} });
__vite_ssr_exportName__("ProjectListEntriesResult", () => { try { return ProjectListEntriesResult } catch {} });
__vite_ssr_exportName__("ProjectListIgnoredFilesInput", () => { try { return ProjectListIgnoredFilesInput } catch {} });
__vite_ssr_exportName__("ProjectIgnoredFile", () => { try { return ProjectIgnoredFile } catch {} });
__vite_ssr_exportName__("ProjectListIgnoredFilesResult", () => { try { return ProjectListIgnoredFilesResult } catch {} });
__vite_ssr_exportName__("ProjectEntriesFailure", () => { try { return ProjectEntriesFailure } catch {} });
__vite_ssr_exportName__("ProjectSearchEntriesError", () => { try { return ProjectSearchEntriesError } catch {} });
__vite_ssr_exportName__("ProjectSearchContentsError", () => { try { return ProjectSearchContentsError } catch {} });
__vite_ssr_exportName__("ProjectListEntriesError", () => { try { return ProjectListEntriesError } catch {} });
__vite_ssr_exportName__("ProjectReadFileInput", () => { try { return ProjectReadFileInput } catch {} });
__vite_ssr_exportName__("ProjectReadFileResult", () => { try { return ProjectReadFileResult } catch {} });
__vite_ssr_exportName__("ProjectFileFailure", () => { try { return ProjectFileFailure } catch {} });
__vite_ssr_exportName__("ProjectFileOperation", () => { try { return ProjectFileOperation } catch {} });
__vite_ssr_exportName__("ProjectReadFileError", () => { try { return ProjectReadFileError } catch {} });
__vite_ssr_exportName__("ProjectWriteFileInput", () => { try { return ProjectWriteFileInput } catch {} });
__vite_ssr_exportName__("ProjectWriteFileResult", () => { try { return ProjectWriteFileResult } catch {} });
__vite_ssr_exportName__("ProjectEnsureScratchResult", () => { try { return ProjectEnsureScratchResult } catch {} });
__vite_ssr_exportName__("ProjectCreateNewInput", () => { try { return ProjectCreateNewInput } catch {} });
__vite_ssr_exportName__("ProjectCreateNewResult", () => { try { return ProjectCreateNewResult } catch {} });
__vite_ssr_exportName__("ProjectWriteFileError", () => { try { return ProjectWriteFileError } 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/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/SchemaTransformation.js");
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/environment.ts", {"importedNames":["RepositoryIdentity","ThreadEnvMode"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/modelSelection.ts", {"importedNames":["ModelSelection"]});
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["CommandId","ForwardCompatibleUnion","isUnknownUnionMember","IsoDateTime","NonNegativeInt","PositiveInt","ProjectId","TrimmedNonEmptyString","TrimmedString"]});





const PROJECT_SEARCH_ENTRIES_MAX_LIMIT = 200;
const PROJECT_SEARCH_CONTENTS_MAX_LIMIT = 500;
const PROJECT_WRITE_FILE_PATH_MAX_LENGTH = 512;
const PROJECT_READ_FILE_PATH_MAX_LENGTH = 512;
const ProjectScriptIcon = __vite_ssr_import_0__.Literals([
	"play",
	"test",
	"lint",
	"configure",
	"build",
	"debug"
]);
const ProjectScript = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_4__.TrimmedNonEmptyString,
	name: __vite_ssr_import_4__.TrimmedNonEmptyString,
	command: __vite_ssr_import_4__.TrimmedNonEmptyString,
	icon: ProjectScriptIcon,
	runOnWorktreeCreate: __vite_ssr_import_0__.Boolean,
	runOnSettle: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	async: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	previewUrl: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	autoOpenPreview: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
});
const ProjectIconColor = __vite_ssr_import_0__.Literals([
	"gray",
	"red",
	"orange",
	"amber",
	"yellow",
	"lime",
	"green",
	"emerald",
	"teal",
	"cyan",
	"sky",
	"blue",
	"indigo",
	"violet",
	"purple",
	"fuchsia",
	"pink",
	"rose"
]);
const ProjectLucideIconName = __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(64), __vite_ssr_import_0__.isPattern(/^[a-z0-9]+(?:-[a-z0-9]+)*$/));
const ProjectEmoji = __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(32));
// Grapheme-count validation belongs to the server command boundary, not snapshot decoding.
const ProjectMonogramText = __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(32), __vite_ssr_import_0__.isPattern(/^[\p{L}\p{N}][\p{L}\p{N}\p{M}\u200c\u200d]*$/u));
const ProjectLucideIcon = __vite_ssr_import_0__.Struct({
	kind: __vite_ssr_import_0__.Literal("lucide"),
	name: ProjectLucideIconName,
	color: ProjectIconColor
});
const ProjectEmojiIcon = __vite_ssr_import_0__.Struct({
	kind: __vite_ssr_import_0__.Literal("emoji"),
	emoji: ProjectEmoji
});
const ProjectMonogramIcon = __vite_ssr_import_0__.Struct({
	kind: __vite_ssr_import_0__.Literal("monogram"),
	text: ProjectMonogramText,
	color: ProjectIconColor
});
const ProjectFaviconPath = __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(1024), __vite_ssr_import_0__.isPattern(/\.(?:avif|gif|icns|ico|jpe?g|png|svg|webp)$/i));
const ProjectIconOverride = __vite_ssr_import_0__.Union([
	ProjectLucideIcon,
	ProjectEmojiIcon,
	ProjectMonogramIcon
]);
const ProjectLucideIconWithLegacyMonogram = __vite_ssr_import_0__.Struct({
	...ProjectLucideIcon.fields,
	monogramText: __vite_ssr_import_0__.optional(ProjectMonogramText),
	monogram: __vite_ssr_import_0__.optional(ProjectMonogramText)
});
const projectIconMembers = [
	ProjectLucideIconWithLegacyMonogram,
	ProjectEmojiIcon,
	ProjectMonogramIcon
];
const fromLegacyMonogram = (icon) => {
	if (icon.kind !== "lucide") return icon;
	const text = icon.monogramText ?? icon.monogram;
	return text === undefined ? {
		kind: "lucide",
		name: icon.name,
		color: icon.color
	} : {
		kind: "monogram",
		text,
		color: icon.color
	};
};
const StoredProjectIcon = __vite_ssr_import_0__.Union(projectIconMembers).pipe(__vite_ssr_import_0__.decodeTo(__vite_ssr_import_0__.toType(ProjectIconOverride), __vite_ssr_import_1__.transform({
	decode: fromLegacyMonogram,
	encode: (icon) => icon
})));
const ReceivedProjectIcon = (0,__vite_ssr_import_4__.ForwardCompatibleUnion)(projectIconMembers, "kind").pipe(__vite_ssr_import_0__.decodeTo(__vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.toType(ProjectIconOverride)), __vite_ssr_import_1__.transform({
	decode: (icon) => (0,__vite_ssr_import_4__.isUnknownUnionMember)(icon) ? null : fromLegacyMonogram(icon),
	encode: (icon) => icon
})));
const Project = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_4__.ProjectId,
	title: __vite_ssr_import_4__.TrimmedNonEmptyString,
	workspaceRoot: __vite_ssr_import_4__.TrimmedNonEmptyString,
	repositoryIdentity: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_2__.RepositoryIdentity))),
	faviconPath: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_4__.TrimmedNonEmptyString))),
	projectIcon: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr(ReceivedProjectIcon)),
	defaultModelSelection: __vite_ssr_import_0__.NullOr((0,__vite_ssr_import_3__.ModelSelection)),
	defaultThreadEnvMode: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_2__.ThreadEnvMode))),
	// Opt-in because background sync performs network I/O and may move the checkout.
	autoPull: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	scripts: __vite_ssr_import_0__.Array(ProjectScript),
	createdAt: __vite_ssr_import_4__.IsoDateTime,
	updatedAt: __vite_ssr_import_4__.IsoDateTime,
	deletedAt: __vite_ssr_import_0__.NullOr((0,__vite_ssr_import_4__.IsoDateTime))
});
const ProjectSnapshot = __vite_ssr_import_0__.Struct({
	projects: __vite_ssr_import_0__.Array(Project),
	updatedAt: __vite_ssr_import_4__.IsoDateTime
});
const ProjectChange = __vite_ssr_import_0__.Union([__vite_ssr_import_0__.Struct({
	type: __vite_ssr_import_0__.Literal("project.upserted"),
	project: Project
}), __vite_ssr_import_0__.Struct({
	type: __vite_ssr_import_0__.Literal("project.deleted"),
	projectId: __vite_ssr_import_4__.ProjectId,
	deletedAt: __vite_ssr_import_4__.IsoDateTime
})]);
const ProjectCreatePayload = __vite_ssr_import_0__.Struct({
	title: __vite_ssr_import_4__.TrimmedNonEmptyString,
	workspaceRoot: __vite_ssr_import_4__.TrimmedNonEmptyString,
	createWorkspaceRootIfMissing: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	defaultModelSelection: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_3__.ModelSelection))),
	scripts: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Array(ProjectScript))
});
const ProjectUpdatePayload = __vite_ssr_import_0__.Struct({
	title: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	workspaceRoot: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	defaultModelSelection: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_3__.ModelSelection))),
	autoPull: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	projectIcon: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr(ProjectIconOverride)),
	faviconPath: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_4__.TrimmedNonEmptyString))),
	defaultThreadEnvMode: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.NullOr((0,__vite_ssr_import_2__.ThreadEnvMode))),
	scripts: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Array(ProjectScript))
});
const ProjectMutation = __vite_ssr_import_0__.Union([
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("project.create"),
		commandId: __vite_ssr_import_4__.CommandId,
		projectId: __vite_ssr_import_4__.ProjectId,
		...ProjectCreatePayload.fields
	}),
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("project.update"),
		commandId: __vite_ssr_import_4__.CommandId,
		projectId: __vite_ssr_import_4__.ProjectId,
		...ProjectUpdatePayload.fields
	}),
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("project.delete"),
		commandId: __vite_ssr_import_4__.CommandId,
		projectId: __vite_ssr_import_4__.ProjectId,
		force: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
	})
]);
class ProjectMutationError extends __vite_ssr_import_0__.TaggedError()("ProjectMutationError", {
	commandId: __vite_ssr_import_4__.CommandId,
	message: __vite_ssr_import_0__.String,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {};
const ProjectEntryKind = __vite_ssr_import_0__.Literals(["file", "directory"]);
const ProjectSearchEntriesInput = __vite_ssr_import_0__.Struct({
	cwd: __vite_ssr_import_4__.TrimmedNonEmptyString,
	query: __vite_ssr_import_4__.TrimmedString.check(__vite_ssr_import_0__.isMaxLength(256)),
	limit: __vite_ssr_import_4__.PositiveInt.check(__vite_ssr_import_0__.isLessThanOrEqualTo(PROJECT_SEARCH_ENTRIES_MAX_LIMIT)),
	kind: __vite_ssr_import_0__.optional(ProjectEntryKind),
	imageOnly: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
});
const ProjectEntry = __vite_ssr_import_0__.Struct({
	path: __vite_ssr_import_4__.TrimmedNonEmptyString,
	kind: ProjectEntryKind,
	ignored: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
});
const ProjectSearchEntriesResult = __vite_ssr_import_0__.Struct({
	entries: __vite_ssr_import_0__.Array(ProjectEntry),
	truncated: __vite_ssr_import_0__.Boolean
});
const ProjectSearchContentsInput = __vite_ssr_import_0__.Struct({
	cwd: __vite_ssr_import_4__.TrimmedNonEmptyString,
	// Preserve whitespace because it is significant in content queries.
	query: __vite_ssr_import_0__.String.check(__vite_ssr_import_0__.isNonEmpty(), __vite_ssr_import_0__.isMaxLength(256)),
	limit: __vite_ssr_import_4__.PositiveInt.check(__vite_ssr_import_0__.isLessThanOrEqualTo(PROJECT_SEARCH_CONTENTS_MAX_LIMIT)),
	caseSensitive: __vite_ssr_import_0__.Boolean,
	wholeWord: __vite_ssr_import_0__.Boolean,
	useRegex: __vite_ssr_import_0__.Boolean
});
const ProjectContentMatchRange = __vite_ssr_import_0__.Struct({
	start: __vite_ssr_import_4__.NonNegativeInt,
	end: __vite_ssr_import_4__.NonNegativeInt
});
const ProjectContentMatch = __vite_ssr_import_0__.Struct({
	path: __vite_ssr_import_4__.TrimmedNonEmptyString,
	lineNumber: __vite_ssr_import_4__.PositiveInt,
	lineContent: __vite_ssr_import_0__.String,
	matchRanges: __vite_ssr_import_0__.Array(ProjectContentMatchRange)
});
const ProjectSearchContentsResult = __vite_ssr_import_0__.Struct({
	matches: __vite_ssr_import_0__.Array(ProjectContentMatch),
	truncated: __vite_ssr_import_0__.Boolean,
	regexFallbackError: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.String)
});
const ProjectListEntriesInput = __vite_ssr_import_0__.Struct({
	cwd: __vite_ssr_import_4__.TrimmedNonEmptyString,
	directoryPath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedString))
});
const ProjectListEntriesResult = __vite_ssr_import_0__.Struct({
	entries: __vite_ssr_import_0__.Array(ProjectEntry),
	truncated: __vite_ssr_import_0__.Boolean
});
// Untracked files git ignores. Wholly ignored folders such as `node_modules`
// are left out, so the list stays small enough to pick from.
const ProjectListIgnoredFilesInput = __vite_ssr_import_0__.Struct({ cwd: __vite_ssr_import_4__.TrimmedNonEmptyString });
const ProjectIgnoredFile = __vite_ssr_import_0__.Struct({
	path: __vite_ssr_import_4__.TrimmedNonEmptyString,
	byteLength: __vite_ssr_import_4__.NonNegativeInt
});
const ProjectListIgnoredFilesResult = __vite_ssr_import_0__.Struct({
	files: __vite_ssr_import_0__.Array(ProjectIgnoredFile),
	truncated: __vite_ssr_import_0__.Boolean
});
const ProjectEntriesFailure = __vite_ssr_import_0__.Literals([
	"workspace_root_not_found",
	"workspace_root_create_failed",
	"workspace_root_stat_failed",
	"workspace_root_not_directory",
	"search_index_create_failed",
	"search_index_scan_timed_out",
	"search_index_search_failed",
	"directory_list_failed"
]);
function decodedProjectErrorMessage(props) {
	if (!("message" in props)) return undefined;
	return typeof props.message === "string" ? props.message : undefined;
}
class ProjectSearchEntriesError extends __vite_ssr_import_0__.TaggedError()("ProjectSearchEntriesError", {
	cwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	queryLength: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.NonNegativeInt)),
	limit: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.PositiveInt)),
	failure: __vite_ssr_import_0__.optional(ProjectEntriesFailure),
	normalizedCwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	timeout: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	detail: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	message: __vite_ssr_import_4__.TrimmedNonEmptyString,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {
	// @effect-diagnostics-next-line overriddenSchemaConstructor:off
	constructor(props) {
		super({
			...props,
			message: decodedProjectErrorMessage(props) ?? `Failed to search workspace entries in '${props.cwd}'.`
		});
	}
};
class ProjectSearchContentsError extends __vite_ssr_import_0__.TaggedError()("ProjectSearchContentsError", {
	cwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	queryLength: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.NonNegativeInt)),
	limit: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.PositiveInt)),
	failure: __vite_ssr_import_0__.optional(ProjectEntriesFailure),
	normalizedCwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	timeout: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	detail: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	message: __vite_ssr_import_4__.TrimmedNonEmptyString,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {
	// @effect-diagnostics-next-line overriddenSchemaConstructor:off
	constructor(props) {
		super({
			...props,
			message: decodedProjectErrorMessage(props) ?? `Failed to search workspace contents in '${props.cwd}'.`
		});
	}
};
class ProjectListEntriesError extends __vite_ssr_import_0__.TaggedError()("ProjectListEntriesError", {
	cwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	failure: __vite_ssr_import_0__.optional(ProjectEntriesFailure),
	normalizedCwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	timeout: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	detail: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	message: __vite_ssr_import_4__.TrimmedNonEmptyString,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {
	// @effect-diagnostics-next-line overriddenSchemaConstructor:off
	constructor(props) {
		super({
			...props,
			message: decodedProjectErrorMessage(props) ?? `Failed to list workspace entries in '${props.cwd}'.`
		});
	}
};
const ProjectReadFileInput = __vite_ssr_import_0__.Struct({
	cwd: __vite_ssr_import_4__.TrimmedNonEmptyString,
	// Workspace-relative or absolute host path; only workspace-relative paths are writable.
	relativePath: __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(PROJECT_READ_FILE_PATH_MAX_LENGTH)),
	// Optional files can be absent without failing the read.
	allowMissing: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
});
const ProjectReadFileResult = __vite_ssr_import_0__.Struct({
	relativePath: __vite_ssr_import_4__.TrimmedNonEmptyString,
	contents: __vite_ssr_import_0__.String,
	byteLength: __vite_ssr_import_4__.NonNegativeInt,
	truncated: __vite_ssr_import_0__.Boolean,
	// Omitted by older servers; false only for an absent optional file.
	exists: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
});
const ProjectFileFailure = __vite_ssr_import_0__.Literals([
	"workspace_path_outside_root",
	"resolved_path_outside_root",
	"path_not_file",
	"binary_file",
	"operation_failed"
]);
const ProjectFileOperation = __vite_ssr_import_0__.Literals([
	"realpath-workspace-root",
	"realpath-target",
	"open",
	"stat",
	"read",
	"close",
	"make-directory",
	"write-file"
]);
class ProjectReadFileError extends __vite_ssr_import_0__.TaggedError()("ProjectReadFileError", {
	cwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	relativePath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	failure: __vite_ssr_import_0__.optional(ProjectFileFailure),
	resolvedPath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	resolvedWorkspaceRoot: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	operation: __vite_ssr_import_0__.optional(ProjectFileOperation),
	operationPath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	message: __vite_ssr_import_4__.TrimmedNonEmptyString,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {
	// @effect-diagnostics-next-line overriddenSchemaConstructor:off
	constructor(props) {
		super({
			...props,
			message: decodedProjectErrorMessage(props) ?? `Failed to read workspace file '${props.relativePath}' in '${props.cwd}'.`
		});
	}
};
const ProjectWriteFileInput = __vite_ssr_import_0__.Struct({
	cwd: __vite_ssr_import_4__.TrimmedNonEmptyString,
	relativePath: __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(PROJECT_WRITE_FILE_PATH_MAX_LENGTH)),
	contents: __vite_ssr_import_0__.String
});
const ProjectWriteFileResult = __vite_ssr_import_0__.Struct({ relativePath: __vite_ssr_import_4__.TrimmedNonEmptyString });
const ProjectEnsureScratchResult = __vite_ssr_import_0__.Struct({ projectId: __vite_ssr_import_4__.ProjectId });
const ProjectCreateNewInput = __vite_ssr_import_0__.Struct({ name: __vite_ssr_import_4__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(200)) });
const ProjectCreateNewResult = __vite_ssr_import_0__.Struct({
	projectId: __vite_ssr_import_4__.ProjectId,
	workspaceRoot: __vite_ssr_import_4__.TrimmedNonEmptyString,
	/** The project and its files exist either way. */
	commitError: __vite_ssr_import_0__.optionalKey((0,__vite_ssr_import_4__.TrimmedNonEmptyString))
});
class ProjectWriteFileError extends __vite_ssr_import_0__.TaggedError()("ProjectWriteFileError", {
	cwd: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	relativePath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	failure: __vite_ssr_import_0__.optional(ProjectFileFailure),
	resolvedPath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	resolvedWorkspaceRoot: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	operation: __vite_ssr_import_0__.optional(ProjectFileOperation),
	operationPath: __vite_ssr_import_0__.optional((0,__vite_ssr_import_4__.TrimmedNonEmptyString)),
	message: __vite_ssr_import_4__.TrimmedNonEmptyString,
	cause: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Defect())
}) {
	// @effect-diagnostics-next-line overriddenSchemaConstructor:off
	constructor(props) {
		super({
			...props,
			message: decodedProjectErrorMessage(props) ?? `Failed to write workspace file '${props.relativePath}' in '${props.cwd}'.`
		});
	}
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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QkFBNkIsc0JBQU8sT0FBTyxFQUN0RCxXQUFXLGdDQUNiLENBQUM7QUFHTSxNQUFNLHdCQUF3QixzQkFBTyxPQUFPLEVBQ2pELE1BQU0sNENBQXNCLE1BQU0sc0JBQU8sWUFBWSxHQUFHLENBQUMsRUFDM0QsQ0FBQztBQUdNLE1BQU0seUJBQXlCLHNCQUFPLE9BQU87Q0FDbEQsV0FBVztDQUNYLGVBQWU7O0NBRWYsYUFBYSxzQkFBTyxlQUFZLDRDQUFxQjtBQUN2RCxDQUFDO0FBR00sTUFBTSw4QkFBOEIsc0JBQU8sWUFBbUMsQ0FBQyxDQUNwRix5QkFDQTtDQUNFLEtBQUssc0JBQU8sWUFBUyw0Q0FBcUI7Q0FDMUMsY0FBYyxzQkFBTyxZQUFTLDRDQUFxQjtDQUNuRCxTQUFTLHNCQUFPLFNBQVMsa0JBQWtCO0NBQzNDLGNBQWMsc0JBQU8sWUFBUyw0Q0FBcUI7Q0FDbkQsdUJBQXVCLHNCQUFPLFlBQVMsNENBQXFCO0NBQzVELFdBQVcsc0JBQU8sU0FBUyxvQkFBb0I7Q0FDL0MsZUFBZSxzQkFBTyxZQUFTLDRDQUFxQjtDQUNwRCxTQUFTO0NBQ1QsT0FBTyxzQkFBTyxTQUFTLHNCQUFPLE9BQU8sQ0FBQztBQUN4QyxDQUNGLENBQUMsQ0FBQzs7Q0FFQSxZQUFZLE9BQWtDO0VBQzVDLE1BQU07R0FDSixHQUFHO0dBQ0gsU0FDRSwyQkFBMkIsS0FBSyxLQUNoQyxtQ0FBbUMsTUFBTSxhQUFhLFFBQVEsTUFBTSxJQUFJO0VBQzVFLENBQVE7Q0FDVjtBQUNGIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJwcm9qZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFNjaGVtYSBmcm9tIFwiZWZmZWN0L1NjaGVtYVwiO1xuaW1wb3J0ICogYXMgU2NoZW1hVHJhbnNmb3JtYXRpb24gZnJvbSBcImVmZmVjdC9TY2hlbWFUcmFuc2Zvcm1hdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUlkZW50aXR5LCBUaHJlYWRFbnZNb2RlIH0gZnJvbSBcIi4vZW52aXJvbm1lbnQudHNcIjtcbmltcG9ydCB7IE1vZGVsU2VsZWN0aW9uIH0gZnJvbSBcIi4vbW9kZWxTZWxlY3Rpb24udHNcIjtcbmltcG9ydCB7XG4gIENvbW1hbmRJZCxcbiAgRm9yd2FyZENvbXBhdGlibGVVbmlvbixcbiAgaXNVbmtub3duVW5pb25NZW1iZXIsXG4gIElzb0RhdGVUaW1lLFxuICBOb25OZWdhdGl2ZUludCxcbiAgUG9zaXRpdmVJbnQsXG4gIFByb2plY3RJZCxcbiAgVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBUcmltbWVkU3RyaW5nLFxuICB0eXBlIFVua25vd25Vbmlvbk1lbWJlcixcbn0gZnJvbSBcIi4vYmFzZVNjaGVtYXMudHNcIjtcblxuY29uc3QgUFJPSkVDVF9TRUFSQ0hfRU5UUklFU19NQVhfTElNSVQgPSAyMDA7XG5jb25zdCBQUk9KRUNUX1NFQVJDSF9DT05URU5UU19NQVhfTElNSVQgPSA1MDA7XG5jb25zdCBQUk9KRUNUX1dSSVRFX0ZJTEVfUEFUSF9NQVhfTEVOR1RIID0gNTEyO1xuY29uc3QgUFJPSkVDVF9SRUFEX0ZJTEVfUEFUSF9NQVhfTEVOR1RIID0gNTEyO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdFNjcmlwdEljb24gPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcInBsYXlcIixcbiAgXCJ0ZXN0XCIsXG4gIFwibGludFwiLFxuICBcImNvbmZpZ3VyZVwiLFxuICBcImJ1aWxkXCIsXG4gIFwiZGVidWdcIixcbl0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdFNjcmlwdEljb24gPSB0eXBlb2YgUHJvamVjdFNjcmlwdEljb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RTY3JpcHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgbmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBjb21tYW5kOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIGljb246IFByb2plY3RTY3JpcHRJY29uLFxuICBydW5Pbldvcmt0cmVlQ3JlYXRlOiBTY2hlbWEuQm9vbGVhbixcbiAgcnVuT25TZXR0bGU6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIGFzeW5jOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBwcmV2aWV3VXJsOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgYXV0b09wZW5QcmV2aWV3OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0U2NyaXB0ID0gdHlwZW9mIFByb2plY3RTY3JpcHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RJY29uQ29sb3IgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcImdyYXlcIixcbiAgXCJyZWRcIixcbiAgXCJvcmFuZ2VcIixcbiAgXCJhbWJlclwiLFxuICBcInllbGxvd1wiLFxuICBcImxpbWVcIixcbiAgXCJncmVlblwiLFxuICBcImVtZXJhbGRcIixcbiAgXCJ0ZWFsXCIsXG4gIFwiY3lhblwiLFxuICBcInNreVwiLFxuICBcImJsdWVcIixcbiAgXCJpbmRpZ29cIixcbiAgXCJ2aW9sZXRcIixcbiAgXCJwdXJwbGVcIixcbiAgXCJmdWNoc2lhXCIsXG4gIFwicGlua1wiLFxuICBcInJvc2VcIixcbl0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdEljb25Db2xvciA9IHR5cGVvZiBQcm9qZWN0SWNvbkNvbG9yLlR5cGU7XG5cbmNvbnN0IFByb2plY3RMdWNpZGVJY29uTmFtZSA9IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhcbiAgU2NoZW1hLmlzTWF4TGVuZ3RoKDY0KSxcbiAgU2NoZW1hLmlzUGF0dGVybigvXlthLXowLTldKyg/Oi1bYS16MC05XSspKiQvKSxcbik7XG5cbmNvbnN0IFByb2plY3RFbW9qaSA9IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMzIpKTtcblxuLy8gR3JhcGhlbWUtY291bnQgdmFsaWRhdGlvbiBiZWxvbmdzIHRvIHRoZSBzZXJ2ZXIgY29tbWFuZCBib3VuZGFyeSwgbm90IHNuYXBzaG90IGRlY29kaW5nLlxuZXhwb3J0IGNvbnN0IFByb2plY3RNb25vZ3JhbVRleHQgPSBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soXG4gIFNjaGVtYS5pc01heExlbmd0aCgzMiksXG4gIFNjaGVtYS5pc1BhdHRlcm4oL15bXFxwe0x9XFxwe059XVtcXHB7TH1cXHB7Tn1cXHB7TX1cXHUyMDBjXFx1MjAwZF0qJC91KSxcbik7XG5cbmNvbnN0IFByb2plY3RMdWNpZGVJY29uID0gU2NoZW1hLlN0cnVjdCh7XG4gIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwibHVjaWRlXCIpLFxuICBuYW1lOiBQcm9qZWN0THVjaWRlSWNvbk5hbWUsXG4gIGNvbG9yOiBQcm9qZWN0SWNvbkNvbG9yLFxufSk7XG5jb25zdCBQcm9qZWN0RW1vamlJY29uID0gU2NoZW1hLlN0cnVjdCh7XG4gIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwiZW1vamlcIiksXG4gIGVtb2ppOiBQcm9qZWN0RW1vamksXG59KTtcbmNvbnN0IFByb2plY3RNb25vZ3JhbUljb24gPSBTY2hlbWEuU3RydWN0KHtcbiAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJtb25vZ3JhbVwiKSxcbiAgdGV4dDogUHJvamVjdE1vbm9ncmFtVGV4dCxcbiAgY29sb3I6IFByb2plY3RJY29uQ29sb3IsXG59KTtcbmV4cG9ydCBjb25zdCBQcm9qZWN0RmF2aWNvblBhdGggPSBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soXG4gIFNjaGVtYS5pc01heExlbmd0aCgxMDI0KSxcbiAgU2NoZW1hLmlzUGF0dGVybigvXFwuKD86YXZpZnxnaWZ8aWNuc3xpY298anBlP2d8cG5nfHN2Z3x3ZWJwKSQvaSksXG4pO1xuZXhwb3J0IHR5cGUgUHJvamVjdEZhdmljb25QYXRoID0gdHlwZW9mIFByb2plY3RGYXZpY29uUGF0aC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdEljb25PdmVycmlkZSA9IFNjaGVtYS5VbmlvbihbXG4gIFByb2plY3RMdWNpZGVJY29uLFxuICBQcm9qZWN0RW1vamlJY29uLFxuICBQcm9qZWN0TW9ub2dyYW1JY29uLFxuXSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0SWNvbk92ZXJyaWRlID0gdHlwZW9mIFByb2plY3RJY29uT3ZlcnJpZGUuVHlwZTtcblxuY29uc3QgUHJvamVjdEx1Y2lkZUljb25XaXRoTGVnYWN5TW9ub2dyYW0gPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uUHJvamVjdEx1Y2lkZUljb24uZmllbGRzLFxuICBtb25vZ3JhbVRleHQ6IFNjaGVtYS5vcHRpb25hbChQcm9qZWN0TW9ub2dyYW1UZXh0KSxcbiAgbW9ub2dyYW06IFNjaGVtYS5vcHRpb25hbChQcm9qZWN0TW9ub2dyYW1UZXh0KSxcbn0pO1xuY29uc3QgcHJvamVjdEljb25NZW1iZXJzID0gW1xuICBQcm9qZWN0THVjaWRlSWNvbldpdGhMZWdhY3lNb25vZ3JhbSxcbiAgUHJvamVjdEVtb2ppSWNvbixcbiAgUHJvamVjdE1vbm9ncmFtSWNvbixcbl0gYXMgY29uc3Q7XG50eXBlIFByb2plY3RJY29uTWVtYmVyID0gKHR5cGVvZiBwcm9qZWN0SWNvbk1lbWJlcnMpW251bWJlcl1bXCJUeXBlXCJdO1xuXG5jb25zdCBmcm9tTGVnYWN5TW9ub2dyYW0gPSAoaWNvbjogUHJvamVjdEljb25NZW1iZXIpOiBQcm9qZWN0SWNvbk92ZXJyaWRlID0+IHtcbiAgaWYgKGljb24ua2luZCAhPT0gXCJsdWNpZGVcIikgcmV0dXJuIGljb247XG4gIGNvbnN0IHRleHQgPSBpY29uLm1vbm9ncmFtVGV4dCA/PyBpY29uLm1vbm9ncmFtO1xuICByZXR1cm4gdGV4dCA9PT0gdW5kZWZpbmVkXG4gICAgPyB7IGtpbmQ6IFwibHVjaWRlXCIsIG5hbWU6IGljb24ubmFtZSwgY29sb3I6IGljb24uY29sb3IgfVxuICAgIDogeyBraW5kOiBcIm1vbm9ncmFtXCIsIHRleHQsIGNvbG9yOiBpY29uLmNvbG9yIH07XG59O1xuXG5leHBvcnQgY29uc3QgU3RvcmVkUHJvamVjdEljb24gPSBTY2hlbWEuVW5pb24ocHJvamVjdEljb25NZW1iZXJzKS5waXBlKFxuICBTY2hlbWEuZGVjb2RlVG8oXG4gICAgU2NoZW1hLnRvVHlwZShQcm9qZWN0SWNvbk92ZXJyaWRlKSxcbiAgICBTY2hlbWFUcmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm08UHJvamVjdEljb25PdmVycmlkZSwgUHJvamVjdEljb25NZW1iZXI+KHtcbiAgICAgIGRlY29kZTogZnJvbUxlZ2FjeU1vbm9ncmFtLFxuICAgICAgZW5jb2RlOiAoaWNvbikgPT4gaWNvbixcbiAgICB9KSxcbiAgKSxcbik7XG5cbmV4cG9ydCBjb25zdCBSZWNlaXZlZFByb2plY3RJY29uID0gRm9yd2FyZENvbXBhdGlibGVVbmlvbihwcm9qZWN0SWNvbk1lbWJlcnMsIFwia2luZFwiKS5waXBlKFxuICBTY2hlbWEuZGVjb2RlVG8oXG4gICAgU2NoZW1hLk51bGxPcihTY2hlbWEudG9UeXBlKFByb2plY3RJY29uT3ZlcnJpZGUpKSxcbiAgICBTY2hlbWFUcmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm08XG4gICAgICBQcm9qZWN0SWNvbk92ZXJyaWRlIHwgbnVsbCxcbiAgICAgIFByb2plY3RJY29uTWVtYmVyIHwgVW5rbm93blVuaW9uTWVtYmVyPFwia2luZFwiPlxuICAgID4oe1xuICAgICAgZGVjb2RlOiAoaWNvbikgPT4gKGlzVW5rbm93blVuaW9uTWVtYmVyKGljb24pID8gbnVsbCA6IGZyb21MZWdhY3lNb25vZ3JhbShpY29uKSksXG4gICAgICBlbmNvZGU6IChpY29uKSA9PiBpY29uIGFzIFByb2plY3RJY29uTWVtYmVyLFxuICAgIH0pLFxuICApLFxuKTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3QgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IFByb2plY3RJZCxcbiAgdGl0bGU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgd29ya3NwYWNlUm9vdDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICByZXBvc2l0b3J5SWRlbnRpdHk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFJlcG9zaXRvcnlJZGVudGl0eSkpLFxuICBmYXZpY29uUGF0aDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSksXG4gIHByb2plY3RJY29uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihSZWNlaXZlZFByb2plY3RJY29uKSksXG4gIGRlZmF1bHRNb2RlbFNlbGVjdGlvbjogU2NoZW1hLk51bGxPcihNb2RlbFNlbGVjdGlvbiksXG4gIGRlZmF1bHRUaHJlYWRFbnZNb2RlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUaHJlYWRFbnZNb2RlKSksXG4gIC8vIE9wdC1pbiBiZWNhdXNlIGJhY2tncm91bmQgc3luYyBwZXJmb3JtcyBuZXR3b3JrIEkvTyBhbmQgbWF5IG1vdmUgdGhlIGNoZWNrb3V0LlxuICBhdXRvUHVsbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgc2NyaXB0czogU2NoZW1hLkFycmF5KFByb2plY3RTY3JpcHQpLFxuICBjcmVhdGVkQXQ6IElzb0RhdGVUaW1lLFxuICB1cGRhdGVkQXQ6IElzb0RhdGVUaW1lLFxuICBkZWxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoSXNvRGF0ZVRpbWUpLFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0ID0gdHlwZW9mIFByb2plY3QuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RTbmFwc2hvdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwcm9qZWN0czogU2NoZW1hLkFycmF5KFByb2plY3QpLFxuICB1cGRhdGVkQXQ6IElzb0RhdGVUaW1lLFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0U25hcHNob3QgPSB0eXBlb2YgUHJvamVjdFNuYXBzaG90LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0Q2hhbmdlID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlN0cnVjdCh7IHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJvamVjdC51cHNlcnRlZFwiKSwgcHJvamVjdDogUHJvamVjdCB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJwcm9qZWN0LmRlbGV0ZWRcIiksXG4gICAgcHJvamVjdElkOiBQcm9qZWN0SWQsXG4gICAgZGVsZXRlZEF0OiBJc29EYXRlVGltZSxcbiAgfSksXG5dKTtcbmV4cG9ydCB0eXBlIFByb2plY3RDaGFuZ2UgPSB0eXBlb2YgUHJvamVjdENoYW5nZS5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdENyZWF0ZVBheWxvYWQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGl0bGU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgd29ya3NwYWNlUm9vdDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBjcmVhdGVXb3Jrc3BhY2VSb290SWZNaXNzaW5nOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBkZWZhdWx0TW9kZWxTZWxlY3Rpb246IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKE1vZGVsU2VsZWN0aW9uKSksXG4gIHNjcmlwdHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoUHJvamVjdFNjcmlwdCkpLFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0Q3JlYXRlUGF5bG9hZCA9IHR5cGVvZiBQcm9qZWN0Q3JlYXRlUGF5bG9hZC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdFVwZGF0ZVBheWxvYWQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGl0bGU6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICB3b3Jrc3BhY2VSb290OiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgZGVmYXVsdE1vZGVsU2VsZWN0aW9uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihNb2RlbFNlbGVjdGlvbikpLFxuICBhdXRvUHVsbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgcHJvamVjdEljb246IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFByb2plY3RJY29uT3ZlcnJpZGUpKSxcbiAgZmF2aWNvblBhdGg6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZykpLFxuICBkZWZhdWx0VGhyZWFkRW52TW9kZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoVGhyZWFkRW52TW9kZSkpLFxuICBzY3JpcHRzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KFByb2plY3RTY3JpcHQpKSxcbn0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdFVwZGF0ZVBheWxvYWQgPSB0eXBlb2YgUHJvamVjdFVwZGF0ZVBheWxvYWQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RNdXRhdGlvbiA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJvamVjdC5jcmVhdGVcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgcHJvamVjdElkOiBQcm9qZWN0SWQsXG4gICAgLi4uUHJvamVjdENyZWF0ZVBheWxvYWQuZmllbGRzLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJwcm9qZWN0LnVwZGF0ZVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgICAuLi5Qcm9qZWN0VXBkYXRlUGF5bG9hZC5maWVsZHMsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb2plY3QuZGVsZXRlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHByb2plY3RJZDogUHJvamVjdElkLFxuICAgIGZvcmNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdE11dGF0aW9uID0gdHlwZW9mIFByb2plY3RNdXRhdGlvbi5UeXBlO1xuXG5leHBvcnQgY2xhc3MgUHJvamVjdE11dGF0aW9uRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8UHJvamVjdE11dGF0aW9uRXJyb3I+KCkoXG4gIFwiUHJvamVjdE11dGF0aW9uRXJyb3JcIixcbiAge1xuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIG1lc3NhZ2U6IFNjaGVtYS5TdHJpbmcsXG4gICAgY2F1c2U6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGVmZWN0KCkpLFxuICB9LFxuKSB7fVxuXG5leHBvcnQgY29uc3QgUHJvamVjdEVudHJ5S2luZCA9IFNjaGVtYS5MaXRlcmFscyhbXCJmaWxlXCIsIFwiZGlyZWN0b3J5XCJdKTtcbmV4cG9ydCB0eXBlIFByb2plY3RFbnRyeUtpbmQgPSB0eXBlb2YgUHJvamVjdEVudHJ5S2luZC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdFNlYXJjaEVudHJpZXNJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgcXVlcnk6IFRyaW1tZWRTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDI1NikpLFxuICBsaW1pdDogUG9zaXRpdmVJbnQuY2hlY2soU2NoZW1hLmlzTGVzc1RoYW5PckVxdWFsVG8oUFJPSkVDVF9TRUFSQ0hfRU5UUklFU19NQVhfTElNSVQpKSxcbiAga2luZDogU2NoZW1hLm9wdGlvbmFsKFByb2plY3RFbnRyeUtpbmQpLFxuICBpbWFnZU9ubHk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RTZWFyY2hFbnRyaWVzSW5wdXQgPSB0eXBlb2YgUHJvamVjdFNlYXJjaEVudHJpZXNJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdEVudHJ5ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAga2luZDogUHJvamVjdEVudHJ5S2luZCxcbiAgaWdub3JlZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdEVudHJ5ID0gdHlwZW9mIFByb2plY3RFbnRyeS5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdFNlYXJjaEVudHJpZXNSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgZW50cmllczogU2NoZW1hLkFycmF5KFByb2plY3RFbnRyeSksXG4gIHRydW5jYXRlZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RTZWFyY2hFbnRyaWVzUmVzdWx0ID0gdHlwZW9mIFByb2plY3RTZWFyY2hFbnRyaWVzUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0U2VhcmNoQ29udGVudHNJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgLy8gUHJlc2VydmUgd2hpdGVzcGFjZSBiZWNhdXNlIGl0IGlzIHNpZ25pZmljYW50IGluIGNvbnRlbnQgcXVlcmllcy5cbiAgcXVlcnk6IFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTm9uRW1wdHkoKSwgU2NoZW1hLmlzTWF4TGVuZ3RoKDI1NikpLFxuICBsaW1pdDogUG9zaXRpdmVJbnQuY2hlY2soU2NoZW1hLmlzTGVzc1RoYW5PckVxdWFsVG8oUFJPSkVDVF9TRUFSQ0hfQ09OVEVOVFNfTUFYX0xJTUlUKSksXG4gIGNhc2VTZW5zaXRpdmU6IFNjaGVtYS5Cb29sZWFuLFxuICB3aG9sZVdvcmQ6IFNjaGVtYS5Cb29sZWFuLFxuICB1c2VSZWdleDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RTZWFyY2hDb250ZW50c0lucHV0ID0gdHlwZW9mIFByb2plY3RTZWFyY2hDb250ZW50c0lucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0Q29udGVudE1hdGNoUmFuZ2UgPSBTY2hlbWEuU3RydWN0KHtcbiAgc3RhcnQ6IE5vbk5lZ2F0aXZlSW50LFxuICBlbmQ6IE5vbk5lZ2F0aXZlSW50LFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0Q29udGVudE1hdGNoUmFuZ2UgPSB0eXBlb2YgUHJvamVjdENvbnRlbnRNYXRjaFJhbmdlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0Q29udGVudE1hdGNoID0gU2NoZW1hLlN0cnVjdCh7XG4gIHBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgbGluZU51bWJlcjogUG9zaXRpdmVJbnQsXG4gIGxpbmVDb250ZW50OiBTY2hlbWEuU3RyaW5nLFxuICBtYXRjaFJhbmdlczogU2NoZW1hLkFycmF5KFByb2plY3RDb250ZW50TWF0Y2hSYW5nZSksXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RDb250ZW50TWF0Y2ggPSB0eXBlb2YgUHJvamVjdENvbnRlbnRNYXRjaC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdFNlYXJjaENvbnRlbnRzUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIG1hdGNoZXM6IFNjaGVtYS5BcnJheShQcm9qZWN0Q29udGVudE1hdGNoKSxcbiAgdHJ1bmNhdGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgcmVnZXhGYWxsYmFja0Vycm9yOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RTZWFyY2hDb250ZW50c1Jlc3VsdCA9IHR5cGVvZiBQcm9qZWN0U2VhcmNoQ29udGVudHNSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RMaXN0RW50cmllc0lucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGN3ZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBkaXJlY3RvcnlQYXRoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZFN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RMaXN0RW50cmllc0lucHV0ID0gdHlwZW9mIFByb2plY3RMaXN0RW50cmllc0lucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0TGlzdEVudHJpZXNSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgZW50cmllczogU2NoZW1hLkFycmF5KFByb2plY3RFbnRyeSksXG4gIHRydW5jYXRlZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RMaXN0RW50cmllc1Jlc3VsdCA9IHR5cGVvZiBQcm9qZWN0TGlzdEVudHJpZXNSZXN1bHQuVHlwZTtcblxuLy8gVW50cmFja2VkIGZpbGVzIGdpdCBpZ25vcmVzLiBXaG9sbHkgaWdub3JlZCBmb2xkZXJzIHN1Y2ggYXMgYG5vZGVfbW9kdWxlc2Bcbi8vIGFyZSBsZWZ0IG91dCwgc28gdGhlIGxpc3Qgc3RheXMgc21hbGwgZW5vdWdoIHRvIHBpY2sgZnJvbS5cbmV4cG9ydCBjb25zdCBQcm9qZWN0TGlzdElnbm9yZWRGaWxlc0lucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGN3ZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0TGlzdElnbm9yZWRGaWxlc0lucHV0ID0gdHlwZW9mIFByb2plY3RMaXN0SWdub3JlZEZpbGVzSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RJZ25vcmVkRmlsZSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIGJ5dGVMZW5ndGg6IE5vbk5lZ2F0aXZlSW50LFxufSk7XG5leHBvcnQgdHlwZSBQcm9qZWN0SWdub3JlZEZpbGUgPSB0eXBlb2YgUHJvamVjdElnbm9yZWRGaWxlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0TGlzdElnbm9yZWRGaWxlc1Jlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBmaWxlczogU2NoZW1hLkFycmF5KFByb2plY3RJZ25vcmVkRmlsZSksXG4gIHRydW5jYXRlZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RMaXN0SWdub3JlZEZpbGVzUmVzdWx0ID0gdHlwZW9mIFByb2plY3RMaXN0SWdub3JlZEZpbGVzUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0RW50cmllc0ZhaWx1cmUgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcIndvcmtzcGFjZV9yb290X25vdF9mb3VuZFwiLFxuICBcIndvcmtzcGFjZV9yb290X2NyZWF0ZV9mYWlsZWRcIixcbiAgXCJ3b3Jrc3BhY2Vfcm9vdF9zdGF0X2ZhaWxlZFwiLFxuICBcIndvcmtzcGFjZV9yb290X25vdF9kaXJlY3RvcnlcIixcbiAgXCJzZWFyY2hfaW5kZXhfY3JlYXRlX2ZhaWxlZFwiLFxuICBcInNlYXJjaF9pbmRleF9zY2FuX3RpbWVkX291dFwiLFxuICBcInNlYXJjaF9pbmRleF9zZWFyY2hfZmFpbGVkXCIsXG4gIFwiZGlyZWN0b3J5X2xpc3RfZmFpbGVkXCIsXG5dKTtcbmV4cG9ydCB0eXBlIFByb2plY3RFbnRyaWVzRmFpbHVyZSA9IHR5cGVvZiBQcm9qZWN0RW50cmllc0ZhaWx1cmUuVHlwZTtcblxudHlwZSBQcm9qZWN0RW50cmllc0ZhaWx1cmVDb250ZXh0ID0ge1xuICByZWFkb25seSBmYWlsdXJlOiBQcm9qZWN0RW50cmllc0ZhaWx1cmU7XG4gIHJlYWRvbmx5IG5vcm1hbGl6ZWRDd2Q/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRldGFpbD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2F1c2U/OiB1bmtub3duO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlZFByb2plY3RFcnJvck1lc3NhZ2UocHJvcHM6IG9iamVjdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghKFwibWVzc2FnZVwiIGluIHByb3BzKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5tZXNzYWdlID09PSBcInN0cmluZ1wiID8gcHJvcHMubWVzc2FnZSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFByb2plY3RTZWFyY2hFbnRyaWVzRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8UHJvamVjdFNlYXJjaEVudHJpZXNFcnJvcj4oKShcbiAgXCJQcm9qZWN0U2VhcmNoRW50cmllc0Vycm9yXCIsXG4gIHtcbiAgICBjd2Q6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIHF1ZXJ5TGVuZ3RoOiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICAgIGxpbWl0OiBTY2hlbWEub3B0aW9uYWwoUG9zaXRpdmVJbnQpLFxuICAgIGZhaWx1cmU6IFNjaGVtYS5vcHRpb25hbChQcm9qZWN0RW50cmllc0ZhaWx1cmUpLFxuICAgIG5vcm1hbGl6ZWRDd2Q6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIHRpbWVvdXQ6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIGRldGFpbDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgbWVzc2FnZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge1xuICAvLyBAZWZmZWN0LWRpYWdub3N0aWNzLW5leHQtbGluZSBvdmVycmlkZGVuU2NoZW1hQ29uc3RydWN0b3I6b2ZmXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3BzOiBQcm9qZWN0RW50cmllc0ZhaWx1cmVDb250ZXh0ICYge1xuICAgICAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG4gICAgICByZWFkb25seSBxdWVyeUxlbmd0aDogbnVtYmVyO1xuICAgICAgcmVhZG9ubHkgbGltaXQ6IG51bWJlcjtcbiAgICB9LFxuICApIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIGRlY29kZWRQcm9qZWN0RXJyb3JNZXNzYWdlKHByb3BzKSA/P1xuICAgICAgICBgRmFpbGVkIHRvIHNlYXJjaCB3b3Jrc3BhY2UgZW50cmllcyBpbiAnJHtwcm9wcy5jd2R9Jy5gLFxuICAgIH0gYXMgYW55KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvamVjdFNlYXJjaENvbnRlbnRzRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8UHJvamVjdFNlYXJjaENvbnRlbnRzRXJyb3I+KCkoXG4gIFwiUHJvamVjdFNlYXJjaENvbnRlbnRzRXJyb3JcIixcbiAge1xuICAgIGN3ZDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgcXVlcnlMZW5ndGg6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gICAgbGltaXQ6IFNjaGVtYS5vcHRpb25hbChQb3NpdGl2ZUludCksXG4gICAgZmFpbHVyZTogU2NoZW1hLm9wdGlvbmFsKFByb2plY3RFbnRyaWVzRmFpbHVyZSksXG4gICAgbm9ybWFsaXplZEN3ZDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgdGltZW91dDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgZGV0YWlsOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBtZXNzYWdlOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gICAgY2F1c2U6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGVmZWN0KCkpLFxuICB9LFxuKSB7XG4gIC8vIEBlZmZlY3QtZGlhZ25vc3RpY3MtbmV4dC1saW5lIG92ZXJyaWRkZW5TY2hlbWFDb25zdHJ1Y3RvcjpvZmZcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvcHM6IFByb2plY3RFbnRyaWVzRmFpbHVyZUNvbnRleHQgJiB7XG4gICAgICByZWFkb25seSBjd2Q6IHN0cmluZztcbiAgICAgIHJlYWRvbmx5IHF1ZXJ5TGVuZ3RoOiBudW1iZXI7XG4gICAgICByZWFkb25seSBsaW1pdDogbnVtYmVyO1xuICAgIH0sXG4gICkge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgZGVjb2RlZFByb2plY3RFcnJvck1lc3NhZ2UocHJvcHMpID8/XG4gICAgICAgIGBGYWlsZWQgdG8gc2VhcmNoIHdvcmtzcGFjZSBjb250ZW50cyBpbiAnJHtwcm9wcy5jd2R9Jy5gLFxuICAgIH0gYXMgYW55KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvamVjdExpc3RFbnRyaWVzRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8UHJvamVjdExpc3RFbnRyaWVzRXJyb3I+KCkoXG4gIFwiUHJvamVjdExpc3RFbnRyaWVzRXJyb3JcIixcbiAge1xuICAgIGN3ZDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgZmFpbHVyZTogU2NoZW1hLm9wdGlvbmFsKFByb2plY3RFbnRyaWVzRmFpbHVyZSksXG4gICAgbm9ybWFsaXplZEN3ZDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgdGltZW91dDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgZGV0YWlsOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBtZXNzYWdlOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gICAgY2F1c2U6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGVmZWN0KCkpLFxuICB9LFxuKSB7XG4gIC8vIEBlZmZlY3QtZGlhZ25vc3RpY3MtbmV4dC1saW5lIG92ZXJyaWRkZW5TY2hlbWFDb25zdHJ1Y3RvcjpvZmZcbiAgY29uc3RydWN0b3IocHJvcHM6IFByb2plY3RFbnRyaWVzRmFpbHVyZUNvbnRleHQgJiB7IHJlYWRvbmx5IGN3ZDogc3RyaW5nIH0pIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIGRlY29kZWRQcm9qZWN0RXJyb3JNZXNzYWdlKHByb3BzKSA/PyBgRmFpbGVkIHRvIGxpc3Qgd29ya3NwYWNlIGVudHJpZXMgaW4gJyR7cHJvcHMuY3dkfScuYCxcbiAgICB9IGFzIGFueSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFByb2plY3RSZWFkRmlsZUlucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGN3ZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAvLyBXb3Jrc3BhY2UtcmVsYXRpdmUgb3IgYWJzb2x1dGUgaG9zdCBwYXRoOyBvbmx5IHdvcmtzcGFjZS1yZWxhdGl2ZSBwYXRocyBhcmUgd3JpdGFibGUuXG4gIHJlbGF0aXZlUGF0aDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aChQUk9KRUNUX1JFQURfRklMRV9QQVRIX01BWF9MRU5HVEgpKSxcbiAgLy8gT3B0aW9uYWwgZmlsZXMgY2FuIGJlIGFic2VudCB3aXRob3V0IGZhaWxpbmcgdGhlIHJlYWQuXG4gIGFsbG93TWlzc2luZzogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdFJlYWRGaWxlSW5wdXQgPSB0eXBlb2YgUHJvamVjdFJlYWRGaWxlSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RSZWFkRmlsZVJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICByZWxhdGl2ZVBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgY29udGVudHM6IFNjaGVtYS5TdHJpbmcsXG4gIGJ5dGVMZW5ndGg6IE5vbk5lZ2F0aXZlSW50LFxuICB0cnVuY2F0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICAvLyBPbWl0dGVkIGJ5IG9sZGVyIHNlcnZlcnM7IGZhbHNlIG9ubHkgZm9yIGFuIGFic2VudCBvcHRpb25hbCBmaWxlLlxuICBleGlzdHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RSZWFkRmlsZVJlc3VsdCA9IHR5cGVvZiBQcm9qZWN0UmVhZEZpbGVSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RGaWxlRmFpbHVyZSA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwid29ya3NwYWNlX3BhdGhfb3V0c2lkZV9yb290XCIsXG4gIFwicmVzb2x2ZWRfcGF0aF9vdXRzaWRlX3Jvb3RcIixcbiAgXCJwYXRoX25vdF9maWxlXCIsXG4gIFwiYmluYXJ5X2ZpbGVcIixcbiAgXCJvcGVyYXRpb25fZmFpbGVkXCIsXG5dKTtcbmV4cG9ydCB0eXBlIFByb2plY3RGaWxlRmFpbHVyZSA9IHR5cGVvZiBQcm9qZWN0RmlsZUZhaWx1cmUuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RGaWxlT3BlcmF0aW9uID0gU2NoZW1hLkxpdGVyYWxzKFtcbiAgXCJyZWFscGF0aC13b3Jrc3BhY2Utcm9vdFwiLFxuICBcInJlYWxwYXRoLXRhcmdldFwiLFxuICBcIm9wZW5cIixcbiAgXCJzdGF0XCIsXG4gIFwicmVhZFwiLFxuICBcImNsb3NlXCIsXG4gIFwibWFrZS1kaXJlY3RvcnlcIixcbiAgXCJ3cml0ZS1maWxlXCIsXG5dKTtcbmV4cG9ydCB0eXBlIFByb2plY3RGaWxlT3BlcmF0aW9uID0gdHlwZW9mIFByb2plY3RGaWxlT3BlcmF0aW9uLlR5cGU7XG5cbnR5cGUgUHJvamVjdEZpbGVGYWlsdXJlQ29udGV4dCA9IHtcbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aDogc3RyaW5nO1xuICByZWFkb25seSBmYWlsdXJlOiBQcm9qZWN0RmlsZUZhaWx1cmU7XG4gIHJlYWRvbmx5IHJlc29sdmVkUGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzb2x2ZWRXb3Jrc3BhY2VSb290Pzogc3RyaW5nO1xuICByZWFkb25seSBvcGVyYXRpb24/OiBQcm9qZWN0RmlsZU9wZXJhdGlvbjtcbiAgcmVhZG9ubHkgb3BlcmF0aW9uUGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgY2F1c2U/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IGNsYXNzIFByb2plY3RSZWFkRmlsZUVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFByb2plY3RSZWFkRmlsZUVycm9yPigpKFxuICBcIlByb2plY3RSZWFkRmlsZUVycm9yXCIsXG4gIHtcbiAgICBjd2Q6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIHJlbGF0aXZlUGF0aDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgZmFpbHVyZTogU2NoZW1hLm9wdGlvbmFsKFByb2plY3RGaWxlRmFpbHVyZSksXG4gICAgcmVzb2x2ZWRQYXRoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICByZXNvbHZlZFdvcmtzcGFjZVJvb3Q6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIG9wZXJhdGlvbjogU2NoZW1hLm9wdGlvbmFsKFByb2plY3RGaWxlT3BlcmF0aW9uKSxcbiAgICBvcGVyYXRpb25QYXRoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBtZXNzYWdlOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gICAgY2F1c2U6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGVmZWN0KCkpLFxuICB9LFxuKSB7XG4gIC8vIEBlZmZlY3QtZGlhZ25vc3RpY3MtbmV4dC1saW5lIG92ZXJyaWRkZW5TY2hlbWFDb25zdHJ1Y3RvcjpvZmZcbiAgY29uc3RydWN0b3IocHJvcHM6IFByb2plY3RGaWxlRmFpbHVyZUNvbnRleHQpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIGRlY29kZWRQcm9qZWN0RXJyb3JNZXNzYWdlKHByb3BzKSA/P1xuICAgICAgICBgRmFpbGVkIHRvIHJlYWQgd29ya3NwYWNlIGZpbGUgJyR7cHJvcHMucmVsYXRpdmVQYXRofScgaW4gJyR7cHJvcHMuY3dkfScuYCxcbiAgICB9IGFzIGFueSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFByb2plY3RXcml0ZUZpbGVJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgcmVsYXRpdmVQYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKFBST0pFQ1RfV1JJVEVfRklMRV9QQVRIX01BWF9MRU5HVEgpKSxcbiAgY29udGVudHM6IFNjaGVtYS5TdHJpbmcsXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RXcml0ZUZpbGVJbnB1dCA9IHR5cGVvZiBQcm9qZWN0V3JpdGVGaWxlSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RXcml0ZUZpbGVSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcmVsYXRpdmVQYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RXcml0ZUZpbGVSZXN1bHQgPSB0eXBlb2YgUHJvamVjdFdyaXRlRmlsZVJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdEVuc3VyZVNjcmF0Y2hSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcHJvamVjdElkOiBQcm9qZWN0SWQsXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RFbnN1cmVTY3JhdGNoUmVzdWx0ID0gdHlwZW9mIFByb2plY3RFbnN1cmVTY3JhdGNoUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm9qZWN0Q3JlYXRlTmV3SW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgbmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyMDApKSxcbn0pO1xuZXhwb3J0IHR5cGUgUHJvamVjdENyZWF0ZU5ld0lucHV0ID0gdHlwZW9mIFByb2plY3RDcmVhdGVOZXdJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJvamVjdENyZWF0ZU5ld1Jlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgd29ya3NwYWNlUm9vdDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAvKiogVGhlIHByb2plY3QgYW5kIGl0cyBmaWxlcyBleGlzdCBlaXRoZXIgd2F5LiAqL1xuICBjb21taXRFcnJvcjogU2NoZW1hLm9wdGlvbmFsS2V5KFRyaW1tZWROb25FbXB0eVN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIFByb2plY3RDcmVhdGVOZXdSZXN1bHQgPSB0eXBlb2YgUHJvamVjdENyZWF0ZU5ld1Jlc3VsdC5UeXBlO1xuXG5leHBvcnQgY2xhc3MgUHJvamVjdFdyaXRlRmlsZUVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFByb2plY3RXcml0ZUZpbGVFcnJvcj4oKShcbiAgXCJQcm9qZWN0V3JpdGVGaWxlRXJyb3JcIixcbiAge1xuICAgIGN3ZDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgcmVsYXRpdmVQYXRoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBmYWlsdXJlOiBTY2hlbWEub3B0aW9uYWwoUHJvamVjdEZpbGVGYWlsdXJlKSxcbiAgICByZXNvbHZlZFBhdGg6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIHJlc29sdmVkV29ya3NwYWNlUm9vdDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgb3BlcmF0aW9uOiBTY2hlbWEub3B0aW9uYWwoUHJvamVjdEZpbGVPcGVyYXRpb24pLFxuICAgIG9wZXJhdGlvblBhdGg6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIG1lc3NhZ2U6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICBjYXVzZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5EZWZlY3QoKSksXG4gIH0sXG4pIHtcbiAgLy8gQGVmZmVjdC1kaWFnbm9zdGljcy1uZXh0LWxpbmUgb3ZlcnJpZGRlblNjaGVtYUNvbnN0cnVjdG9yOm9mZlxuICBjb25zdHJ1Y3Rvcihwcm9wczogUHJvamVjdEZpbGVGYWlsdXJlQ29udGV4dCkge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgZGVjb2RlZFByb2plY3RFcnJvck1lc3NhZ2UocHJvcHMpID8/XG4gICAgICAgIGBGYWlsZWQgdG8gd3JpdGUgd29ya3NwYWNlIGZpbGUgJyR7cHJvcHMucmVsYXRpdmVQYXRofScgaW4gJyR7cHJvcHMuY3dkfScuYCxcbiAgICB9IGFzIGFueSk7XG4gIH1cbn1cbiJdLCJmaWxlIjoiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3Byb2plY3QudHMifQ==

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9wcm9qZWN0LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3Byb2plY3QudHMiLHsidXJscyI6IjYiLCJpZHMiOiI3In0sWyI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLFtdLFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSx7fSwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9TY2hlbWEuanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L1NjaGVtYVRyYW5zZm9ybWF0aW9uLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Vudmlyb25tZW50LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL21vZGVsU2VsZWN0aW9uLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Jhc2VTY2hlbWFzLnRzIl0=