__vite_ssr_exportName__("officialAcpRegistryIconUrlForAgentId", () => { try { return officialAcpRegistryIconUrlForAgentId } catch {} });
__vite_ssr_exportName__("resolveOfficialAcpRegistryIconUrl", () => { try { return resolveOfficialAcpRegistryIconUrl } catch {} });
__vite_ssr_exportName__("AcpRegistryDistribution", () => { try { return AcpRegistryDistribution } catch {} });
__vite_ssr_exportName__("AcpRegistryIntegrity", () => { try { return AcpRegistryIntegrity } catch {} });
__vite_ssr_exportName__("ACP_REGISTRY_MAX_AGENTS", () => { try { return ACP_REGISTRY_MAX_AGENTS } catch {} });
__vite_ssr_exportName__("AcpRegistrySearchInput", () => { try { return AcpRegistrySearchInput } catch {} });
__vite_ssr_exportName__("AcpRegistrySearchAgent", () => { try { return AcpRegistrySearchAgent } catch {} });
__vite_ssr_exportName__("AcpRegistrySearchResult", () => { try { return AcpRegistrySearchResult } catch {} });
__vite_ssr_exportName__("AcpRegistryPrepareInput", () => { try { return AcpRegistryPrepareInput } catch {} });
__vite_ssr_exportName__("AcpRegistryPrepareResult", () => { try { return AcpRegistryPrepareResult } catch {} });
__vite_ssr_exportName__("AcpRegistryManagedBinaryUninstallInput", () => { try { return AcpRegistryManagedBinaryUninstallInput } catch {} });
__vite_ssr_exportName__("AcpRegistryManagedBinaryUninstallResult", () => { try { return AcpRegistryManagedBinaryUninstallResult } catch {} });
__vite_ssr_exportName__("AcpRegistryProbeAuthMethod", () => { try { return AcpRegistryProbeAuthMethod } catch {} });
__vite_ssr_exportName__("AcpRegistryUrlAuthAction", () => { try { return AcpRegistryUrlAuthAction } catch {} });
__vite_ssr_exportName__("AcpRegistryAcceptUrlAuthInput", () => { try { return AcpRegistryAcceptUrlAuthInput } catch {} });
__vite_ssr_exportName__("AcpRegistryAcceptUrlAuthResult", () => { try { return AcpRegistryAcceptUrlAuthResult } catch {} });
__vite_ssr_exportName__("AcpRegistrySession", () => { try { return AcpRegistrySession } catch {} });
__vite_ssr_exportName__("AcpRegistryListSessionsInput", () => { try { return AcpRegistryListSessionsInput } catch {} });
__vite_ssr_exportName__("AcpRegistryListSessionsResult", () => { try { return AcpRegistryListSessionsResult } catch {} });
__vite_ssr_exportName__("AcpRegistryImportSessionInput", () => { try { return AcpRegistryImportSessionInput } catch {} });
__vite_ssr_exportName__("AcpRegistryImportSessionResult", () => { try { return AcpRegistryImportSessionResult } catch {} });
__vite_ssr_exportName__("AcpRegistryDeleteSessionInput", () => { try { return AcpRegistryDeleteSessionInput } catch {} });
__vite_ssr_exportName__("AcpRegistryDeleteSessionResult", () => { try { return AcpRegistryDeleteSessionResult } catch {} });
__vite_ssr_exportName__("AcpRegistryConfigurableProvider", () => { try { return AcpRegistryConfigurableProvider } catch {} });
__vite_ssr_exportName__("AcpRegistryListProvidersInput", () => { try { return AcpRegistryListProvidersInput } catch {} });
__vite_ssr_exportName__("AcpRegistryListProvidersResult", () => { try { return AcpRegistryListProvidersResult } catch {} });
__vite_ssr_exportName__("AcpRegistrySetProviderInput", () => { try { return AcpRegistrySetProviderInput } catch {} });
__vite_ssr_exportName__("AcpRegistrySetProviderResult", () => { try { return AcpRegistrySetProviderResult } catch {} });
__vite_ssr_exportName__("AcpRegistryDisableProviderInput", () => { try { return AcpRegistryDisableProviderInput } catch {} });
__vite_ssr_exportName__("AcpRegistryDisableProviderResult", () => { try { return AcpRegistryDisableProviderResult } catch {} });
__vite_ssr_exportName__("AcpRegistryLogoutInput", () => { try { return AcpRegistryLogoutInput } catch {} });
__vite_ssr_exportName__("AcpRegistryLogoutResult", () => { try { return AcpRegistryLogoutResult } catch {} });
__vite_ssr_exportName__("AcpRegistryProbeModel", () => { try { return AcpRegistryProbeModel } catch {} });
__vite_ssr_exportName__("AcpRegistryProbeResult", () => { try { return AcpRegistryProbeResult } catch {} });
__vite_ssr_exportName__("AcpRegistryOperationErrorReason", () => { try { return AcpRegistryOperationErrorReason } catch {} });
__vite_ssr_exportName__("AcpRegistryOperationError", () => { try { return AcpRegistryOperationError } 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/Effect.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/Schema.js");
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["ProjectId","ThreadId","TrimmedNonEmptyString","TrimmedString"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/model.ts", {"importedNames":["ProviderOptionDescriptor"]});
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/providerInstance.ts", {"importedNames":["ProviderInstanceId"]});





const AcpRegistryAgentId = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(128), __vite_ssr_import_1__.isPattern(/^[a-z0-9][a-z0-9._-]*$/));
const ACP_REGISTRY_CDN_HOSTNAME = "cdn.agentclientprotocol.com";
const ACP_REGISTRY_AGENT_ID_PATTERN = /^[a-z0-9][a-z0-9._-]*$/;
function officialAcpRegistryIconUrlForAgentId(agentId) {
	if (agentId === null || agentId === undefined || !ACP_REGISTRY_AGENT_ID_PATTERN.test(agentId)) {
		return null;
	};
	return `https://${ACP_REGISTRY_CDN_HOSTNAME}/registry/v1/latest/${agentId}.svg`;
};
function resolveOfficialAcpRegistryIconUrl(icon) {
	if (!icon) return null;
	try {
		const url = new URL(icon);
		if (url.protocol !== "https:" || url.hostname !== ACP_REGISTRY_CDN_HOSTNAME || url.port !== "" || url.username !== "" || url.password !== "") {
			return null;
		};
		return url.href;
	} catch {
		return null;
	}
};
const AcpRegistryDistribution = __vite_ssr_import_1__.Literals([
	"binary",
	"npx",
	"uvx"
]);
const AcpRegistryIntegrity = __vite_ssr_import_1__.Literals(["sha256", "registry"]);
const ACP_REGISTRY_MAX_AGENTS = 512;
const AcpRegistrySearchInput = __vite_ssr_import_1__.Struct({
	query: __vite_ssr_import_2__.TrimmedString.check(__vite_ssr_import_1__.isMaxLength(120)),
	limit: __vite_ssr_import_1__.optional(__vite_ssr_import_1__.Int.check(__vite_ssr_import_1__.isBetween({
		minimum: 1,
		maximum: ACP_REGISTRY_MAX_AGENTS
	})))
});
const AcpRegistryUrl = __vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(2048));
const AcpRegistrySearchAgent = __vite_ssr_import_1__.Struct({
	id: AcpRegistryAgentId,
	name: __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(160)),
	version: __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(128)),
	description: __vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(1024)),
	authors: __vite_ssr_import_1__.Array(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(256))).check(__vite_ssr_import_1__.isMaxLength(16)),
	license: __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(128))),
	website: __vite_ssr_import_1__.NullOr(AcpRegistryUrl),
	repository: __vite_ssr_import_1__.NullOr(AcpRegistryUrl),
	icon: __vite_ssr_import_1__.NullOr(AcpRegistryUrl),
	distribution: AcpRegistryDistribution,
	integrity: AcpRegistryIntegrity
});
const AcpRegistrySearchResult = __vite_ssr_import_1__.Struct({ agents: __vite_ssr_import_1__.Array(AcpRegistrySearchAgent).check(__vite_ssr_import_1__.isMaxLength(ACP_REGISTRY_MAX_AGENTS)) });
const AcpRegistryPrepareInput = __vite_ssr_import_1__.Struct({ agentId: AcpRegistryAgentId });
const AcpRegistryPrepareResult = __vite_ssr_import_1__.Struct({
	agentId: AcpRegistryAgentId,
	version: __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(128)),
	distribution: AcpRegistryDistribution,
	prepared: __vite_ssr_import_1__.Literal(true)
});
const AcpRegistryManagedBinaryUninstallInput = __vite_ssr_import_1__.Struct({ agentId: AcpRegistryAgentId });
const AcpRegistryManagedBinaryUninstallResult = __vite_ssr_import_1__.Struct({
	agentId: AcpRegistryAgentId,
	removed: __vite_ssr_import_1__.Boolean
});
const AcpRegistryProbeText = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(256));
const AcpRegistryProbeDescription = __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(1024)));
const AcpRegistryProbeAuthMethod = __vite_ssr_import_1__.Struct({
	id: AcpRegistryProbeText,
	name: AcpRegistryProbeText,
	description: AcpRegistryProbeDescription,
	type: __vite_ssr_import_1__.Literals([
		"agent",
		"env_var",
		"terminal"
	]),
	command: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(2048))),
	envVarNames: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.Array(AcpRegistryProbeText).check(__vite_ssr_import_1__.isMaxLength(16))),
	link: __vite_ssr_import_1__.optionalKey(AcpRegistryUrl)
});
const AcpRegistryUrlAuthAction = __vite_ssr_import_1__.Struct({
	elicitationId: AcpRegistryProbeText,
	url: AcpRegistryUrl,
	message: __vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(1024)),
	createdAt: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(128))),
	expiresAt: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(128)))
});
const AcpRegistryAcceptUrlAuthInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	elicitationId: AcpRegistryProbeText
});
const AcpRegistryAcceptUrlAuthResult = __vite_ssr_import_1__.Struct({ accepted: __vite_ssr_import_1__.Boolean });
const AcpRegistrySessionId = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(1024));
const AcpRegistrySessionPath = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(4096));
const AcpRegistrySession = __vite_ssr_import_1__.Struct({
	sessionId: AcpRegistrySessionId,
	cwd: AcpRegistrySessionPath,
	additionalDirectories: __vite_ssr_import_1__.Array(AcpRegistrySessionPath).check(__vite_ssr_import_1__.isMaxLength(32)),
	title: __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(1024))),
	updatedAt: __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(128))),
	importedThreadId: __vite_ssr_import_1__.NullOr((0,__vite_ssr_import_2__.ThreadId))
});
const AcpRegistryListSessionsInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	projectId: __vite_ssr_import_2__.ProjectId,
	cursor: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(2048)))
});
const AcpRegistryListSessionsResult = __vite_ssr_import_1__.Struct({
	sessions: __vite_ssr_import_1__.Array(AcpRegistrySession).check(__vite_ssr_import_1__.isMaxLength(256)),
	nextCursor: __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(2048))),
	canLoad: __vite_ssr_import_1__.Boolean,
	canResume: __vite_ssr_import_1__.Boolean,
	canDelete: __vite_ssr_import_1__.Boolean
});
const AcpRegistryImportSessionInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	projectId: __vite_ssr_import_2__.ProjectId,
	sessionId: AcpRegistrySessionId,
	title: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.NullOr(__vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(1024)))),
	updatedAt: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.NullOr(__vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(128))))
});
const AcpRegistryImportSessionResult = __vite_ssr_import_1__.Struct({
	threadId: __vite_ssr_import_2__.ThreadId,
	imported: __vite_ssr_import_1__.Boolean
});
const AcpRegistryDeleteSessionInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	projectId: __vite_ssr_import_2__.ProjectId,
	sessionId: AcpRegistrySessionId
});
const AcpRegistryDeleteSessionResult = __vite_ssr_import_1__.Struct({ deleted: __vite_ssr_import_1__.Literal(true) });
const AcpRegistryProviderId = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(256));
const AcpRegistryProviderProtocol = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(64));
const AcpRegistryConfigurableProvider = __vite_ssr_import_1__.Struct({
	providerId: AcpRegistryProviderId,
	supported: __vite_ssr_import_1__.Array(AcpRegistryProviderProtocol).check(__vite_ssr_import_1__.isMaxLength(16)),
	required: __vite_ssr_import_1__.Boolean,
	current: __vite_ssr_import_1__.NullOr(__vite_ssr_import_1__.Struct({
		apiType: AcpRegistryProviderProtocol,
		baseUrl: AcpRegistryUrl
	}))
});
const AcpRegistryListProvidersInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	projectId: __vite_ssr_import_2__.ProjectId
});
const AcpRegistryListProvidersResult = __vite_ssr_import_1__.Struct({ providers: __vite_ssr_import_1__.Array(AcpRegistryConfigurableProvider).check(__vite_ssr_import_1__.isMaxLength(64)) });
const AcpRegistrySetProviderInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	projectId: __vite_ssr_import_2__.ProjectId,
	providerId: AcpRegistryProviderId,
	apiType: AcpRegistryProviderProtocol,
	baseUrl: AcpRegistryUrl,
	// Write-only secrets. Provider list responses intentionally cannot carry headers.
	headers: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.Record(__vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_1__.isMaxLength(128)), __vite_ssr_import_1__.String.check(__vite_ssr_import_1__.isMaxLength(8192))))
});
const AcpRegistrySetProviderResult = __vite_ssr_import_1__.Struct({ configured: __vite_ssr_import_1__.Literal(true) });
const AcpRegistryDisableProviderInput = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	projectId: __vite_ssr_import_2__.ProjectId,
	providerId: AcpRegistryProviderId
});
const AcpRegistryDisableProviderResult = __vite_ssr_import_1__.Struct({ disabled: __vite_ssr_import_1__.Literal(true) });
const AcpRegistryLogoutInput = __vite_ssr_import_1__.Struct({ instanceId: __vite_ssr_import_4__.ProviderInstanceId });
const AcpRegistryLogoutResult = __vite_ssr_import_1__.Struct({ loggedOut: __vite_ssr_import_1__.Literal(true) });
const AcpRegistryProbeModel = __vite_ssr_import_1__.Struct({
	id: AcpRegistryProbeText,
	name: AcpRegistryProbeText,
	description: AcpRegistryProbeDescription
});
const AcpRegistryProbeResult = __vite_ssr_import_1__.Struct({
	instanceId: __vite_ssr_import_4__.ProviderInstanceId,
	// `ready` requires a disposable ACP session/new probe, not passive auth detection.
	ready: __vite_ssr_import_1__.Literal(true),
	icon: __vite_ssr_import_1__.NullOr(AcpRegistryUrl),
	authMethods: __vite_ssr_import_1__.Array(AcpRegistryProbeAuthMethod).check(__vite_ssr_import_1__.isMaxLength(32)),
	models: __vite_ssr_import_1__.Array(AcpRegistryProbeModel).check(__vite_ssr_import_1__.isMaxLength(256)),
	currentModelId: __vite_ssr_import_1__.NullOr(AcpRegistryProbeText),
	configOptions: __vite_ssr_import_1__.Array((0,__vite_ssr_import_3__.ProviderOptionDescriptor)).check(__vite_ssr_import_1__.isMaxLength(16)),
	sessionManagement: __vite_ssr_import_1__.Struct({
		canList: __vite_ssr_import_1__.Boolean,
		canLoad: __vite_ssr_import_1__.Boolean,
		canResume: __vite_ssr_import_1__.Boolean,
		canLogout: __vite_ssr_import_1__.Boolean,
		canDelete: __vite_ssr_import_1__.Boolean,
		canConfigureProviders: __vite_ssr_import_1__.Boolean
	}).pipe(__vite_ssr_import_1__.withDecodingDefault(__vite_ssr_import_0__.succeed({
		canList: false,
		canLoad: false,
		canResume: false,
		canLogout: false,
		canDelete: false,
		canConfigureProviders: false
	})))
});
const AcpRegistryOperationErrorReason = __vite_ssr_import_1__.Literals([
	"agent_not_configured",
	"agent_not_found",
	"archive_invalid",
	"authentication_failed",
	"checksum_mismatch",
	"download_failed",
	"install_failed",
	"instance_not_found",
	"logout_unsupported",
	"logout_failed",
	"probe_failed",
	"project_not_found",
	"registry_unavailable",
	"runner_unavailable",
	"session_import_failed",
	"session_delete_unsupported",
	"session_delete_failed",
	"session_list_unsupported",
	"session_resume_unsupported",
	"providers_unsupported",
	"providers_list_failed",
	"provider_configuration_failed",
	"unsupported_distribution",
	"unsupported_platform"
]);
class AcpRegistryOperationError extends __vite_ssr_import_1__.TaggedError()("AcpRegistryOperationError", {
	reason: AcpRegistryOperationErrorReason,
	message: __vite_ssr_import_1__.String,
	authMethods: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.Array(AcpRegistryProbeAuthMethod).check(__vite_ssr_import_1__.isMaxLength(32))),
	authAction: __vite_ssr_import_1__.optionalKey(AcpRegistryUrlAuthAction),
	cause: __vite_ssr_import_1__.optionalKey(__vite_ssr_import_1__.Defect())
}) {}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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QTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFHTSxNQUFNLGtDQUFrQyxzQkFBTyxZQUF1QyxDQUFDLENBQzVGLDZCQUNBO0NBQ0UsUUFBUTtDQUNSLFNBQVMsc0JBQU87Q0FDaEIsYUFBYSxzQkFBTyxZQUNsQixzQkFBTyxNQUFNLDBCQUEwQixDQUFDLENBQUMsTUFBTSxzQkFBTyxZQUFZLEVBQUUsQ0FBQyxDQUN2RTtDQUNBLFlBQVksc0JBQU8sWUFBWSx3QkFBd0I7Q0FDdkQsT0FBTyxzQkFBTyxZQUFZLHNCQUFPLE9BQU8sQ0FBQztBQUMzQyxDQUNGLENBQUMsQ0FBQyxDQUFDIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJhY3BSZWdpc3RyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBFZmZlY3QgZnJvbSBcImVmZmVjdC9FZmZlY3RcIjtcbmltcG9ydCAqIGFzIFNjaGVtYSBmcm9tIFwiZWZmZWN0L1NjaGVtYVwiO1xuXG5pbXBvcnQgeyBQcm9qZWN0SWQsIFRocmVhZElkLCBUcmltbWVkTm9uRW1wdHlTdHJpbmcsIFRyaW1tZWRTdHJpbmcgfSBmcm9tIFwiLi9iYXNlU2NoZW1hcy50c1wiO1xuaW1wb3J0IHsgUHJvdmlkZXJPcHRpb25EZXNjcmlwdG9yIH0gZnJvbSBcIi4vbW9kZWwudHNcIjtcbmltcG9ydCB7IFByb3ZpZGVySW5zdGFuY2VJZCB9IGZyb20gXCIuL3Byb3ZpZGVySW5zdGFuY2UudHNcIjtcblxuY29uc3QgQWNwUmVnaXN0cnlBZ2VudElkID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFxuICBTY2hlbWEuaXNNYXhMZW5ndGgoMTI4KSxcbiAgU2NoZW1hLmlzUGF0dGVybigvXlthLXowLTldW2EtejAtOS5fLV0qJC8pLFxuKTtcblxuY29uc3QgQUNQX1JFR0lTVFJZX0NETl9IT1NUTkFNRSA9IFwiY2RuLmFnZW50Y2xpZW50cHJvdG9jb2wuY29tXCI7XG5jb25zdCBBQ1BfUkVHSVNUUllfQUdFTlRfSURfUEFUVEVSTiA9IC9eW2EtejAtOV1bYS16MC05Ll8tXSokLztcblxuZXhwb3J0IGZ1bmN0aW9uIG9mZmljaWFsQWNwUmVnaXN0cnlJY29uVXJsRm9yQWdlbnRJZChcbiAgYWdlbnRJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IHN0cmluZyB8IG51bGwge1xuICBpZiAoYWdlbnRJZCA9PT0gbnVsbCB8fCBhZ2VudElkID09PSB1bmRlZmluZWQgfHwgIUFDUF9SRUdJU1RSWV9BR0VOVF9JRF9QQVRURVJOLnRlc3QoYWdlbnRJZCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gYGh0dHBzOi8vJHtBQ1BfUkVHSVNUUllfQ0ROX0hPU1ROQU1FfS9yZWdpc3RyeS92MS9sYXRlc3QvJHthZ2VudElkfS5zdmdgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU9mZmljaWFsQWNwUmVnaXN0cnlJY29uVXJsKGljb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFpY29uKSByZXR1cm4gbnVsbDtcbiAgdHJ5IHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGljb24pO1xuICAgIGlmIChcbiAgICAgIHVybC5wcm90b2NvbCAhPT0gXCJodHRwczpcIiB8fFxuICAgICAgdXJsLmhvc3RuYW1lICE9PSBBQ1BfUkVHSVNUUllfQ0ROX0hPU1ROQU1FIHx8XG4gICAgICB1cmwucG9ydCAhPT0gXCJcIiB8fFxuICAgICAgdXJsLnVzZXJuYW1lICE9PSBcIlwiIHx8XG4gICAgICB1cmwucGFzc3dvcmQgIT09IFwiXCJcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdXJsLmhyZWY7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeURpc3RyaWJ1dGlvbiA9IFNjaGVtYS5MaXRlcmFscyhbXCJiaW5hcnlcIiwgXCJucHhcIiwgXCJ1dnhcIl0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlEaXN0cmlidXRpb24gPSB0eXBlb2YgQWNwUmVnaXN0cnlEaXN0cmlidXRpb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5SW50ZWdyaXR5ID0gU2NoZW1hLkxpdGVyYWxzKFtcInNoYTI1NlwiLCBcInJlZ2lzdHJ5XCJdKTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5SW50ZWdyaXR5ID0gdHlwZW9mIEFjcFJlZ2lzdHJ5SW50ZWdyaXR5LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBQ1BfUkVHSVNUUllfTUFYX0FHRU5UUyA9IDUxMjtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5U2VhcmNoSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcXVlcnk6IFRyaW1tZWRTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEyMCkpLFxuICBsaW1pdDogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5JbnQuY2hlY2soU2NoZW1hLmlzQmV0d2Vlbih7IG1pbmltdW06IDEsIG1heGltdW06IEFDUF9SRUdJU1RSWV9NQVhfQUdFTlRTIH0pKSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlTZWFyY2hJbnB1dCA9IHR5cGVvZiBBY3BSZWdpc3RyeVNlYXJjaElucHV0LlR5cGU7XG5cbmNvbnN0IEFjcFJlZ2lzdHJ5VXJsID0gU2NoZW1hLlN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMl8wNDgpKTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5U2VhcmNoQWdlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IEFjcFJlZ2lzdHJ5QWdlbnRJZCxcbiAgbmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxNjApKSxcbiAgdmVyc2lvbjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxMjgpKSxcbiAgZGVzY3JpcHRpb246IFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDFfMDI0KSksXG4gIGF1dGhvcnM6IFNjaGVtYS5BcnJheShTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyNTYpKSkuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDE2KSksXG4gIGxpY2Vuc2U6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMTI4KSkpLFxuICB3ZWJzaXRlOiBTY2hlbWEuTnVsbE9yKEFjcFJlZ2lzdHJ5VXJsKSxcbiAgcmVwb3NpdG9yeTogU2NoZW1hLk51bGxPcihBY3BSZWdpc3RyeVVybCksXG4gIGljb246IFNjaGVtYS5OdWxsT3IoQWNwUmVnaXN0cnlVcmwpLFxuICBkaXN0cmlidXRpb246IEFjcFJlZ2lzdHJ5RGlzdHJpYnV0aW9uLFxuICBpbnRlZ3JpdHk6IEFjcFJlZ2lzdHJ5SW50ZWdyaXR5LFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeVNlYXJjaEFnZW50ID0gdHlwZW9mIEFjcFJlZ2lzdHJ5U2VhcmNoQWdlbnQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5U2VhcmNoUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFnZW50czogU2NoZW1hLkFycmF5KEFjcFJlZ2lzdHJ5U2VhcmNoQWdlbnQpLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aChBQ1BfUkVHSVNUUllfTUFYX0FHRU5UUykpLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeVNlYXJjaFJlc3VsdCA9IHR5cGVvZiBBY3BSZWdpc3RyeVNlYXJjaFJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlQcmVwYXJlSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgYWdlbnRJZDogQWNwUmVnaXN0cnlBZ2VudElkLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeVByZXBhcmVJbnB1dCA9IHR5cGVvZiBBY3BSZWdpc3RyeVByZXBhcmVJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlQcmVwYXJlUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFnZW50SWQ6IEFjcFJlZ2lzdHJ5QWdlbnRJZCxcbiAgdmVyc2lvbjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxMjgpKSxcbiAgZGlzdHJpYnV0aW9uOiBBY3BSZWdpc3RyeURpc3RyaWJ1dGlvbixcbiAgcHJlcGFyZWQ6IFNjaGVtYS5MaXRlcmFsKHRydWUpLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeVByZXBhcmVSZXN1bHQgPSB0eXBlb2YgQWNwUmVnaXN0cnlQcmVwYXJlUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeU1hbmFnZWRCaW5hcnlVbmluc3RhbGxJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBhZ2VudElkOiBBY3BSZWdpc3RyeUFnZW50SWQsXG59KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5TWFuYWdlZEJpbmFyeVVuaW5zdGFsbElucHV0ID1cbiAgdHlwZW9mIEFjcFJlZ2lzdHJ5TWFuYWdlZEJpbmFyeVVuaW5zdGFsbElucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeU1hbmFnZWRCaW5hcnlVbmluc3RhbGxSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgYWdlbnRJZDogQWNwUmVnaXN0cnlBZ2VudElkLFxuICByZW1vdmVkOiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlNYW5hZ2VkQmluYXJ5VW5pbnN0YWxsUmVzdWx0ID1cbiAgdHlwZW9mIEFjcFJlZ2lzdHJ5TWFuYWdlZEJpbmFyeVVuaW5zdGFsbFJlc3VsdC5UeXBlO1xuXG5jb25zdCBBY3BSZWdpc3RyeVByb2JlVGV4dCA9IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMjU2KSk7XG5jb25zdCBBY3BSZWdpc3RyeVByb2JlRGVzY3JpcHRpb24gPSBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDFfMDI0KSkpO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlQcm9iZUF1dGhNZXRob2QgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IEFjcFJlZ2lzdHJ5UHJvYmVUZXh0LFxuICBuYW1lOiBBY3BSZWdpc3RyeVByb2JlVGV4dCxcbiAgZGVzY3JpcHRpb246IEFjcFJlZ2lzdHJ5UHJvYmVEZXNjcmlwdGlvbixcbiAgdHlwZTogU2NoZW1hLkxpdGVyYWxzKFtcImFnZW50XCIsIFwiZW52X3ZhclwiLCBcInRlcm1pbmFsXCJdKSxcbiAgY29tbWFuZDogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDJfMDQ4KSkpLFxuICBlbnZWYXJOYW1lczogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5BcnJheShBY3BSZWdpc3RyeVByb2JlVGV4dCkuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDE2KSkpLFxuICBsaW5rOiBTY2hlbWEub3B0aW9uYWxLZXkoQWNwUmVnaXN0cnlVcmwpLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeVByb2JlQXV0aE1ldGhvZCA9IHR5cGVvZiBBY3BSZWdpc3RyeVByb2JlQXV0aE1ldGhvZC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlVcmxBdXRoQWN0aW9uID0gU2NoZW1hLlN0cnVjdCh7XG4gIGVsaWNpdGF0aW9uSWQ6IEFjcFJlZ2lzdHJ5UHJvYmVUZXh0LFxuICB1cmw6IEFjcFJlZ2lzdHJ5VXJsLFxuICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxXzAyNCkpLFxuICBjcmVhdGVkQXQ6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxMjgpKSksXG4gIGV4cGlyZXNBdDogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEyOCkpKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlVcmxBdXRoQWN0aW9uID0gdHlwZW9mIEFjcFJlZ2lzdHJ5VXJsQXV0aEFjdGlvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlBY2NlcHRVcmxBdXRoSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaW5zdGFuY2VJZDogUHJvdmlkZXJJbnN0YW5jZUlkLFxuICBlbGljaXRhdGlvbklkOiBBY3BSZWdpc3RyeVByb2JlVGV4dCxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlBY2NlcHRVcmxBdXRoSW5wdXQgPSB0eXBlb2YgQWNwUmVnaXN0cnlBY2NlcHRVcmxBdXRoSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5QWNjZXB0VXJsQXV0aFJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBhY2NlcHRlZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5QWNjZXB0VXJsQXV0aFJlc3VsdCA9IHR5cGVvZiBBY3BSZWdpc3RyeUFjY2VwdFVybEF1dGhSZXN1bHQuVHlwZTtcblxuY29uc3QgQWNwUmVnaXN0cnlTZXNzaW9uSWQgPSBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDFfMDI0KSk7XG5jb25zdCBBY3BSZWdpc3RyeVNlc3Npb25QYXRoID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCg0XzA5NikpO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlTZXNzaW9uID0gU2NoZW1hLlN0cnVjdCh7XG4gIHNlc3Npb25JZDogQWNwUmVnaXN0cnlTZXNzaW9uSWQsXG4gIGN3ZDogQWNwUmVnaXN0cnlTZXNzaW9uUGF0aCxcbiAgYWRkaXRpb25hbERpcmVjdG9yaWVzOiBTY2hlbWEuQXJyYXkoQWNwUmVnaXN0cnlTZXNzaW9uUGF0aCkuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDMyKSksXG4gIHRpdGxlOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDFfMDI0KSkpLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMTI4KSkpLFxuICBpbXBvcnRlZFRocmVhZElkOiBTY2hlbWEuTnVsbE9yKFRocmVhZElkKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlTZXNzaW9uID0gdHlwZW9mIEFjcFJlZ2lzdHJ5U2Vzc2lvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlMaXN0U2Vzc2lvbnNJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb2plY3RJZDogUHJvamVjdElkLFxuICBjdXJzb3I6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyXzA0OCkpKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlMaXN0U2Vzc2lvbnNJbnB1dCA9IHR5cGVvZiBBY3BSZWdpc3RyeUxpc3RTZXNzaW9uc0lucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeUxpc3RTZXNzaW9uc1Jlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzZXNzaW9uczogU2NoZW1hLkFycmF5KEFjcFJlZ2lzdHJ5U2Vzc2lvbikuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDI1NikpLFxuICBuZXh0Q3Vyc29yOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDJfMDQ4KSkpLFxuICBjYW5Mb2FkOiBTY2hlbWEuQm9vbGVhbixcbiAgY2FuUmVzdW1lOiBTY2hlbWEuQm9vbGVhbixcbiAgY2FuRGVsZXRlOiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlMaXN0U2Vzc2lvbnNSZXN1bHQgPSB0eXBlb2YgQWNwUmVnaXN0cnlMaXN0U2Vzc2lvbnNSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5SW1wb3J0U2Vzc2lvbklucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgcHJvamVjdElkOiBQcm9qZWN0SWQsXG4gIHNlc3Npb25JZDogQWNwUmVnaXN0cnlTZXNzaW9uSWQsXG4gIHRpdGxlOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDFfMDI0KSkpKSxcbiAgdXBkYXRlZEF0OiBTY2hlbWEub3B0aW9uYWxLZXkoXG4gICAgU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEyOCkpKSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlJbXBvcnRTZXNzaW9uSW5wdXQgPSB0eXBlb2YgQWNwUmVnaXN0cnlJbXBvcnRTZXNzaW9uSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5SW1wb3J0U2Vzc2lvblJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIGltcG9ydGVkOiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlJbXBvcnRTZXNzaW9uUmVzdWx0ID0gdHlwZW9mIEFjcFJlZ2lzdHJ5SW1wb3J0U2Vzc2lvblJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlEZWxldGVTZXNzaW9uSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaW5zdGFuY2VJZDogUHJvdmlkZXJJbnN0YW5jZUlkLFxuICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgc2Vzc2lvbklkOiBBY3BSZWdpc3RyeVNlc3Npb25JZCxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlEZWxldGVTZXNzaW9uSW5wdXQgPSB0eXBlb2YgQWNwUmVnaXN0cnlEZWxldGVTZXNzaW9uSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5RGVsZXRlU2Vzc2lvblJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3QoeyBkZWxldGVkOiBTY2hlbWEuTGl0ZXJhbCh0cnVlKSB9KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5RGVsZXRlU2Vzc2lvblJlc3VsdCA9IHR5cGVvZiBBY3BSZWdpc3RyeURlbGV0ZVNlc3Npb25SZXN1bHQuVHlwZTtcblxuY29uc3QgQWNwUmVnaXN0cnlQcm92aWRlcklkID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyNTYpKTtcbmNvbnN0IEFjcFJlZ2lzdHJ5UHJvdmlkZXJQcm90b2NvbCA9IFRyaW1tZWROb25FbXB0eVN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoNjQpKTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5Q29uZmlndXJhYmxlUHJvdmlkZXIgPSBTY2hlbWEuU3RydWN0KHtcbiAgcHJvdmlkZXJJZDogQWNwUmVnaXN0cnlQcm92aWRlcklkLFxuICBzdXBwb3J0ZWQ6IFNjaGVtYS5BcnJheShBY3BSZWdpc3RyeVByb3ZpZGVyUHJvdG9jb2wpLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxNikpLFxuICByZXF1aXJlZDogU2NoZW1hLkJvb2xlYW4sXG4gIGN1cnJlbnQ6IFNjaGVtYS5OdWxsT3IoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICBhcGlUeXBlOiBBY3BSZWdpc3RyeVByb3ZpZGVyUHJvdG9jb2wsXG4gICAgICBiYXNlVXJsOiBBY3BSZWdpc3RyeVVybCxcbiAgICB9KSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlDb25maWd1cmFibGVQcm92aWRlciA9IHR5cGVvZiBBY3BSZWdpc3RyeUNvbmZpZ3VyYWJsZVByb3ZpZGVyLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeUxpc3RQcm92aWRlcnNJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb2plY3RJZDogUHJvamVjdElkLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeUxpc3RQcm92aWRlcnNJbnB1dCA9IHR5cGVvZiBBY3BSZWdpc3RyeUxpc3RQcm92aWRlcnNJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlMaXN0UHJvdmlkZXJzUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHByb3ZpZGVyczogU2NoZW1hLkFycmF5KEFjcFJlZ2lzdHJ5Q29uZmlndXJhYmxlUHJvdmlkZXIpLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCg2NCkpLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeUxpc3RQcm92aWRlcnNSZXN1bHQgPSB0eXBlb2YgQWNwUmVnaXN0cnlMaXN0UHJvdmlkZXJzUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeVNldFByb3ZpZGVySW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaW5zdGFuY2VJZDogUHJvdmlkZXJJbnN0YW5jZUlkLFxuICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgcHJvdmlkZXJJZDogQWNwUmVnaXN0cnlQcm92aWRlcklkLFxuICBhcGlUeXBlOiBBY3BSZWdpc3RyeVByb3ZpZGVyUHJvdG9jb2wsXG4gIGJhc2VVcmw6IEFjcFJlZ2lzdHJ5VXJsLFxuICAvLyBXcml0ZS1vbmx5IHNlY3JldHMuIFByb3ZpZGVyIGxpc3QgcmVzcG9uc2VzIGludGVudGlvbmFsbHkgY2Fubm90IGNhcnJ5IGhlYWRlcnMuXG4gIGhlYWRlcnM6IFNjaGVtYS5vcHRpb25hbEtleShcbiAgICBTY2hlbWEuUmVjb3JkKFxuICAgICAgVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxMjgpKSxcbiAgICAgIFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDhfMTkyKSksXG4gICAgKSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlTZXRQcm92aWRlcklucHV0ID0gdHlwZW9mIEFjcFJlZ2lzdHJ5U2V0UHJvdmlkZXJJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlTZXRQcm92aWRlclJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3QoeyBjb25maWd1cmVkOiBTY2hlbWEuTGl0ZXJhbCh0cnVlKSB9KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5U2V0UHJvdmlkZXJSZXN1bHQgPSB0eXBlb2YgQWNwUmVnaXN0cnlTZXRQcm92aWRlclJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlEaXNhYmxlUHJvdmlkZXJJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb2plY3RJZDogUHJvamVjdElkLFxuICBwcm92aWRlcklkOiBBY3BSZWdpc3RyeVByb3ZpZGVySWQsXG59KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5RGlzYWJsZVByb3ZpZGVySW5wdXQgPSB0eXBlb2YgQWNwUmVnaXN0cnlEaXNhYmxlUHJvdmlkZXJJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlEaXNhYmxlUHJvdmlkZXJSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHsgZGlzYWJsZWQ6IFNjaGVtYS5MaXRlcmFsKHRydWUpIH0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlEaXNhYmxlUHJvdmlkZXJSZXN1bHQgPSB0eXBlb2YgQWNwUmVnaXN0cnlEaXNhYmxlUHJvdmlkZXJSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5TG9nb3V0SW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaW5zdGFuY2VJZDogUHJvdmlkZXJJbnN0YW5jZUlkLFxufSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeUxvZ291dElucHV0ID0gdHlwZW9mIEFjcFJlZ2lzdHJ5TG9nb3V0SW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEFjcFJlZ2lzdHJ5TG9nb3V0UmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGxvZ2dlZE91dDogU2NoZW1hLkxpdGVyYWwodHJ1ZSksXG59KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5TG9nb3V0UmVzdWx0ID0gdHlwZW9mIEFjcFJlZ2lzdHJ5TG9nb3V0UmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBBY3BSZWdpc3RyeVByb2JlTW9kZWwgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IEFjcFJlZ2lzdHJ5UHJvYmVUZXh0LFxuICBuYW1lOiBBY3BSZWdpc3RyeVByb2JlVGV4dCxcbiAgZGVzY3JpcHRpb246IEFjcFJlZ2lzdHJ5UHJvYmVEZXNjcmlwdGlvbixcbn0pO1xuZXhwb3J0IHR5cGUgQWNwUmVnaXN0cnlQcm9iZU1vZGVsID0gdHlwZW9mIEFjcFJlZ2lzdHJ5UHJvYmVNb2RlbC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlQcm9iZVJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIC8vIGByZWFkeWAgcmVxdWlyZXMgYSBkaXNwb3NhYmxlIEFDUCBzZXNzaW9uL25ldyBwcm9iZSwgbm90IHBhc3NpdmUgYXV0aCBkZXRlY3Rpb24uXG4gIHJlYWR5OiBTY2hlbWEuTGl0ZXJhbCh0cnVlKSxcbiAgaWNvbjogU2NoZW1hLk51bGxPcihBY3BSZWdpc3RyeVVybCksXG4gIGF1dGhNZXRob2RzOiBTY2hlbWEuQXJyYXkoQWNwUmVnaXN0cnlQcm9iZUF1dGhNZXRob2QpLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgzMikpLFxuICBtb2RlbHM6IFNjaGVtYS5BcnJheShBY3BSZWdpc3RyeVByb2JlTW9kZWwpLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyNTYpKSxcbiAgY3VycmVudE1vZGVsSWQ6IFNjaGVtYS5OdWxsT3IoQWNwUmVnaXN0cnlQcm9iZVRleHQpLFxuICBjb25maWdPcHRpb25zOiBTY2hlbWEuQXJyYXkoUHJvdmlkZXJPcHRpb25EZXNjcmlwdG9yKS5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMTYpKSxcbiAgc2Vzc2lvbk1hbmFnZW1lbnQ6IFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGNhbkxpc3Q6IFNjaGVtYS5Cb29sZWFuLFxuICAgIGNhbkxvYWQ6IFNjaGVtYS5Cb29sZWFuLFxuICAgIGNhblJlc3VtZTogU2NoZW1hLkJvb2xlYW4sXG4gICAgY2FuTG9nb3V0OiBTY2hlbWEuQm9vbGVhbixcbiAgICBjYW5EZWxldGU6IFNjaGVtYS5Cb29sZWFuLFxuICAgIGNhbkNvbmZpZ3VyZVByb3ZpZGVyczogU2NoZW1hLkJvb2xlYW4sXG4gIH0pLnBpcGUoXG4gICAgU2NoZW1hLndpdGhEZWNvZGluZ0RlZmF1bHQoXG4gICAgICBFZmZlY3Quc3VjY2VlZCh7XG4gICAgICAgIGNhbkxpc3Q6IGZhbHNlLFxuICAgICAgICBjYW5Mb2FkOiBmYWxzZSxcbiAgICAgICAgY2FuUmVzdW1lOiBmYWxzZSxcbiAgICAgICAgY2FuTG9nb3V0OiBmYWxzZSxcbiAgICAgICAgY2FuRGVsZXRlOiBmYWxzZSxcbiAgICAgICAgY2FuQ29uZmlndXJlUHJvdmlkZXJzOiBmYWxzZSxcbiAgICAgIH0pLFxuICAgICksXG4gICksXG59KTtcbmV4cG9ydCB0eXBlIEFjcFJlZ2lzdHJ5UHJvYmVSZXN1bHQgPSB0eXBlb2YgQWNwUmVnaXN0cnlQcm9iZVJlc3VsdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQWNwUmVnaXN0cnlPcGVyYXRpb25FcnJvclJlYXNvbiA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwiYWdlbnRfbm90X2NvbmZpZ3VyZWRcIixcbiAgXCJhZ2VudF9ub3RfZm91bmRcIixcbiAgXCJhcmNoaXZlX2ludmFsaWRcIixcbiAgXCJhdXRoZW50aWNhdGlvbl9mYWlsZWRcIixcbiAgXCJjaGVja3N1bV9taXNtYXRjaFwiLFxuICBcImRvd25sb2FkX2ZhaWxlZFwiLFxuICBcImluc3RhbGxfZmFpbGVkXCIsXG4gIFwiaW5zdGFuY2Vfbm90X2ZvdW5kXCIsXG4gIFwibG9nb3V0X3Vuc3VwcG9ydGVkXCIsXG4gIFwibG9nb3V0X2ZhaWxlZFwiLFxuICBcInByb2JlX2ZhaWxlZFwiLFxuICBcInByb2plY3Rfbm90X2ZvdW5kXCIsXG4gIFwicmVnaXN0cnlfdW5hdmFpbGFibGVcIixcbiAgXCJydW5uZXJfdW5hdmFpbGFibGVcIixcbiAgXCJzZXNzaW9uX2ltcG9ydF9mYWlsZWRcIixcbiAgXCJzZXNzaW9uX2RlbGV0ZV91bnN1cHBvcnRlZFwiLFxuICBcInNlc3Npb25fZGVsZXRlX2ZhaWxlZFwiLFxuICBcInNlc3Npb25fbGlzdF91bnN1cHBvcnRlZFwiLFxuICBcInNlc3Npb25fcmVzdW1lX3Vuc3VwcG9ydGVkXCIsXG4gIFwicHJvdmlkZXJzX3Vuc3VwcG9ydGVkXCIsXG4gIFwicHJvdmlkZXJzX2xpc3RfZmFpbGVkXCIsXG4gIFwicHJvdmlkZXJfY29uZmlndXJhdGlvbl9mYWlsZWRcIixcbiAgXCJ1bnN1cHBvcnRlZF9kaXN0cmlidXRpb25cIixcbiAgXCJ1bnN1cHBvcnRlZF9wbGF0Zm9ybVwiLFxuXSk7XG5leHBvcnQgdHlwZSBBY3BSZWdpc3RyeU9wZXJhdGlvbkVycm9yUmVhc29uID0gdHlwZW9mIEFjcFJlZ2lzdHJ5T3BlcmF0aW9uRXJyb3JSZWFzb24uVHlwZTtcblxuZXhwb3J0IGNsYXNzIEFjcFJlZ2lzdHJ5T3BlcmF0aW9uRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8QWNwUmVnaXN0cnlPcGVyYXRpb25FcnJvcj4oKShcbiAgXCJBY3BSZWdpc3RyeU9wZXJhdGlvbkVycm9yXCIsXG4gIHtcbiAgICByZWFzb246IEFjcFJlZ2lzdHJ5T3BlcmF0aW9uRXJyb3JSZWFzb24sXG4gICAgbWVzc2FnZTogU2NoZW1hLlN0cmluZyxcbiAgICBhdXRoTWV0aG9kczogU2NoZW1hLm9wdGlvbmFsS2V5KFxuICAgICAgU2NoZW1hLkFycmF5KEFjcFJlZ2lzdHJ5UHJvYmVBdXRoTWV0aG9kKS5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMzIpKSxcbiAgICApLFxuICAgIGF1dGhBY3Rpb246IFNjaGVtYS5vcHRpb25hbEtleShBY3BSZWdpc3RyeVVybEF1dGhBY3Rpb24pLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge31cbiJdLCJmaWxlIjoiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2FjcFJlZ2lzdHJ5LnRzIn0=

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9hY3BSZWdpc3RyeS50cyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9hY3BSZWdpc3RyeS50cyIseyJ1cmxzIjoiNiIsImlkcyI6IjcifSxbIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sW10sWyI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLHt9LCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L0VmZmVjdC5qcyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvU2NoZW1hLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Jhc2VTY2hlbWFzLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL21vZGVsLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3Byb3ZpZGVySW5zdGFuY2UudHMiXQ==