__vite_ssr_exportName__("ContextMenuItemSchema", () => { try { return ContextMenuItemSchema } catch {} });
__vite_ssr_exportName__("DesktopUpdateStatusSchema", () => { try { return DesktopUpdateStatusSchema } catch {} });
__vite_ssr_exportName__("DesktopRuntimeArchSchema", () => { try { return DesktopRuntimeArchSchema } catch {} });
__vite_ssr_exportName__("DesktopThemeSchema", () => { try { return DesktopThemeSchema } catch {} });
__vite_ssr_exportName__("DesktopUpdateChannelSchema", () => { try { return DesktopUpdateChannelSchema } catch {} });
__vite_ssr_exportName__("DesktopAppStageLabelSchema", () => { try { return DesktopAppStageLabelSchema } catch {} });
__vite_ssr_exportName__("DesktopAppBrandingSchema", () => { try { return DesktopAppBrandingSchema } catch {} });
__vite_ssr_exportName__("DesktopSnapShotMode", () => { try { return DesktopSnapShotMode } catch {} });
__vite_ssr_exportName__("DesktopCaptureExtensionState", () => { try { return DesktopCaptureExtensionState } catch {} });
__vite_ssr_exportName__("DesktopCaptureHelperState", () => { try { return DesktopCaptureHelperState } catch {} });
__vite_ssr_exportName__("DesktopSnapShotSetupAction", () => { try { return DesktopSnapShotSetupAction } catch {} });
__vite_ssr_exportName__("DesktopCaptureConfigRequest", () => { try { return DesktopCaptureConfigRequest } catch {} });
__vite_ssr_exportName__("DesktopCaptureConfigPreview", () => { try { return DesktopCaptureConfigPreview } catch {} });
__vite_ssr_exportName__("DesktopCaptureConfigApplied", () => { try { return DesktopCaptureConfigApplied } catch {} });
__vite_ssr_exportName__("DesktopSnapShotState", () => { try { return DesktopSnapShotState } catch {} });
__vite_ssr_exportName__("DesktopSnapShotShortcutAvailability", () => { try { return DesktopSnapShotShortcutAvailability } catch {} });
__vite_ssr_exportName__("DesktopSnapShotId", () => { try { return DesktopSnapShotId } catch {} });
__vite_ssr_exportName__("DesktopSnapShotEvent", () => { try { return DesktopSnapShotEvent } catch {} });
__vite_ssr_exportName__("DesktopPendingSnapShot", () => { try { return DesktopPendingSnapShot } catch {} });
__vite_ssr_exportName__("DesktopSnapShot", () => { try { return DesktopSnapShot } catch {} });
__vite_ssr_exportName__("DesktopSnapShotAnimationDestination", () => { try { return DesktopSnapShotAnimationDestination } catch {} });
__vite_ssr_exportName__("DesktopUpdateReleaseNoteSchema", () => { try { return DesktopUpdateReleaseNoteSchema } catch {} });
__vite_ssr_exportName__("DesktopUpdateStateSchema", () => { try { return DesktopUpdateStateSchema } catch {} });
__vite_ssr_exportName__("DesktopCliCommandStateSchema", () => { try { return DesktopCliCommandStateSchema } catch {} });
__vite_ssr_exportName__("DesktopUpdateActionResultSchema", () => { try { return DesktopUpdateActionResultSchema } catch {} });
__vite_ssr_exportName__("DesktopUpdateCheckResultSchema", () => { try { return DesktopUpdateCheckResultSchema } catch {} });
__vite_ssr_exportName__("PRIMARY_LOCAL_ENVIRONMENT_ID", () => { try { return PRIMARY_LOCAL_ENVIRONMENT_ID } catch {} });
__vite_ssr_exportName__("DesktopEnvironmentBootstrapSchema", () => { try { return DesktopEnvironmentBootstrapSchema } catch {} });
__vite_ssr_exportName__("DesktopSshEnvironmentTargetSchema", () => { try { return DesktopSshEnvironmentTargetSchema } catch {} });
__vite_ssr_exportName__("DesktopSshHostSourceSchema", () => { try { return DesktopSshHostSourceSchema } catch {} });
__vite_ssr_exportName__("DesktopDiscoveredSshHostSchema", () => { try { return DesktopDiscoveredSshHostSchema } catch {} });
__vite_ssr_exportName__("DesktopSshEnvironmentBootstrapSchema", () => { try { return DesktopSshEnvironmentBootstrapSchema } catch {} });
__vite_ssr_exportName__("DesktopSshPasswordPromptCancelledType", () => { try { return DesktopSshPasswordPromptCancelledType } catch {} });
__vite_ssr_exportName__("DesktopSshPasswordPromptCancelledResultSchema", () => { try { return DesktopSshPasswordPromptCancelledResultSchema } catch {} });
__vite_ssr_exportName__("DesktopSshEnvironmentEnsureOptionsSchema", () => { try { return DesktopSshEnvironmentEnsureOptionsSchema } catch {} });
__vite_ssr_exportName__("DesktopSshEnvironmentEnsureInputSchema", () => { try { return DesktopSshEnvironmentEnsureInputSchema } catch {} });
__vite_ssr_exportName__("DesktopSshEnvironmentEnsureResultSchema", () => { try { return DesktopSshEnvironmentEnsureResultSchema } catch {} });
__vite_ssr_exportName__("DesktopSshHttpBaseUrlInputSchema", () => { try { return DesktopSshHttpBaseUrlInputSchema } catch {} });
__vite_ssr_exportName__("DesktopSshBearerRequestInputSchema", () => { try { return DesktopSshBearerRequestInputSchema } catch {} });
__vite_ssr_exportName__("DesktopSshBearerBootstrapInputSchema", () => { try { return DesktopSshBearerBootstrapInputSchema } catch {} });
__vite_ssr_exportName__("DesktopSshPasswordPromptResolutionInputSchema", () => { try { return DesktopSshPasswordPromptResolutionInputSchema } catch {} });
__vite_ssr_exportName__("PersistedSavedEnvironmentRecordSchema", () => { try { return PersistedSavedEnvironmentRecordSchema } catch {} });
__vite_ssr_exportName__("DesktopServerExposureModeSchema", () => { try { return DesktopServerExposureModeSchema } catch {} });
__vite_ssr_exportName__("DesktopServerExposureStateSchema", () => { try { return DesktopServerExposureStateSchema } catch {} });
__vite_ssr_exportName__("PickFolderOptionsSchema", () => { try { return PickFolderOptionsSchema } catch {} });
__vite_ssr_exportName__("PickedThemeFileSchema", () => { try { return PickedThemeFileSchema } catch {} });
__vite_ssr_exportName__("DesktopWslDistroSchema", () => { try { return DesktopWslDistroSchema } catch {} });
__vite_ssr_exportName__("DesktopWslStateSchema", () => { try { return DesktopWslStateSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewColorSchemeSchema", () => { try { return DesktopPreviewColorSchemeSchema } catch {} });
__vite_ssr_exportName__("FAVICON_DATA_URL_MAX_LENGTH", () => { try { return FAVICON_DATA_URL_MAX_LENGTH } catch {} });
__vite_ssr_exportName__("FAVICON_CAPTURED_AT_MAX", () => { try { return FAVICON_CAPTURED_AT_MAX } catch {} });
__vite_ssr_exportName__("DesktopPreviewTabIdSchema", () => { try { return DesktopPreviewTabIdSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewRecordingInputSchema", () => { try { return DesktopPreviewRecordingInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewWebviewConfigSchema", () => { try { return DesktopPreviewWebviewConfigSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewAnnotationThemeSchema", () => { try { return DesktopPreviewAnnotationThemeSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewRecordingArtifactSchema", () => { try { return DesktopPreviewRecordingArtifactSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewScreenshotArtifactSchema", () => { try { return DesktopPreviewScreenshotArtifactSchema } catch {} });
__vite_ssr_exportName__("PickedElementStackFrameSchema", () => { try { return PickedElementStackFrameSchema } catch {} });
__vite_ssr_exportName__("PickedElementPayloadSchema", () => { try { return PickedElementPayloadSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationRectSchema", () => { try { return PreviewAnnotationRectSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationPointSchema", () => { try { return PreviewAnnotationPointSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationElementTargetSchema", () => { try { return PreviewAnnotationElementTargetSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationRegionTargetSchema", () => { try { return PreviewAnnotationRegionTargetSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationStrokeTargetSchema", () => { try { return PreviewAnnotationStrokeTargetSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationStyleChangeSchema", () => { try { return PreviewAnnotationStyleChangeSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationScreenshotSchema", () => { try { return PreviewAnnotationScreenshotSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationPayloadSchema", () => { try { return PreviewAnnotationPayloadSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationSubmissionSchema", () => { try { return PreviewAnnotationSubmissionSchema } catch {} });
__vite_ssr_exportName__("PreviewAnnotationSubmissionResultSchema", () => { try { return PreviewAnnotationSubmissionResultSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewTabInputSchema", () => { try { return DesktopPreviewTabInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewCreateTabInputSchema", () => { try { return DesktopPreviewCreateTabInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewRegisterWebviewInputSchema", () => { try { return DesktopPreviewRegisterWebviewInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewNavigateInputSchema", () => { try { return DesktopPreviewNavigateInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewConfigInputSchema", () => { try { return DesktopPreviewConfigInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewClearDataInputSchema", () => { try { return DesktopPreviewClearDataInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewSetColorSchemeInputSchema", () => { try { return DesktopPreviewSetColorSchemeInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewSetZoomFactorInputSchema", () => { try { return DesktopPreviewSetZoomFactorInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewSetAudioMutedInputSchema", () => { try { return DesktopPreviewSetAudioMutedInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewAnnotationThemeInputSchema", () => { try { return DesktopPreviewAnnotationThemeInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewAnnotationSendEnabledInputSchema", () => { try { return DesktopPreviewAnnotationSendEnabledInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewArtifactInputSchema", () => { try { return DesktopPreviewArtifactInputSchema } catch {} });
__vite_ssr_exportName__("DesktopPreviewRecordingSaveInputSchema", () => { try { return DesktopPreviewRecordingSaveInputSchema } catch {} });
__vite_ssr_exportName__("SystemSettingsPaneSchema", () => { try { return SystemSettingsPaneSchema } catch {} });
__vite_ssr_exportName__("DESKTOP_PREVIEW_RECORDING_CAPTURE_TRIGGER", () => { try { return DESKTOP_PREVIEW_RECORDING_CAPTURE_TRIGGER } 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/chatAttachment.ts", {"importedNames":["SnapShotSource"]});
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["EnvironmentId","TrimmedNonEmptyString"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/browserProfile.ts", {"importedNames":["BrowserProfileId"]});
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/auth.ts", {"importedNames":["AuthAccessTokenResult","AuthSessionState","AuthWebSocketTicketResult"]});
const __vite_ssr_import_5__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/remoteAccess.ts", {"importedNames":["AdvertisedEndpoint"]});
const __vite_ssr_import_6__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/environment.ts", {"importedNames":["ExecutionEnvironmentDescriptor"]});
const __vite_ssr_import_7__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/settings.ts", {"importedNames":["SnapShotShortcut"]});








const ContextMenuItemSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	label: __vite_ssr_import_0__.String,
	destructive: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean),
	disabled: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean),
	header: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean),
	icon: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.String),
	separatorBefore: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean),
	checked: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean),
	children: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Array(__vite_ssr_import_0__.suspend(() => ContextMenuItemSchema)))
});
const DesktopUpdateStatusSchema = __vite_ssr_import_0__.Literals([
	"disabled",
	"idle",
	"checking",
	"up-to-date",
	"available",
	"downloading",
	"downloaded",
	"error"
]);
const DesktopRuntimeArchSchema = __vite_ssr_import_0__.Literals([
	"arm64",
	"x64",
	"other"
]);
const DesktopThemeSchema = __vite_ssr_import_0__.Literals([
	"light",
	"dark",
	"system"
]);
const DesktopUpdateChannelSchema = __vite_ssr_import_0__.Literals(["latest", "nightly"]);
const DesktopAppStageLabelSchema = __vite_ssr_import_0__.Literals([
	"Alpha",
	"Beta",
	"Dev",
	"Nightly"
]);
const DesktopAppBrandingSchema = __vite_ssr_import_0__.Struct({
	baseName: __vite_ssr_import_0__.String,
	stageLabel: DesktopAppStageLabelSchema,
	displayName: __vite_ssr_import_0__.String
});
const DesktopSnapShotMode = __vite_ssr_import_0__.Literals([
	"direct",
	"portal",
	"unavailable"
]);
const DesktopCaptureExtensionState = __vite_ssr_import_0__.Struct({
	status: __vite_ssr_import_0__.Literals([
		"not-installed",
		"disabled",
		"enabled",
		"restart-required",
		"update-required",
		"extensions-disabled",
		"unsupported",
		"error"
	]),
	message: __vite_ssr_import_0__.String
});
const DesktopCaptureHelperState = __vite_ssr_import_0__.Struct({
	status: __vite_ssr_import_0__.Literals([
		"not-installed",
		"update-required",
		"ready",
		"error"
	]),
	message: __vite_ssr_import_0__.String,
	feedbackAvailable: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean)
});
const DesktopSnapShotSetupAction = __vite_ssr_import_0__.Literals([
	"install-extension",
	"enable-extension",
	"disable-extension",
	"install-kde-helper",
	"remove-kde-helper",
	"install-hyprland-helper",
	"remove-hyprland-helper",
	"test-mac-capture",
	"allow-screen-recording",
	"allow-accessibility",
	"retry-shortcut"
]);
const DesktopCaptureConfigRequest = __vite_ssr_import_0__.Struct({
	operation: __vite_ssr_import_0__.Literals(["install", "remove"]),
	chooseFile: __vite_ssr_import_0__.Boolean,
	shortcut: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.String.check(__vite_ssr_import_0__.isMaxLength(80)))
});
const DesktopCaptureConfigPreview = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	path: __vite_ssr_import_0__.String,
	resolvedPath: __vite_ssr_import_0__.String,
	before: __vite_ssr_import_0__.String,
	after: __vite_ssr_import_0__.String,
	shortcut: __vite_ssr_import_0__.String,
	operation: __vite_ssr_import_0__.Literals(["install", "remove"])
});
const DesktopCaptureConfigApplied = __vite_ssr_import_0__.Struct({
	backupPath: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	warning: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)
});
const DesktopSnapShotState = __vite_ssr_import_0__.Struct({
	mode: DesktopSnapShotMode,
	windows: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	linuxDesktop: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Literals([
		"gnome",
		"kde",
		"niri",
		"hyprland"
	])),
	linuxBackend: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Literals([
		"screenshot-portal",
		"gnome-extension",
		"niri",
		"kde",
		"hyprland",
		"picker"
	])),
	linuxFeedbackAvailable: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	shortcut: __vite_ssr_import_7__.SnapShotShortcut,
	shortcutRegistered: __vite_ssr_import_0__.Boolean,
	shortcutPending: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	shortcutCanRetry: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	shortcutLabel: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.String),
	shortcutMessage: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	shortcutBinding: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.String),
	shortcutConfigPath: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.String),
	shortcutActionRegistered: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	gnomeExtension: __vite_ssr_import_0__.optional(DesktopCaptureExtensionState),
	kdeHelper: __vite_ssr_import_0__.optional(DesktopCaptureHelperState),
	hyprlandHelper: __vite_ssr_import_0__.optional(DesktopCaptureHelperState),
	macPermissions: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Struct({
		screenRecording: __vite_ssr_import_0__.Boolean,
		accessibility: __vite_ssr_import_0__.Boolean
	})),
	shortcutVerified: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Boolean),
	message: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)
});
const DesktopSnapShotShortcutAvailability = __vite_ssr_import_0__.Struct({
	available: __vite_ssr_import_0__.Boolean,
	message: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)
});
const DesktopSnapShotId = __vite_ssr_import_2__.TrimmedNonEmptyString.check(__vite_ssr_import_0__.isMaxLength(64), __vite_ssr_import_0__.isPattern(/^[a-f0-9-]+$/i));
/** `id` is absent for failures before a capture exists. */
const DesktopSnapShotEvent = __vite_ssr_import_0__.Union([
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("requested"),
		id: DesktopSnapShotId
	}),
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("started"),
		id: DesktopSnapShotId
	}),
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("ready"),
		id: DesktopSnapShotId
	}),
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("failed"),
		id: __vite_ssr_import_0__.optional(DesktopSnapShotId)
	}),
	__vite_ssr_import_0__.Struct({ type: __vite_ssr_import_0__.Literal("shortcut-changed") })
]);
const DesktopPendingSnapShot = __vite_ssr_import_0__.Struct({
	id: DesktopSnapShotId,
	name: __vite_ssr_import_0__.String,
	mimeType: __vite_ssr_import_0__.Literal("image/png"),
	sizeBytes: __vite_ssr_import_0__.Int,
	source: __vite_ssr_import_1__.SnapShotSource
});
const DesktopSnapShot = __vite_ssr_import_0__.Struct({
	...DesktopPendingSnapShot.fields,
	dataUrl: __vite_ssr_import_0__.String
});
const DesktopSnapShotAnimationDestination = __vite_ssr_import_0__.Struct({
	id: DesktopSnapShotId,
	viewportFrame: __vite_ssr_import_0__.Struct({
		x: __vite_ssr_import_0__.Number,
		y: __vite_ssr_import_0__.Number,
		width: __vite_ssr_import_0__.Number,
		height: __vite_ssr_import_0__.Number
	}),
	backgroundColor: __vite_ssr_import_0__.String,
	borderColor: __vite_ssr_import_0__.String,
	borderWidth: __vite_ssr_import_0__.Number,
	cornerRadius: __vite_ssr_import_0__.Number,
	details: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Struct({
		appName: __vite_ssr_import_1__.SnapShotSource.fields.appName,
		windowTitle: __vite_ssr_import_1__.SnapShotSource.fields.windowTitle,
		appIconDataUrl: __vite_ssr_import_1__.SnapShotSource.fields.appIconDataUrl
	}))
});
const DesktopUpdateReleaseNoteSchema = __vite_ssr_import_0__.Struct({
	version: __vite_ssr_import_0__.String,
	items: __vite_ssr_import_0__.Array(__vite_ssr_import_0__.String),
	totalItems: __vite_ssr_import_0__.Number
});
const DesktopUpdateStateSchema = __vite_ssr_import_0__.Struct({
	enabled: __vite_ssr_import_0__.Boolean,
	status: DesktopUpdateStatusSchema,
	channel: DesktopUpdateChannelSchema,
	currentVersion: __vite_ssr_import_0__.String,
	hostArch: DesktopRuntimeArchSchema,
	appArch: DesktopRuntimeArchSchema,
	runningUnderArm64Translation: __vite_ssr_import_0__.Boolean,
	availableVersion: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	downloadedVersion: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	releaseNotes: __vite_ssr_import_0__.Array(DesktopUpdateReleaseNoteSchema),
	omittedReleaseCount: __vite_ssr_import_0__.Number,
	downloadPercent: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.Number),
	checkedAt: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	message: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	errorContext: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.Literals([
		"check",
		"download",
		"install"
	])),
	canRetry: __vite_ssr_import_0__.Boolean,
	notAppliedVersion: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.String)
});
const DesktopCliCommandStateSchema = __vite_ssr_import_0__.Struct({
	supported: __vite_ssr_import_0__.Boolean,
	installedPath: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	onPath: __vite_ssr_import_0__.Boolean,
	shadowedBy: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.String)
});
const DesktopUpdateActionResultSchema = __vite_ssr_import_0__.Struct({
	accepted: __vite_ssr_import_0__.Boolean,
	completed: __vite_ssr_import_0__.Boolean,
	state: DesktopUpdateStateSchema
});
const DesktopUpdateCheckResultSchema = __vite_ssr_import_0__.Struct({
	checked: __vite_ssr_import_0__.Boolean,
	state: DesktopUpdateStateSchema
});
const PRIMARY_LOCAL_ENVIRONMENT_ID = "primary";
const DesktopEnvironmentBootstrapSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	label: __vite_ssr_import_0__.String,
	runningDistro: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)),
	httpBaseUrl: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	wsBaseUrl: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	bootstrapToken: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.String)
});
const DesktopSshEnvironmentTargetSchema = __vite_ssr_import_0__.Struct({
	alias: __vite_ssr_import_0__.String,
	hostname: __vite_ssr_import_0__.String,
	username: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	port: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.Number)
});
const DesktopSshHostSourceSchema = __vite_ssr_import_0__.Literals(["ssh-config", "known-hosts"]);
const DesktopDiscoveredSshHostSchema = __vite_ssr_import_0__.Struct({
	alias: __vite_ssr_import_0__.String,
	hostname: __vite_ssr_import_0__.String,
	username: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	port: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.Number),
	source: DesktopSshHostSourceSchema
});
const DesktopSshEnvironmentBootstrapSchema = __vite_ssr_import_0__.Struct({
	target: DesktopSshEnvironmentTargetSchema,
	httpBaseUrl: __vite_ssr_import_0__.String,
	wsBaseUrl: __vite_ssr_import_0__.String,
	pairingToken: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	remotePort: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Number),
	remoteServerKind: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Literals(["external", "managed"]))
});
const DesktopSshPasswordPromptCancelledType = "ssh-password-prompt-cancelled";
const DesktopSshPasswordPromptCancelledResultSchema = __vite_ssr_import_0__.Struct({
	type: __vite_ssr_import_0__.Literal(DesktopSshPasswordPromptCancelledType),
	message: __vite_ssr_import_0__.String
});
const DesktopSshEnvironmentEnsureOptionsSchema = __vite_ssr_import_0__.Struct({ issuePairingToken: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean) });
const DesktopSshEnvironmentEnsureInputSchema = __vite_ssr_import_0__.Struct({
	target: DesktopSshEnvironmentTargetSchema,
	options: __vite_ssr_import_0__.optionalKey(DesktopSshEnvironmentEnsureOptionsSchema)
});
const DesktopSshEnvironmentEnsureResultSchema = __vite_ssr_import_0__.Union([DesktopSshEnvironmentBootstrapSchema, DesktopSshPasswordPromptCancelledResultSchema]);
const DesktopSshHttpBaseUrlInputSchema = __vite_ssr_import_0__.Struct({ httpBaseUrl: __vite_ssr_import_0__.String });
const DesktopSshBearerRequestInputSchema = __vite_ssr_import_0__.Struct({
	httpBaseUrl: __vite_ssr_import_0__.String,
	bearerToken: __vite_ssr_import_0__.String
});
const DesktopSshBearerBootstrapInputSchema = __vite_ssr_import_0__.Struct({
	httpBaseUrl: __vite_ssr_import_0__.String,
	credential: __vite_ssr_import_0__.String
});
const DesktopSshPasswordPromptResolutionInputSchema = __vite_ssr_import_0__.Struct({
	requestId: __vite_ssr_import_0__.String,
	password: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)
});
const PersistedSavedEnvironmentRecordSchema = __vite_ssr_import_0__.Struct({
	environmentId: __vite_ssr_import_2__.EnvironmentId,
	label: __vite_ssr_import_0__.String,
	wsBaseUrl: __vite_ssr_import_0__.String,
	httpBaseUrl: __vite_ssr_import_0__.String,
	createdAt: __vite_ssr_import_0__.String,
	lastConnectedAt: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	desktopSsh: __vite_ssr_import_0__.optionalKey(DesktopSshEnvironmentTargetSchema),
	relayManaged: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Struct({ relayUrl: __vite_ssr_import_0__.String }))
});
const DesktopServerExposureModeSchema = __vite_ssr_import_0__.Literals(["local-only", "network-accessible"]);
const DesktopServerExposureStateSchema = __vite_ssr_import_0__.Struct({
	mode: DesktopServerExposureModeSchema,
	endpointUrl: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	advertisedHost: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	tailscaleServeEnabled: __vite_ssr_import_0__.Boolean,
	tailscaleServePort: __vite_ssr_import_0__.Number
});
const PickFolderOptionsSchema = __vite_ssr_import_0__.Struct({
	initialPath: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)),
	targetEnvironmentId: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.String)
});
const PickedThemeFileSchema = __vite_ssr_import_0__.Struct({
	name: __vite_ssr_import_0__.String,
	size: __vite_ssr_import_0__.Number,
	text: __vite_ssr_import_0__.String
});
const DesktopWslDistroSchema = __vite_ssr_import_0__.Struct({
	name: __vite_ssr_import_0__.String,
	isDefault: __vite_ssr_import_0__.Boolean,
	version: __vite_ssr_import_0__.Literals([1, 2])
});
const DesktopWslStateSchema = __vite_ssr_import_0__.Struct({
	enabled: __vite_ssr_import_0__.Boolean,
	distro: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	available: __vite_ssr_import_0__.Boolean,
	wslOnly: __vite_ssr_import_0__.Boolean,
	distros: __vite_ssr_import_0__.Array(DesktopWslDistroSchema),
	preflightError: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)
});
const DesktopPreviewColorSchemeSchema = __vite_ssr_import_0__.Literals([
	"system",
	"light",
	"dark"
]);
const FAVICON_DATA_URL_MAX_LENGTH = 8192;
const FAVICON_CAPTURED_AT_MAX = 864e13;
const DesktopPreviewTabIdSchema = __vite_ssr_import_0__.String.check(__vite_ssr_import_0__.isTrimmed()).check(__vite_ssr_import_0__.isNonEmpty());
const DesktopPreviewRecordingInputSchema = __vite_ssr_import_0__.Union([
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("pointer"),
		phase: __vite_ssr_import_0__.Literals([
			"move",
			"down",
			"up",
			"click"
		]),
		x: __vite_ssr_import_0__.Finite,
		y: __vite_ssr_import_0__.Finite,
		width: __vite_ssr_import_0__.Finite.check(__vite_ssr_import_0__.isGreaterThan(0)),
		height: __vite_ssr_import_0__.Finite.check(__vite_ssr_import_0__.isGreaterThan(0))
	}),
	__vite_ssr_import_0__.Struct({
		type: __vite_ssr_import_0__.Literal("key"),
		label: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String.check(__vite_ssr_import_0__.isMaxLength(100))),
		held: __vite_ssr_import_0__.Boolean,
		width: __vite_ssr_import_0__.Finite.check(__vite_ssr_import_0__.isGreaterThan(0))
	}),
	__vite_ssr_import_0__.Struct({ type: __vite_ssr_import_0__.Literal("clear") })
]);
const DesktopPreviewWebviewConfigSchema = __vite_ssr_import_0__.Struct({
	partition: __vite_ssr_import_0__.String,
	webPreferences: __vite_ssr_import_0__.String,
	preloadUrl: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String)
});
const DesktopPreviewAnnotationThemeSchema = __vite_ssr_import_0__.Struct({
	colorScheme: __vite_ssr_import_0__.Literals(["light", "dark"]),
	radius: __vite_ssr_import_0__.String,
	background: __vite_ssr_import_0__.String,
	foreground: __vite_ssr_import_0__.String,
	popover: __vite_ssr_import_0__.String,
	popoverForeground: __vite_ssr_import_0__.String,
	primary: __vite_ssr_import_0__.String,
	primaryForeground: __vite_ssr_import_0__.String,
	muted: __vite_ssr_import_0__.String,
	mutedForeground: __vite_ssr_import_0__.String,
	accent: __vite_ssr_import_0__.String,
	accentForeground: __vite_ssr_import_0__.String,
	border: __vite_ssr_import_0__.String,
	input: __vite_ssr_import_0__.String,
	ring: __vite_ssr_import_0__.String,
	fontSans: __vite_ssr_import_0__.String,
	fontMono: __vite_ssr_import_0__.String
});
const DesktopPreviewRecordingArtifactSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	tabId: DesktopPreviewTabIdSchema,
	path: __vite_ssr_import_0__.String,
	mimeType: __vite_ssr_import_0__.String,
	sizeBytes: __vite_ssr_import_0__.Int,
	createdAt: __vite_ssr_import_0__.String
});
const DesktopPreviewScreenshotArtifactSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	tabId: DesktopPreviewTabIdSchema,
	path: __vite_ssr_import_0__.String,
	mimeType: __vite_ssr_import_0__.Literal("image/png"),
	sizeBytes: __vite_ssr_import_0__.Int,
	createdAt: __vite_ssr_import_0__.String
});
const PickedElementStackFrameSchema = __vite_ssr_import_0__.Struct({
	functionName: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	fileName: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	lineNumber: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.Number),
	columnNumber: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.Number)
});
const PickedElementPayloadSchema = __vite_ssr_import_0__.Struct({
	pageUrl: __vite_ssr_import_0__.String,
	pageTitle: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	tagName: __vite_ssr_import_0__.String,
	selector: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	htmlPreview: __vite_ssr_import_0__.String,
	componentName: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	source: __vite_ssr_import_0__.NullOr(PickedElementStackFrameSchema),
	stack: __vite_ssr_import_0__.Array(PickedElementStackFrameSchema),
	styles: __vite_ssr_import_0__.String,
	pickedAt: __vite_ssr_import_0__.String
});
const PreviewAnnotationRectSchema = __vite_ssr_import_0__.Struct({
	x: __vite_ssr_import_0__.Number,
	y: __vite_ssr_import_0__.Number,
	width: __vite_ssr_import_0__.Number,
	height: __vite_ssr_import_0__.Number
});
const PreviewAnnotationPointSchema = __vite_ssr_import_0__.Struct({
	x: __vite_ssr_import_0__.Number,
	y: __vite_ssr_import_0__.Number
});
const PreviewAnnotationElementTargetSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	element: PickedElementPayloadSchema,
	rect: PreviewAnnotationRectSchema
});
const PreviewAnnotationRegionTargetSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	rect: PreviewAnnotationRectSchema
});
const PreviewAnnotationStrokeTargetSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	color: __vite_ssr_import_0__.String,
	width: __vite_ssr_import_0__.Number,
	points: __vite_ssr_import_0__.Array(PreviewAnnotationPointSchema),
	bounds: PreviewAnnotationRectSchema
});
const PreviewAnnotationStyleChangeSchema = __vite_ssr_import_0__.Struct({
	targetId: __vite_ssr_import_0__.String,
	selector: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	property: __vite_ssr_import_0__.String,
	previousValue: __vite_ssr_import_0__.String,
	value: __vite_ssr_import_0__.String
});
const PreviewAnnotationScreenshotSchema = __vite_ssr_import_0__.Struct({
	dataUrl: __vite_ssr_import_0__.String,
	width: __vite_ssr_import_0__.Number,
	height: __vite_ssr_import_0__.Number,
	cropRect: PreviewAnnotationRectSchema
});
const PreviewAnnotationPayloadSchema = __vite_ssr_import_0__.Struct({
	id: __vite_ssr_import_0__.String,
	pageUrl: __vite_ssr_import_0__.String,
	pageTitle: __vite_ssr_import_0__.NullOr(__vite_ssr_import_0__.String),
	comment: __vite_ssr_import_0__.String,
	elements: __vite_ssr_import_0__.Array(PreviewAnnotationElementTargetSchema),
	regions: __vite_ssr_import_0__.Array(PreviewAnnotationRegionTargetSchema),
	strokes: __vite_ssr_import_0__.Array(PreviewAnnotationStrokeTargetSchema),
	styleChanges: __vite_ssr_import_0__.Array(PreviewAnnotationStyleChangeSchema),
	screenshot: __vite_ssr_import_0__.NullOr(PreviewAnnotationScreenshotSchema),
	createdAt: __vite_ssr_import_0__.String
});
const PreviewAnnotationSubmissionSchema = __vite_ssr_import_0__.Literals(["attach", "send"]);
const PreviewAnnotationSubmissionResultSchema = __vite_ssr_import_0__.Struct({
	annotation: PreviewAnnotationPayloadSchema,
	submission: PreviewAnnotationSubmissionSchema,
	screenshotFailed: __vite_ssr_import_0__.optionalKey(__vite_ssr_import_0__.Boolean)
});
const DesktopPreviewTabInputSchema = __vite_ssr_import_0__.Struct({ tabId: DesktopPreviewTabIdSchema });
/** Apply zoom and color scheme at creation to avoid flashing browser defaults. */
const DesktopPreviewCreateTabInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	zoomFactor: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Number.check(__vite_ssr_import_0__.isGreaterThan(0))),
	colorScheme: __vite_ssr_import_0__.optional(DesktopPreviewColorSchemeSchema),
	serverTab: __vite_ssr_import_0__.optional(__vite_ssr_import_0__.Struct({
		threadId: __vite_ssr_import_2__.TrimmedNonEmptyString,
		tabId: __vite_ssr_import_2__.TrimmedNonEmptyString
	}))
});
const DesktopPreviewRegisterWebviewInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	webContentsId: __vite_ssr_import_0__.Int.check(__vite_ssr_import_0__.isGreaterThan(0))
});
const DesktopPreviewNavigateInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	url: __vite_ssr_import_0__.String
});
const DesktopPreviewConfigInputSchema = __vite_ssr_import_0__.Struct({
	environmentId: __vite_ssr_import_2__.EnvironmentId,
	/** Main must derive the partition to ensure its session has UA rewrites and permission handlers. */
	profileId: __vite_ssr_import_0__.optional((0,__vite_ssr_import_3__.BrowserProfileId))
});
const DesktopPreviewClearDataInputSchema = __vite_ssr_import_0__.Struct({
	environmentId: __vite_ssr_import_2__.EnvironmentId,
	/** Omit to clear every profile; otherwise only this profile's partition. */
	profileId: __vite_ssr_import_0__.optional((0,__vite_ssr_import_3__.BrowserProfileId))
});
const DesktopPreviewSetColorSchemeInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	colorScheme: DesktopPreviewColorSchemeSchema
});
const DesktopPreviewSetZoomFactorInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	zoomFactor: __vite_ssr_import_0__.Number.check(__vite_ssr_import_0__.isGreaterThan(0))
});
const DesktopPreviewSetAudioMutedInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	audioMuted: __vite_ssr_import_0__.Boolean
});
const DesktopPreviewAnnotationThemeInputSchema = __vite_ssr_import_0__.Struct({ theme: DesktopPreviewAnnotationThemeSchema });
const DesktopPreviewAnnotationSendEnabledInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	enabled: __vite_ssr_import_0__.Boolean
});
const DesktopPreviewArtifactInputSchema = __vite_ssr_import_0__.Struct({ path: __vite_ssr_import_0__.String.check(__vite_ssr_import_0__.isTrimmed()).check(__vite_ssr_import_0__.isNonEmpty()) });
const DesktopPreviewRecordingSaveInputSchema = __vite_ssr_import_0__.Struct({
	tabId: DesktopPreviewTabIdSchema,
	mimeType: __vite_ssr_import_0__.String.check(__vite_ssr_import_0__.isTrimmed()).check(__vite_ssr_import_0__.isNonEmpty()),
	data: __vite_ssr_import_0__.Uint8Array
});
const SystemSettingsPaneSchema = __vite_ssr_import_0__.Literals(["full-disk-access"]);
/** Renderer callback invoked by Electron with a fresh user gesture before display-media capture. */
const DESKTOP_PREVIEW_RECORDING_CAPTURE_TRIGGER = "__t3DesktopPreviewRecordingCapture";
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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QUFPO0NBQ2xFLE9BQU87Q0FDUCxVQUFVLHNCQUFPLE9BQU8sTUFBTSxzQkFBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sc0JBQU8sV0FBVyxDQUFDO0NBQzNFLE1BQU0sc0JBQU87QUFDZixDQUFDO0FBRU0sTUFBTSwyQkFBMkIsc0JBQU8sU0FBUyxDQUFDLGtCQUFrQixDQUFDOztBQStIckUsTUFBTSw0Q0FBNEMiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbImlwYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTY2hlbWEgZnJvbSBcImVmZmVjdC9TY2hlbWFcIjtcbmltcG9ydCB0eXBlIHsgUHJldmlld0NhcHR1cmVGYWlsdXJlRW5jb2RlZCB9IGZyb20gXCIuL3ByZXZpZXdDYXB0dXJlLnRzXCI7XG5cbmltcG9ydCB7IFNuYXBTaG90U291cmNlIH0gZnJvbSBcIi4vY2hhdEF0dGFjaG1lbnQudHNcIjtcbmltcG9ydCB7IEVudmlyb25tZW50SWQsIFRyaW1tZWROb25FbXB0eVN0cmluZyB9IGZyb20gXCIuL2Jhc2VTY2hlbWFzLnRzXCI7XG5pbXBvcnQgeyBCcm93c2VyUHJvZmlsZUlkIH0gZnJvbSBcIi4vYnJvd3NlclByb2ZpbGUudHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckltcG9ydFJlc3VsdCxcbiAgQnJvd3NlckltcG9ydFNvdXJjZSxcbiAgQnJvd3NlckltcG9ydFNvdXJjZUlkLFxufSBmcm9tIFwiLi9icm93c2VySW1wb3J0LnRzXCI7XG5pbXBvcnQgeyBBdXRoQWNjZXNzVG9rZW5SZXN1bHQsIEF1dGhTZXNzaW9uU3RhdGUsIEF1dGhXZWJTb2NrZXRUaWNrZXRSZXN1bHQgfSBmcm9tIFwiLi9hdXRoLnRzXCI7XG5pbXBvcnQgeyBBZHZlcnRpc2VkRW5kcG9pbnQgfSBmcm9tIFwiLi9yZW1vdGVBY2Nlc3MudHNcIjtcbmltcG9ydCB7IEV4ZWN1dGlvbkVudmlyb25tZW50RGVzY3JpcHRvciB9IGZyb20gXCIuL2Vudmlyb25tZW50LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENsaWVudFNldHRpbmdzLCB0eXBlIFF1aXRDb25maXJtYXRpb25Nb2RlLCBTbmFwU2hvdFNob3J0Y3V0IH0gZnJvbSBcIi4vc2V0dGluZ3MudHNcIjtcbmltcG9ydCB0eXBlIHsgRWRpdG9ySWQgfSBmcm9tIFwiLi9lZGl0b3IudHNcIjtcbmltcG9ydCB0eXBlIHsgUHJldmlld0ZvcndhcmRlZFNob3J0Y3V0IH0gZnJvbSBcIi4va2V5YmluZGluZ3MudHNcIjtcblxuaW1wb3J0IHR5cGUge1xuICBEZXNrdG9wQXBwQWN0aXZhdGlvblJlcXVlc3QsXG4gIERlc2t0b3BBcHBBY3RpdmF0aW9uUmVzcG9uc2UsXG59IGZyb20gXCIuL2Rlc2t0b3BBcHBBY3RpdmF0aW9uLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dE1lbnVJdGVtPFQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+IHtcbiAgaWQ6IFQ7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRlc3RydWN0aXZlPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBoZWFkZXI/OiBib29sZWFuO1xuICBpY29uPzogc3RyaW5nO1xuICBzZXBhcmF0b3JCZWZvcmU/OiBib29sZWFuO1xuICBjaGVja2VkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiByZWFkb25seSBDb250ZXh0TWVudUl0ZW08VD5bXTtcbn1cblxuZXhwb3J0IHR5cGUgUXVpdFNob3J0Y3V0SGludEV2ZW50ID1cbiAgfCB7IHJlYWRvbmx5IHN0YXRlOiBcImRvd25cIjsgcmVhZG9ubHkgbW9kZTogRXhjbHVkZTxRdWl0Q29uZmlybWF0aW9uTW9kZSwgXCJkaXJlY3RcIj4gfVxuICB8IHsgcmVhZG9ubHkgc3RhdGU6IFwidXBcIiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRNZW51SXRlbVNjaGVtYVR5cGUge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuICByZWFkb25seSBkZXN0cnVjdGl2ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaGVhZGVyPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2VwYXJhdG9yQmVmb3JlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2hlY2tlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogcmVhZG9ubHkgQ29udGV4dE1lbnVJdGVtU2NoZW1hVHlwZVtdO1xufVxuXG5leHBvcnQgY29uc3QgQ29udGV4dE1lbnVJdGVtU2NoZW1hOiBTY2hlbWEuQ29kZWM8Q29udGV4dE1lbnVJdGVtU2NoZW1hVHlwZT4gPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IFNjaGVtYS5TdHJpbmcsXG4gIGxhYmVsOiBTY2hlbWEuU3RyaW5nLFxuICBkZXN0cnVjdGl2ZTogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5Cb29sZWFuKSxcbiAgZGlzYWJsZWQ6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuQm9vbGVhbiksXG4gIGhlYWRlcjogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5Cb29sZWFuKSxcbiAgaWNvbjogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5TdHJpbmcpLFxuICBzZXBhcmF0b3JCZWZvcmU6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuQm9vbGVhbiksXG4gIGNoZWNrZWQ6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuQm9vbGVhbiksXG4gIGNoaWxkcmVuOiBTY2hlbWEub3B0aW9uYWxLZXkoXG4gICAgU2NoZW1hLkFycmF5KFxuICAgICAgU2NoZW1hLnN1c3BlbmQoKCk6IFNjaGVtYS5Db2RlYzxDb250ZXh0TWVudUl0ZW1TY2hlbWFUeXBlPiA9PiBDb250ZXh0TWVudUl0ZW1TY2hlbWEpLFxuICAgICksXG4gICksXG59KTtcblxuZXhwb3J0IHR5cGUgRGVza3RvcFVwZGF0ZVN0YXR1cyA9XG4gIHwgXCJkaXNhYmxlZFwiXG4gIHwgXCJpZGxlXCJcbiAgfCBcImNoZWNraW5nXCJcbiAgfCBcInVwLXRvLWRhdGVcIlxuICB8IFwiYXZhaWxhYmxlXCJcbiAgfCBcImRvd25sb2FkaW5nXCJcbiAgfCBcImRvd25sb2FkZWRcIlxuICB8IFwiZXJyb3JcIjtcblxuZXhwb3J0IHR5cGUgRGVza3RvcFJ1bnRpbWVBcmNoID0gXCJhcm02NFwiIHwgXCJ4NjRcIiB8IFwib3RoZXJcIjtcbmV4cG9ydCB0eXBlIERlc2t0b3BUaGVtZSA9IFwibGlnaHRcIiB8IFwiZGFya1wiIHwgXCJzeXN0ZW1cIjtcbmV4cG9ydCB0eXBlIERlc2t0b3BVcGRhdGVDaGFubmVsID0gXCJsYXRlc3RcIiB8IFwibmlnaHRseVwiO1xuZXhwb3J0IHR5cGUgRGVza3RvcEFwcFN0YWdlTGFiZWwgPSBcIkFscGhhXCIgfCBcIkJldGFcIiB8IFwiRGV2XCIgfCBcIk5pZ2h0bHlcIjtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BVcGRhdGVTdGF0dXNTY2hlbWEgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcImRpc2FibGVkXCIsXG4gIFwiaWRsZVwiLFxuICBcImNoZWNraW5nXCIsXG4gIFwidXAtdG8tZGF0ZVwiLFxuICBcImF2YWlsYWJsZVwiLFxuICBcImRvd25sb2FkaW5nXCIsXG4gIFwiZG93bmxvYWRlZFwiLFxuICBcImVycm9yXCIsXG5dKTtcbmV4cG9ydCBjb25zdCBEZXNrdG9wUnVudGltZUFyY2hTY2hlbWEgPSBTY2hlbWEuTGl0ZXJhbHMoW1wiYXJtNjRcIiwgXCJ4NjRcIiwgXCJvdGhlclwiXSk7XG5leHBvcnQgY29uc3QgRGVza3RvcFRoZW1lU2NoZW1hID0gU2NoZW1hLkxpdGVyYWxzKFtcImxpZ2h0XCIsIFwiZGFya1wiLCBcInN5c3RlbVwiXSk7XG5leHBvcnQgY29uc3QgRGVza3RvcFVwZGF0ZUNoYW5uZWxTY2hlbWEgPSBTY2hlbWEuTGl0ZXJhbHMoW1wibGF0ZXN0XCIsIFwibmlnaHRseVwiXSk7XG5leHBvcnQgY29uc3QgRGVza3RvcEFwcFN0YWdlTGFiZWxTY2hlbWEgPSBTY2hlbWEuTGl0ZXJhbHMoW1wiQWxwaGFcIiwgXCJCZXRhXCIsIFwiRGV2XCIsIFwiTmlnaHRseVwiXSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVza3RvcEFwcEJyYW5kaW5nIHtcbiAgYmFzZU5hbWU6IHN0cmluZztcbiAgc3RhZ2VMYWJlbDogRGVza3RvcEFwcFN0YWdlTGFiZWw7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wQXBwQnJhbmRpbmdTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgYmFzZU5hbWU6IFNjaGVtYS5TdHJpbmcsXG4gIHN0YWdlTGFiZWw6IERlc2t0b3BBcHBTdGFnZUxhYmVsU2NoZW1hLFxuICBkaXNwbGF5TmFtZTogU2NoZW1hLlN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFNuYXBTaG90TW9kZSA9IFNjaGVtYS5MaXRlcmFscyhbXCJkaXJlY3RcIiwgXCJwb3J0YWxcIiwgXCJ1bmF2YWlsYWJsZVwiXSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wU25hcFNob3RNb2RlID0gdHlwZW9mIERlc2t0b3BTbmFwU2hvdE1vZGUuVHlwZTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BDYXB0dXJlRXh0ZW5zaW9uU3RhdGUgPSBTY2hlbWEuU3RydWN0KHtcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1xuICAgIFwibm90LWluc3RhbGxlZFwiLFxuICAgIFwiZGlzYWJsZWRcIixcbiAgICBcImVuYWJsZWRcIixcbiAgICBcInJlc3RhcnQtcmVxdWlyZWRcIixcbiAgICBcInVwZGF0ZS1yZXF1aXJlZFwiLFxuICAgIFwiZXh0ZW5zaW9ucy1kaXNhYmxlZFwiLFxuICAgIFwidW5zdXBwb3J0ZWRcIixcbiAgICBcImVycm9yXCIsXG4gIF0pLFxuICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wQ2FwdHVyZUV4dGVuc2lvblN0YXRlID0gdHlwZW9mIERlc2t0b3BDYXB0dXJlRXh0ZW5zaW9uU3RhdGUuVHlwZTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BDYXB0dXJlSGVscGVyU3RhdGUgPSBTY2hlbWEuU3RydWN0KHtcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1wibm90LWluc3RhbGxlZFwiLCBcInVwZGF0ZS1yZXF1aXJlZFwiLCBcInJlYWR5XCIsIFwiZXJyb3JcIl0pLFxuICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICBmZWVkYmFja0F2YWlsYWJsZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgRGVza3RvcENhcHR1cmVIZWxwZXJTdGF0ZSA9IHR5cGVvZiBEZXNrdG9wQ2FwdHVyZUhlbHBlclN0YXRlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wU25hcFNob3RTZXR1cEFjdGlvbiA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwiaW5zdGFsbC1leHRlbnNpb25cIixcbiAgXCJlbmFibGUtZXh0ZW5zaW9uXCIsXG4gIFwiZGlzYWJsZS1leHRlbnNpb25cIixcbiAgXCJpbnN0YWxsLWtkZS1oZWxwZXJcIixcbiAgXCJyZW1vdmUta2RlLWhlbHBlclwiLFxuICBcImluc3RhbGwtaHlwcmxhbmQtaGVscGVyXCIsXG4gIFwicmVtb3ZlLWh5cHJsYW5kLWhlbHBlclwiLFxuICBcInRlc3QtbWFjLWNhcHR1cmVcIixcbiAgXCJhbGxvdy1zY3JlZW4tcmVjb3JkaW5nXCIsXG4gIFwiYWxsb3ctYWNjZXNzaWJpbGl0eVwiLFxuICBcInJldHJ5LXNob3J0Y3V0XCIsXG5dKTtcbmV4cG9ydCB0eXBlIERlc2t0b3BTbmFwU2hvdFNldHVwQWN0aW9uID0gdHlwZW9mIERlc2t0b3BTbmFwU2hvdFNldHVwQWN0aW9uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wQ2FwdHVyZUNvbmZpZ1JlcXVlc3QgPSBTY2hlbWEuU3RydWN0KHtcbiAgb3BlcmF0aW9uOiBTY2hlbWEuTGl0ZXJhbHMoW1wiaW5zdGFsbFwiLCBcInJlbW92ZVwiXSksXG4gIGNob29zZUZpbGU6IFNjaGVtYS5Cb29sZWFuLFxuICBzaG9ydGN1dDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDgwKSkpLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wQ2FwdHVyZUNvbmZpZ1JlcXVlc3QgPSB0eXBlb2YgRGVza3RvcENhcHR1cmVDb25maWdSZXF1ZXN0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wQ2FwdHVyZUNvbmZpZ1ByZXZpZXcgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IFNjaGVtYS5TdHJpbmcsXG4gIHBhdGg6IFNjaGVtYS5TdHJpbmcsXG4gIHJlc29sdmVkUGF0aDogU2NoZW1hLlN0cmluZyxcbiAgYmVmb3JlOiBTY2hlbWEuU3RyaW5nLFxuICBhZnRlcjogU2NoZW1hLlN0cmluZyxcbiAgc2hvcnRjdXQ6IFNjaGVtYS5TdHJpbmcsXG4gIG9wZXJhdGlvbjogU2NoZW1hLkxpdGVyYWxzKFtcImluc3RhbGxcIiwgXCJyZW1vdmVcIl0pLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wQ2FwdHVyZUNvbmZpZ1ByZXZpZXcgPSB0eXBlb2YgRGVza3RvcENhcHR1cmVDb25maWdQcmV2aWV3LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wQ2FwdHVyZUNvbmZpZ0FwcGxpZWQgPSBTY2hlbWEuU3RydWN0KHtcbiAgYmFja3VwUGF0aDogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbiAgd2FybmluZzogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbn0pO1xuZXhwb3J0IHR5cGUgRGVza3RvcENhcHR1cmVDb25maWdBcHBsaWVkID0gdHlwZW9mIERlc2t0b3BDYXB0dXJlQ29uZmlnQXBwbGllZC5UeXBlO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFNuYXBTaG90U3RhdGUgPSBTY2hlbWEuU3RydWN0KHtcbiAgbW9kZTogRGVza3RvcFNuYXBTaG90TW9kZSxcbiAgd2luZG93czogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgbGludXhEZXNrdG9wOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkxpdGVyYWxzKFtcImdub21lXCIsIFwia2RlXCIsIFwibmlyaVwiLCBcImh5cHJsYW5kXCJdKSksXG4gIGxpbnV4QmFja2VuZDogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5MaXRlcmFscyhbXCJzY3JlZW5zaG90LXBvcnRhbFwiLCBcImdub21lLWV4dGVuc2lvblwiLCBcIm5pcmlcIiwgXCJrZGVcIiwgXCJoeXBybGFuZFwiLCBcInBpY2tlclwiXSksXG4gICksXG4gIGxpbnV4RmVlZGJhY2tBdmFpbGFibGU6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIHNob3J0Y3V0OiBTbmFwU2hvdFNob3J0Y3V0LFxuICBzaG9ydGN1dFJlZ2lzdGVyZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBzaG9ydGN1dFBlbmRpbmc6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIHNob3J0Y3V0Q2FuUmV0cnk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIHNob3J0Y3V0TGFiZWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgc2hvcnRjdXRNZXNzYWdlOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBzaG9ydGN1dEJpbmRpbmc6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgc2hvcnRjdXRDb25maWdQYXRoOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIHNob3J0Y3V0QWN0aW9uUmVnaXN0ZXJlZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgZ25vbWVFeHRlbnNpb246IFNjaGVtYS5vcHRpb25hbChEZXNrdG9wQ2FwdHVyZUV4dGVuc2lvblN0YXRlKSxcbiAga2RlSGVscGVyOiBTY2hlbWEub3B0aW9uYWwoRGVza3RvcENhcHR1cmVIZWxwZXJTdGF0ZSksXG4gIGh5cHJsYW5kSGVscGVyOiBTY2hlbWEub3B0aW9uYWwoRGVza3RvcENhcHR1cmVIZWxwZXJTdGF0ZSksXG4gIG1hY1Blcm1pc3Npb25zOiBTY2hlbWEub3B0aW9uYWwoXG4gICAgU2NoZW1hLlN0cnVjdCh7IHNjcmVlblJlY29yZGluZzogU2NoZW1hLkJvb2xlYW4sIGFjY2Vzc2liaWxpdHk6IFNjaGVtYS5Cb29sZWFuIH0pLFxuICApLFxuICBzaG9ydGN1dFZlcmlmaWVkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBtZXNzYWdlOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wU25hcFNob3RTdGF0ZSA9IHR5cGVvZiBEZXNrdG9wU25hcFNob3RTdGF0ZS5UeXBlO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFNuYXBTaG90U2hvcnRjdXRBdmFpbGFiaWxpdHkgPSBTY2hlbWEuU3RydWN0KHtcbiAgYXZhaWxhYmxlOiBTY2hlbWEuQm9vbGVhbixcbiAgbWVzc2FnZTogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbn0pO1xuZXhwb3J0IHR5cGUgRGVza3RvcFNuYXBTaG90U2hvcnRjdXRBdmFpbGFiaWxpdHkgPSB0eXBlb2YgRGVza3RvcFNuYXBTaG90U2hvcnRjdXRBdmFpbGFiaWxpdHkuVHlwZTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTbmFwU2hvdElkID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFxuICBTY2hlbWEuaXNNYXhMZW5ndGgoNjQpLFxuICBTY2hlbWEuaXNQYXR0ZXJuKC9eW2EtZjAtOS1dKyQvaSksXG4pO1xuZXhwb3J0IHR5cGUgRGVza3RvcFNuYXBTaG90SWQgPSB0eXBlb2YgRGVza3RvcFNuYXBTaG90SWQuVHlwZTtcblxuLyoqIGBpZGAgaXMgYWJzZW50IGZvciBmYWlsdXJlcyBiZWZvcmUgYSBjYXB0dXJlIGV4aXN0cy4gKi9cbmV4cG9ydCBjb25zdCBEZXNrdG9wU25hcFNob3RFdmVudCA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJlcXVlc3RlZFwiKSwgaWQ6IERlc2t0b3BTbmFwU2hvdElkIH0pLFxuICBTY2hlbWEuU3RydWN0KHsgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJzdGFydGVkXCIpLCBpZDogRGVza3RvcFNuYXBTaG90SWQgfSksXG4gIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJlYWR5XCIpLCBpZDogRGVza3RvcFNuYXBTaG90SWQgfSksXG4gIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImZhaWxlZFwiKSwgaWQ6IFNjaGVtYS5vcHRpb25hbChEZXNrdG9wU25hcFNob3RJZCkgfSksXG4gIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInNob3J0Y3V0LWNoYW5nZWRcIikgfSksXG5dKTtcbmV4cG9ydCB0eXBlIERlc2t0b3BTbmFwU2hvdEV2ZW50ID0gdHlwZW9mIERlc2t0b3BTbmFwU2hvdEV2ZW50LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wUGVuZGluZ1NuYXBTaG90ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBEZXNrdG9wU25hcFNob3RJZCxcbiAgbmFtZTogU2NoZW1hLlN0cmluZyxcbiAgbWltZVR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiaW1hZ2UvcG5nXCIpLFxuICBzaXplQnl0ZXM6IFNjaGVtYS5JbnQsXG4gIHNvdXJjZTogU25hcFNob3RTb3VyY2UsXG59KTtcbmV4cG9ydCB0eXBlIERlc2t0b3BQZW5kaW5nU25hcFNob3QgPSB0eXBlb2YgRGVza3RvcFBlbmRpbmdTbmFwU2hvdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFNuYXBTaG90ID0gU2NoZW1hLlN0cnVjdCh7XG4gIC4uLkRlc2t0b3BQZW5kaW5nU25hcFNob3QuZmllbGRzLFxuICBkYXRhVXJsOiBTY2hlbWEuU3RyaW5nLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wU25hcFNob3QgPSB0eXBlb2YgRGVza3RvcFNuYXBTaG90LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wU25hcFNob3RBbmltYXRpb25EZXN0aW5hdGlvbiA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogRGVza3RvcFNuYXBTaG90SWQsXG4gIHZpZXdwb3J0RnJhbWU6IFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHg6IFNjaGVtYS5OdW1iZXIsXG4gICAgeTogU2NoZW1hLk51bWJlcixcbiAgICB3aWR0aDogU2NoZW1hLk51bWJlcixcbiAgICBoZWlnaHQ6IFNjaGVtYS5OdW1iZXIsXG4gIH0pLFxuICBiYWNrZ3JvdW5kQ29sb3I6IFNjaGVtYS5TdHJpbmcsXG4gIGJvcmRlckNvbG9yOiBTY2hlbWEuU3RyaW5nLFxuICBib3JkZXJXaWR0aDogU2NoZW1hLk51bWJlcixcbiAgY29ybmVyUmFkaXVzOiBTY2hlbWEuTnVtYmVyLFxuICBkZXRhaWxzOiBTY2hlbWEub3B0aW9uYWwoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICBhcHBOYW1lOiBTbmFwU2hvdFNvdXJjZS5maWVsZHMuYXBwTmFtZSxcbiAgICAgIHdpbmRvd1RpdGxlOiBTbmFwU2hvdFNvdXJjZS5maWVsZHMud2luZG93VGl0bGUsXG4gICAgICBhcHBJY29uRGF0YVVybDogU25hcFNob3RTb3VyY2UuZmllbGRzLmFwcEljb25EYXRhVXJsLFxuICAgIH0pLFxuICApLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wU25hcFNob3RBbmltYXRpb25EZXN0aW5hdGlvbiA9IHR5cGVvZiBEZXNrdG9wU25hcFNob3RBbmltYXRpb25EZXN0aW5hdGlvbi5UeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BSdW50aW1lSW5mbyB7XG4gIGhvc3RBcmNoOiBEZXNrdG9wUnVudGltZUFyY2g7XG4gIGFwcEFyY2g6IERlc2t0b3BSdW50aW1lQXJjaDtcbiAgcnVubmluZ1VuZGVyQXJtNjRUcmFuc2xhdGlvbjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wVXBkYXRlU3RhdGUge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBzdGF0dXM6IERlc2t0b3BVcGRhdGVTdGF0dXM7XG4gIGNoYW5uZWw6IERlc2t0b3BVcGRhdGVDaGFubmVsO1xuICBjdXJyZW50VmVyc2lvbjogc3RyaW5nO1xuICBob3N0QXJjaDogRGVza3RvcFJ1bnRpbWVBcmNoO1xuICBhcHBBcmNoOiBEZXNrdG9wUnVudGltZUFyY2g7XG4gIHJ1bm5pbmdVbmRlckFybTY0VHJhbnNsYXRpb246IGJvb2xlYW47XG4gIGF2YWlsYWJsZVZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIGRvd25sb2FkZWRWZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICByZWxlYXNlTm90ZXM6IFJlYWRvbmx5QXJyYXk8RGVza3RvcFVwZGF0ZVJlbGVhc2VOb3RlPjtcbiAgb21pdHRlZFJlbGVhc2VDb3VudDogbnVtYmVyO1xuICBkb3dubG9hZFBlcmNlbnQ6IG51bWJlciB8IG51bGw7XG4gIGNoZWNrZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgbWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3JDb250ZXh0OiBcImNoZWNrXCIgfCBcImRvd25sb2FkXCIgfCBcImluc3RhbGxcIiB8IG51bGw7XG4gIGNhblJldHJ5OiBib29sZWFuO1xuICBub3RBcHBsaWVkVmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wVXBkYXRlUmVsZWFzZU5vdGUge1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGl0ZW1zOiBSZWFkb25seUFycmF5PHN0cmluZz47XG4gIHRvdGFsSXRlbXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BVcGRhdGVSZWxlYXNlTm90ZVNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB2ZXJzaW9uOiBTY2hlbWEuU3RyaW5nLFxuICBpdGVtczogU2NoZW1hLkFycmF5KFNjaGVtYS5TdHJpbmcpLFxuICB0b3RhbEl0ZW1zOiBTY2hlbWEuTnVtYmVyLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wVXBkYXRlU3RhdGVTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgZW5hYmxlZDogU2NoZW1hLkJvb2xlYW4sXG4gIHN0YXR1czogRGVza3RvcFVwZGF0ZVN0YXR1c1NjaGVtYSxcbiAgY2hhbm5lbDogRGVza3RvcFVwZGF0ZUNoYW5uZWxTY2hlbWEsXG4gIGN1cnJlbnRWZXJzaW9uOiBTY2hlbWEuU3RyaW5nLFxuICBob3N0QXJjaDogRGVza3RvcFJ1bnRpbWVBcmNoU2NoZW1hLFxuICBhcHBBcmNoOiBEZXNrdG9wUnVudGltZUFyY2hTY2hlbWEsXG4gIHJ1bm5pbmdVbmRlckFybTY0VHJhbnNsYXRpb246IFNjaGVtYS5Cb29sZWFuLFxuICBhdmFpbGFibGVWZXJzaW9uOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBkb3dubG9hZGVkVmVyc2lvbjogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbiAgcmVsZWFzZU5vdGVzOiBTY2hlbWEuQXJyYXkoRGVza3RvcFVwZGF0ZVJlbGVhc2VOb3RlU2NoZW1hKSxcbiAgb21pdHRlZFJlbGVhc2VDb3VudDogU2NoZW1hLk51bWJlcixcbiAgZG93bmxvYWRQZXJjZW50OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5OdW1iZXIpLFxuICBjaGVja2VkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIG1lc3NhZ2U6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIGVycm9yQ29udGV4dDogU2NoZW1hLk51bGxPcihTY2hlbWEuTGl0ZXJhbHMoW1wiY2hlY2tcIiwgXCJkb3dubG9hZFwiLCBcImluc3RhbGxcIl0pKSxcbiAgY2FuUmV0cnk6IFNjaGVtYS5Cb29sZWFuLFxuICBub3RBcHBsaWVkVmVyc2lvbjogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5TdHJpbmcpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wQ2xpQ29tbWFuZFN0YXRlU2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHN1cHBvcnRlZDogU2NoZW1hLkJvb2xlYW4sXG4gIGluc3RhbGxlZFBhdGg6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIG9uUGF0aDogU2NoZW1hLkJvb2xlYW4sXG4gIHNoYWRvd2VkQnk6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuU3RyaW5nKSxcbn0pO1xuZXhwb3J0IHR5cGUgRGVza3RvcENsaUNvbW1hbmRTdGF0ZSA9IHR5cGVvZiBEZXNrdG9wQ2xpQ29tbWFuZFN0YXRlU2NoZW1hLlR5cGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVza3RvcFVwZGF0ZUFjdGlvblJlc3VsdCB7XG4gIGFjY2VwdGVkOiBib29sZWFuO1xuICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gIHN0YXRlOiBEZXNrdG9wVXBkYXRlU3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wVXBkYXRlQWN0aW9uUmVzdWx0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFjY2VwdGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgY29tcGxldGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgc3RhdGU6IERlc2t0b3BVcGRhdGVTdGF0ZVNjaGVtYSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BVcGRhdGVDaGVja1Jlc3VsdCB7XG4gIGNoZWNrZWQ6IGJvb2xlYW47XG4gIHN0YXRlOiBEZXNrdG9wVXBkYXRlU3RhdGU7XG59XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wVXBkYXRlQ2hlY2tSZXN1bHRTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgY2hlY2tlZDogU2NoZW1hLkJvb2xlYW4sXG4gIHN0YXRlOiBEZXNrdG9wVXBkYXRlU3RhdGVTY2hlbWEsXG59KTtcblxuZXhwb3J0IGNvbnN0IFBSSU1BUllfTE9DQUxfRU5WSVJPTk1FTlRfSUQgPSBcInByaW1hcnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wRW52aXJvbm1lbnRCb290c3RyYXAge1xuICAvLyBTdGFibGUgYmFja2VuZCBpZGVudGl0eSB1c2VkIHRvIHJlb3BlbiByb3V0ZWQgcHJvamVjdHMuXG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8vIEFjdHVhbCBkaXN0cm8gZm9yIHRoaXMgcnVuOyBpZCBzdGF5cyB3c2w6ZGVmYXVsdCB3aGVuIHRyYWNraW5nIHRoZSBkZWZhdWx0LlxuICBydW5uaW5nRGlzdHJvPzogc3RyaW5nIHwgbnVsbDtcbiAgaHR0cEJhc2VVcmw6IHN0cmluZyB8IG51bGw7XG4gIHdzQmFzZVVybDogc3RyaW5nIHwgbnVsbDtcbiAgYm9vdHN0cmFwVG9rZW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wRW52aXJvbm1lbnRCb290c3RyYXBTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IFNjaGVtYS5TdHJpbmcsXG4gIGxhYmVsOiBTY2hlbWEuU3RyaW5nLFxuICBydW5uaW5nRGlzdHJvOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSksXG4gIGh0dHBCYXNlVXJsOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICB3c0Jhc2VVcmw6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIGJvb3RzdHJhcFRva2VuOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLlN0cmluZyksXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTc2hFbnZpcm9ubWVudFRhcmdldFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBhbGlhczogU2NoZW1hLlN0cmluZyxcbiAgaG9zdG5hbWU6IFNjaGVtYS5TdHJpbmcsXG4gIHVzZXJuYW1lOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBwb3J0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5OdW1iZXIpLFxufSk7XG5leHBvcnQgdHlwZSBEZXNrdG9wU3NoRW52aXJvbm1lbnRUYXJnZXQgPSB0eXBlb2YgRGVza3RvcFNzaEVudmlyb25tZW50VGFyZ2V0U2NoZW1hLlR5cGU7XG5cbmV4cG9ydCB0eXBlIERlc2t0b3BTc2hIb3N0U291cmNlID0gXCJzc2gtY29uZmlnXCIgfCBcImtub3duLWhvc3RzXCI7XG5leHBvcnQgY29uc3QgRGVza3RvcFNzaEhvc3RTb3VyY2VTY2hlbWEgPSBTY2hlbWEuTGl0ZXJhbHMoW1wic3NoLWNvbmZpZ1wiLCBcImtub3duLWhvc3RzXCJdKTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wRGlzY292ZXJlZFNzaEhvc3QgZXh0ZW5kcyBEZXNrdG9wU3NoRW52aXJvbm1lbnRUYXJnZXQge1xuICBzb3VyY2U6IERlc2t0b3BTc2hIb3N0U291cmNlO1xufVxuXG5leHBvcnQgY29uc3QgRGVza3RvcERpc2NvdmVyZWRTc2hIb3N0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFsaWFzOiBTY2hlbWEuU3RyaW5nLFxuICBob3N0bmFtZTogU2NoZW1hLlN0cmluZyxcbiAgdXNlcm5hbWU6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIHBvcnQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLk51bWJlciksXG4gIHNvdXJjZTogRGVza3RvcFNzaEhvc3RTb3VyY2VTY2hlbWEsXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wU3NoRW52aXJvbm1lbnRCb290c3RyYXAge1xuICB0YXJnZXQ6IERlc2t0b3BTc2hFbnZpcm9ubWVudFRhcmdldDtcbiAgaHR0cEJhc2VVcmw6IHN0cmluZztcbiAgd3NCYXNlVXJsOiBzdHJpbmc7XG4gIHBhaXJpbmdUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgcmVtb3RlUG9ydD86IG51bWJlcjtcbiAgcmVtb3RlU2VydmVyS2luZD86IFwiZXh0ZXJuYWxcIiB8IFwibWFuYWdlZFwiO1xufVxuXG5leHBvcnQgY29uc3QgRGVza3RvcFNzaEVudmlyb25tZW50Qm9vdHN0cmFwU2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRhcmdldDogRGVza3RvcFNzaEVudmlyb25tZW50VGFyZ2V0U2NoZW1hLFxuICBodHRwQmFzZVVybDogU2NoZW1hLlN0cmluZyxcbiAgd3NCYXNlVXJsOiBTY2hlbWEuU3RyaW5nLFxuICBwYWlyaW5nVG9rZW46IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIHJlbW90ZVBvcnQ6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuTnVtYmVyKSxcbiAgcmVtb3RlU2VydmVyS2luZDogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5MaXRlcmFscyhbXCJleHRlcm5hbFwiLCBcIm1hbmFnZWRcIl0pKSxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BTc2hQYXNzd29yZFByb21wdFJlcXVlc3Qge1xuICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHByb21wdDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTc2hQYXNzd29yZFByb21wdENhbmNlbGxlZFR5cGUgPSBcInNzaC1wYXNzd29yZC1wcm9tcHQtY2FuY2VsbGVkXCIgYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wU3NoUGFzc3dvcmRQcm9tcHRDYW5jZWxsZWRSZXN1bHRTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgdHlwZTogU2NoZW1hLkxpdGVyYWwoRGVza3RvcFNzaFBhc3N3b3JkUHJvbXB0Q2FuY2VsbGVkVHlwZSksXG4gIG1lc3NhZ2U6IFNjaGVtYS5TdHJpbmcsXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTc2hFbnZpcm9ubWVudEVuc3VyZU9wdGlvbnNTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgaXNzdWVQYWlyaW5nVG9rZW46IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuQm9vbGVhbiksXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTc2hFbnZpcm9ubWVudEVuc3VyZUlucHV0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRhcmdldDogRGVza3RvcFNzaEVudmlyb25tZW50VGFyZ2V0U2NoZW1hLFxuICBvcHRpb25zOiBTY2hlbWEub3B0aW9uYWxLZXkoRGVza3RvcFNzaEVudmlyb25tZW50RW5zdXJlT3B0aW9uc1NjaGVtYSksXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTc2hFbnZpcm9ubWVudEVuc3VyZVJlc3VsdFNjaGVtYSA9IFNjaGVtYS5VbmlvbihbXG4gIERlc2t0b3BTc2hFbnZpcm9ubWVudEJvb3RzdHJhcFNjaGVtYSxcbiAgRGVza3RvcFNzaFBhc3N3b3JkUHJvbXB0Q2FuY2VsbGVkUmVzdWx0U2NoZW1hLFxuXSk7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wU3NoSHR0cEJhc2VVcmxJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBodHRwQmFzZVVybDogU2NoZW1hLlN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFNzaEJlYXJlclJlcXVlc3RJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBodHRwQmFzZVVybDogU2NoZW1hLlN0cmluZyxcbiAgYmVhcmVyVG9rZW46IFNjaGVtYS5TdHJpbmcsXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTc2hCZWFyZXJCb290c3RyYXBJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBodHRwQmFzZVVybDogU2NoZW1hLlN0cmluZyxcbiAgY3JlZGVudGlhbDogU2NoZW1hLlN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFNzaFBhc3N3b3JkUHJvbXB0UmVzb2x1dGlvbklucHV0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHJlcXVlc3RJZDogU2NoZW1hLlN0cmluZyxcbiAgcGFzc3dvcmQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG59KTtcblxuZXhwb3J0IGNvbnN0IFBlcnNpc3RlZFNhdmVkRW52aXJvbm1lbnRSZWNvcmRTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgZW52aXJvbm1lbnRJZDogRW52aXJvbm1lbnRJZCxcbiAgbGFiZWw6IFNjaGVtYS5TdHJpbmcsXG4gIHdzQmFzZVVybDogU2NoZW1hLlN0cmluZyxcbiAgaHR0cEJhc2VVcmw6IFNjaGVtYS5TdHJpbmcsXG4gIGNyZWF0ZWRBdDogU2NoZW1hLlN0cmluZyxcbiAgbGFzdENvbm5lY3RlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBkZXNrdG9wU3NoOiBTY2hlbWEub3B0aW9uYWxLZXkoRGVza3RvcFNzaEVudmlyb25tZW50VGFyZ2V0U2NoZW1hKSxcbiAgcmVsYXlNYW5hZ2VkOiBTY2hlbWEub3B0aW9uYWxLZXkoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICByZWxheVVybDogU2NoZW1hLlN0cmluZyxcbiAgICB9KSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGVyc2lzdGVkU2F2ZWRFbnZpcm9ubWVudFJlY29yZCA9IHR5cGVvZiBQZXJzaXN0ZWRTYXZlZEVudmlyb25tZW50UmVjb3JkU2NoZW1hLlR5cGU7XG5cbmV4cG9ydCB0eXBlIERlc2t0b3BTZXJ2ZXJFeHBvc3VyZU1vZGUgPSBcImxvY2FsLW9ubHlcIiB8IFwibmV0d29yay1hY2Nlc3NpYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wU2VydmVyRXhwb3N1cmVNb2RlU2NoZW1hID0gU2NoZW1hLkxpdGVyYWxzKFtcbiAgXCJsb2NhbC1vbmx5XCIsXG4gIFwibmV0d29yay1hY2Nlc3NpYmxlXCIsXG5dKTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wU2VydmVyRXhwb3N1cmVTdGF0ZSB7XG4gIG1vZGU6IERlc2t0b3BTZXJ2ZXJFeHBvc3VyZU1vZGU7XG4gIGVuZHBvaW50VXJsOiBzdHJpbmcgfCBudWxsO1xuICBhZHZlcnRpc2VkSG9zdDogc3RyaW5nIHwgbnVsbDtcbiAgdGFpbHNjYWxlU2VydmVFbmFibGVkOiBib29sZWFuO1xuICB0YWlsc2NhbGVTZXJ2ZVBvcnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BTZXJ2ZXJFeHBvc3VyZVN0YXRlU2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIG1vZGU6IERlc2t0b3BTZXJ2ZXJFeHBvc3VyZU1vZGVTY2hlbWEsXG4gIGVuZHBvaW50VXJsOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBhZHZlcnRpc2VkSG9zdDogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbiAgdGFpbHNjYWxlU2VydmVFbmFibGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgdGFpbHNjYWxlU2VydmVQb3J0OiBTY2hlbWEuTnVtYmVyLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0ZvbGRlck9wdGlvbnMge1xuICBpbml0aWFsUGF0aD86IHN0cmluZyB8IG51bGw7XG4gIHRhcmdldEVudmlyb25tZW50SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQaWNrRm9sZGVyT3B0aW9uc1NjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpbml0aWFsUGF0aDogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZykpLFxuICB0YXJnZXRFbnZpcm9ubWVudElkOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLlN0cmluZyksXG59KTtcblxuLyoqIE92ZXJzaXplZCBmaWxlcyBoYXZlIGVtcHR5IHRleHQgc28gdGhlIG1haW4gcHJvY2VzcyBuZXZlciBsb2FkcyB0aGVpciBjb250ZW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2VkVGhlbWVGaWxlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFBpY2tlZFRoZW1lRmlsZVNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBuYW1lOiBTY2hlbWEuU3RyaW5nLFxuICBzaXplOiBTY2hlbWEuTnVtYmVyLFxuICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVza3RvcFdzbERpc3RybyB7XG4gIG5hbWU6IHN0cmluZztcbiAgaXNEZWZhdWx0OiBib29sZWFuO1xuICB2ZXJzaW9uOiAxIHwgMjtcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BXc2xEaXN0cm9TY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgbmFtZTogU2NoZW1hLlN0cmluZyxcbiAgaXNEZWZhdWx0OiBTY2hlbWEuQm9vbGVhbixcbiAgdmVyc2lvbjogU2NoZW1hLkxpdGVyYWxzKFsxLCAyXSksXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wV3NsU3RhdGUge1xuICBlbmFibGVkOiBib29sZWFuO1xuICAvLyBudWxsIG1lYW5zIFwidHJhY2sgdGhlIGN1cnJlbnQgV1NMIGRlZmF1bHQgZGlzdHJvXCIuXG4gIGRpc3Rybzogc3RyaW5nIHwgbnVsbDtcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xuICB3c2xPbmx5OiBib29sZWFuO1xuICBkaXN0cm9zOiByZWFkb25seSBEZXNrdG9wV3NsRGlzdHJvW107XG4gIC8vIEFsd2F5cyBudWxsIGluIHdzbC1vbmx5IG1vZGUsIHdoaWNoIGZhbGxzIGJhY2sgdG8gV2luZG93cyB3aXRoIGEgZGlhbG9nLlxuICBwcmVmbGlnaHRFcnJvcjogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BXc2xTdGF0ZVNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBlbmFibGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgZGlzdHJvOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBhdmFpbGFibGU6IFNjaGVtYS5Cb29sZWFuLFxuICB3c2xPbmx5OiBTY2hlbWEuQm9vbGVhbixcbiAgZGlzdHJvczogU2NoZW1hLkFycmF5KERlc2t0b3BXc2xEaXN0cm9TY2hlbWEpLFxuICBwcmVmbGlnaHRFcnJvcjogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBEZXNrdG9wUHJldmlld05hdlN0YXR1cyA9XG4gIHwgeyBraW5kOiBcIklkbGVcIiB9XG4gIHwgeyBraW5kOiBcIkxvYWRpbmdcIjsgdXJsOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJTdWNjZXNzXCI7IHVybDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH1cbiAgfCB7XG4gICAgICBraW5kOiBcIkxvYWRGYWlsZWRcIjtcbiAgICAgIHVybDogc3RyaW5nO1xuICAgICAgdGl0bGU6IHN0cmluZztcbiAgICAgIGNvZGU6IG51bWJlcjtcbiAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgRGVza3RvcFByZXZpZXdDb2xvclNjaGVtZSA9IFwic3lzdGVtXCIgfCBcImxpZ2h0XCIgfCBcImRhcmtcIjtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3Q29sb3JTY2hlbWVTY2hlbWE6IFNjaGVtYS5Db2RlYzxEZXNrdG9wUHJldmlld0NvbG9yU2NoZW1lPiA9XG4gIFNjaGVtYS5MaXRlcmFscyhbXCJzeXN0ZW1cIiwgXCJsaWdodFwiLCBcImRhcmtcIl0pO1xuXG5leHBvcnQgY29uc3QgRkFWSUNPTl9EQVRBX1VSTF9NQVhfTEVOR1RIID0gODE5MjtcbmV4cG9ydCBjb25zdCBGQVZJQ09OX0NBUFRVUkVEX0FUX01BWCA9IDhfNjQwXzAwMF8wMDBfMDAwXzAwMDtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wUHJldmlld0Zhdmljb24ge1xuICBkYXRhVXJsOiBzdHJpbmc7XG4gIHBhZ2VVcmw6IHN0cmluZztcbiAgY2FwdHVyZWRBdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BQcmV2aWV3VGFiU3RhdGUge1xuICB0YWJJZDogc3RyaW5nO1xuICB3ZWJDb250ZW50c0lkOiBudW1iZXIgfCBudWxsO1xuICBuYXZTdGF0dXM6IERlc2t0b3BQcmV2aWV3TmF2U3RhdHVzO1xuICBjYW5Hb0JhY2s6IGJvb2xlYW47XG4gIGNhbkdvRm9yd2FyZDogYm9vbGVhbjtcbiAgem9vbUZhY3RvcjogbnVtYmVyO1xuICBwaWN0dXJlSW5QaWN0dXJlOiBib29sZWFuO1xuICBjb2xvclNjaGVtZTogRGVza3RvcFByZXZpZXdDb2xvclNjaGVtZTtcbiAgYXVkaW9NdXRlZDogYm9vbGVhbjtcbiAgLyoqIENocm9taXVtIHJlcG9ydHMgcGxheWJhY2sgZXZlbiB3aGVuIGF1ZGlvTXV0ZWQgaXMgdHJ1ZS4gKi9cbiAgYXVkaWJsZTogYm9vbGVhbjtcbiAgY29udHJvbGxlcjogXCJodW1hblwiIHwgXCJhZ2VudFwiIHwgXCJub25lXCI7XG4gIGZhdmljb24/OiBEZXNrdG9wUHJldmlld0Zhdmljb247XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdUYWJJZFNjaGVtYSA9IFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzVHJpbW1lZCgpKS5jaGVjayhcbiAgU2NoZW1hLmlzTm9uRW1wdHkoKSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVza3RvcFByZXZpZXdQb2ludGVyRXZlbnQge1xuICB0YWJJZDogc3RyaW5nO1xuICBwaGFzZTogXCJtb3ZlXCIgfCBcImNsaWNrXCI7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBzZXF1ZW5jZTogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wUHJldmlld09wZW5MaW5rRXZlbnQge1xuICB0YWJJZDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgYmFja2dyb3VuZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3UmVjb3JkaW5nSW5wdXRTY2hlbWEgPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInBvaW50ZXJcIiksXG4gICAgcGhhc2U6IFNjaGVtYS5MaXRlcmFscyhbXCJtb3ZlXCIsIFwiZG93blwiLCBcInVwXCIsIFwiY2xpY2tcIl0pLFxuICAgIHg6IFNjaGVtYS5GaW5pdGUsXG4gICAgeTogU2NoZW1hLkZpbml0ZSxcbiAgICB3aWR0aDogU2NoZW1hLkZpbml0ZS5jaGVjayhTY2hlbWEuaXNHcmVhdGVyVGhhbigwKSksXG4gICAgaGVpZ2h0OiBTY2hlbWEuRmluaXRlLmNoZWNrKFNjaGVtYS5pc0dyZWF0ZXJUaGFuKDApKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwia2V5XCIpLFxuICAgIGxhYmVsOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEwMCkpKSxcbiAgICBoZWxkOiBTY2hlbWEuQm9vbGVhbixcbiAgICB3aWR0aDogU2NoZW1hLkZpbml0ZS5jaGVjayhTY2hlbWEuaXNHcmVhdGVyVGhhbigwKSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHsgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjbGVhclwiKSB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgRGVza3RvcFByZXZpZXdSZWNvcmRpbmdJbnB1dCA9IHR5cGVvZiBEZXNrdG9wUHJldmlld1JlY29yZGluZ0lucHV0U2NoZW1hLlR5cGU7XG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BQcmV2aWV3UmVjb3JkaW5nSW5wdXRFdmVudCB7XG4gIHJlYWRvbmx5IHRhYklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlucHV0OiBEZXNrdG9wUHJldmlld1JlY29yZGluZ0lucHV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BQcmV2aWV3V2Vidmlld0NvbmZpZyB7XG4gIHBhcnRpdGlvbjogc3RyaW5nO1xuICAvKiogU2FuZGJveGVkIHdpdGggY29udGV4dElzb2xhdGlvbiBvZmYgc28gdGhlIHBpY2tlciBwcmVsb2FkIGNhbiByZWFkIHRoZSBSZWFjdCBEZXZUb29scyBob29rLiAqL1xuICB3ZWJQcmVmZXJlbmNlczogc3RyaW5nO1xuICAvKiogQWJzb2x1dGUgZmlsZTovLyBwcmVsb2FkIFVSTDsgbnVsbCByZXF1aXJlcyBkaXNhYmxpbmcgZWxlbWVudCBwaWNraW5nLiAqL1xuICBwcmVsb2FkVXJsOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdXZWJ2aWV3Q29uZmlnU2NoZW1hOiBTY2hlbWEuQ29kZWM8RGVza3RvcFByZXZpZXdXZWJ2aWV3Q29uZmlnPiA9XG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHBhcnRpdGlvbjogU2NoZW1hLlN0cmluZyxcbiAgICB3ZWJQcmVmZXJlbmNlczogU2NoZW1hLlN0cmluZyxcbiAgICBwcmVsb2FkVXJsOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wUHJldmlld0Fubm90YXRpb25UaGVtZSB7XG4gIGNvbG9yU2NoZW1lOiBcImxpZ2h0XCIgfCBcImRhcmtcIjtcbiAgcmFkaXVzOiBzdHJpbmc7XG4gIGJhY2tncm91bmQ6IHN0cmluZztcbiAgZm9yZWdyb3VuZDogc3RyaW5nO1xuICBwb3BvdmVyOiBzdHJpbmc7XG4gIHBvcG92ZXJGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIHByaW1hcnk6IHN0cmluZztcbiAgcHJpbWFyeUZvcmVncm91bmQ6IHN0cmluZztcbiAgbXV0ZWQ6IHN0cmluZztcbiAgbXV0ZWRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIGFjY2VudDogc3RyaW5nO1xuICBhY2NlbnRGb3JlZ3JvdW5kOiBzdHJpbmc7XG4gIGJvcmRlcjogc3RyaW5nO1xuICBpbnB1dDogc3RyaW5nO1xuICByaW5nOiBzdHJpbmc7XG4gIGZvbnRTYW5zOiBzdHJpbmc7XG4gIGZvbnRNb25vOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wUHJldmlld0Fubm90YXRpb25UaGVtZVNjaGVtYTogU2NoZW1hLkNvZGVjPERlc2t0b3BQcmV2aWV3QW5ub3RhdGlvblRoZW1lPiA9XG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGNvbG9yU2NoZW1lOiBTY2hlbWEuTGl0ZXJhbHMoW1wibGlnaHRcIiwgXCJkYXJrXCJdKSxcbiAgICByYWRpdXM6IFNjaGVtYS5TdHJpbmcsXG4gICAgYmFja2dyb3VuZDogU2NoZW1hLlN0cmluZyxcbiAgICBmb3JlZ3JvdW5kOiBTY2hlbWEuU3RyaW5nLFxuICAgIHBvcG92ZXI6IFNjaGVtYS5TdHJpbmcsXG4gICAgcG9wb3ZlckZvcmVncm91bmQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgcHJpbWFyeTogU2NoZW1hLlN0cmluZyxcbiAgICBwcmltYXJ5Rm9yZWdyb3VuZDogU2NoZW1hLlN0cmluZyxcbiAgICBtdXRlZDogU2NoZW1hLlN0cmluZyxcbiAgICBtdXRlZEZvcmVncm91bmQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgYWNjZW50OiBTY2hlbWEuU3RyaW5nLFxuICAgIGFjY2VudEZvcmVncm91bmQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgYm9yZGVyOiBTY2hlbWEuU3RyaW5nLFxuICAgIGlucHV0OiBTY2hlbWEuU3RyaW5nLFxuICAgIHJpbmc6IFNjaGVtYS5TdHJpbmcsXG4gICAgZm9udFNhbnM6IFNjaGVtYS5TdHJpbmcsXG4gICAgZm9udE1vbm86IFNjaGVtYS5TdHJpbmcsXG4gIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BQcmV2aWV3UmVjb3JkaW5nRnJhbWUge1xuICB0YWJJZDogc3RyaW5nO1xuICBkYXRhOiBzdHJpbmc7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xuICByZWNlaXZlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVza3RvcFByZXZpZXdSZWNvcmRpbmdBcnRpZmFjdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRhYklkOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgbWltZVR5cGU6IHN0cmluZztcbiAgc2l6ZUJ5dGVzOiBudW1iZXI7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdSZWNvcmRpbmdBcnRpZmFjdFNjaGVtYTogU2NoZW1hLkNvZGVjPERlc2t0b3BQcmV2aWV3UmVjb3JkaW5nQXJ0aWZhY3Q+ID1cbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgaWQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgdGFiSWQ6IERlc2t0b3BQcmV2aWV3VGFiSWRTY2hlbWEsXG4gICAgcGF0aDogU2NoZW1hLlN0cmluZyxcbiAgICBtaW1lVHlwZTogU2NoZW1hLlN0cmluZyxcbiAgICBzaXplQnl0ZXM6IFNjaGVtYS5JbnQsXG4gICAgY3JlYXRlZEF0OiBTY2hlbWEuU3RyaW5nLFxuICB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wUHJldmlld1NjcmVlbnNob3RBcnRpZmFjdCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRhYklkOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgbWltZVR5cGU6IFwiaW1hZ2UvcG5nXCI7XG4gIHNpemVCeXRlczogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3U2NyZWVuc2hvdEFydGlmYWN0U2NoZW1hOiBTY2hlbWEuQ29kZWM8RGVza3RvcFByZXZpZXdTY3JlZW5zaG90QXJ0aWZhY3Q+ID1cbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgaWQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgdGFiSWQ6IERlc2t0b3BQcmV2aWV3VGFiSWRTY2hlbWEsXG4gICAgcGF0aDogU2NoZW1hLlN0cmluZyxcbiAgICBtaW1lVHlwZTogU2NoZW1hLkxpdGVyYWwoXCJpbWFnZS9wbmdcIiksXG4gICAgc2l6ZUJ5dGVzOiBTY2hlbWEuSW50LFxuICAgIGNyZWF0ZWRBdDogU2NoZW1hLlN0cmluZyxcbiAgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlja2VkRWxlbWVudFN0YWNrRnJhbWUge1xuICBmdW5jdGlvbk5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGZpbGVOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBsaW5lTnVtYmVyOiBudW1iZXIgfCBudWxsO1xuICBjb2x1bW5OdW1iZXI6IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBQaWNrZWRFbGVtZW50U3RhY2tGcmFtZVNjaGVtYTogU2NoZW1hLkNvZGVjPFBpY2tlZEVsZW1lbnRTdGFja0ZyYW1lPiA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBmdW5jdGlvbk5hbWU6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIGZpbGVOYW1lOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBsaW5lTnVtYmVyOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5OdW1iZXIpLFxuICBjb2x1bW5OdW1iZXI6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLk51bWJlciksXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBQaWNrZWRFbGVtZW50UGF5bG9hZCB7XG4gIHBhZ2VVcmw6IHN0cmluZztcbiAgcGFnZVRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICB0YWdOYW1lOiBzdHJpbmc7XG4gIHNlbGVjdG9yOiBzdHJpbmcgfCBudWxsO1xuICBodG1sUHJldmlldzogc3RyaW5nO1xuICBjb21wb25lbnROYW1lOiBzdHJpbmcgfCBudWxsO1xuICBzb3VyY2U6IFBpY2tlZEVsZW1lbnRTdGFja0ZyYW1lIHwgbnVsbDtcbiAgc3RhY2s6IFJlYWRvbmx5QXJyYXk8UGlja2VkRWxlbWVudFN0YWNrRnJhbWU+O1xuICBzdHlsZXM6IHN0cmluZztcbiAgcGlja2VkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFBpY2tlZEVsZW1lbnRQYXlsb2FkU2NoZW1hOiBTY2hlbWEuQ29kZWM8UGlja2VkRWxlbWVudFBheWxvYWQ+ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHBhZ2VVcmw6IFNjaGVtYS5TdHJpbmcsXG4gIHBhZ2VUaXRsZTogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbiAgdGFnTmFtZTogU2NoZW1hLlN0cmluZyxcbiAgc2VsZWN0b3I6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIGh0bWxQcmV2aWV3OiBTY2hlbWEuU3RyaW5nLFxuICBjb21wb25lbnROYW1lOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBzb3VyY2U6IFNjaGVtYS5OdWxsT3IoUGlja2VkRWxlbWVudFN0YWNrRnJhbWVTY2hlbWEpLFxuICBzdGFjazogU2NoZW1hLkFycmF5KFBpY2tlZEVsZW1lbnRTdGFja0ZyYW1lU2NoZW1hKSxcbiAgc3R5bGVzOiBTY2hlbWEuU3RyaW5nLFxuICBwaWNrZWRBdDogU2NoZW1hLlN0cmluZyxcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdBbm5vdGF0aW9uUmVjdCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uUmVjdFNjaGVtYTogU2NoZW1hLkNvZGVjPFByZXZpZXdBbm5vdGF0aW9uUmVjdD4gPSBTY2hlbWEuU3RydWN0KHtcbiAgeDogU2NoZW1hLk51bWJlcixcbiAgeTogU2NoZW1hLk51bWJlcixcbiAgd2lkdGg6IFNjaGVtYS5OdW1iZXIsXG4gIGhlaWdodDogU2NoZW1hLk51bWJlcixcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdBbm5vdGF0aW9uUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uUG9pbnRTY2hlbWE6IFNjaGVtYS5Db2RlYzxQcmV2aWV3QW5ub3RhdGlvblBvaW50PiA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB4OiBTY2hlbWEuTnVtYmVyLFxuICB5OiBTY2hlbWEuTnVtYmVyLFxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0Fubm90YXRpb25FbGVtZW50VGFyZ2V0IHtcbiAgaWQ6IHN0cmluZztcbiAgZWxlbWVudDogUGlja2VkRWxlbWVudFBheWxvYWQ7XG4gIHJlY3Q6IFByZXZpZXdBbm5vdGF0aW9uUmVjdDtcbn1cblxuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uRWxlbWVudFRhcmdldFNjaGVtYTogU2NoZW1hLkNvZGVjPFByZXZpZXdBbm5vdGF0aW9uRWxlbWVudFRhcmdldD4gPVxuICBTY2hlbWEuU3RydWN0KHtcbiAgICBpZDogU2NoZW1hLlN0cmluZyxcbiAgICBlbGVtZW50OiBQaWNrZWRFbGVtZW50UGF5bG9hZFNjaGVtYSxcbiAgICByZWN0OiBQcmV2aWV3QW5ub3RhdGlvblJlY3RTY2hlbWEsXG4gIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdBbm5vdGF0aW9uUmVnaW9uVGFyZ2V0IHtcbiAgaWQ6IHN0cmluZztcbiAgcmVjdDogUHJldmlld0Fubm90YXRpb25SZWN0O1xufVxuXG5leHBvcnQgY29uc3QgUHJldmlld0Fubm90YXRpb25SZWdpb25UYXJnZXRTY2hlbWE6IFNjaGVtYS5Db2RlYzxQcmV2aWV3QW5ub3RhdGlvblJlZ2lvblRhcmdldD4gPVxuICBTY2hlbWEuU3RydWN0KHtcbiAgICBpZDogU2NoZW1hLlN0cmluZyxcbiAgICByZWN0OiBQcmV2aWV3QW5ub3RhdGlvblJlY3RTY2hlbWEsXG4gIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdBbm5vdGF0aW9uU3Ryb2tlVGFyZ2V0IHtcbiAgaWQ6IHN0cmluZztcbiAgY29sb3I6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgcG9pbnRzOiBSZWFkb25seUFycmF5PFByZXZpZXdBbm5vdGF0aW9uUG9pbnQ+O1xuICBib3VuZHM6IFByZXZpZXdBbm5vdGF0aW9uUmVjdDtcbn1cblxuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uU3Ryb2tlVGFyZ2V0U2NoZW1hOiBTY2hlbWEuQ29kZWM8UHJldmlld0Fubm90YXRpb25TdHJva2VUYXJnZXQ+ID1cbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgaWQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgY29sb3I6IFNjaGVtYS5TdHJpbmcsXG4gICAgd2lkdGg6IFNjaGVtYS5OdW1iZXIsXG4gICAgcG9pbnRzOiBTY2hlbWEuQXJyYXkoUHJldmlld0Fubm90YXRpb25Qb2ludFNjaGVtYSksXG4gICAgYm91bmRzOiBQcmV2aWV3QW5ub3RhdGlvblJlY3RTY2hlbWEsXG4gIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdBbm5vdGF0aW9uU3R5bGVDaGFuZ2Uge1xuICB0YXJnZXRJZDogc3RyaW5nO1xuICBzZWxlY3Rvcjogc3RyaW5nIHwgbnVsbDtcbiAgcHJvcGVydHk6IHN0cmluZztcbiAgcHJldmlvdXNWYWx1ZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgUHJldmlld0Fubm90YXRpb25TdHlsZUNoYW5nZVNjaGVtYTogU2NoZW1hLkNvZGVjPFByZXZpZXdBbm5vdGF0aW9uU3R5bGVDaGFuZ2U+ID1cbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdGFyZ2V0SWQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgc2VsZWN0b3I6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gICAgcHJvcGVydHk6IFNjaGVtYS5TdHJpbmcsXG4gICAgcHJldmlvdXNWYWx1ZTogU2NoZW1hLlN0cmluZyxcbiAgICB2YWx1ZTogU2NoZW1hLlN0cmluZyxcbiAgfSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0Fubm90YXRpb25TY3JlZW5zaG90IHtcbiAgZGF0YVVybDogc3RyaW5nO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY3JvcFJlY3Q6IFByZXZpZXdBbm5vdGF0aW9uUmVjdDtcbn1cblxuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uU2NyZWVuc2hvdFNjaGVtYTogU2NoZW1hLkNvZGVjPFByZXZpZXdBbm5vdGF0aW9uU2NyZWVuc2hvdD4gPVxuICBTY2hlbWEuU3RydWN0KHtcbiAgICBkYXRhVXJsOiBTY2hlbWEuU3RyaW5nLFxuICAgIHdpZHRoOiBTY2hlbWEuTnVtYmVyLFxuICAgIGhlaWdodDogU2NoZW1hLk51bWJlcixcbiAgICBjcm9wUmVjdDogUHJldmlld0Fubm90YXRpb25SZWN0U2NoZW1hLFxuICB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBQcmV2aWV3QW5ub3RhdGlvblBheWxvYWQge1xuICBpZDogc3RyaW5nO1xuICBwYWdlVXJsOiBzdHJpbmc7XG4gIHBhZ2VUaXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgY29tbWVudDogc3RyaW5nO1xuICBlbGVtZW50czogUmVhZG9ubHlBcnJheTxQcmV2aWV3QW5ub3RhdGlvbkVsZW1lbnRUYXJnZXQ+O1xuICByZWdpb25zOiBSZWFkb25seUFycmF5PFByZXZpZXdBbm5vdGF0aW9uUmVnaW9uVGFyZ2V0PjtcbiAgc3Ryb2tlczogUmVhZG9ubHlBcnJheTxQcmV2aWV3QW5ub3RhdGlvblN0cm9rZVRhcmdldD47XG4gIHN0eWxlQ2hhbmdlczogUmVhZG9ubHlBcnJheTxQcmV2aWV3QW5ub3RhdGlvblN0eWxlQ2hhbmdlPjtcbiAgc2NyZWVuc2hvdDogUHJldmlld0Fubm90YXRpb25TY3JlZW5zaG90IHwgbnVsbDtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQcmV2aWV3QW5ub3RhdGlvblBheWxvYWRTY2hlbWE6IFNjaGVtYS5Db2RlYzxQcmV2aWV3QW5ub3RhdGlvblBheWxvYWQ+ID0gU2NoZW1hLlN0cnVjdChcbiAge1xuICAgIGlkOiBTY2hlbWEuU3RyaW5nLFxuICAgIHBhZ2VVcmw6IFNjaGVtYS5TdHJpbmcsXG4gICAgcGFnZVRpdGxlOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICAgIGNvbW1lbnQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgZWxlbWVudHM6IFNjaGVtYS5BcnJheShQcmV2aWV3QW5ub3RhdGlvbkVsZW1lbnRUYXJnZXRTY2hlbWEpLFxuICAgIHJlZ2lvbnM6IFNjaGVtYS5BcnJheShQcmV2aWV3QW5ub3RhdGlvblJlZ2lvblRhcmdldFNjaGVtYSksXG4gICAgc3Ryb2tlczogU2NoZW1hLkFycmF5KFByZXZpZXdBbm5vdGF0aW9uU3Ryb2tlVGFyZ2V0U2NoZW1hKSxcbiAgICBzdHlsZUNoYW5nZXM6IFNjaGVtYS5BcnJheShQcmV2aWV3QW5ub3RhdGlvblN0eWxlQ2hhbmdlU2NoZW1hKSxcbiAgICBzY3JlZW5zaG90OiBTY2hlbWEuTnVsbE9yKFByZXZpZXdBbm5vdGF0aW9uU2NyZWVuc2hvdFNjaGVtYSksXG4gICAgY3JlYXRlZEF0OiBTY2hlbWEuU3RyaW5nLFxuICB9LFxuKTtcblxuZXhwb3J0IHR5cGUgUHJldmlld0Fubm90YXRpb25TdWJtaXNzaW9uID0gXCJhdHRhY2hcIiB8IFwic2VuZFwiO1xuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uU3VibWlzc2lvblNjaGVtYTogU2NoZW1hLkNvZGVjPFByZXZpZXdBbm5vdGF0aW9uU3VibWlzc2lvbj4gPVxuICBTY2hlbWEuTGl0ZXJhbHMoW1wiYXR0YWNoXCIsIFwic2VuZFwiXSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJldmlld0Fubm90YXRpb25TdWJtaXNzaW9uUmVzdWx0IHtcbiAgYW5ub3RhdGlvbjogUHJldmlld0Fubm90YXRpb25QYXlsb2FkO1xuICBzdWJtaXNzaW9uOiBQcmV2aWV3QW5ub3RhdGlvblN1Ym1pc3Npb247XG4gIHNjcmVlbnNob3RGYWlsZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGNvbnN0IFByZXZpZXdBbm5vdGF0aW9uU3VibWlzc2lvblJlc3VsdFNjaGVtYTogU2NoZW1hLkNvZGVjPFByZXZpZXdBbm5vdGF0aW9uU3VibWlzc2lvblJlc3VsdD4gPVxuICBTY2hlbWEuU3RydWN0KHtcbiAgICBhbm5vdGF0aW9uOiBQcmV2aWV3QW5ub3RhdGlvblBheWxvYWRTY2hlbWEsXG4gICAgc3VibWlzc2lvbjogUHJldmlld0Fubm90YXRpb25TdWJtaXNzaW9uU2NoZW1hLFxuICAgIHNjcmVlbnNob3RGYWlsZWQ6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuQm9vbGVhbiksXG4gIH0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdUYWJJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0YWJJZDogRGVza3RvcFByZXZpZXdUYWJJZFNjaGVtYSxcbn0pO1xuXG4vKiogQXBwbHkgem9vbSBhbmQgY29sb3Igc2NoZW1lIGF0IGNyZWF0aW9uIHRvIGF2b2lkIGZsYXNoaW5nIGJyb3dzZXIgZGVmYXVsdHMuICovXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdDcmVhdGVUYWJJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0YWJJZDogRGVza3RvcFByZXZpZXdUYWJJZFNjaGVtYSxcbiAgem9vbUZhY3RvcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdW1iZXIuY2hlY2soU2NoZW1hLmlzR3JlYXRlclRoYW4oMCkpKSxcbiAgY29sb3JTY2hlbWU6IFNjaGVtYS5vcHRpb25hbChEZXNrdG9wUHJldmlld0NvbG9yU2NoZW1lU2NoZW1hKSxcbiAgc2VydmVyVGFiOiBTY2hlbWEub3B0aW9uYWwoXG4gICAgU2NoZW1hLlN0cnVjdCh7IHRocmVhZElkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsIHRhYklkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcgfSksXG4gICksXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wUHJldmlld1RhYkRlZmF1bHRzIHtcbiAgcmVhZG9ubHkgem9vbUZhY3Rvcj86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29sb3JTY2hlbWU/OiBEZXNrdG9wUHJldmlld0NvbG9yU2NoZW1lIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBzZXJ2ZXJUYWI/OiB7IHJlYWRvbmx5IHRocmVhZElkOiBzdHJpbmc7IHJlYWRvbmx5IHRhYklkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3UmVnaXN0ZXJXZWJ2aWV3SW5wdXRTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGFiSWQ6IERlc2t0b3BQcmV2aWV3VGFiSWRTY2hlbWEsXG4gIHdlYkNvbnRlbnRzSWQ6IFNjaGVtYS5JbnQuY2hlY2soU2NoZW1hLmlzR3JlYXRlclRoYW4oMCkpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wUHJldmlld05hdmlnYXRlSW5wdXRTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGFiSWQ6IERlc2t0b3BQcmV2aWV3VGFiSWRTY2hlbWEsXG4gIHVybDogU2NoZW1hLlN0cmluZyxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdDb25maWdJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBlbnZpcm9ubWVudElkOiBFbnZpcm9ubWVudElkLFxuICAvKiogTWFpbiBtdXN0IGRlcml2ZSB0aGUgcGFydGl0aW9uIHRvIGVuc3VyZSBpdHMgc2Vzc2lvbiBoYXMgVUEgcmV3cml0ZXMgYW5kIHBlcm1pc3Npb24gaGFuZGxlcnMuICovXG4gIHByb2ZpbGVJZDogU2NoZW1hLm9wdGlvbmFsKEJyb3dzZXJQcm9maWxlSWQpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wUHJldmlld0NsZWFyRGF0YUlucHV0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIGVudmlyb25tZW50SWQ6IEVudmlyb25tZW50SWQsXG4gIC8qKiBPbWl0IHRvIGNsZWFyIGV2ZXJ5IHByb2ZpbGU7IG90aGVyd2lzZSBvbmx5IHRoaXMgcHJvZmlsZSdzIHBhcnRpdGlvbi4gKi9cbiAgcHJvZmlsZUlkOiBTY2hlbWEub3B0aW9uYWwoQnJvd3NlclByb2ZpbGVJZCksXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3U2V0Q29sb3JTY2hlbWVJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0YWJJZDogRGVza3RvcFByZXZpZXdUYWJJZFNjaGVtYSxcbiAgY29sb3JTY2hlbWU6IERlc2t0b3BQcmV2aWV3Q29sb3JTY2hlbWVTY2hlbWEsXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3U2V0Wm9vbUZhY3RvcklucHV0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRhYklkOiBEZXNrdG9wUHJldmlld1RhYklkU2NoZW1hLFxuICB6b29tRmFjdG9yOiBTY2hlbWEuTnVtYmVyLmNoZWNrKFNjaGVtYS5pc0dyZWF0ZXJUaGFuKDApKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdTZXRBdWRpb011dGVkSW5wdXRTY2hlbWEgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGFiSWQ6IERlc2t0b3BQcmV2aWV3VGFiSWRTY2hlbWEsXG4gIGF1ZGlvTXV0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEZXNrdG9wUHJldmlld0Fubm90YXRpb25UaGVtZUlucHV0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRoZW1lOiBEZXNrdG9wUHJldmlld0Fubm90YXRpb25UaGVtZVNjaGVtYSxcbn0pO1xuXG5leHBvcnQgY29uc3QgRGVza3RvcFByZXZpZXdBbm5vdGF0aW9uU2VuZEVuYWJsZWRJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0YWJJZDogRGVza3RvcFByZXZpZXdUYWJJZFNjaGVtYSxcbiAgZW5hYmxlZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3QXJ0aWZhY3RJbnB1dFNjaGVtYSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwYXRoOiBTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc1RyaW1tZWQoKSkuY2hlY2soU2NoZW1hLmlzTm9uRW1wdHkoKSksXG59KTtcblxuZXhwb3J0IGNvbnN0IERlc2t0b3BQcmV2aWV3UmVjb3JkaW5nU2F2ZUlucHV0U2NoZW1hID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRhYklkOiBEZXNrdG9wUHJldmlld1RhYklkU2NoZW1hLFxuICBtaW1lVHlwZTogU2NoZW1hLlN0cmluZy5jaGVjayhTY2hlbWEuaXNUcmltbWVkKCkpLmNoZWNrKFNjaGVtYS5pc05vbkVtcHR5KCkpLFxuICBkYXRhOiBTY2hlbWEuVWludDhBcnJheSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU3lzdGVtU2V0dGluZ3NQYW5lU2NoZW1hID0gU2NoZW1hLkxpdGVyYWxzKFtcImZ1bGwtZGlzay1hY2Nlc3NcIl0pO1xuZXhwb3J0IHR5cGUgU3lzdGVtU2V0dGluZ3NQYW5lID0gdHlwZW9mIFN5c3RlbVNldHRpbmdzUGFuZVNjaGVtYS5UeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BCcmlkZ2Uge1xuICBnZXRBcHBCcmFuZGluZzogKCkgPT4gRGVza3RvcEFwcEJyYW5kaW5nIHwgbnVsbDtcbiAgZ2V0UmVsYXlUZWxlbWV0cnlFbmFibGVkPzogKCkgPT4gYm9vbGVhbjtcbiAgZ2V0UGF0aEZvckZpbGU/OiAoZmlsZTogRmlsZSkgPT4gc3RyaW5nO1xuICBnZXRDbGllbnRQbGF0Zm9ybT86ICgpID0+IHN0cmluZztcbiAgc2V0Tm90aWZpY2F0aW9uQmFkZ2U/OiAoYmFkZ2U6IHsgY291bnQ6IG51bWJlcjsgaW1hZ2U6IHN0cmluZyB8IG51bGwgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb25Ob3RpZmljYXRpb25CYWRnZUNsZWFyPzogKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICBvblRyYWNrcGFkU2Nyb2xsRW5kPzogKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogUmVuZGVyZXIgYHdpbmRvdy5mb2N1cygpYCBjYW5ub3QgcmFpc2UgYW4gRWxlY3Ryb24gd2luZG93LCBhbmQgb24gV2F5bGFuZFxuICAgKiBvbmx5IHRoZSBtYWluIHByb2Nlc3MgY2FuIHNwZW5kIGEgbm90aWZpY2F0aW9uIGNsaWNrJ3MgYWN0aXZhdGlvbiB0b2tlbi5cbiAgICovXG4gIHJldmVhbFdpbmRvdz86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBUaGUgT1MgbG9jYWxlIGFzIGEgQkNQLTQ3IHRhZywgd2hpY2ggdGhlIHJlbmRlcmVyIGNhbm5vdCByZWFkIGZvciBpdHNlbGY6XG4gICAqIHRoZSBwYWNrYWdlZCBhcHAgc2hpcHMgb25seSB0aGUgYGVuLVVTYCBDaHJvbWl1bSBsb2NhbGUgcGFrLCBzb1xuICAgKiBgbmF2aWdhdG9yLmxhbmd1YWdlYCBhbmQgdGhlIGRlZmF1bHQgYEludGxgIGxvY2FsZSBhcmUgcGlubmVkIHRvIGBlbi1VU2BcbiAgICogcmVnYXJkbGVzcyBvZiBPUyBzZXR0aW5ncy5cbiAgICovXG4gIGdldFN5c3RlbUxvY2FsZT86ICgpID0+IHN0cmluZyB8IG51bGw7XG4gIGdldExvY2FsRW52aXJvbm1lbnRCb290c3RyYXBzOiAoKSA9PiByZWFkb25seSBEZXNrdG9wRW52aXJvbm1lbnRCb290c3RyYXBbXTtcbiAgZ2V0TG9jYWxFbnZpcm9ubWVudEVuYWJsZWQ/OiAoKSA9PiBib29sZWFuO1xuICBzZXRMb2NhbEVudmlyb25tZW50RW5hYmxlZD86IChlbmFibGVkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRMb2NhbEVudmlyb25tZW50QmVhcmVyVG9rZW46ICgpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgZ2V0Q2xpZW50U2V0dGluZ3M6ICgpID0+IFByb21pc2U8Q2xpZW50U2V0dGluZ3MgfCBudWxsPjtcbiAgc2V0Q2xpZW50U2V0dGluZ3M6IChzZXR0aW5nczogQ2xpZW50U2V0dGluZ3MpID0+IFByb21pc2U8dm9pZD47XG4gIGdldENvbm5lY3Rpb25DYXRhbG9nPzogKCkgPT4gUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgc2V0Q29ubmVjdGlvbkNhdGFsb2c/OiAoY2F0YWxvZzogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBjbGVhckNvbm5lY3Rpb25DYXRhbG9nPzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZGlzY292ZXJTc2hIb3N0czogKCkgPT4gUHJvbWlzZTxyZWFkb25seSBEZXNrdG9wRGlzY292ZXJlZFNzaEhvc3RbXT47XG4gIHJlc29sdmVTc2hIb3N0OiAoYWxpYXM6IHN0cmluZykgPT4gUHJvbWlzZTxEZXNrdG9wU3NoRW52aXJvbm1lbnRUYXJnZXQ+O1xuICByZXF1ZXN0U25hcFNob3RQZXJtaXNzaW9ucz86IChpbmNsdWRlQWNjZXNzaWJpbGl0eTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0U25hcFNob3RTdGF0ZT86ICgpID0+IFByb21pc2U8RGVza3RvcFNuYXBTaG90U3RhdGU+O1xuICBzZXR1cFNuYXBTaG90PzogKGFjdGlvbjogRGVza3RvcFNuYXBTaG90U2V0dXBBY3Rpb24pID0+IFByb21pc2U8dm9pZD47XG4gIHByZXZpZXdTbmFwU2hvdENvbmZpZz86IChcbiAgICByZXF1ZXN0OiBEZXNrdG9wQ2FwdHVyZUNvbmZpZ1JlcXVlc3QsXG4gICkgPT4gUHJvbWlzZTxEZXNrdG9wQ2FwdHVyZUNvbmZpZ1ByZXZpZXcgfCBudWxsPjtcbiAgYXBwbHlTbmFwU2hvdENvbmZpZz86IChwcmV2aWV3SWQ6IHN0cmluZykgPT4gUHJvbWlzZTxEZXNrdG9wQ2FwdHVyZUNvbmZpZ0FwcGxpZWQ+O1xuICBjaGVja1NuYXBTaG90U2hvcnRjdXQ/OiAoXG4gICAgc2hvcnRjdXQ6IFNuYXBTaG90U2hvcnRjdXQsXG4gICkgPT4gUHJvbWlzZTxEZXNrdG9wU25hcFNob3RTaG9ydGN1dEF2YWlsYWJpbGl0eT47XG4gIHNldFNuYXBTaG90U2hvcnRjdXRTdXBwcmVzc2VkPzogKHN1cHByZXNzZWQ6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIGxpc3RQZW5kaW5nU25hcFNob3RzPzogKCkgPT4gUHJvbWlzZTxyZWFkb25seSBEZXNrdG9wUGVuZGluZ1NuYXBTaG90W10+O1xuICByZWFkU25hcFNob3Q/OiAoaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxEZXNrdG9wU25hcFNob3Q+O1xuICBzZXRTbmFwU2hvdEFuaW1hdGlvbkRlc3RpbmF0aW9uPzogKFxuICAgIGRlc3RpbmF0aW9uOiBEZXNrdG9wU25hcFNob3RBbmltYXRpb25EZXN0aW5hdGlvbixcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkaXNtaXNzU25hcFNob3RBbmltYXRpb24/OiAoaWQ6IERlc2t0b3BTbmFwU2hvdElkKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhY2tub3dsZWRnZVNuYXBTaG90PzogKGlkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGVuc3VyZVNzaEVudmlyb25tZW50OiAoXG4gICAgdGFyZ2V0OiBEZXNrdG9wU3NoRW52aXJvbm1lbnRUYXJnZXQsXG4gICAgb3B0aW9ucz86IHsgaXNzdWVQYWlyaW5nVG9rZW4/OiBib29sZWFuIH0sXG4gICkgPT4gUHJvbWlzZTxEZXNrdG9wU3NoRW52aXJvbm1lbnRCb290c3RyYXA+O1xuICBkaXNjb25uZWN0U3NoRW52aXJvbm1lbnQ6ICh0YXJnZXQ6IERlc2t0b3BTc2hFbnZpcm9ubWVudFRhcmdldCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZmV0Y2hTc2hFbnZpcm9ubWVudERlc2NyaXB0b3I6IChodHRwQmFzZVVybDogc3RyaW5nKSA9PiBQcm9taXNlPEV4ZWN1dGlvbkVudmlyb25tZW50RGVzY3JpcHRvcj47XG4gIGJvb3RzdHJhcFNzaEJlYXJlclNlc3Npb246IChcbiAgICBodHRwQmFzZVVybDogc3RyaW5nLFxuICAgIGNyZWRlbnRpYWw6IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPEF1dGhBY2Nlc3NUb2tlblJlc3VsdD47XG4gIGZldGNoU3NoU2Vzc2lvblN0YXRlOiAoaHR0cEJhc2VVcmw6IHN0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxBdXRoU2Vzc2lvblN0YXRlPjtcbiAgaXNzdWVTc2hXZWJTb2NrZXRUaWNrZXQ6IChcbiAgICBodHRwQmFzZVVybDogc3RyaW5nLFxuICAgIGJlYXJlclRva2VuOiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxBdXRoV2ViU29ja2V0VGlja2V0UmVzdWx0PjtcbiAgb25Tc2hQYXNzd29yZFByb21wdDogKGxpc3RlbmVyOiAocmVxdWVzdDogRGVza3RvcFNzaFBhc3N3b3JkUHJvbXB0UmVxdWVzdCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgcmVzb2x2ZVNzaFBhc3N3b3JkUHJvbXB0OiAocmVxdWVzdElkOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcgfCBudWxsKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRTZXJ2ZXJFeHBvc3VyZVN0YXRlOiAoKSA9PiBQcm9taXNlPERlc2t0b3BTZXJ2ZXJFeHBvc3VyZVN0YXRlPjtcbiAgc2V0U2VydmVyRXhwb3N1cmVNb2RlOiAobW9kZTogRGVza3RvcFNlcnZlckV4cG9zdXJlTW9kZSkgPT4gUHJvbWlzZTxEZXNrdG9wU2VydmVyRXhwb3N1cmVTdGF0ZT47XG4gIHNldFRhaWxzY2FsZVNlcnZlRW5hYmxlZDogKGlucHV0OiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuICB9KSA9PiBQcm9taXNlPERlc2t0b3BTZXJ2ZXJFeHBvc3VyZVN0YXRlPjtcbiAgZ2V0QWR2ZXJ0aXNlZEVuZHBvaW50czogKCkgPT4gUHJvbWlzZTxyZWFkb25seSBBZHZlcnRpc2VkRW5kcG9pbnRbXT47XG4gIGdldFdzbFN0YXRlOiAoKSA9PiBQcm9taXNlPERlc2t0b3BXc2xTdGF0ZT47XG4gIHNldFdzbEJhY2tlbmRFbmFibGVkOiAoZW5hYmxlZDogYm9vbGVhbikgPT4gUHJvbWlzZTxEZXNrdG9wV3NsU3RhdGU+O1xuICBzZXRXc2xEaXN0cm86IChkaXN0cm86IHN0cmluZyB8IG51bGwpID0+IFByb21pc2U8RGVza3RvcFdzbFN0YXRlPjtcbiAgc2V0V3NsT25seTogKGVuYWJsZWQ6IGJvb2xlYW4pID0+IFByb21pc2U8RGVza3RvcFdzbFN0YXRlPjtcbiAgcGlja0ZvbGRlcjogKG9wdGlvbnM/OiBQaWNrRm9sZGVyT3B0aW9ucykgPT4gUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgcGlja1Byb2plY3RGYXZpY29uPzogKGluaXRpYWxQYXRoPzogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBwaWNrVGhlbWVGaWxlcz86ICgpID0+IFByb21pc2U8cmVhZG9ubHkgUGlja2VkVGhlbWVGaWxlW10gfCBudWxsPjtcbiAgc2V0VGhlbWU6ICh0aGVtZTogRGVza3RvcFRoZW1lKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzaG93Q29udGV4dE1lbnU6IDxUIGV4dGVuZHMgc3RyaW5nPihcbiAgICBpdGVtczogcmVhZG9ubHkgQ29udGV4dE1lbnVJdGVtPFQ+W10sXG4gICAgcG9zaXRpb24/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sXG4gICkgPT4gUHJvbWlzZTxUIHwgbnVsbD47XG4gIHJlY2VpdmVQcm92aWRlckF1dGhDYWxsYmFjaz86IChhdXRob3JpemF0aW9uVXJsOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgY2FuY2VsUHJvdmlkZXJBdXRoQ2FsbGJhY2s/OiAoYXV0aG9yaXphdGlvblVybDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBvcGVuRXh0ZXJuYWw6ICh1cmw6IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgb3BlblN5c3RlbVNldHRpbmdzPzogKHBhbmU6IFN5c3RlbVNldHRpbmdzUGFuZSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgY2hlY2tTeXN0ZW1QZXJtaXNzaW9uPzogKHBhbmU6IFN5c3RlbVNldHRpbmdzUGFuZSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgLyoqIE9sZGVyIGJ1aWxkcyBsYWNrIHRoaXM7IGZhbGwgYmFjayB0byBWUyBDb2RlIG9ubHkuICovXG4gIHByb2JlUmVtb3RlRWRpdG9ycz86ICgpID0+IFByb21pc2U8cmVhZG9ubHkgRWRpdG9ySWRbXT47XG4gIHBhc3RlQXNUZXh0PzogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgb25NZW51QWN0aW9uOiAobGlzdGVuZXI6IChhY3Rpb246IHN0cmluZykgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgb25TbmFwU2hvdEV2ZW50PzogKGxpc3RlbmVyOiAoZXZlbnQ6IERlc2t0b3BTbmFwU2hvdEV2ZW50KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICBvblF1aXRTaG9ydGN1dD86IChsaXN0ZW5lcjogKGV2ZW50OiBRdWl0U2hvcnRjdXRIaW50RXZlbnQpID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG4gIGdldFdpbmRvd0Z1bGxzY3JlZW5TdGF0ZTogKCkgPT4gYm9vbGVhbjtcbiAgb25XaW5kb3dGdWxsc2NyZWVuU3RhdGVDaGFuZ2U6IChsaXN0ZW5lcjogKGZ1bGxzY3JlZW46IGJvb2xlYW4pID0+IHZvaWQpID0+ICgpID0+IHZvaWQ7XG4gIC8qKiBBcHAgd2luZG93IHpvb207IG9sZGVyIGRlc2t0b3Agc2hlbGxzIG9taXQgdGhpcyBtZXRob2QuICovXG4gIGdldFdpbmRvd1pvb21GYWN0b3I/OiAoKSA9PiBudW1iZXI7XG4gIGdldFVwZGF0ZVN0YXRlOiAoKSA9PiBQcm9taXNlPERlc2t0b3BVcGRhdGVTdGF0ZT47XG4gIHNldFVwZGF0ZUNoYW5uZWw6IChjaGFubmVsOiBEZXNrdG9wVXBkYXRlQ2hhbm5lbCkgPT4gUHJvbWlzZTxEZXNrdG9wVXBkYXRlU3RhdGU+O1xuICBjaGVja0ZvclVwZGF0ZTogKCkgPT4gUHJvbWlzZTxEZXNrdG9wVXBkYXRlQ2hlY2tSZXN1bHQ+O1xuICBkb3dubG9hZFVwZGF0ZTogKCkgPT4gUHJvbWlzZTxEZXNrdG9wVXBkYXRlQWN0aW9uUmVzdWx0PjtcbiAgaW5zdGFsbFVwZGF0ZTogKCkgPT4gUHJvbWlzZTxEZXNrdG9wVXBkYXRlQWN0aW9uUmVzdWx0PjtcbiAgb25VcGRhdGVTdGF0ZTogKGxpc3RlbmVyOiAoc3RhdGU6IERlc2t0b3BVcGRhdGVTdGF0ZSkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgY2xpQ29tbWFuZD86IHtcbiAgICBnZXRTdGF0ZTogKCkgPT4gUHJvbWlzZTxEZXNrdG9wQ2xpQ29tbWFuZFN0YXRlPjtcbiAgICBpbnN0YWxsOiAoKSA9PiBQcm9taXNlPERlc2t0b3BDbGlDb21tYW5kU3RhdGU+O1xuICAgIHVuaW5zdGFsbDogKCkgPT4gUHJvbWlzZTxEZXNrdG9wQ2xpQ29tbWFuZFN0YXRlPjtcbiAgfTtcbiAgd2ViTGlua3M/OiB7XG4gICAgc2V0UmVhZHk6IChyZWFkeTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBvbk9wZW46IChsaXN0ZW5lcjogKHVybDogc3RyaW5nKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuICBhcHBBY3RpdmF0aW9uPzoge1xuICAgIHNldFJlYWR5OiAocmVhZHk6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gICAgY29tcGxldGU6IChyZXNwb25zZTogRGVza3RvcEFwcEFjdGl2YXRpb25SZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBvblJlcXVlc3Q6IChsaXN0ZW5lcjogKHJlcXVlc3Q6IERlc2t0b3BBcHBBY3RpdmF0aW9uUmVxdWVzdCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgfTtcbiAgcHJldmlldz86IERlc2t0b3BQcmV2aWV3QnJpZGdlO1xufVxuXG4vKiogUmVuZGVyZXIgY2FsbGJhY2sgaW52b2tlZCBieSBFbGVjdHJvbiB3aXRoIGEgZnJlc2ggdXNlciBnZXN0dXJlIGJlZm9yZSBkaXNwbGF5LW1lZGlhIGNhcHR1cmUuICovXG5leHBvcnQgY29uc3QgREVTS1RPUF9QUkVWSUVXX1JFQ09SRElOR19DQVBUVVJFX1RSSUdHRVIgPSBcIl9fdDNEZXNrdG9wUHJldmlld1JlY29yZGluZ0NhcHR1cmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZXNrdG9wUHJldmlld0JyaWRnZSB7XG4gIHNldEZvcndhcmRlZFNob3J0Y3V0cz86IChzaG9ydGN1dHM6IFJlYWRvbmx5QXJyYXk8UHJldmlld0ZvcndhcmRlZFNob3J0Y3V0PikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY3JlYXRlVGFiOiAodGFiSWQ6IHN0cmluZywgZGVmYXVsdHM/OiBEZXNrdG9wUHJldmlld1RhYkRlZmF1bHRzKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBjbG9zZVRhYjogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlZ2lzdGVyV2VidmlldzogKHRhYklkOiBzdHJpbmcsIHdlYkNvbnRlbnRzSWQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbmF2aWdhdGU6ICh0YWJJZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ29CYWNrOiAodGFiSWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ29Gb3J3YXJkOiAodGFiSWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVmcmVzaDogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHpvb21JbjogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHpvb21PdXQ6ICh0YWJJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZXNldFpvb206ICh0YWJJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZXRab29tRmFjdG9yOiAodGFiSWQ6IHN0cmluZywgem9vbUZhY3RvcjogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBoYXJkUmVsb2FkOiAodGFiSWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0Q29sb3JTY2hlbWU6ICh0YWJJZDogc3RyaW5nLCBjb2xvclNjaGVtZTogRGVza3RvcFByZXZpZXdDb2xvclNjaGVtZSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc2V0QXVkaW9NdXRlZDogKHRhYklkOiBzdHJpbmcsIGF1ZGlvTXV0ZWQ6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD47XG4gIG9wZW5EZXZUb29sczogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGNsZWFyQ29va2llczogKGVudmlyb25tZW50SWQ6IEVudmlyb25tZW50SWQsIHByb2ZpbGVJZD86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY2xlYXJDYWNoZTogKGVudmlyb25tZW50SWQ6IEVudmlyb25tZW50SWQsIHByb2ZpbGVJZD86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgZ2V0UHJldmlld0NvbmZpZzogKFxuICAgIGVudmlyb25tZW50SWQ6IEVudmlyb25tZW50SWQsXG4gICAgcHJvZmlsZUlkPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8RGVza3RvcFByZXZpZXdXZWJ2aWV3Q29uZmlnPjtcbiAgbGlzdEJyb3dzZXJJbXBvcnRTb3VyY2VzOiAoKSA9PiBQcm9taXNlPFJlYWRvbmx5QXJyYXk8QnJvd3NlckltcG9ydFNvdXJjZT4+O1xuICBpbXBvcnRCcm93c2VyQ29va2llczogKGlucHV0OiB7XG4gICAgcmVhZG9ubHkgZW52aXJvbm1lbnRJZDogRW52aXJvbm1lbnRJZDtcbiAgICByZWFkb25seSBzb3VyY2VJZDogQnJvd3NlckltcG9ydFNvdXJjZUlkO1xuICAgIHJlYWRvbmx5IHNvdXJjZVByb2ZpbGVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICByZWFkb25seSB0YXJnZXRQcm9maWxlSWQ6IHN0cmluZztcbiAgfSkgPT4gUHJvbWlzZTxCcm93c2VySW1wb3J0UmVzdWx0PjtcbiAgc2V0QW5ub3RhdGlvblRoZW1lOiAodGhlbWU6IERlc2t0b3BQcmV2aWV3QW5ub3RhdGlvblRoZW1lKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBzZXRBbm5vdGF0aW9uU2VuZEVuYWJsZWQ6ICh0YWJJZDogc3RyaW5nLCBlbmFibGVkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+O1xuICAvKiogUmVzb2x2ZXMgd2l0aCB0aGUgYW5ub3RhdGlvbiBhbmQgYXR0YWNoL3NlbmQgaW50ZW50LCBvciBudWxsIG9uIGNhbmNlbGxhdGlvbi4gUmVqZWN0cyBpZiBhY3RpdmF0aW9uIGZhaWxzLiAqL1xuICBwaWNrRWxlbWVudDogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8UHJldmlld0Fubm90YXRpb25TdWJtaXNzaW9uUmVzdWx0IHwgbnVsbD47XG4gIGNhbmNlbFBpY2tFbGVtZW50OiAodGFiSWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY2FwdHVyZVNjcmVlbnNob3Q6IChcbiAgICB0YWJJZDogc3RyaW5nLFxuICApID0+IFByb21pc2U8RGVza3RvcFByZXZpZXdTY3JlZW5zaG90QXJ0aWZhY3QgfCBQcmV2aWV3Q2FwdHVyZUZhaWx1cmVFbmNvZGVkPjtcbiAgcmV2ZWFsQXJ0aWZhY3Q6IChwYXRoOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGNvcHlBcnRpZmFjdFRvQ2xpcGJvYXJkOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwaWN0dXJlSW5QaWN0dXJlOiB7XG4gICAgb3BlbjogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gICAgY2xvc2U6ICh0YWJJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB9O1xuICByZWNvcmRpbmc6IHtcbiAgICBvbklucHV0OiAobGlzdGVuZXI6IChldmVudDogRGVza3RvcFByZXZpZXdSZWNvcmRpbmdJbnB1dEV2ZW50KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICAgIHN0YXJ0U2NyZWVuY2FzdDogKHRhYklkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZCB8IFByZXZpZXdDYXB0dXJlRmFpbHVyZUVuY29kZWQ+O1xuICAgIHN0b3BTY3JlZW5jYXN0OiAodGFiSWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBzYXZlOiAoXG4gICAgICB0YWJJZDogc3RyaW5nLFxuICAgICAgbWltZVR5cGU6IHN0cmluZyxcbiAgICAgIGRhdGE6IFVpbnQ4QXJyYXksXG4gICAgKSA9PiBQcm9taXNlPERlc2t0b3BQcmV2aWV3UmVjb3JkaW5nQXJ0aWZhY3Q+O1xuICAgIG9uRnJhbWU6IChsaXN0ZW5lcjogKGZyYW1lOiBEZXNrdG9wUHJldmlld1JlY29yZGluZ0ZyYW1lKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICB9O1xuICBvblN0YXRlQ2hhbmdlOiAobGlzdGVuZXI6ICh0YWJJZDogc3RyaW5nLCBzdGF0ZTogRGVza3RvcFByZXZpZXdUYWJTdGF0ZSkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgb25Qb2ludGVyRXZlbnQ6IChsaXN0ZW5lcjogKGV2ZW50OiBEZXNrdG9wUHJldmlld1BvaW50ZXJFdmVudCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbiAgb25PcGVuTGluazogKGxpc3RlbmVyOiAoZXZlbnQ6IERlc2t0b3BQcmV2aWV3T3BlbkxpbmtFdmVudCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlybURpYWxvZ1ZhcmlhbnQgPSBcImRlZmF1bHRcIiB8IFwiZGVzdHJ1Y3RpdmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRGlhbG9nT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHZhcmlhbnQ/OiBDb25maXJtRGlhbG9nVmFyaWFudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbEFwaSB7XG4gIGRpYWxvZ3M6IHtcbiAgICBwaWNrRm9sZGVyOiAob3B0aW9ucz86IFBpY2tGb2xkZXJPcHRpb25zKSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAgIGNvbmZpcm06IChtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBDb25maXJtRGlhbG9nT3B0aW9ucykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgfTtcbiAgc2hlbGw6IHtcbiAgICBvcGVuRXh0ZXJuYWw6ICh1cmw6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBvcGVuU3lzdGVtU2V0dGluZ3M6IChwYW5lOiBTeXN0ZW1TZXR0aW5nc1BhbmUpID0+IFByb21pc2U8dm9pZD47XG4gIH07XG4gIGNvbnRleHRNZW51OiB7XG4gICAgc2hvdzogPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgaXRlbXM6IHJlYWRvbmx5IENvbnRleHRNZW51SXRlbTxUPltdLFxuICAgICAgcG9zaXRpb24/OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sXG4gICAgKSA9PiBQcm9taXNlPFQgfCBudWxsPjtcbiAgICBjbG9zZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgfTtcbiAgcGVyc2lzdGVuY2U6IHtcbiAgICBnZXRDbGllbnRTZXR0aW5nczogKCkgPT4gUHJvbWlzZTxDbGllbnRTZXR0aW5ncyB8IG51bGw+O1xuICAgIHNldENsaWVudFNldHRpbmdzOiAoc2V0dGluZ3M6IENsaWVudFNldHRpbmdzKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufVxuIl0sImZpbGUiOiIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvaXBjLnRzIn0=

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9pcGMudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvaXBjLnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiXSxbXSxbIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1Il0se30sIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvU2NoZW1hLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2NoYXRBdHRhY2htZW50LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Jhc2VTY2hlbWFzLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Jyb3dzZXJQcm9maWxlLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2F1dGgudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvcmVtb3RlQWNjZXNzLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2Vudmlyb25tZW50LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3NldHRpbmdzLnRzIl0=