__vite_ssr_exportName__("PREVIEW_URL_MAX_LENGTH", () => { try { return PREVIEW_URL_MAX_LENGTH } catch {} });
__vite_ssr_exportName__("CONFIGURED_LOCAL_SERVER_URLS_MAX_ITEMS", () => { try { return CONFIGURED_LOCAL_SERVER_URLS_MAX_ITEMS } catch {} });
__vite_ssr_exportName__("ConfiguredLocalServerUrls", () => { try { return ConfiguredLocalServerUrls } catch {} });
__vite_ssr_exportName__("PreviewTabId", () => { try { return PreviewTabId } catch {} });
__vite_ssr_exportName__("PREVIEW_VIEWPORT_MIN_DIMENSION", () => { try { return PREVIEW_VIEWPORT_MIN_DIMENSION } catch {} });
__vite_ssr_exportName__("PREVIEW_VIEWPORT_MAX_DIMENSION", () => { try { return PREVIEW_VIEWPORT_MAX_DIMENSION } catch {} });
__vite_ssr_exportName__("PREVIEW_VIEWPORT_MAX_AREA", () => { try { return PREVIEW_VIEWPORT_MAX_AREA } catch {} });
__vite_ssr_exportName__("PreviewViewportSize", () => { try { return PreviewViewportSize } catch {} });
__vite_ssr_exportName__("PreviewRenderedViewportSize", () => { try { return PreviewRenderedViewportSize } catch {} });
__vite_ssr_exportName__("PREVIEW_VIEWPORT_PRESET_IDS", () => { try { return PREVIEW_VIEWPORT_PRESET_IDS } catch {} });
__vite_ssr_exportName__("PreviewViewportPresetId", () => { try { return PreviewViewportPresetId } catch {} });
__vite_ssr_exportName__("PreviewViewportSetting", () => { try { return PreviewViewportSetting } catch {} });
__vite_ssr_exportName__("FILL_PREVIEW_VIEWPORT", () => { try { return FILL_PREVIEW_VIEWPORT } catch {} });
__vite_ssr_exportName__("PREVIEW_ZOOM_LEVELS", () => { try { return PREVIEW_ZOOM_LEVELS } catch {} });
__vite_ssr_exportName__("PreviewZoomFactor", () => { try { return PreviewZoomFactor } catch {} });
__vite_ssr_exportName__("DEFAULT_PREVIEW_ZOOM_FACTOR", () => { try { return DEFAULT_PREVIEW_ZOOM_FACTOR } catch {} });
__vite_ssr_exportName__("PreviewAppearancePreference", () => { try { return PreviewAppearancePreference } catch {} });
__vite_ssr_exportName__("DEFAULT_PREVIEW_APPEARANCE", () => { try { return DEFAULT_PREVIEW_APPEARANCE } catch {} });
__vite_ssr_exportName__("PreviewNavStatus", () => { try { return PreviewNavStatus } catch {} });
__vite_ssr_exportName__("PreviewRuntime", () => { try { return PreviewRuntime } catch {} });
__vite_ssr_exportName__("PreviewStreamHostSetup", () => { try { return PreviewStreamHostSetup } catch {} });
__vite_ssr_exportName__("PREVIEW_STREAM_HOST_SETUP_CLOSE_CODE", () => { try { return PREVIEW_STREAM_HOST_SETUP_CLOSE_CODE } catch {} });
__vite_ssr_exportName__("PreviewSessionSnapshot", () => { try { return PreviewSessionSnapshot } catch {} });
__vite_ssr_exportName__("PreviewOpenInput", () => { try { return PreviewOpenInput } catch {} });
__vite_ssr_exportName__("PreviewNavigateInput", () => { try { return PreviewNavigateInput } catch {} });
__vite_ssr_exportName__("PreviewReportStatusInput", () => { try { return PreviewReportStatusInput } catch {} });
__vite_ssr_exportName__("PreviewRefreshInput", () => { try { return PreviewRefreshInput } catch {} });
__vite_ssr_exportName__("PreviewResizeInput", () => { try { return PreviewResizeInput } catch {} });
__vite_ssr_exportName__("PreviewAdjustInput", () => { try { return PreviewAdjustInput } catch {} });
__vite_ssr_exportName__("PreviewCloseInput", () => { try { return PreviewCloseInput } catch {} });
__vite_ssr_exportName__("BROWSER_RECORDING_FRAME_RATES", () => { try { return BROWSER_RECORDING_FRAME_RATES } catch {} });
__vite_ssr_exportName__("BrowserRecordingFrameRate", () => { try { return BrowserRecordingFrameRate } catch {} });
__vite_ssr_exportName__("DEFAULT_BROWSER_RECORDING_FRAME_RATE", () => { try { return DEFAULT_BROWSER_RECORDING_FRAME_RATE } catch {} });
__vite_ssr_exportName__("PreviewReportProfilesInput", () => { try { return PreviewReportProfilesInput } catch {} });
__vite_ssr_exportName__("PreviewClearProfileInput", () => { try { return PreviewClearProfileInput } catch {} });
__vite_ssr_exportName__("PreviewListInput", () => { try { return PreviewListInput } catch {} });
__vite_ssr_exportName__("PreviewListResult", () => { try { return PreviewListResult } catch {} });
__vite_ssr_exportName__("PreviewEvent", () => { try { return PreviewEvent } catch {} });
__vite_ssr_exportName__("DiscoveredLocalServer", () => { try { return DiscoveredLocalServer } catch {} });
__vite_ssr_exportName__("DiscoveredLocalServerList", () => { try { return DiscoveredLocalServerList } catch {} });
__vite_ssr_exportName__("PreviewSessionLookupError", () => { try { return PreviewSessionLookupError } catch {} });
__vite_ssr_exportName__("PreviewInvalidUrlError", () => { try { return PreviewInvalidUrlError } catch {} });
__vite_ssr_exportName__("PreviewControlRequiredError", () => { try { return PreviewControlRequiredError } catch {} });
__vite_ssr_exportName__("PreviewClearProfileError", () => { try { return PreviewClearProfileError } catch {} });
__vite_ssr_exportName__("PreviewError", () => { try { return PreviewError } 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/index.js", {"importedNames":["Schema"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["NonNegativeInt","PositiveInt","ThreadId","TrimmedNonEmptyString"]});
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/browserProfile.ts", {"importedNames":["BROWSER_PROFILE_MAX_COUNT","BrowserProfile","BrowserProfileId"]});



const PREVIEW_URL_MAX_LENGTH = 2048;
const CONFIGURED_LOCAL_SERVER_URLS_MAX_ITEMS = 32;
const Url = __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.Schema.isMaxLength(PREVIEW_URL_MAX_LENGTH));
const ConfiguredLocalServerUrls = __vite_ssr_import_0__.Schema.Array(Url).check(__vite_ssr_import_0__.Schema.isMaxLength(CONFIGURED_LOCAL_SERVER_URLS_MAX_ITEMS));
const Title = __vite_ssr_import_0__.Schema.String.check(__vite_ssr_import_0__.Schema.isMaxLength(512));
const PreviewTabId = __vite_ssr_import_1__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.Schema.isMaxLength(128));
const PREVIEW_VIEWPORT_MIN_DIMENSION = 240;
const PREVIEW_VIEWPORT_MAX_DIMENSION = 3840;
const PREVIEW_VIEWPORT_MAX_AREA = 3840 * 2160;
const PreviewViewportDimension = __vite_ssr_import_0__.Schema.Int.check(__vite_ssr_import_0__.Schema.isBetween({
	minimum: PREVIEW_VIEWPORT_MIN_DIMENSION,
	maximum: PREVIEW_VIEWPORT_MAX_DIMENSION
}));
const viewportAreaFilter = __vite_ssr_import_0__.Schema.makeFilter(({ width, height }) => width * height <= PREVIEW_VIEWPORT_MAX_AREA || `Viewport area must not exceed ${PREVIEW_VIEWPORT_MAX_AREA} pixels.`);
const PreviewViewportSize = __vite_ssr_import_0__.Schema.Struct({
	width: PreviewViewportDimension,
	height: PreviewViewportDimension
}).check(viewportAreaFilter);
/** Fill mode can measure below selectable minimum sizes; validate measurements separately. */
const PreviewRenderedViewportSize = __vite_ssr_import_0__.Schema.Struct({
	width: __vite_ssr_import_0__.Schema.Int.check(__vite_ssr_import_0__.Schema.isGreaterThan(0)),
	height: __vite_ssr_import_0__.Schema.Int.check(__vite_ssr_import_0__.Schema.isGreaterThan(0))
});
const PREVIEW_VIEWPORT_PRESET_IDS = [
	"iphone-se",
	"iphone-xr",
	"iphone-12-pro",
	"iphone-14-pro-max",
	"pixel-7",
	"samsung-galaxy-s8-plus",
	"samsung-galaxy-s20-ultra",
	"ipad-mini",
	"ipad-air",
	"ipad-pro",
	"surface-pro-7",
	"surface-duo",
	"galaxy-z-fold-5",
	"asus-zenbook-fold",
	"samsung-galaxy-a51-71",
	"nest-hub",
	"nest-hub-max"
];
const PreviewViewportPresetId = __vite_ssr_import_0__.Schema.Literals(PREVIEW_VIEWPORT_PRESET_IDS);
const LEGACY_PREVIEW_VIEWPORT_PRESET_IDS = [
	"desktop-1920x1080",
	"desktop-1440x900",
	"laptop-1366x768",
	"laptop-1280x800",
	"ipad-pro-11",
	"iphone-15-pro",
	"pixel-8",
	"galaxy-s24"
];
const StoredPreviewViewportPresetId = __vite_ssr_import_0__.Schema.Literals([...PREVIEW_VIEWPORT_PRESET_IDS, ...LEGACY_PREVIEW_VIEWPORT_PRESET_IDS]);
const PreviewViewportSetting = __vite_ssr_import_0__.Schema.Union([
	__vite_ssr_import_0__.Schema.TaggedStruct("fill", {}),
	__vite_ssr_import_0__.Schema.TaggedStruct("freeform", { ...PreviewViewportSize.fields }).check(viewportAreaFilter),
	__vite_ssr_import_0__.Schema.TaggedStruct("preset", {
		...PreviewViewportSize.fields,
		presetId: StoredPreviewViewportPresetId
	}).check(viewportAreaFilter)
]);
const FILL_PREVIEW_VIEWPORT = { _tag: "fill" };
/** Shared steps keep settings aligned with desktop Chromium zoom controls. */
const PREVIEW_ZOOM_LEVELS = [
	.25,
	.33,
	.5,
	.67,
	.75,
	.8,
	.9,
	1,
	1.1,
	1.25,
	1.5,
	1.75,
	2,
	2.5,
	3,
	4,
	5
];
const PreviewZoomFactor = __vite_ssr_import_0__.Schema.Literals(PREVIEW_ZOOM_LEVELS);
const DEFAULT_PREVIEW_ZOOM_FACTOR = 1;
const PreviewAppearancePreference = __vite_ssr_import_0__.Schema.Literals([
	"system",
	"light",
	"dark"
]);
const DEFAULT_PREVIEW_APPEARANCE = "system";
const PreviewFileDownload = __vite_ssr_import_0__.Schema.Struct({
	id: __vite_ssr_import_0__.Schema.String,
	fileName: __vite_ssr_import_0__.Schema.String
});
const PreviewNavStatus = __vite_ssr_import_0__.Schema.Union([
	__vite_ssr_import_0__.Schema.TaggedStruct("Idle", {}),
	__vite_ssr_import_0__.Schema.TaggedStruct("Loading", {
		url: Url,
		title: Title
	}),
	__vite_ssr_import_0__.Schema.TaggedStruct("Success", {
		url: Url,
		title: Title
	}),
	__vite_ssr_import_0__.Schema.TaggedStruct("LoadFailed", {
		url: Url,
		title: Title,
		code: __vite_ssr_import_0__.Schema.Int,
		description: __vite_ssr_import_0__.Schema.String,
		download: __vite_ssr_import_0__.Schema.optional(PreviewFileDownload)
	})
]);
const PreviewRuntime = __vite_ssr_import_0__.Schema.Literals(["desktop", "server"]);
/** JSON reason for preview stream close code 4503; must fit the 123-byte close-reason limit. */
const PreviewStreamHostSetup = __vite_ssr_import_0__.Schema.Struct({
	need: __vite_ssr_import_0__.Schema.Literals(["sandbox", "libraries"]),
	command: __vite_ssr_import_0__.Schema.String
});
const PREVIEW_STREAM_HOST_SETUP_CLOSE_CODE = 4503;
const PreviewSessionSnapshot = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.TrimmedNonEmptyString,
	tabId: PreviewTabId,
	navStatus: PreviewNavStatus,
	canGoBack: __vite_ssr_import_0__.Schema.Boolean,
	canGoForward: __vite_ssr_import_0__.Schema.Boolean,
	viewport: __vite_ssr_import_0__.Schema.optional(PreviewViewportSetting),
	colorScheme: __vite_ssr_import_0__.Schema.optional(PreviewAppearancePreference),
	zoomFactor: __vite_ssr_import_0__.Schema.optional(PreviewZoomFactor),
	/** Fixed at open; Electron cannot change a webview partition after attach without losing page state. */
	profileId: __vite_ssr_import_0__.Schema.optional((0,__vite_ssr_import_2__.BrowserProfileId)),
	runtime: __vite_ssr_import_0__.Schema.optional(PreviewRuntime),
	automationOwner: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.String),
	reveal: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Boolean),
	revealRequest: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Struct({
		id: __vite_ssr_import_0__.Schema.String,
		force: __vite_ssr_import_0__.Schema.Boolean
	})),
	updatedAt: __vite_ssr_import_0__.Schema.String
});
const PreviewOpenInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	url: __vite_ssr_import_0__.Schema.optional(Url),
	viewport: __vite_ssr_import_0__.Schema.optional(PreviewViewportSetting),
	profileId: __vite_ssr_import_0__.Schema.optional((0,__vite_ssr_import_2__.BrowserProfileId)),
	runtime: __vite_ssr_import_0__.Schema.optional(PreviewRuntime),
	reveal: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Boolean)
});
const PreviewNavigateInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	tabId: PreviewTabId,
	url: Url,
	resolvedTitle: __vite_ssr_import_0__.Schema.optional(Title)
});
const PreviewReportStatusInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	tabId: PreviewTabId,
	navStatus: PreviewNavStatus,
	canGoBack: __vite_ssr_import_0__.Schema.Boolean,
	canGoForward: __vite_ssr_import_0__.Schema.Boolean
});
const PreviewRefreshInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	tabId: PreviewTabId
});
const PreviewResizeInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	tabId: PreviewTabId,
	viewport: PreviewViewportSetting
});
/** Requires no tab control, unlike page input. */
const PreviewAdjustInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	tabId: PreviewTabId,
	colorScheme: __vite_ssr_import_0__.Schema.optional(PreviewAppearancePreference),
	zoomFactor: __vite_ssr_import_0__.Schema.optional(PreviewZoomFactor),
	hardReload: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Boolean),
	clear: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Literals(["cookies", "cache"]))
});
const PreviewCloseInput = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.ThreadId,
	tabId: __vite_ssr_import_0__.Schema.optional(PreviewTabId)
});
const BROWSER_RECORDING_FRAME_RATES = [30, 60];
const BrowserRecordingFrameRate = __vite_ssr_import_0__.Schema.Literals(BROWSER_RECORDING_FRAME_RATES);
const DEFAULT_BROWSER_RECORDING_FRAME_RATE = 30;
const PreviewReportProfilesInput = __vite_ssr_import_0__.Schema.Struct({
	profiles: __vite_ssr_import_0__.Schema.Array((0,__vite_ssr_import_2__.BrowserProfile)).check(__vite_ssr_import_0__.Schema.isMaxLength((0,__vite_ssr_import_2__.BROWSER_PROFILE_MAX_COUNT))),
	defaultProfileId: __vite_ssr_import_2__.BrowserProfileId,
	/** Optional so older clients keep reporting; omitting it keeps the last reported rate. */
	recordingFrameRate: __vite_ssr_import_0__.Schema.optional(BrowserRecordingFrameRate)
});
const PreviewClearProfileInput = __vite_ssr_import_0__.Schema.Struct({ profileId: __vite_ssr_import_2__.BrowserProfileId });
const PreviewListInput = __vite_ssr_import_0__.Schema.Struct({ threadId: __vite_ssr_import_1__.ThreadId });
const PreviewListResult = __vite_ssr_import_0__.Schema.Struct({
	sessions: __vite_ssr_import_0__.Schema.Array(PreviewSessionSnapshot),
	/** Identifies the current server process so revision resets are safe. */
	serverEpoch: __vite_ssr_import_1__.TrimmedNonEmptyString,
	revision: __vite_ssr_import_1__.NonNegativeInt
});
const PreviewEventBaseSchema = __vite_ssr_import_0__.Schema.Struct({
	threadId: __vite_ssr_import_1__.TrimmedNonEmptyString,
	tabId: PreviewTabId,
	createdAt: __vite_ssr_import_0__.Schema.String,
	serverEpoch: __vite_ssr_import_1__.TrimmedNonEmptyString,
	/** Monotonic server state revision shared with PreviewListResult. */
	revision: __vite_ssr_import_1__.PositiveInt
});
const PreviewOpenedEvent = __vite_ssr_import_0__.Schema.Struct({
	...PreviewEventBaseSchema.fields,
	type: __vite_ssr_import_0__.Schema.Literal("opened"),
	snapshot: PreviewSessionSnapshot
});
const PreviewNavigatedEvent = __vite_ssr_import_0__.Schema.Struct({
	...PreviewEventBaseSchema.fields,
	type: __vite_ssr_import_0__.Schema.Literal("navigated"),
	snapshot: PreviewSessionSnapshot
});
const PreviewResizedEvent = __vite_ssr_import_0__.Schema.Struct({
	...PreviewEventBaseSchema.fields,
	type: __vite_ssr_import_0__.Schema.Literal("resized"),
	snapshot: PreviewSessionSnapshot,
	request: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Struct({
		hardReload: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Boolean),
		clear: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Literals(["cookies", "cache"]))
	}))
});
const PreviewFailedEvent = __vite_ssr_import_0__.Schema.Struct({
	...PreviewEventBaseSchema.fields,
	type: __vite_ssr_import_0__.Schema.Literal("failed"),
	url: Url,
	title: Title,
	code: __vite_ssr_import_0__.Schema.Int,
	description: __vite_ssr_import_0__.Schema.String,
	download: __vite_ssr_import_0__.Schema.optional(PreviewFileDownload)
});
const PreviewClosedEvent = __vite_ssr_import_0__.Schema.Struct({
	...PreviewEventBaseSchema.fields,
	type: __vite_ssr_import_0__.Schema.Literal("closed")
});
const PreviewEvent = __vite_ssr_import_0__.Schema.Union([
	PreviewOpenedEvent,
	PreviewNavigatedEvent,
	PreviewResizedEvent,
	PreviewFailedEvent,
	PreviewClosedEvent
]);
const DiscoveredLocalServer = __vite_ssr_import_0__.Schema.Struct({
	host: __vite_ssr_import_1__.TrimmedNonEmptyString,
	port: __vite_ssr_import_0__.Schema.Int.check(__vite_ssr_import_0__.Schema.isGreaterThan(0)).check(__vite_ssr_import_0__.Schema.isLessThan(65536)),
	url: Url,
	processName: __vite_ssr_import_0__.Schema.NullOr((0,__vite_ssr_import_1__.TrimmedNonEmptyString)),
	pid: __vite_ssr_import_0__.Schema.NullOr(__vite_ssr_import_0__.Schema.Int.check(__vite_ssr_import_0__.Schema.isGreaterThan(0))),
	terminal: __vite_ssr_import_0__.Schema.NullOr(__vite_ssr_import_0__.Schema.Struct({
		threadId: __vite_ssr_import_1__.ThreadId,
		terminalId: __vite_ssr_import_1__.TrimmedNonEmptyString
	}))
});
const DiscoveredLocalServerList = __vite_ssr_import_0__.Schema.Struct({
	servers: __vite_ssr_import_0__.Schema.Array(DiscoveredLocalServer),
	scannedAt: __vite_ssr_import_0__.Schema.String,
	configuredUrlProbing: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.Literal(true))
});
class PreviewSessionLookupError extends __vite_ssr_import_0__.Schema.TaggedError()("PreviewSessionLookupError", {
	threadId: __vite_ssr_import_0__.Schema.String,
	tabId: __vite_ssr_import_0__.Schema.String
}) {
	get message() {
		return `Unknown preview session: thread=${this.threadId}, tab=${this.tabId}`;
	}
};
class PreviewInvalidUrlError extends __vite_ssr_import_0__.Schema.TaggedError()("PreviewInvalidUrlError", {
	inputLength: __vite_ssr_import_0__.Schema.Number,
	reason: __vite_ssr_import_0__.Schema.Literals([
		"empty",
		"parse",
		"unsupported-protocol",
		"unexpected"
	]),
	protocol: __vite_ssr_import_0__.Schema.optional(__vite_ssr_import_0__.Schema.String),
	cause: __vite_ssr_import_0__.Schema.Defect()
}) {
	get message() {
		const protocol = this.protocol === undefined ? "" : `: ${this.protocol}`;
		return `Invalid preview URL (${this.reason}${protocol}; input length ${this.inputLength}).`;
	}
};
class PreviewControlRequiredError extends __vite_ssr_import_0__.Schema.TaggedError()("PreviewControlRequiredError", { tabId: __vite_ssr_import_0__.Schema.String }) {
	get message() {
		return "Take control of the server browser and use its viewer controls.";
	}
};
class PreviewClearProfileError extends __vite_ssr_import_0__.Schema.TaggedError()("PreviewClearProfileError", {
	profileId: __vite_ssr_import_0__.Schema.String,
	cause: __vite_ssr_import_0__.Schema.Defect()
}) {
	get message() {
		return "The environment could not delete this browser profile's data.";
	}
};
const PreviewError = __vite_ssr_import_0__.Schema.Union([
	PreviewSessionLookupError,
	PreviewInvalidUrlError,
	PreviewControlRequiredError
]);
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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QUFLLEtBQUs7RUFDOUQsT0FBTyx3QkFBd0IsS0FBSyxTQUFTLFNBQVMsaUJBQWlCLEtBQUssWUFBWTtDQUMxRjtBQUNGO0FBRU8sTUFBTSxvQ0FBb0MsNkJBQU8sWUFBeUMsQ0FBQyxDQUNoRywrQkFDQSxFQUFFLE9BQU8sNkJBQU8sT0FBTyxDQUN6QixDQUFDLENBQUM7Q0FDQSxJQUFhLFVBQVU7RUFDckIsT0FBTztDQUNUO0FBQ0Y7QUFFTyxNQUFNLGlDQUFpQyw2QkFBTyxZQUFzQyxDQUFDLENBQzFGLDRCQUNBO0NBQUUsV0FBVyw2QkFBTztDQUFRLE9BQU8sNkJBQU8sT0FBTztBQUFFLENBQ3JELENBQUMsQ0FBQztDQUNBLElBQWEsVUFBVTtFQUNyQixPQUFPO0NBQ1Q7QUFDRjtBQUVPLE1BQU0sZUFBZSw2QkFBTyxNQUFNO0NBQ3ZDO0NBQ0E7Q0FDQTtBQUNGLENBQUMiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbInByZXZpZXcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHsgTm9uTmVnYXRpdmVJbnQsIFBvc2l0aXZlSW50LCBUaHJlYWRJZCwgVHJpbW1lZE5vbkVtcHR5U3RyaW5nIH0gZnJvbSBcIi4vYmFzZVNjaGVtYXMudHNcIjtcbmltcG9ydCB7IEJST1dTRVJfUFJPRklMRV9NQVhfQ09VTlQsIEJyb3dzZXJQcm9maWxlLCBCcm93c2VyUHJvZmlsZUlkIH0gZnJvbSBcIi4vYnJvd3NlclByb2ZpbGUudHNcIjtcblxuZXhwb3J0IGNvbnN0IFBSRVZJRVdfVVJMX01BWF9MRU5HVEggPSAyXzA0ODtcbmV4cG9ydCBjb25zdCBDT05GSUdVUkVEX0xPQ0FMX1NFUlZFUl9VUkxTX01BWF9JVEVNUyA9IDMyO1xuXG5jb25zdCBVcmwgPSBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKFBSRVZJRVdfVVJMX01BWF9MRU5HVEgpKTtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ3VyZWRMb2NhbFNlcnZlclVybHMgPSBTY2hlbWEuQXJyYXkoVXJsKS5jaGVjayhcbiAgU2NoZW1hLmlzTWF4TGVuZ3RoKENPTkZJR1VSRURfTE9DQUxfU0VSVkVSX1VSTFNfTUFYX0lURU1TKSxcbik7XG5jb25zdCBUaXRsZSA9IFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDUxMikpO1xuXG5leHBvcnQgY29uc3QgUHJldmlld1RhYklkID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxMjgpKTtcbmV4cG9ydCB0eXBlIFByZXZpZXdUYWJJZCA9IHR5cGVvZiBQcmV2aWV3VGFiSWQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFBSRVZJRVdfVklFV1BPUlRfTUlOX0RJTUVOU0lPTiA9IDI0MDtcbmV4cG9ydCBjb25zdCBQUkVWSUVXX1ZJRVdQT1JUX01BWF9ESU1FTlNJT04gPSAzODQwO1xuZXhwb3J0IGNvbnN0IFBSRVZJRVdfVklFV1BPUlRfTUFYX0FSRUEgPSAzODQwICogMjE2MDtcblxuY29uc3QgUHJldmlld1ZpZXdwb3J0RGltZW5zaW9uID0gU2NoZW1hLkludC5jaGVjayhcbiAgU2NoZW1hLmlzQmV0d2Vlbih7XG4gICAgbWluaW11bTogUFJFVklFV19WSUVXUE9SVF9NSU5fRElNRU5TSU9OLFxuICAgIG1heGltdW06IFBSRVZJRVdfVklFV1BPUlRfTUFYX0RJTUVOU0lPTixcbiAgfSksXG4pO1xuXG5jb25zdCB2aWV3cG9ydEFyZWFGaWx0ZXIgPSBTY2hlbWEubWFrZUZpbHRlcihcbiAgKHsgd2lkdGgsIGhlaWdodCB9OiB7IHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7IHJlYWRvbmx5IGhlaWdodDogbnVtYmVyIH0pID0+XG4gICAgd2lkdGggKiBoZWlnaHQgPD0gUFJFVklFV19WSUVXUE9SVF9NQVhfQVJFQSB8fFxuICAgIGBWaWV3cG9ydCBhcmVhIG11c3Qgbm90IGV4Y2VlZCAke1BSRVZJRVdfVklFV1BPUlRfTUFYX0FSRUF9IHBpeGVscy5gLFxuKTtcblxuZXhwb3J0IGNvbnN0IFByZXZpZXdWaWV3cG9ydFNpemUgPSBTY2hlbWEuU3RydWN0KHtcbiAgd2lkdGg6IFByZXZpZXdWaWV3cG9ydERpbWVuc2lvbixcbiAgaGVpZ2h0OiBQcmV2aWV3Vmlld3BvcnREaW1lbnNpb24sXG59KS5jaGVjayh2aWV3cG9ydEFyZWFGaWx0ZXIpO1xuZXhwb3J0IHR5cGUgUHJldmlld1ZpZXdwb3J0U2l6ZSA9IHR5cGVvZiBQcmV2aWV3Vmlld3BvcnRTaXplLlR5cGU7XG5cbi8qKiBGaWxsIG1vZGUgY2FuIG1lYXN1cmUgYmVsb3cgc2VsZWN0YWJsZSBtaW5pbXVtIHNpemVzOyB2YWxpZGF0ZSBtZWFzdXJlbWVudHMgc2VwYXJhdGVseS4gKi9cbmV4cG9ydCBjb25zdCBQcmV2aWV3UmVuZGVyZWRWaWV3cG9ydFNpemUgPSBTY2hlbWEuU3RydWN0KHtcbiAgd2lkdGg6IFNjaGVtYS5JbnQuY2hlY2soU2NoZW1hLmlzR3JlYXRlclRoYW4oMCkpLFxuICBoZWlnaHQ6IFNjaGVtYS5JbnQuY2hlY2soU2NoZW1hLmlzR3JlYXRlclRoYW4oMCkpLFxufSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3UmVuZGVyZWRWaWV3cG9ydFNpemUgPSB0eXBlb2YgUHJldmlld1JlbmRlcmVkVmlld3BvcnRTaXplLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQUkVWSUVXX1ZJRVdQT1JUX1BSRVNFVF9JRFMgPSBbXG4gIFwiaXBob25lLXNlXCIsXG4gIFwiaXBob25lLXhyXCIsXG4gIFwiaXBob25lLTEyLXByb1wiLFxuICBcImlwaG9uZS0xNC1wcm8tbWF4XCIsXG4gIFwicGl4ZWwtN1wiLFxuICBcInNhbXN1bmctZ2FsYXh5LXM4LXBsdXNcIixcbiAgXCJzYW1zdW5nLWdhbGF4eS1zMjAtdWx0cmFcIixcbiAgXCJpcGFkLW1pbmlcIixcbiAgXCJpcGFkLWFpclwiLFxuICBcImlwYWQtcHJvXCIsXG4gIFwic3VyZmFjZS1wcm8tN1wiLFxuICBcInN1cmZhY2UtZHVvXCIsXG4gIFwiZ2FsYXh5LXotZm9sZC01XCIsXG4gIFwiYXN1cy16ZW5ib29rLWZvbGRcIixcbiAgXCJzYW1zdW5nLWdhbGF4eS1hNTEtNzFcIixcbiAgXCJuZXN0LWh1YlwiLFxuICBcIm5lc3QtaHViLW1heFwiLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFByZXZpZXdWaWV3cG9ydFByZXNldElkID0gU2NoZW1hLkxpdGVyYWxzKFBSRVZJRVdfVklFV1BPUlRfUFJFU0VUX0lEUyk7XG5leHBvcnQgdHlwZSBQcmV2aWV3Vmlld3BvcnRQcmVzZXRJZCA9IHR5cGVvZiBQcmV2aWV3Vmlld3BvcnRQcmVzZXRJZC5UeXBlO1xuXG5jb25zdCBMRUdBQ1lfUFJFVklFV19WSUVXUE9SVF9QUkVTRVRfSURTID0gW1xuICBcImRlc2t0b3AtMTkyMHgxMDgwXCIsXG4gIFwiZGVza3RvcC0xNDQweDkwMFwiLFxuICBcImxhcHRvcC0xMzY2eDc2OFwiLFxuICBcImxhcHRvcC0xMjgweDgwMFwiLFxuICBcImlwYWQtcHJvLTExXCIsXG4gIFwiaXBob25lLTE1LXByb1wiLFxuICBcInBpeGVsLThcIixcbiAgXCJnYWxheHktczI0XCIsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBTdG9yZWRQcmV2aWV3Vmlld3BvcnRQcmVzZXRJZCA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIC4uLlBSRVZJRVdfVklFV1BPUlRfUFJFU0VUX0lEUyxcbiAgLi4uTEVHQUNZX1BSRVZJRVdfVklFV1BPUlRfUFJFU0VUX0lEUyxcbl0pO1xuXG5leHBvcnQgY29uc3QgUHJldmlld1ZpZXdwb3J0U2V0dGluZyA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5UYWdnZWRTdHJ1Y3QoXCJmaWxsXCIsIHt9KSxcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcImZyZWVmb3JtXCIsIHtcbiAgICAuLi5QcmV2aWV3Vmlld3BvcnRTaXplLmZpZWxkcyxcbiAgfSkuY2hlY2sodmlld3BvcnRBcmVhRmlsdGVyKSxcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcInByZXNldFwiLCB7XG4gICAgLi4uUHJldmlld1ZpZXdwb3J0U2l6ZS5maWVsZHMsXG4gICAgcHJlc2V0SWQ6IFN0b3JlZFByZXZpZXdWaWV3cG9ydFByZXNldElkLFxuICB9KS5jaGVjayh2aWV3cG9ydEFyZWFGaWx0ZXIpLFxuXSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3Vmlld3BvcnRTZXR0aW5nID0gdHlwZW9mIFByZXZpZXdWaWV3cG9ydFNldHRpbmcuVHlwZTtcblxuZXhwb3J0IGNvbnN0IEZJTExfUFJFVklFV19WSUVXUE9SVCA9IHtcbiAgX3RhZzogXCJmaWxsXCIsXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQcmV2aWV3Vmlld3BvcnRTZXR0aW5nO1xuXG4vKiogU2hhcmVkIHN0ZXBzIGtlZXAgc2V0dGluZ3MgYWxpZ25lZCB3aXRoIGRlc2t0b3AgQ2hyb21pdW0gem9vbSBjb250cm9scy4gKi9cbmV4cG9ydCBjb25zdCBQUkVWSUVXX1pPT01fTEVWRUxTID0gW1xuICAwLjI1LCAwLjMzLCAwLjUsIDAuNjcsIDAuNzUsIDAuOCwgMC45LCAxLjAsIDEuMSwgMS4yNSwgMS41LCAxLjc1LCAyLjAsIDIuNSwgMy4wLCA0LjAsIDUuMCxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3Wm9vbUZhY3RvciA9IFNjaGVtYS5MaXRlcmFscyhQUkVWSUVXX1pPT01fTEVWRUxTKTtcbmV4cG9ydCB0eXBlIFByZXZpZXdab29tRmFjdG9yID0gdHlwZW9mIFByZXZpZXdab29tRmFjdG9yLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BSRVZJRVdfWk9PTV9GQUNUT1I6IFByZXZpZXdab29tRmFjdG9yID0gMS4wO1xuXG5leHBvcnQgY29uc3QgUHJldmlld0FwcGVhcmFuY2VQcmVmZXJlbmNlID0gU2NoZW1hLkxpdGVyYWxzKFtcInN5c3RlbVwiLCBcImxpZ2h0XCIsIFwiZGFya1wiXSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3QXBwZWFyYW5jZVByZWZlcmVuY2UgPSB0eXBlb2YgUHJldmlld0FwcGVhcmFuY2VQcmVmZXJlbmNlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BSRVZJRVdfQVBQRUFSQU5DRTogUHJldmlld0FwcGVhcmFuY2VQcmVmZXJlbmNlID0gXCJzeXN0ZW1cIjtcblxuY29uc3QgUHJldmlld0ZpbGVEb3dubG9hZCA9IFNjaGVtYS5TdHJ1Y3QoeyBpZDogU2NoZW1hLlN0cmluZywgZmlsZU5hbWU6IFNjaGVtYS5TdHJpbmcgfSk7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3TmF2U3RhdHVzID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcIklkbGVcIiwge30pLFxuICBTY2hlbWEuVGFnZ2VkU3RydWN0KFwiTG9hZGluZ1wiLCB7XG4gICAgdXJsOiBVcmwsXG4gICAgdGl0bGU6IFRpdGxlLFxuICB9KSxcbiAgU2NoZW1hLlRhZ2dlZFN0cnVjdChcIlN1Y2Nlc3NcIiwge1xuICAgIHVybDogVXJsLFxuICAgIHRpdGxlOiBUaXRsZSxcbiAgfSksXG4gIFNjaGVtYS5UYWdnZWRTdHJ1Y3QoXCJMb2FkRmFpbGVkXCIsIHtcbiAgICB1cmw6IFVybCxcbiAgICB0aXRsZTogVGl0bGUsXG4gICAgY29kZTogU2NoZW1hLkludCxcbiAgICBkZXNjcmlwdGlvbjogU2NoZW1hLlN0cmluZyxcbiAgICBkb3dubG9hZDogU2NoZW1hLm9wdGlvbmFsKFByZXZpZXdGaWxlRG93bmxvYWQpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUHJldmlld05hdlN0YXR1cyA9IHR5cGVvZiBQcmV2aWV3TmF2U3RhdHVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3UnVudGltZSA9IFNjaGVtYS5MaXRlcmFscyhbXCJkZXNrdG9wXCIsIFwic2VydmVyXCJdKTtcbmV4cG9ydCB0eXBlIFByZXZpZXdSdW50aW1lID0gdHlwZW9mIFByZXZpZXdSdW50aW1lLlR5cGU7XG5cbi8qKiBKU09OIHJlYXNvbiBmb3IgcHJldmlldyBzdHJlYW0gY2xvc2UgY29kZSA0NTAzOyBtdXN0IGZpdCB0aGUgMTIzLWJ5dGUgY2xvc2UtcmVhc29uIGxpbWl0LiAqL1xuZXhwb3J0IGNvbnN0IFByZXZpZXdTdHJlYW1Ib3N0U2V0dXAgPSBTY2hlbWEuU3RydWN0KHtcbiAgbmVlZDogU2NoZW1hLkxpdGVyYWxzKFtcInNhbmRib3hcIiwgXCJsaWJyYXJpZXNcIl0pLFxuICBjb21tYW5kOiBTY2hlbWEuU3RyaW5nLFxufSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3U3RyZWFtSG9zdFNldHVwID0gdHlwZW9mIFByZXZpZXdTdHJlYW1Ib3N0U2V0dXAuVHlwZTtcbmV4cG9ydCBjb25zdCBQUkVWSUVXX1NUUkVBTV9IT1NUX1NFVFVQX0NMT1NFX0NPREUgPSA0NTAzO1xuXG5leHBvcnQgY29uc3QgUHJldmlld1Nlc3Npb25TbmFwc2hvdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICB0YWJJZDogUHJldmlld1RhYklkLFxuICBuYXZTdGF0dXM6IFByZXZpZXdOYXZTdGF0dXMsXG4gIGNhbkdvQmFjazogU2NoZW1hLkJvb2xlYW4sXG4gIGNhbkdvRm9yd2FyZDogU2NoZW1hLkJvb2xlYW4sXG4gIHZpZXdwb3J0OiBTY2hlbWEub3B0aW9uYWwoUHJldmlld1ZpZXdwb3J0U2V0dGluZyksXG4gIGNvbG9yU2NoZW1lOiBTY2hlbWEub3B0aW9uYWwoUHJldmlld0FwcGVhcmFuY2VQcmVmZXJlbmNlKSxcbiAgem9vbUZhY3RvcjogU2NoZW1hLm9wdGlvbmFsKFByZXZpZXdab29tRmFjdG9yKSxcbiAgLyoqIEZpeGVkIGF0IG9wZW47IEVsZWN0cm9uIGNhbm5vdCBjaGFuZ2UgYSB3ZWJ2aWV3IHBhcnRpdGlvbiBhZnRlciBhdHRhY2ggd2l0aG91dCBsb3NpbmcgcGFnZSBzdGF0ZS4gKi9cbiAgcHJvZmlsZUlkOiBTY2hlbWEub3B0aW9uYWwoQnJvd3NlclByb2ZpbGVJZCksXG4gIHJ1bnRpbWU6IFNjaGVtYS5vcHRpb25hbChQcmV2aWV3UnVudGltZSksXG4gIGF1dG9tYXRpb25Pd25lcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICByZXZlYWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIHJldmVhbFJlcXVlc3Q6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RydWN0KHsgaWQ6IFNjaGVtYS5TdHJpbmcsIGZvcmNlOiBTY2hlbWEuQm9vbGVhbiB9KSksXG4gIHVwZGF0ZWRBdDogU2NoZW1hLlN0cmluZyxcbn0pO1xuZXhwb3J0IHR5cGUgUHJldmlld1Nlc3Npb25TbmFwc2hvdCA9IHR5cGVvZiBQcmV2aWV3U2Vzc2lvblNuYXBzaG90LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3T3BlbklucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgdXJsOiBTY2hlbWEub3B0aW9uYWwoVXJsKSxcbiAgdmlld3BvcnQ6IFNjaGVtYS5vcHRpb25hbChQcmV2aWV3Vmlld3BvcnRTZXR0aW5nKSxcbiAgcHJvZmlsZUlkOiBTY2hlbWEub3B0aW9uYWwoQnJvd3NlclByb2ZpbGVJZCksXG4gIHJ1bnRpbWU6IFNjaGVtYS5vcHRpb25hbChQcmV2aWV3UnVudGltZSksXG4gIHJldmVhbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgUHJldmlld09wZW5JbnB1dCA9IHR5cGVvZiBQcmV2aWV3T3BlbklucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3TmF2aWdhdGVJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHRhYklkOiBQcmV2aWV3VGFiSWQsXG4gIHVybDogVXJsLFxuICByZXNvbHZlZFRpdGxlOiBTY2hlbWEub3B0aW9uYWwoVGl0bGUpLFxufSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3TmF2aWdhdGVJbnB1dCA9IHR5cGVvZiBQcmV2aWV3TmF2aWdhdGVJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJldmlld1JlcG9ydFN0YXR1c0lucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgdGFiSWQ6IFByZXZpZXdUYWJJZCxcbiAgbmF2U3RhdHVzOiBQcmV2aWV3TmF2U3RhdHVzLFxuICBjYW5Hb0JhY2s6IFNjaGVtYS5Cb29sZWFuLFxuICBjYW5Hb0ZvcndhcmQ6IFNjaGVtYS5Cb29sZWFuLFxufSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3UmVwb3J0U3RhdHVzSW5wdXQgPSB0eXBlb2YgUHJldmlld1JlcG9ydFN0YXR1c0lucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3UmVmcmVzaElucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgdGFiSWQ6IFByZXZpZXdUYWJJZCxcbn0pO1xuZXhwb3J0IHR5cGUgUHJldmlld1JlZnJlc2hJbnB1dCA9IHR5cGVvZiBQcmV2aWV3UmVmcmVzaElucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3UmVzaXplSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB0YWJJZDogUHJldmlld1RhYklkLFxuICB2aWV3cG9ydDogUHJldmlld1ZpZXdwb3J0U2V0dGluZyxcbn0pO1xuZXhwb3J0IHR5cGUgUHJldmlld1Jlc2l6ZUlucHV0ID0gdHlwZW9mIFByZXZpZXdSZXNpemVJbnB1dC5UeXBlO1xuXG4vKiogUmVxdWlyZXMgbm8gdGFiIGNvbnRyb2wsIHVubGlrZSBwYWdlIGlucHV0LiAqL1xuZXhwb3J0IGNvbnN0IFByZXZpZXdBZGp1c3RJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHRhYklkOiBQcmV2aWV3VGFiSWQsXG4gIGNvbG9yU2NoZW1lOiBTY2hlbWEub3B0aW9uYWwoUHJldmlld0FwcGVhcmFuY2VQcmVmZXJlbmNlKSxcbiAgem9vbUZhY3RvcjogU2NoZW1hLm9wdGlvbmFsKFByZXZpZXdab29tRmFjdG9yKSxcbiAgaGFyZFJlbG9hZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgY2xlYXI6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTGl0ZXJhbHMoW1wiY29va2llc1wiLCBcImNhY2hlXCJdKSksXG59KTtcbmV4cG9ydCB0eXBlIFByZXZpZXdBZGp1c3RJbnB1dCA9IHR5cGVvZiBQcmV2aWV3QWRqdXN0SW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IFByZXZpZXdDbG9zZUlucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgdGFiSWQ6IFNjaGVtYS5vcHRpb25hbChQcmV2aWV3VGFiSWQpLFxufSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3Q2xvc2VJbnB1dCA9IHR5cGVvZiBQcmV2aWV3Q2xvc2VJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgQlJPV1NFUl9SRUNPUkRJTkdfRlJBTUVfUkFURVMgPSBbMzAsIDYwXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBCcm93c2VyUmVjb3JkaW5nRnJhbWVSYXRlID0gU2NoZW1hLkxpdGVyYWxzKEJST1dTRVJfUkVDT1JESU5HX0ZSQU1FX1JBVEVTKTtcbmV4cG9ydCB0eXBlIEJyb3dzZXJSZWNvcmRpbmdGcmFtZVJhdGUgPSB0eXBlb2YgQnJvd3NlclJlY29yZGluZ0ZyYW1lUmF0ZS5UeXBlO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQlJPV1NFUl9SRUNPUkRJTkdfRlJBTUVfUkFURTogQnJvd3NlclJlY29yZGluZ0ZyYW1lUmF0ZSA9IDMwO1xuXG5leHBvcnQgY29uc3QgUHJldmlld1JlcG9ydFByb2ZpbGVzSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcHJvZmlsZXM6IFNjaGVtYS5BcnJheShCcm93c2VyUHJvZmlsZSkuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKEJST1dTRVJfUFJPRklMRV9NQVhfQ09VTlQpKSxcbiAgZGVmYXVsdFByb2ZpbGVJZDogQnJvd3NlclByb2ZpbGVJZCxcbiAgLyoqIE9wdGlvbmFsIHNvIG9sZGVyIGNsaWVudHMga2VlcCByZXBvcnRpbmc7IG9taXR0aW5nIGl0IGtlZXBzIHRoZSBsYXN0IHJlcG9ydGVkIHJhdGUuICovXG4gIHJlY29yZGluZ0ZyYW1lUmF0ZTogU2NoZW1hLm9wdGlvbmFsKEJyb3dzZXJSZWNvcmRpbmdGcmFtZVJhdGUpLFxufSk7XG5leHBvcnQgdHlwZSBQcmV2aWV3UmVwb3J0UHJvZmlsZXNJbnB1dCA9IHR5cGVvZiBQcmV2aWV3UmVwb3J0UHJvZmlsZXNJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJldmlld0NsZWFyUHJvZmlsZUlucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHByb2ZpbGVJZDogQnJvd3NlclByb2ZpbGVJZCxcbn0pO1xuZXhwb3J0IHR5cGUgUHJldmlld0NsZWFyUHJvZmlsZUlucHV0ID0gdHlwZW9mIFByZXZpZXdDbGVhclByb2ZpbGVJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJldmlld0xpc3RJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG59KTtcbmV4cG9ydCB0eXBlIFByZXZpZXdMaXN0SW5wdXQgPSB0eXBlb2YgUHJldmlld0xpc3RJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgUHJldmlld0xpc3RSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgc2Vzc2lvbnM6IFNjaGVtYS5BcnJheShQcmV2aWV3U2Vzc2lvblNuYXBzaG90KSxcbiAgLyoqIElkZW50aWZpZXMgdGhlIGN1cnJlbnQgc2VydmVyIHByb2Nlc3Mgc28gcmV2aXNpb24gcmVzZXRzIGFyZSBzYWZlLiAqL1xuICBzZXJ2ZXJFcG9jaDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICByZXZpc2lvbjogTm9uTmVnYXRpdmVJbnQsXG59KTtcbmV4cG9ydCB0eXBlIFByZXZpZXdMaXN0UmVzdWx0ID0gdHlwZW9mIFByZXZpZXdMaXN0UmVzdWx0LlR5cGU7XG5cbmNvbnN0IFByZXZpZXdFdmVudEJhc2VTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgdGFiSWQ6IFByZXZpZXdUYWJJZCxcbiAgY3JlYXRlZEF0OiBTY2hlbWEuU3RyaW5nLFxuICBzZXJ2ZXJFcG9jaDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAvKiogTW9ub3RvbmljIHNlcnZlciBzdGF0ZSByZXZpc2lvbiBzaGFyZWQgd2l0aCBQcmV2aWV3TGlzdFJlc3VsdC4gKi9cbiAgcmV2aXNpb246IFBvc2l0aXZlSW50LFxufSk7XG5cbmNvbnN0IFByZXZpZXdPcGVuZWRFdmVudCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICAuLi5QcmV2aWV3RXZlbnRCYXNlU2NoZW1hLmZpZWxkcyxcbiAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJvcGVuZWRcIiksXG4gIHNuYXBzaG90OiBQcmV2aWV3U2Vzc2lvblNuYXBzaG90LFxufSk7XG5cbmNvbnN0IFByZXZpZXdOYXZpZ2F0ZWRFdmVudCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICAuLi5QcmV2aWV3RXZlbnRCYXNlU2NoZW1hLmZpZWxkcyxcbiAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJuYXZpZ2F0ZWRcIiksXG4gIHNuYXBzaG90OiBQcmV2aWV3U2Vzc2lvblNuYXBzaG90LFxufSk7XG5cbmNvbnN0IFByZXZpZXdSZXNpemVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uUHJldmlld0V2ZW50QmFzZVNjaGVtYS5maWVsZHMsXG4gIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicmVzaXplZFwiKSxcbiAgc25hcHNob3Q6IFByZXZpZXdTZXNzaW9uU25hcHNob3QsXG4gIHJlcXVlc3Q6IFNjaGVtYS5vcHRpb25hbChcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIGhhcmRSZWxvYWQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gICAgICBjbGVhcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFscyhbXCJjb29raWVzXCIsIFwiY2FjaGVcIl0pKSxcbiAgICB9KSxcbiAgKSxcbn0pO1xuXG5jb25zdCBQcmV2aWV3RmFpbGVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uUHJldmlld0V2ZW50QmFzZVNjaGVtYS5maWVsZHMsXG4gIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZmFpbGVkXCIpLFxuICB1cmw6IFVybCxcbiAgdGl0bGU6IFRpdGxlLFxuICBjb2RlOiBTY2hlbWEuSW50LFxuICBkZXNjcmlwdGlvbjogU2NoZW1hLlN0cmluZyxcbiAgZG93bmxvYWQ6IFNjaGVtYS5vcHRpb25hbChQcmV2aWV3RmlsZURvd25sb2FkKSxcbn0pO1xuXG5jb25zdCBQcmV2aWV3Q2xvc2VkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uUHJldmlld0V2ZW50QmFzZVNjaGVtYS5maWVsZHMsXG4gIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY2xvc2VkXCIpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3RXZlbnQgPSBTY2hlbWEuVW5pb24oW1xuICBQcmV2aWV3T3BlbmVkRXZlbnQsXG4gIFByZXZpZXdOYXZpZ2F0ZWRFdmVudCxcbiAgUHJldmlld1Jlc2l6ZWRFdmVudCxcbiAgUHJldmlld0ZhaWxlZEV2ZW50LFxuICBQcmV2aWV3Q2xvc2VkRXZlbnQsXG5dKTtcbmV4cG9ydCB0eXBlIFByZXZpZXdFdmVudCA9IHR5cGVvZiBQcmV2aWV3RXZlbnQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IERpc2NvdmVyZWRMb2NhbFNlcnZlciA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBob3N0OiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIHBvcnQ6IFNjaGVtYS5JbnQuY2hlY2soU2NoZW1hLmlzR3JlYXRlclRoYW4oMCkpLmNoZWNrKFNjaGVtYS5pc0xlc3NUaGFuKDY1NTM2KSksXG4gIHVybDogVXJsLFxuICBwcm9jZXNzTmFtZTogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBwaWQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkludC5jaGVjayhTY2hlbWEuaXNHcmVhdGVyVGhhbigwKSkpLFxuICB0ZXJtaW5hbDogU2NoZW1hLk51bGxPcihcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICAgIHRlcm1pbmFsSWQ6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICB9KSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgRGlzY292ZXJlZExvY2FsU2VydmVyID0gdHlwZW9mIERpc2NvdmVyZWRMb2NhbFNlcnZlci5UeXBlO1xuXG5leHBvcnQgY29uc3QgRGlzY292ZXJlZExvY2FsU2VydmVyTGlzdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzZXJ2ZXJzOiBTY2hlbWEuQXJyYXkoRGlzY292ZXJlZExvY2FsU2VydmVyKSxcbiAgc2Nhbm5lZEF0OiBTY2hlbWEuU3RyaW5nLFxuICBjb25maWd1cmVkVXJsUHJvYmluZzogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFsKHRydWUpKSxcbn0pO1xuZXhwb3J0IHR5cGUgRGlzY292ZXJlZExvY2FsU2VydmVyTGlzdCA9IHR5cGVvZiBEaXNjb3ZlcmVkTG9jYWxTZXJ2ZXJMaXN0LlR5cGU7XG5cbmV4cG9ydCBjbGFzcyBQcmV2aWV3U2Vzc2lvbkxvb2t1cEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPFByZXZpZXdTZXNzaW9uTG9va3VwRXJyb3I+KCkoXG4gIFwiUHJldmlld1Nlc3Npb25Mb29rdXBFcnJvclwiLFxuICB7XG4gICAgdGhyZWFkSWQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgdGFiSWQ6IFNjaGVtYS5TdHJpbmcsXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIGBVbmtub3duIHByZXZpZXcgc2Vzc2lvbjogdGhyZWFkPSR7dGhpcy50aHJlYWRJZH0sIHRhYj0ke3RoaXMudGFiSWR9YDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJldmlld0ludmFsaWRVcmxFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxQcmV2aWV3SW52YWxpZFVybEVycm9yPigpKFxuICBcIlByZXZpZXdJbnZhbGlkVXJsRXJyb3JcIixcbiAge1xuICAgIGlucHV0TGVuZ3RoOiBTY2hlbWEuTnVtYmVyLFxuICAgIHJlYXNvbjogU2NoZW1hLkxpdGVyYWxzKFtcImVtcHR5XCIsIFwicGFyc2VcIiwgXCJ1bnN1cHBvcnRlZC1wcm90b2NvbFwiLCBcInVuZXhwZWN0ZWRcIl0pLFxuICAgIHByb3RvY29sOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpIHtcbiAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2wgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBgOiAke3RoaXMucHJvdG9jb2x9YDtcbiAgICByZXR1cm4gYEludmFsaWQgcHJldmlldyBVUkwgKCR7dGhpcy5yZWFzb259JHtwcm90b2NvbH07IGlucHV0IGxlbmd0aCAke3RoaXMuaW5wdXRMZW5ndGh9KS5gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcmV2aWV3Q29udHJvbFJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8UHJldmlld0NvbnRyb2xSZXF1aXJlZEVycm9yPigpKFxuICBcIlByZXZpZXdDb250cm9sUmVxdWlyZWRFcnJvclwiLFxuICB7IHRhYklkOiBTY2hlbWEuU3RyaW5nIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIFwiVGFrZSBjb250cm9sIG9mIHRoZSBzZXJ2ZXIgYnJvd3NlciBhbmQgdXNlIGl0cyB2aWV3ZXIgY29udHJvbHMuXCI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByZXZpZXdDbGVhclByb2ZpbGVFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxQcmV2aWV3Q2xlYXJQcm9maWxlRXJyb3I+KCkoXG4gIFwiUHJldmlld0NsZWFyUHJvZmlsZUVycm9yXCIsXG4gIHsgcHJvZmlsZUlkOiBTY2hlbWEuU3RyaW5nLCBjYXVzZTogU2NoZW1hLkRlZmVjdCgpIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIFwiVGhlIGVudmlyb25tZW50IGNvdWxkIG5vdCBkZWxldGUgdGhpcyBicm93c2VyIHByb2ZpbGUncyBkYXRhLlwiO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3RXJyb3IgPSBTY2hlbWEuVW5pb24oW1xuICBQcmV2aWV3U2Vzc2lvbkxvb2t1cEVycm9yLFxuICBQcmV2aWV3SW52YWxpZFVybEVycm9yLFxuICBQcmV2aWV3Q29udHJvbFJlcXVpcmVkRXJyb3IsXG5dKTtcbmV4cG9ydCB0eXBlIFByZXZpZXdFcnJvciA9IHR5cGVvZiBQcmV2aWV3RXJyb3IuVHlwZTtcbiJdLCJmaWxlIjoiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3ByZXZpZXcudHMifQ==

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9wcmV2aWV3LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3ByZXZpZXcudHMiLHsidXJscyI6IjYiLCJpZHMiOiI3In0sWyI4IiwiOSIsIjEwIl0sW10sWyI4IiwiOSIsIjEwIl0se30sIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvaW5kZXguanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvYmFzZVNjaGVtYXMudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvYnJvd3NlclByb2ZpbGUudHMiXQ==