__vite_ssr_exportName__("SOURCE_CONTROL_MEDIA_ASSET", () => { try { return SOURCE_CONTROL_MEDIA_ASSET } catch {} });
__vite_ssr_exportName__("AssetResource", () => { try { return AssetResource } catch {} });
__vite_ssr_exportName__("AssetCreateUrlInput", () => { try { return AssetCreateUrlInput } catch {} });
__vite_ssr_exportName__("AssetImageDimensions", () => { try { return AssetImageDimensions } catch {} });
__vite_ssr_exportName__("AssetCreateUrlResult", () => { try { return AssetCreateUrlResult } catch {} });
__vite_ssr_exportName__("ATTACHMENT_UPLOAD_URL_TTL_MS", () => { try { return ATTACHMENT_UPLOAD_URL_TTL_MS } catch {} });
__vite_ssr_exportName__("AttachmentCreateUploadUrlInput", () => { try { return AttachmentCreateUploadUrlInput } catch {} });
__vite_ssr_exportName__("AttachmentCreateUploadUrlResult", () => { try { return AttachmentCreateUploadUrlResult } catch {} });
__vite_ssr_exportName__("AttachmentDeleteInput", () => { try { return AttachmentDeleteInput } catch {} });
__vite_ssr_exportName__("AttachmentUploadSigningKeyError", () => { try { return AttachmentUploadSigningKeyError } catch {} });
__vite_ssr_exportName__("AssetWorkspaceContextNotFoundError", () => { try { return AssetWorkspaceContextNotFoundError } catch {} });
__vite_ssr_exportName__("AssetWorkspaceContextResolutionError", () => { try { return AssetWorkspaceContextResolutionError } catch {} });
__vite_ssr_exportName__("AssetWorkspaceRootNormalizationError", () => { try { return AssetWorkspaceRootNormalizationError } catch {} });
__vite_ssr_exportName__("AssetWorkspacePathValidationError", () => { try { return AssetWorkspacePathValidationError } catch {} });
__vite_ssr_exportName__("AssetPreviewTypeValidationError", () => { try { return AssetPreviewTypeValidationError } catch {} });
__vite_ssr_exportName__("AssetWorkspaceAssetInspectionError", () => { try { return AssetWorkspaceAssetInspectionError } catch {} });
__vite_ssr_exportName__("AssetWorkspaceAssetNotFoundError", () => { try { return AssetWorkspaceAssetNotFoundError } catch {} });
__vite_ssr_exportName__("AssetWorkspaceResolutionError", () => { try { return AssetWorkspaceResolutionError } catch {} });
__vite_ssr_exportName__("AssetAttachmentNotFoundError", () => { try { return AssetAttachmentNotFoundError } catch {} });
__vite_ssr_exportName__("AssetProjectFaviconResolutionError", () => { try { return AssetProjectFaviconResolutionError } catch {} });
__vite_ssr_exportName__("AssetProjectFaviconInspectionError", () => { try { return AssetProjectFaviconInspectionError } catch {} });
__vite_ssr_exportName__("AssetProjectFaviconNotFoundError", () => { try { return AssetProjectFaviconNotFoundError } catch {} });
__vite_ssr_exportName__("AssetSigningKeyLoadError", () => { try { return AssetSigningKeyLoadError } catch {} });
__vite_ssr_exportName__("AssetSourceControlMediaUrlValidationError", () => { try { return AssetSourceControlMediaUrlValidationError } catch {} });
__vite_ssr_exportName__("AssetAccessError", () => { try { return AssetAccessError } 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","ThreadId","TrimmedNonEmptyString","TurnItemId"]});
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/chatAttachment.ts", {"importedNames":["PROVIDER_SEND_TURN_MAX_FILE_BYTES","PROVIDER_SEND_TURN_MAX_IMAGE_BYTES","PROVIDER_SEND_TURN_SUPPORTED_IMAGE_MIME_TYPES"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/project.ts", {"importedNames":["ProjectFaviconPath"]});
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/providerRuntime.ts", {"importedNames":["ToolActivityNativeAppReference"]});





const ASSET_PATH_MAX_LENGTH = 1024;
/**
* The wire tag of a source control host's credentialed media. It names GitHub because GitHub had
* it first, and servers and clients of different releases must keep understanding each other.
*/
const SOURCE_CONTROL_MEDIA_ASSET = "github-media";
const AssetResource = __vite_ssr_import_0__.Union([
	__vite_ssr_import_0__.TaggedStruct("workspace-file", {
		threadId: __vite_ssr_import_1__.ThreadId,
		path: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH))
	}),
	__vite_ssr_import_0__.TaggedStruct("media-file", {
		threadId: __vite_ssr_import_1__.ThreadId,
		path: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH))
	}),
	__vite_ssr_import_0__.TaggedStruct("draft-workspace-file", {
		cwd: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH)),
		path: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH))
	}),
	__vite_ssr_import_0__.TaggedStruct("attachment", {
		attachmentId: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(256)),
		fileName: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(255))),
		mimeType: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(100))),
		/** Defaults to download; viewers may request inline after checking the type is safe. */
		disposition: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Literals(["inline", "attachment"])),
		renderIntent: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Literal("mcp-app"))
	}),
	__vite_ssr_import_0__.TaggedStruct("tool-output-image", {
		threadId: __vite_ssr_import_1__.ThreadId,
		itemId: __vite_ssr_import_1__.TurnItemId,
		index: __vite_ssr_import_1__.NonNegativeInt
	}),
	__vite_ssr_import_0__.TaggedStruct("project-favicon", {
		cwd: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH)),
		// Cache-key hint only; the project projection supplies the authoritative path.
		path: __vite_ssr_import_0__.optional((0,__vite_ssr_import_3__.ProjectFaviconPath))
	}),
	__vite_ssr_import_0__.TaggedStruct("native-app-icon", { app: __vite_ssr_import_4__.ToolActivityNativeAppReference }),
	__vite_ssr_import_0__.TaggedStruct(SOURCE_CONTROL_MEDIA_ASSET, {
		cwd: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH)),
		url: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(2048))
	})
]);
const AssetCreateUrlInput = __vite_ssr_import_0__.Struct({ resource: AssetResource });
const AssetImageDimensions = __vite_ssr_import_0__.Struct({
	width: __vite_ssr_import_1__.NonNegativeInt.check(__vite_ssr_import_0__.isGreaterThanOrEqualTo(1)),
	height: __vite_ssr_import_1__.NonNegativeInt.check(__vite_ssr_import_0__.isGreaterThanOrEqualTo(1))
});
const AssetCreateUrlResult = __vite_ssr_import_0__.Struct({
	relativeUrl: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(4096)),
	expiresAt: __vite_ssr_import_0__.Number,
	sourcePath: __vite_ssr_import_0__.optional(__vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(ASSET_PATH_MAX_LENGTH))),
	imageDimensions: __vite_ssr_import_0__.optional(AssetImageDimensions),
	/** Changes only when the file's contents or identity change, unlike `relativeUrl`, which is re-signed on every mint. */
	fileRevision: __vite_ssr_import_0__.optional(__vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(256)))
});
const ATTACHMENT_UPLOAD_URL_TTL_MS = 10 * 6e4;
const ImageAttachmentCreateUploadUrlInput = __vite_ssr_import_0__.Struct({
	type: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Literal("image")),
	name: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(255)),
	mimeType: __vite_ssr_import_0__.Literals((0,__vite_ssr_import_2__.PROVIDER_SEND_TURN_SUPPORTED_IMAGE_MIME_TYPES)),
	sizeBytes: __vite_ssr_import_1__.NonNegativeInt.check(__vite_ssr_import_0__.isGreaterThanOrEqualTo(1), __vite_ssr_import_0__.isLessThanOrEqualTo((0,__vite_ssr_import_2__.PROVIDER_SEND_TURN_MAX_IMAGE_BYTES)))
});
const FileAttachmentCreateUploadUrlInput = __vite_ssr_import_0__.Struct({
	type: __vite_ssr_import_0__.Literal("file"),
	name: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(255)),
	mimeType: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(100)),
	sizeBytes: __vite_ssr_import_1__.NonNegativeInt.check(__vite_ssr_import_0__.isGreaterThanOrEqualTo(1), __vite_ssr_import_0__.isLessThanOrEqualTo((0,__vite_ssr_import_2__.PROVIDER_SEND_TURN_MAX_FILE_BYTES)))
});
const AttachmentCreateUploadUrlInput = __vite_ssr_import_0__.Union([ImageAttachmentCreateUploadUrlInput, FileAttachmentCreateUploadUrlInput]);
const AttachmentCreateUploadUrlResult = __vite_ssr_import_0__.Struct({
	attachmentId: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(256)),
	relativeUrl: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(4096)),
	expiresAt: __vite_ssr_import_0__.Number
});
const AttachmentDeleteInput = __vite_ssr_import_0__.Struct({ attachmentId: __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(256)) });
class AttachmentUploadSigningKeyError extends __vite_ssr_import_0__.TaggedError()("AttachmentUploadSigningKeyError", { cause: __vite_ssr_import_0__.Defect() }) {
	get message() {
		return "Failed to load the attachment upload signing key.";
	}
};
class AssetWorkspaceContextNotFoundError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspaceContextNotFoundError", { resource: AssetResource }) {
	get message() {
		return "Workspace context was not found.";
	}
};
class AssetWorkspaceContextResolutionError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspaceContextResolutionError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Failed to resolve workspace context.";
	}
};
class AssetWorkspaceRootNormalizationError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspaceRootNormalizationError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Failed to normalize the workspace root.";
	}
};
class AssetWorkspacePathValidationError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspacePathValidationError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Workspace file path must be relative to the project root.";
	}
};
class AssetPreviewTypeValidationError extends __vite_ssr_import_0__.TaggedError()("AssetPreviewTypeValidationError", { resource: AssetResource }) {
	get message() {
		return this.resource._tag === "media-file" || this.resource._tag === "draft-workspace-file" ? "Only images, videos, audio, HTML, and PDF files can be previewed." : "Only browser documents and images can be previewed.";
	}
};
class AssetWorkspaceAssetInspectionError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspaceAssetInspectionError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return this.resource._tag === "media-file" ? "Failed to inspect the media file." : "Failed to inspect the workspace asset.";
	}
};
class AssetWorkspaceAssetNotFoundError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspaceAssetNotFoundError", {
	resource: AssetResource,
	// Absolute path after home/workspace resolution; absent on older servers.
	checkedPath: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.String)
}) {
	get message() {
		return this.resource._tag === "media-file" ? "Media file was not found." : this.resource._tag === "tool-output-image" ? "Tool output image was not found." : "Workspace asset was not found.";
	}
};
class AssetWorkspaceResolutionError extends __vite_ssr_import_0__.TaggedError()("AssetWorkspaceResolutionError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Failed to resolve workspace.";
	}
};
class AssetAttachmentNotFoundError extends __vite_ssr_import_0__.TaggedError()("AssetAttachmentNotFoundError", { resource: AssetResource }) {
	get message() {
		return "Attachment was not found.";
	}
};
class AssetProjectFaviconResolutionError extends __vite_ssr_import_0__.TaggedError()("AssetProjectFaviconResolutionError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Failed to resolve project favicon.";
	}
};
class AssetProjectFaviconInspectionError extends __vite_ssr_import_0__.TaggedError()("AssetProjectFaviconInspectionError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Failed to inspect the project favicon.";
	}
};
class AssetProjectFaviconNotFoundError extends __vite_ssr_import_0__.TaggedError()("AssetProjectFaviconNotFoundError", { resource: AssetResource }) {
	get message() {
		return "Project favicon was not found.";
	}
};
class AssetSigningKeyLoadError extends __vite_ssr_import_0__.TaggedError()("AssetSigningKeyLoadError", {
	resource: AssetResource,
	cause: __vite_ssr_import_0__.Defect()
}) {
	get message() {
		return "Failed to load the asset signing key.";
	}
};
// The tag predates the rename and stays: clients on either side of an update decode it.
class AssetSourceControlMediaUrlValidationError extends __vite_ssr_import_0__.TaggedError()("AssetGitHubMediaUrlValidationError", {}) {
	get message() {
		return "Only media a source control host keeps behind a credential can be fetched with one.";
	}
};
const AssetAccessError = __vite_ssr_import_0__.Union([
	AssetWorkspaceContextNotFoundError,
	AssetWorkspaceContextResolutionError,
	AssetWorkspaceRootNormalizationError,
	AssetWorkspacePathValidationError,
	AssetPreviewTypeValidationError,
	AssetWorkspaceAssetInspectionError,
	AssetWorkspaceAssetNotFoundError,
	AssetWorkspaceResolutionError,
	AssetAttachmentNotFoundError,
	AssetProjectFaviconResolutionError,
	AssetProjectFaviconInspectionError,
	AssetProjectFaviconNotFoundError,
	AssetSourceControlMediaUrlValidationError,
	AssetSigningKeyLoadError
]);
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTY2hlbWEgZnJvbSBcImVmZmVjdC9TY2hlbWFcIjtcblxuaW1wb3J0IHsgTm9uTmVnYXRpdmVJbnQsIFRocmVhZElkLCBUcmltbWVkTm9uRW1wdHlTdHJpbmcsIFR1cm5JdGVtSWQgfSBmcm9tIFwiLi9iYXNlU2NoZW1hcy50c1wiO1xuaW1wb3J0IHtcbiAgUFJPVklERVJfU0VORF9UVVJOX01BWF9GSUxFX0JZVEVTLFxuICBQUk9WSURFUl9TRU5EX1RVUk5fTUFYX0lNQUdFX0JZVEVTLFxuICBQUk9WSURFUl9TRU5EX1RVUk5fU1VQUE9SVEVEX0lNQUdFX01JTUVfVFlQRVMsXG59IGZyb20gXCIuL2NoYXRBdHRhY2htZW50LnRzXCI7XG5pbXBvcnQgeyBQcm9qZWN0RmF2aWNvblBhdGggfSBmcm9tIFwiLi9wcm9qZWN0LnRzXCI7XG5pbXBvcnQgeyBUb29sQWN0aXZpdHlOYXRpdmVBcHBSZWZlcmVuY2UgfSBmcm9tIFwiLi9wcm92aWRlclJ1bnRpbWUudHNcIjtcblxuY29uc3QgQVNTRVRfUEFUSF9NQVhfTEVOR1RIID0gMTAyNDtcblxuLyoqXG4gKiBUaGUgd2lyZSB0YWcgb2YgYSBzb3VyY2UgY29udHJvbCBob3N0J3MgY3JlZGVudGlhbGVkIG1lZGlhLiBJdCBuYW1lcyBHaXRIdWIgYmVjYXVzZSBHaXRIdWIgaGFkXG4gKiBpdCBmaXJzdCwgYW5kIHNlcnZlcnMgYW5kIGNsaWVudHMgb2YgZGlmZmVyZW50IHJlbGVhc2VzIG11c3Qga2VlcCB1bmRlcnN0YW5kaW5nIGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBTT1VSQ0VfQ09OVFJPTF9NRURJQV9BU1NFVCA9IFwiZ2l0aHViLW1lZGlhXCIgYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBBc3NldFJlc291cmNlID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcIndvcmtzcGFjZS1maWxlXCIsIHtcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcGF0aDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aChBU1NFVF9QQVRIX01BWF9MRU5HVEgpKSxcbiAgfSksXG4gIFNjaGVtYS5UYWdnZWRTdHJ1Y3QoXCJtZWRpYS1maWxlXCIsIHtcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcGF0aDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aChBU1NFVF9QQVRIX01BWF9MRU5HVEgpKSxcbiAgfSksXG4gIFNjaGVtYS5UYWdnZWRTdHJ1Y3QoXCJkcmFmdC13b3Jrc3BhY2UtZmlsZVwiLCB7XG4gICAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKEFTU0VUX1BBVEhfTUFYX0xFTkdUSCkpLFxuICAgIHBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoQVNTRVRfUEFUSF9NQVhfTEVOR1RIKSksXG4gIH0pLFxuICBTY2hlbWEuVGFnZ2VkU3RydWN0KFwiYXR0YWNobWVudFwiLCB7XG4gICAgYXR0YWNobWVudElkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDI1NikpLFxuICAgIGZpbGVOYW1lOiBTY2hlbWEub3B0aW9uYWxLZXkoVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyNTUpKSksXG4gICAgbWltZVR5cGU6IFNjaGVtYS5vcHRpb25hbEtleShUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEwMCkpKSxcbiAgICAvKiogRGVmYXVsdHMgdG8gZG93bmxvYWQ7IHZpZXdlcnMgbWF5IHJlcXVlc3QgaW5saW5lIGFmdGVyIGNoZWNraW5nIHRoZSB0eXBlIGlzIHNhZmUuICovXG4gICAgZGlzcG9zaXRpb246IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuTGl0ZXJhbHMoW1wiaW5saW5lXCIsIFwiYXR0YWNobWVudFwiXSkpLFxuICAgIHJlbmRlckludGVudDogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5MaXRlcmFsKFwibWNwLWFwcFwiKSksXG4gIH0pLFxuICBTY2hlbWEuVGFnZ2VkU3RydWN0KFwidG9vbC1vdXRwdXQtaW1hZ2VcIiwge1xuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBpdGVtSWQ6IFR1cm5JdGVtSWQsXG4gICAgaW5kZXg6IE5vbk5lZ2F0aXZlSW50LFxuICB9KSxcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcInByb2plY3QtZmF2aWNvblwiLCB7XG4gICAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKEFTU0VUX1BBVEhfTUFYX0xFTkdUSCkpLFxuICAgIC8vIENhY2hlLWtleSBoaW50IG9ubHk7IHRoZSBwcm9qZWN0IHByb2plY3Rpb24gc3VwcGxpZXMgdGhlIGF1dGhvcml0YXRpdmUgcGF0aC5cbiAgICBwYXRoOiBTY2hlbWEub3B0aW9uYWwoUHJvamVjdEZhdmljb25QYXRoKSxcbiAgfSksXG4gIFNjaGVtYS5UYWdnZWRTdHJ1Y3QoXCJuYXRpdmUtYXBwLWljb25cIiwge1xuICAgIGFwcDogVG9vbEFjdGl2aXR5TmF0aXZlQXBwUmVmZXJlbmNlLFxuICB9KSxcbiAgLy8gTWVkaWEgYSBjaGFuZ2UgcmVxdWVzdCBib2R5IHBvaW50cyBhdCBvbiBpdHMgaG9zdC4gQSBwcml2YXRlIHJlcG9zaXRvcnkgc2VydmVzIHRoZXNlIG9ubHlcbiAgLy8gdG8gYSByZXF1ZXN0IHRoYXQgY2FycmllcyBhIGNyZWRlbnRpYWwsIHdoaWNoIHRoZSBjbGllbnQgaGFzIG5vbmUgb2YsIHNvIHRoZSBzZXJ2ZXIgZmV0Y2hlc1xuICAvLyB0aGVtIHdpdGggdGhlIGNyZWRlbnRpYWwgdGhlIGhvc3QncyBkcml2ZXIgaG9sZHMgZm9yIHRoZSByZXBvc2l0b3J5IGF0IGBjd2RgLlxuICBTY2hlbWEuVGFnZ2VkU3RydWN0KFNPVVJDRV9DT05UUk9MX01FRElBX0FTU0VULCB7XG4gICAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKEFTU0VUX1BBVEhfTUFYX0xFTkdUSCkpLFxuICAgIHVybDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyMDQ4KSksXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBBc3NldFJlc291cmNlID0gdHlwZW9mIEFzc2V0UmVzb3VyY2UuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFzc2V0Q3JlYXRlVXJsSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcmVzb3VyY2U6IEFzc2V0UmVzb3VyY2UsXG59KTtcbmV4cG9ydCB0eXBlIEFzc2V0Q3JlYXRlVXJsSW5wdXQgPSB0eXBlb2YgQXNzZXRDcmVhdGVVcmxJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQXNzZXRJbWFnZURpbWVuc2lvbnMgPSBTY2hlbWEuU3RydWN0KHtcbiAgd2lkdGg6IE5vbk5lZ2F0aXZlSW50LmNoZWNrKFNjaGVtYS5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvKDEpKSxcbiAgaGVpZ2h0OiBOb25OZWdhdGl2ZUludC5jaGVjayhTY2hlbWEuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygxKSksXG59KTtcbmV4cG9ydCB0eXBlIEFzc2V0SW1hZ2VEaW1lbnNpb25zID0gdHlwZW9mIEFzc2V0SW1hZ2VEaW1lbnNpb25zLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBc3NldENyZWF0ZVVybFJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICByZWxhdGl2ZVVybDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCg0MDk2KSksXG4gIGV4cGlyZXNBdDogU2NoZW1hLk51bWJlcixcbiAgc291cmNlUGF0aDogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoQVNTRVRfUEFUSF9NQVhfTEVOR1RIKSksXG4gICksXG4gIGltYWdlRGltZW5zaW9uczogU2NoZW1hLm9wdGlvbmFsKEFzc2V0SW1hZ2VEaW1lbnNpb25zKSxcbiAgLyoqIENoYW5nZXMgb25seSB3aGVuIHRoZSBmaWxlJ3MgY29udGVudHMgb3IgaWRlbnRpdHkgY2hhbmdlLCB1bmxpa2UgYHJlbGF0aXZlVXJsYCwgd2hpY2ggaXMgcmUtc2lnbmVkIG9uIGV2ZXJ5IG1pbnQuICovXG4gIGZpbGVSZXZpc2lvbjogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMjU2KSkpLFxufSk7XG5leHBvcnQgdHlwZSBBc3NldENyZWF0ZVVybFJlc3VsdCA9IHR5cGVvZiBBc3NldENyZWF0ZVVybFJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQVRUQUNITUVOVF9VUExPQURfVVJMX1RUTF9NUyA9IDEwICogNjBfMDAwO1xuXG5jb25zdCBJbWFnZUF0dGFjaG1lbnRDcmVhdGVVcGxvYWRVcmxJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0eXBlOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkxpdGVyYWwoXCJpbWFnZVwiKSksXG4gIG5hbWU6IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMjU1KSksXG4gIG1pbWVUeXBlOiBTY2hlbWEuTGl0ZXJhbHMoUFJPVklERVJfU0VORF9UVVJOX1NVUFBPUlRFRF9JTUFHRV9NSU1FX1RZUEVTKSxcbiAgc2l6ZUJ5dGVzOiBOb25OZWdhdGl2ZUludC5jaGVjayhcbiAgICBTY2hlbWEuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbygxKSxcbiAgICBTY2hlbWEuaXNMZXNzVGhhbk9yRXF1YWxUbyhQUk9WSURFUl9TRU5EX1RVUk5fTUFYX0lNQUdFX0JZVEVTKSxcbiAgKSxcbn0pO1xuXG5jb25zdCBGaWxlQXR0YWNobWVudENyZWF0ZVVwbG9hZFVybElucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZmlsZVwiKSxcbiAgbmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyNTUpKSxcbiAgbWltZVR5cGU6IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMTAwKSksXG4gIHNpemVCeXRlczogTm9uTmVnYXRpdmVJbnQuY2hlY2soXG4gICAgU2NoZW1hLmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMSksXG4gICAgU2NoZW1hLmlzTGVzc1RoYW5PckVxdWFsVG8oUFJPVklERVJfU0VORF9UVVJOX01BWF9GSUxFX0JZVEVTKSxcbiAgKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQXR0YWNobWVudENyZWF0ZVVwbG9hZFVybElucHV0ID0gU2NoZW1hLlVuaW9uKFtcbiAgSW1hZ2VBdHRhY2htZW50Q3JlYXRlVXBsb2FkVXJsSW5wdXQsXG4gIEZpbGVBdHRhY2htZW50Q3JlYXRlVXBsb2FkVXJsSW5wdXQsXG5dKTtcbmV4cG9ydCB0eXBlIEF0dGFjaG1lbnRDcmVhdGVVcGxvYWRVcmxJbnB1dCA9IHR5cGVvZiBBdHRhY2htZW50Q3JlYXRlVXBsb2FkVXJsSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEF0dGFjaG1lbnRDcmVhdGVVcGxvYWRVcmxSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgYXR0YWNobWVudElkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDI1NikpLFxuICByZWxhdGl2ZVVybDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCg0MDk2KSksXG4gIGV4cGlyZXNBdDogU2NoZW1hLk51bWJlcixcbn0pO1xuZXhwb3J0IHR5cGUgQXR0YWNobWVudENyZWF0ZVVwbG9hZFVybFJlc3VsdCA9IHR5cGVvZiBBdHRhY2htZW50Q3JlYXRlVXBsb2FkVXJsUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50RGVsZXRlSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgYXR0YWNobWVudElkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDI1NikpLFxufSk7XG5leHBvcnQgdHlwZSBBdHRhY2htZW50RGVsZXRlSW5wdXQgPSB0eXBlb2YgQXR0YWNobWVudERlbGV0ZUlucHV0LlR5cGU7XG5cbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50VXBsb2FkU2lnbmluZ0tleUVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEF0dGFjaG1lbnRVcGxvYWRTaWduaW5nS2V5RXJyb3I+KCkoXG4gIFwiQXR0YWNobWVudFVwbG9hZFNpZ25pbmdLZXlFcnJvclwiLFxuICB7XG4gICAgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIkZhaWxlZCB0byBsb2FkIHRoZSBhdHRhY2htZW50IHVwbG9hZCBzaWduaW5nIGtleS5cIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRXb3Jrc3BhY2VDb250ZXh0Tm90Rm91bmRFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxBc3NldFdvcmtzcGFjZUNvbnRleHROb3RGb3VuZEVycm9yPigpKFxuICBcIkFzc2V0V29ya3NwYWNlQ29udGV4dE5vdEZvdW5kRXJyb3JcIixcbiAge1xuICAgIHJlc291cmNlOiBBc3NldFJlc291cmNlLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiV29ya3NwYWNlIGNvbnRleHQgd2FzIG5vdCBmb3VuZC5cIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRXb3Jrc3BhY2VDb250ZXh0UmVzb2x1dGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0V29ya3NwYWNlQ29udGV4dFJlc29sdXRpb25FcnJvcj4oKShcbiAgXCJBc3NldFdvcmtzcGFjZUNvbnRleHRSZXNvbHV0aW9uRXJyb3JcIixcbiAge1xuICAgIHJlc291cmNlOiBBc3NldFJlc291cmNlLFxuICAgIGNhdXNlOiBTY2hlbWEuRGVmZWN0KCksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJGYWlsZWQgdG8gcmVzb2x2ZSB3b3Jrc3BhY2UgY29udGV4dC5cIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRXb3Jrc3BhY2VSb290Tm9ybWFsaXphdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0V29ya3NwYWNlUm9vdE5vcm1hbGl6YXRpb25FcnJvcj4oKShcbiAgXCJBc3NldFdvcmtzcGFjZVJvb3ROb3JtYWxpemF0aW9uRXJyb3JcIixcbiAge1xuICAgIHJlc291cmNlOiBBc3NldFJlc291cmNlLFxuICAgIGNhdXNlOiBTY2hlbWEuRGVmZWN0KCksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJGYWlsZWQgdG8gbm9ybWFsaXplIHRoZSB3b3Jrc3BhY2Ugcm9vdC5cIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRXb3Jrc3BhY2VQYXRoVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0V29ya3NwYWNlUGF0aFZhbGlkYXRpb25FcnJvcj4oKShcbiAgXCJBc3NldFdvcmtzcGFjZVBhdGhWYWxpZGF0aW9uRXJyb3JcIixcbiAge1xuICAgIHJlc291cmNlOiBBc3NldFJlc291cmNlLFxuICAgIGNhdXNlOiBTY2hlbWEuRGVmZWN0KCksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJXb3Jrc3BhY2UgZmlsZSBwYXRoIG11c3QgYmUgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC5cIjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRQcmV2aWV3VHlwZVZhbGlkYXRpb25FcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxBc3NldFByZXZpZXdUeXBlVmFsaWRhdGlvbkVycm9yPigpKFxuICBcIkFzc2V0UHJldmlld1R5cGVWYWxpZGF0aW9uRXJyb3JcIixcbiAge1xuICAgIHJlc291cmNlOiBBc3NldFJlc291cmNlLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuX3RhZyA9PT0gXCJtZWRpYS1maWxlXCIgfHwgdGhpcy5yZXNvdXJjZS5fdGFnID09PSBcImRyYWZ0LXdvcmtzcGFjZS1maWxlXCJcbiAgICAgID8gXCJPbmx5IGltYWdlcywgdmlkZW9zLCBhdWRpbywgSFRNTCwgYW5kIFBERiBmaWxlcyBjYW4gYmUgcHJldmlld2VkLlwiXG4gICAgICA6IFwiT25seSBicm93c2VyIGRvY3VtZW50cyBhbmQgaW1hZ2VzIGNhbiBiZSBwcmV2aWV3ZWQuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0V29ya3NwYWNlQXNzZXRJbnNwZWN0aW9uRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8QXNzZXRXb3Jrc3BhY2VBc3NldEluc3BlY3Rpb25FcnJvcj4oKShcbiAgXCJBc3NldFdvcmtzcGFjZUFzc2V0SW5zcGVjdGlvbkVycm9yXCIsXG4gIHtcbiAgICByZXNvdXJjZTogQXNzZXRSZXNvdXJjZSxcbiAgICBjYXVzZTogU2NoZW1hLkRlZmVjdCgpLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuX3RhZyA9PT0gXCJtZWRpYS1maWxlXCJcbiAgICAgID8gXCJGYWlsZWQgdG8gaW5zcGVjdCB0aGUgbWVkaWEgZmlsZS5cIlxuICAgICAgOiBcIkZhaWxlZCB0byBpbnNwZWN0IHRoZSB3b3Jrc3BhY2UgYXNzZXQuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0V29ya3NwYWNlQXNzZXROb3RGb3VuZEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0V29ya3NwYWNlQXNzZXROb3RGb3VuZEVycm9yPigpKFxuICBcIkFzc2V0V29ya3NwYWNlQXNzZXROb3RGb3VuZEVycm9yXCIsXG4gIHtcbiAgICByZXNvdXJjZTogQXNzZXRSZXNvdXJjZSxcbiAgICAvLyBBYnNvbHV0ZSBwYXRoIGFmdGVyIGhvbWUvd29ya3NwYWNlIHJlc29sdXRpb247IGFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICAgIGNoZWNrZWRQYXRoOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLlN0cmluZyksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5fdGFnID09PSBcIm1lZGlhLWZpbGVcIlxuICAgICAgPyBcIk1lZGlhIGZpbGUgd2FzIG5vdCBmb3VuZC5cIlxuICAgICAgOiB0aGlzLnJlc291cmNlLl90YWcgPT09IFwidG9vbC1vdXRwdXQtaW1hZ2VcIlxuICAgICAgICA/IFwiVG9vbCBvdXRwdXQgaW1hZ2Ugd2FzIG5vdCBmb3VuZC5cIlxuICAgICAgICA6IFwiV29ya3NwYWNlIGFzc2V0IHdhcyBub3QgZm91bmQuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0V29ya3NwYWNlUmVzb2x1dGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0V29ya3NwYWNlUmVzb2x1dGlvbkVycm9yPigpKFxuICBcIkFzc2V0V29ya3NwYWNlUmVzb2x1dGlvbkVycm9yXCIsXG4gIHtcbiAgICByZXNvdXJjZTogQXNzZXRSZXNvdXJjZSxcbiAgICBjYXVzZTogU2NoZW1hLkRlZmVjdCgpLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiRmFpbGVkIHRvIHJlc29sdmUgd29ya3NwYWNlLlwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3NldEF0dGFjaG1lbnROb3RGb3VuZEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0QXR0YWNobWVudE5vdEZvdW5kRXJyb3I+KCkoXG4gIFwiQXNzZXRBdHRhY2htZW50Tm90Rm91bmRFcnJvclwiLFxuICB7XG4gICAgcmVzb3VyY2U6IEFzc2V0UmVzb3VyY2UsXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJBdHRhY2htZW50IHdhcyBub3QgZm91bmQuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0UHJvamVjdEZhdmljb25SZXNvbHV0aW9uRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8QXNzZXRQcm9qZWN0RmF2aWNvblJlc29sdXRpb25FcnJvcj4oKShcbiAgXCJBc3NldFByb2plY3RGYXZpY29uUmVzb2x1dGlvbkVycm9yXCIsXG4gIHtcbiAgICByZXNvdXJjZTogQXNzZXRSZXNvdXJjZSxcbiAgICBjYXVzZTogU2NoZW1hLkRlZmVjdCgpLFxuICB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiRmFpbGVkIHRvIHJlc29sdmUgcHJvamVjdCBmYXZpY29uLlwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3NldFByb2plY3RGYXZpY29uSW5zcGVjdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0UHJvamVjdEZhdmljb25JbnNwZWN0aW9uRXJyb3I+KCkoXG4gIFwiQXNzZXRQcm9qZWN0RmF2aWNvbkluc3BlY3Rpb25FcnJvclwiLFxuICB7XG4gICAgcmVzb3VyY2U6IEFzc2V0UmVzb3VyY2UsXG4gICAgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIkZhaWxlZCB0byBpbnNwZWN0IHRoZSBwcm9qZWN0IGZhdmljb24uXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2V0UHJvamVjdEZhdmljb25Ob3RGb3VuZEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPEFzc2V0UHJvamVjdEZhdmljb25Ob3RGb3VuZEVycm9yPigpKFxuICBcIkFzc2V0UHJvamVjdEZhdmljb25Ob3RGb3VuZEVycm9yXCIsXG4gIHtcbiAgICByZXNvdXJjZTogQXNzZXRSZXNvdXJjZSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIlByb2plY3QgZmF2aWNvbiB3YXMgbm90IGZvdW5kLlwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBc3NldFNpZ25pbmdLZXlMb2FkRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8QXNzZXRTaWduaW5nS2V5TG9hZEVycm9yPigpKFxuICBcIkFzc2V0U2lnbmluZ0tleUxvYWRFcnJvclwiLFxuICB7XG4gICAgcmVzb3VyY2U6IEFzc2V0UmVzb3VyY2UsXG4gICAgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIkZhaWxlZCB0byBsb2FkIHRoZSBhc3NldCBzaWduaW5nIGtleS5cIjtcbiAgfVxufVxuXG4vLyBUaGUgdGFnIHByZWRhdGVzIHRoZSByZW5hbWUgYW5kIHN0YXlzOiBjbGllbnRzIG9uIGVpdGhlciBzaWRlIG9mIGFuIHVwZGF0ZSBkZWNvZGUgaXQuXG5leHBvcnQgY2xhc3MgQXNzZXRTb3VyY2VDb250cm9sTWVkaWFVcmxWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8QXNzZXRTb3VyY2VDb250cm9sTWVkaWFVcmxWYWxpZGF0aW9uRXJyb3I+KCkoXG4gIFwiQXNzZXRHaXRIdWJNZWRpYVVybFZhbGlkYXRpb25FcnJvclwiLFxuICB7fSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIk9ubHkgbWVkaWEgYSBzb3VyY2UgY29udHJvbCBob3N0IGtlZXBzIGJlaGluZCBhIGNyZWRlbnRpYWwgY2FuIGJlIGZldGNoZWQgd2l0aCBvbmUuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFzc2V0QWNjZXNzRXJyb3IgPSBTY2hlbWEuVW5pb24oW1xuICBBc3NldFdvcmtzcGFjZUNvbnRleHROb3RGb3VuZEVycm9yLFxuICBBc3NldFdvcmtzcGFjZUNvbnRleHRSZXNvbHV0aW9uRXJyb3IsXG4gIEFzc2V0V29ya3NwYWNlUm9vdE5vcm1hbGl6YXRpb25FcnJvcixcbiAgQXNzZXRXb3Jrc3BhY2VQYXRoVmFsaWRhdGlvbkVycm9yLFxuICBBc3NldFByZXZpZXdUeXBlVmFsaWRhdGlvbkVycm9yLFxuICBBc3NldFdvcmtzcGFjZUFzc2V0SW5zcGVjdGlvbkVycm9yLFxuICBBc3NldFdvcmtzcGFjZUFzc2V0Tm90Rm91bmRFcnJvcixcbiAgQXNzZXRXb3Jrc3BhY2VSZXNvbHV0aW9uRXJyb3IsXG4gIEFzc2V0QXR0YWNobWVudE5vdEZvdW5kRXJyb3IsXG4gIEFzc2V0UHJvamVjdEZhdmljb25SZXNvbHV0aW9uRXJyb3IsXG4gIEFzc2V0UHJvamVjdEZhdmljb25JbnNwZWN0aW9uRXJyb3IsXG4gIEFzc2V0UHJvamVjdEZhdmljb25Ob3RGb3VuZEVycm9yLFxuICBBc3NldFNvdXJjZUNvbnRyb2xNZWRpYVVybFZhbGlkYXRpb25FcnJvcixcbiAgQXNzZXRTaWduaW5nS2V5TG9hZEVycm9yLFxuXSk7XG5leHBvcnQgdHlwZSBBc3NldEFjY2Vzc0Vycm9yID0gdHlwZW9mIEFzc2V0QWNjZXNzRXJyb3IuVHlwZTtcbiJdLCJmaWxlIjoiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Fzc2V0cy50cyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9hc3NldHMudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvYXNzZXRzLnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxbXSxbIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0se30sIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvU2NoZW1hLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Jhc2VTY2hlbWFzLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2NoYXRBdHRhY2htZW50LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3Byb2plY3QudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvcHJvdmlkZXJSdW50aW1lLnRzIl0=