projen
Version:
CDK for software projects
636 lines • 158 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PnpmWorkspaceYamlSchemaVersioningChangelogStorage = exports.PnpmWorkspaceYamlSchemaVersioningMaxBump = exports.PnpmWorkspaceYamlSchemaHoistingLimits = exports.PnpmWorkspaceYamlSchemaRuntimeOnFail = exports.PnpmWorkspaceYamlSchemaPmOnFail = exports.PnpmWorkspaceYamlSchemaAuditLevel = exports.PnpmWorkspaceYamlSchemaTrustPolicy = exports.PnpmWorkspaceYamlSchemaResolutionMode = exports.PnpmWorkspaceYamlSchemaSavePrefix = exports.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol = exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = exports.PnpmWorkspaceYamlSchemaReporter = exports.PnpmWorkspaceYamlSchemaLoglevel = exports.PnpmWorkspaceYamlSchemaColor = exports.PnpmWorkspaceYamlSchemaPackageImportMethod = exports.PnpmWorkspaceYamlSchemaNodePackageMapType = exports.PnpmWorkspaceYamlSchemaNodeLinker = exports.PnpmWorkspaceYamlSchemaCatalogMode = void 0;
exports.toJson_PnpmWorkspaceYamlSchema = toJson_PnpmWorkspaceYamlSchema;
exports.toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules = toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules;
exports.toJson_PnpmWorkspaceYamlSchemaUpdate = toJson_PnpmWorkspaceYamlSchemaUpdate;
exports.toJson_PnpmWorkspaceYamlSchemaUpdateConfig = toJson_PnpmWorkspaceYamlSchemaUpdateConfig;
exports.toJson_PnpmWorkspaceYamlSchemaAudit = toJson_PnpmWorkspaceYamlSchemaAudit;
exports.toJson_PnpmWorkspaceYamlSchemaAuditConfig = toJson_PnpmWorkspaceYamlSchemaAuditConfig;
exports.toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures = toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures;
exports.toJson_PnpmWorkspaceYamlSchemaExecutionEnv = toJson_PnpmWorkspaceYamlSchemaExecutionEnv;
exports.toJson_PnpmWorkspaceYamlSchemaVersioning = toJson_PnpmWorkspaceYamlSchemaVersioning;
exports.toJson_PnpmWorkspaceYamlSchemaVersioningEpics = toJson_PnpmWorkspaceYamlSchemaVersioningEpics;
exports.toJson_PnpmWorkspaceYamlSchemaVersioningChangelog = toJson_PnpmWorkspaceYamlSchemaVersioningChangelog;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/**
* Converts an object of type 'PnpmWorkspaceYamlSchema' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchema(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'packages': obj.packages?.map(y => y),
'catalog': ((obj.catalog) === undefined) ? undefined : (Object.entries(obj.catalog).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'catalogs': ((obj.catalogs) === undefined) ? undefined : (Object.entries(obj.catalogs).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: ((i[1]) === undefined) ? undefined : (Object.entries(i[1]).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})) }), {})),
'catalogMode': obj.catalogMode,
'cleanupUnusedCatalogs': obj.cleanupUnusedCatalogs,
'catalogPrune': obj.catalogPrune,
'onlyBuiltDependencies': obj.onlyBuiltDependencies?.map(y => y),
'overrides': obj.overrides,
'packageExtensions': obj.packageExtensions,
'packageConfigs': obj.packageConfigs,
'peerDependencyRules': toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules(obj.peerDependencyRules),
'neverBuiltDependencies': obj.neverBuiltDependencies?.map(y => y),
'dangerouslyAllowAllBuilds': obj.dangerouslyAllowAllBuilds,
'onlyBuiltDependenciesFile': obj.onlyBuiltDependenciesFile,
'ignoredBuiltDependencies': obj.ignoredBuiltDependencies?.map(y => y),
'allowedDeprecatedVersions': ((obj.allowedDeprecatedVersions) === undefined) ? undefined : (Object.entries(obj.allowedDeprecatedVersions).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'patchedDependencies': ((obj.patchedDependencies) === undefined) ? undefined : (Object.entries(obj.patchedDependencies).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'allowUnusedPatches': obj.allowUnusedPatches,
'allowNonAppliedPatches': obj.allowNonAppliedPatches,
'ignorePatchFailures': obj.ignorePatchFailures,
'update': toJson_PnpmWorkspaceYamlSchemaUpdate(obj.update),
'updateConfig': toJson_PnpmWorkspaceYamlSchemaUpdateConfig(obj.updateConfig),
'configDependencies': obj.configDependencies,
'audit': toJson_PnpmWorkspaceYamlSchemaAudit(obj.audit),
'auditConfig': toJson_PnpmWorkspaceYamlSchemaAuditConfig(obj.auditConfig),
'requiredScripts': obj.requiredScripts?.map(y => y),
'supportedArchitectures': toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures(obj.supportedArchitectures),
'ignoredOptionalDependencies': obj.ignoredOptionalDependencies?.map(y => y),
'executionEnv': toJson_PnpmWorkspaceYamlSchemaExecutionEnv(obj.executionEnv),
'hoist': obj.hoist,
'hoistWorkspacePackages': obj.hoistWorkspacePackages,
'hoistPattern': obj.hoistPattern?.map(y => y),
'publicHoistPattern': obj.publicHoistPattern?.map(y => y),
'shamefullyHoist': obj.shamefullyHoist,
'modulesDir': obj.modulesDir,
'nodeLinker': obj.nodeLinker,
'nodeExperimentalPackageMap': obj.nodeExperimentalPackageMap,
'nodePackageMapType': obj.nodePackageMapType,
'symlink': obj.symlink,
'enableModulesDir': obj.enableModulesDir,
'virtualStoreDir': obj.virtualStoreDir,
'virtualStoreDirMaxLength': obj.virtualStoreDirMaxLength,
'packageImportMethod': obj.packageImportMethod,
'modulesCacheMaxAge': obj.modulesCacheMaxAge,
'dlxCacheMaxAge': obj.dlxCacheMaxAge,
'storeDir': obj.storeDir,
'verifyStoreIntegrity': obj.verifyStoreIntegrity,
'strictStorePkgContentCheck': obj.strictStorePkgContentCheck,
'enableGlobalVirtualStore': obj.enableGlobalVirtualStore,
'lockfile': obj.lockfile,
'preferFrozenLockfile': obj.preferFrozenLockfile,
'lockfileIncludeTarballUrl': obj.lockfileIncludeTarballUrl,
'gitBranchLockfile': obj.gitBranchLockfile,
'mergeGitBranchLockfilesBranchPattern': obj.mergeGitBranchLockfilesBranchPattern?.map(y => y),
'peersSuffixMaxLength': obj.peersSuffixMaxLength,
'registry': obj.registry,
'ca': obj.ca,
'cafile': obj.cafile,
'cert': obj.cert,
'key': obj.key,
'gitShallowHosts': obj.gitShallowHosts?.map(y => y),
'httpsProxy': obj.httpsProxy,
'httpProxy': obj.httpProxy,
'proxy': obj.proxy,
'localAddress': obj.localAddress,
'maxsockets': obj.maxsockets,
'noProxy': obj.noProxy,
'strictSsl': obj.strictSsl,
'networkConcurrency': obj.networkConcurrency,
'fetchRetries': obj.fetchRetries,
'fetchRetryFactor': obj.fetchRetryFactor,
'fetchRetryMintimeout': obj.fetchRetryMintimeout,
'fetchRetryMaxtimeout': obj.fetchRetryMaxtimeout,
'fetchTimeout': obj.fetchTimeout,
'fetchWarnTimeoutMs': obj.fetchWarnTimeoutMs,
'fetchMinSpeedKiBps': obj.fetchMinSpeedKiBps,
'autoInstallPeers': obj.autoInstallPeers,
'dedupePeerDependents': obj.dedupePeerDependents,
'strictPeerDependencies': obj.strictPeerDependencies,
'resolvePeersFromWorkspaceRoot': obj.resolvePeersFromWorkspaceRoot,
'color': obj.color,
'loglevel': obj.loglevel,
'reporter': obj.reporter,
'useBetaCli': obj.useBetaCli,
'recursiveInstall': obj.recursiveInstall,
'engineStrict': obj.engineStrict,
'npmPath': obj.npmPath,
'packageManagerStrict': obj.packageManagerStrict,
'packageManagerStrictVersion': obj.packageManagerStrictVersion,
'managePackageManagerVersions': obj.managePackageManagerVersions,
'ignoreScripts': obj.ignoreScripts,
'ignoreDepScripts': obj.ignoreDepScripts,
'childConcurrency': obj.childConcurrency,
'sideEffectsCache': obj.sideEffectsCache,
'sideEffectsCacheReadonly': obj.sideEffectsCacheReadonly,
'unsafePerm': obj.unsafePerm,
'nodeOptions': obj.nodeOptions,
'verifyDepsBeforeRun': obj.verifyDepsBeforeRun,
'strictDepBuilds': obj.strictDepBuilds,
'useNodeVersion': obj.useNodeVersion,
'nodeVersion': obj.nodeVersion,
'linkWorkspacePackages': obj.linkWorkspacePackages?.value,
'injectWorkspacePackages': obj.injectWorkspacePackages,
'syncInjectedDepsAfterScripts': obj.syncInjectedDepsAfterScripts?.map(y => y),
'preferWorkspacePackages': obj.preferWorkspacePackages,
'sharedWorkspaceLockfile': obj.sharedWorkspaceLockfile,
'saveWorkspaceProtocol': obj.saveWorkspaceProtocol?.value,
'includeWorkspaceRoot': obj.includeWorkspaceRoot,
'ignoreWorkspaceCycles': obj.ignoreWorkspaceCycles,
'ignoreWorkspaceRootCheck': obj.ignoreWorkspaceRootCheck,
'disallowWorkspaceCycles': obj.disallowWorkspaceCycles,
'workspaceConcurrency': obj.workspaceConcurrency,
'failIfNoMatch': obj.failIfNoMatch,
'forceLegacyDeploy': obj.forceLegacyDeploy,
'savePrefix': obj.savePrefix,
'tag': obj.tag,
'globalDir': obj.globalDir,
'globalBinDir': obj.globalBinDir,
'stateDir': obj.stateDir,
'cacheDir': obj.cacheDir,
'useStderr': obj.useStderr,
'updateNotifier': obj.updateNotifier,
'preferSymlinkedExecutables': obj.preferSymlinkedExecutables,
'ignoreCompatibilityDb': obj.ignoreCompatibilityDb,
'resolutionMode': obj.resolutionMode,
'registrySupportsTimeField': obj.registrySupportsTimeField,
'extendNodePath': obj.extendNodePath,
'deployAllFiles': obj.deployAllFiles,
'dedupeDirectDeps': obj.dedupeDirectDeps,
'dedupeInjectedDeps': obj.dedupeInjectedDeps,
'optimisticRepeatInstall': obj.optimisticRepeatInstall,
'gitChecks': obj.gitChecks,
'embedReadme': obj.embedReadme,
'publishBranch': obj.publishBranch,
'versioning': toJson_PnpmWorkspaceYamlSchemaVersioning(obj.versioning),
'provenance': obj.provenance,
'pnpmfile': obj.pnpmfile,
'globalPnpmfile': obj.globalPnpmfile,
'ignorePnpmfile': obj.ignorePnpmfile,
'patchesDir': obj.patchesDir,
'enablePrePostScripts': obj.enablePrePostScripts,
'scriptShell': obj.scriptShell,
'shellEmulator': obj.shellEmulator,
'saveExact': obj.saveExact,
'minimumReleaseAge': obj.minimumReleaseAge,
'minimumReleaseAgeExclude': obj.minimumReleaseAgeExclude?.map(y => y),
'minimumReleaseAgeStrict': obj.minimumReleaseAgeStrict,
'minimumReleaseAgeExcludePrune': obj.minimumReleaseAgeExcludePrune,
'preferOffline': obj.preferOffline,
'trustPolicy': obj.trustPolicy,
'trustPolicyExclude': obj.trustPolicyExclude?.map(y => y),
'allowBuilds': obj.allowBuilds,
'blockExoticSubdeps': obj.blockExoticSubdeps,
'trustPolicyIgnoreAfter': obj.trustPolicyIgnoreAfter,
'auditLevel': obj.auditLevel,
'dedupePeers': obj.dedupePeers,
'npmrcAuthFile': obj.npmrcAuthFile,
'minimumReleaseAgeIgnoreMissingTime': obj.minimumReleaseAgeIgnoreMissingTime,
'registries': ((obj.registries) === undefined) ? undefined : (Object.entries(obj.registries).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'namedRegistries': ((obj.namedRegistries) === undefined) ? undefined : (Object.entries(obj.namedRegistries).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'virtualStoreOnly': obj.virtualStoreOnly,
'pmOnFail': obj.pmOnFail,
'runtimeOnFail': obj.runtimeOnFail,
'nodeDownloadMirrors': ((obj.nodeDownloadMirrors) === undefined) ? undefined : (Object.entries(obj.nodeDownloadMirrors).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'trustLockfile': obj.trustLockfile,
'hoistingLimits': obj.hoistingLimits,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
/**
* Controlling if and how dependencies are added to the default catalog
*
* @schema PnpmWorkspaceYamlSchemaCatalogMode
*/
var PnpmWorkspaceYamlSchemaCatalogMode;
(function (PnpmWorkspaceYamlSchemaCatalogMode) {
/** strict */
PnpmWorkspaceYamlSchemaCatalogMode["STRICT"] = "strict";
/** prefer */
PnpmWorkspaceYamlSchemaCatalogMode["PREFER"] = "prefer";
/** manual */
PnpmWorkspaceYamlSchemaCatalogMode["MANUAL"] = "manual";
})(PnpmWorkspaceYamlSchemaCatalogMode || (exports.PnpmWorkspaceYamlSchemaCatalogMode = PnpmWorkspaceYamlSchemaCatalogMode = {}));
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaPeerDependencyRules' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ignoreMissing': obj.ignoreMissing?.map(y => y),
'allowedVersions': obj.allowedVersions,
'allowAny': obj.allowAny?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaUpdate' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaUpdate(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ignoreDeps': obj.ignoreDeps?.map(y => y),
'changeset': obj.changeset,
'githubActions': obj.githubActions,
'githubActionsServer': obj.githubActionsServer,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaUpdateConfig' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaUpdateConfig(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ignoreDependencies': obj.ignoreDependencies?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaAudit' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaAudit(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'level': obj.level,
'ignore': obj.ignore?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaAuditConfig' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaAuditConfig(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ignoreCves': obj.ignoreCves?.map(y => y),
'ignoreGhsas': obj.ignoreGhsas?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaSupportedArchitectures' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'os': obj.os?.map(y => y),
'cpu': obj.cpu?.map(y => y),
'libc': obj.libc?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaExecutionEnv' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaExecutionEnv(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'nodeVersion': obj.nodeVersion,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
/**
* Defines what linker should be used for installing Node packages.
*
* @schema PnpmWorkspaceYamlSchemaNodeLinker
*/
var PnpmWorkspaceYamlSchemaNodeLinker;
(function (PnpmWorkspaceYamlSchemaNodeLinker) {
/** isolated */
PnpmWorkspaceYamlSchemaNodeLinker["ISOLATED"] = "isolated";
/** hoisted */
PnpmWorkspaceYamlSchemaNodeLinker["HOISTED"] = "hoisted";
/** pnp */
PnpmWorkspaceYamlSchemaNodeLinker["PNP"] = "pnp";
})(PnpmWorkspaceYamlSchemaNodeLinker || (exports.PnpmWorkspaceYamlSchemaNodeLinker = PnpmWorkspaceYamlSchemaNodeLinker = {}));
/**
* Controls how node_modules/.package-map.json is generated. standard - only declared dependencies are available through the package map. loose - also maps packages that are reachable through the installed node_modules layout, which can allow undeclared hoisted dependencies to resolve.
*
* @schema PnpmWorkspaceYamlSchemaNodePackageMapType
*/
var PnpmWorkspaceYamlSchemaNodePackageMapType;
(function (PnpmWorkspaceYamlSchemaNodePackageMapType) {
/** standard */
PnpmWorkspaceYamlSchemaNodePackageMapType["STANDARD"] = "standard";
/** loose */
PnpmWorkspaceYamlSchemaNodePackageMapType["LOOSE"] = "loose";
})(PnpmWorkspaceYamlSchemaNodePackageMapType || (exports.PnpmWorkspaceYamlSchemaNodePackageMapType = PnpmWorkspaceYamlSchemaNodePackageMapType = {}));
/**
* Controls the way packages are imported from the store (if you want to disable symlinks inside node_modules, then you need to change the nodeLinker setting, not this one).
*
* @schema PnpmWorkspaceYamlSchemaPackageImportMethod
*/
var PnpmWorkspaceYamlSchemaPackageImportMethod;
(function (PnpmWorkspaceYamlSchemaPackageImportMethod) {
/** auto */
PnpmWorkspaceYamlSchemaPackageImportMethod["AUTO"] = "auto";
/** hardlink */
PnpmWorkspaceYamlSchemaPackageImportMethod["HARDLINK"] = "hardlink";
/** copy */
PnpmWorkspaceYamlSchemaPackageImportMethod["COPY"] = "copy";
/** clone */
PnpmWorkspaceYamlSchemaPackageImportMethod["CLONE"] = "clone";
/** clone-or-copy */
PnpmWorkspaceYamlSchemaPackageImportMethod["CLONE_HYPHEN_OR_HYPHEN_COPY"] = "clone-or-copy";
})(PnpmWorkspaceYamlSchemaPackageImportMethod || (exports.PnpmWorkspaceYamlSchemaPackageImportMethod = PnpmWorkspaceYamlSchemaPackageImportMethod = {}));
/**
* Controls colors in the output.
*
* @schema PnpmWorkspaceYamlSchemaColor
*/
var PnpmWorkspaceYamlSchemaColor;
(function (PnpmWorkspaceYamlSchemaColor) {
/** always */
PnpmWorkspaceYamlSchemaColor["ALWAYS"] = "always";
/** auto */
PnpmWorkspaceYamlSchemaColor["AUTO"] = "auto";
/** never */
PnpmWorkspaceYamlSchemaColor["NEVER"] = "never";
})(PnpmWorkspaceYamlSchemaColor || (exports.PnpmWorkspaceYamlSchemaColor = PnpmWorkspaceYamlSchemaColor = {}));
/**
* Any logs at or higher than the given level will be shown.
*
* @schema PnpmWorkspaceYamlSchemaLoglevel
*/
var PnpmWorkspaceYamlSchemaLoglevel;
(function (PnpmWorkspaceYamlSchemaLoglevel) {
/** debug */
PnpmWorkspaceYamlSchemaLoglevel["DEBUG"] = "debug";
/** info */
PnpmWorkspaceYamlSchemaLoglevel["INFO"] = "info";
/** warn */
PnpmWorkspaceYamlSchemaLoglevel["WARN"] = "warn";
/** error */
PnpmWorkspaceYamlSchemaLoglevel["ERROR"] = "error";
})(PnpmWorkspaceYamlSchemaLoglevel || (exports.PnpmWorkspaceYamlSchemaLoglevel = PnpmWorkspaceYamlSchemaLoglevel = {}));
/**
* Allows you to customize the output style of the logs.
* https://pnpm.io/cli/install#--reportername
*
* @schema PnpmWorkspaceYamlSchemaReporter
*/
var PnpmWorkspaceYamlSchemaReporter;
(function (PnpmWorkspaceYamlSchemaReporter) {
/** silent */
PnpmWorkspaceYamlSchemaReporter["SILENT"] = "silent";
/** default */
PnpmWorkspaceYamlSchemaReporter["DEFAULT"] = "default";
/** append-only */
PnpmWorkspaceYamlSchemaReporter["APPEND_HYPHEN_ONLY"] = "append-only";
/** ndjson */
PnpmWorkspaceYamlSchemaReporter["NDJSON"] = "ndjson";
})(PnpmWorkspaceYamlSchemaReporter || (exports.PnpmWorkspaceYamlSchemaReporter = PnpmWorkspaceYamlSchemaReporter = {}));
/**
* If this is enabled, locally available packages are linked to node_modules instead of being downloaded from the registry.
*
* @schema PnpmWorkspaceYamlSchemaLinkWorkspacePackages
*/
class PnpmWorkspaceYamlSchemaLinkWorkspacePackages {
value;
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.103.12" };
static fromBoolean(value) {
return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
}
static fromString(value) {
return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
}
constructor(value) {
this.value = value;
}
}
exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = PnpmWorkspaceYamlSchemaLinkWorkspacePackages;
/**
* This setting controls how dependencies that are linked from the workspace are added to package.json.
*
* @schema PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol
*/
class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
value;
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.103.12" };
static fromBoolean(value) {
return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
}
static fromString(value) {
return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
}
constructor(value) {
this.value = value;
}
}
exports.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol = PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol;
/**
* Configure how versions of packages installed to a package.json file get prefixed.
*
* @schema PnpmWorkspaceYamlSchemaSavePrefix
*/
var PnpmWorkspaceYamlSchemaSavePrefix;
(function (PnpmWorkspaceYamlSchemaSavePrefix) {
/** ^ */
PnpmWorkspaceYamlSchemaSavePrefix["VALUE_CARAT"] = "^";
/** ~ */
PnpmWorkspaceYamlSchemaSavePrefix["VALUE_TILDE"] = "~";
/** = */
PnpmWorkspaceYamlSchemaSavePrefix["VALUE_EQUALS"] = "=";
})(PnpmWorkspaceYamlSchemaSavePrefix || (exports.PnpmWorkspaceYamlSchemaSavePrefix = PnpmWorkspaceYamlSchemaSavePrefix = {}));
/**
* Determines how pnpm resolves dependencies, See https://pnpm.io/settings#resolutionmode
*
* @schema PnpmWorkspaceYamlSchemaResolutionMode
*/
var PnpmWorkspaceYamlSchemaResolutionMode;
(function (PnpmWorkspaceYamlSchemaResolutionMode) {
/** highest */
PnpmWorkspaceYamlSchemaResolutionMode["HIGHEST"] = "highest";
/** time-based */
PnpmWorkspaceYamlSchemaResolutionMode["TIME_HYPHEN_BASED"] = "time-based";
/** lowest-direct */
PnpmWorkspaceYamlSchemaResolutionMode["LOWEST_HYPHEN_DIRECT"] = "lowest-direct";
})(PnpmWorkspaceYamlSchemaResolutionMode || (exports.PnpmWorkspaceYamlSchemaResolutionMode = PnpmWorkspaceYamlSchemaResolutionMode = {}));
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaVersioning' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaVersioning(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'fixed': obj.fixed?.map(y => y?.map(y => y)),
'ignore': obj.ignore?.map(y => y),
'maxBump': obj.maxBump,
'lanes': ((obj.lanes) === undefined) ? undefined : (Object.entries(obj.lanes).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
'epics': obj.epics?.map(y => toJson_PnpmWorkspaceYamlSchemaVersioningEpics(y)),
'changelog': toJson_PnpmWorkspaceYamlSchemaVersioningChangelog(obj.changelog),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
/**
* When set to no-downgrade, pnpm will fail if a package's trust level has decreased compared to previous releases. For example, if a package was previously published by a trusted publisher but now only has provenance or no trust evidence, installation will fail. This helps prevent installing potentially compromised versions.
*
* @schema PnpmWorkspaceYamlSchemaTrustPolicy
*/
var PnpmWorkspaceYamlSchemaTrustPolicy;
(function (PnpmWorkspaceYamlSchemaTrustPolicy) {
/** off */
PnpmWorkspaceYamlSchemaTrustPolicy["OFF"] = "off";
/** no-downgrade */
PnpmWorkspaceYamlSchemaTrustPolicy["NO_HYPHEN_DOWNGRADE"] = "no-downgrade";
})(PnpmWorkspaceYamlSchemaTrustPolicy || (exports.PnpmWorkspaceYamlSchemaTrustPolicy = PnpmWorkspaceYamlSchemaTrustPolicy = {}));
/**
* Only print advisories with severity greater than or equal to this level.
*
* @schema PnpmWorkspaceYamlSchemaAuditLevel
*/
var PnpmWorkspaceYamlSchemaAuditLevel;
(function (PnpmWorkspaceYamlSchemaAuditLevel) {
/** low */
PnpmWorkspaceYamlSchemaAuditLevel["LOW"] = "low";
/** moderate */
PnpmWorkspaceYamlSchemaAuditLevel["MODERATE"] = "moderate";
/** high */
PnpmWorkspaceYamlSchemaAuditLevel["HIGH"] = "high";
/** critical */
PnpmWorkspaceYamlSchemaAuditLevel["CRITICAL"] = "critical";
})(PnpmWorkspaceYamlSchemaAuditLevel || (exports.PnpmWorkspaceYamlSchemaAuditLevel = PnpmWorkspaceYamlSchemaAuditLevel = {}));
/**
* Overrides the `onFail` behavior of both the `packageManager` field and `devEngines.packageManager` when the running pnpm version does not match the declared one.
*
* @schema PnpmWorkspaceYamlSchemaPmOnFail
*/
var PnpmWorkspaceYamlSchemaPmOnFail;
(function (PnpmWorkspaceYamlSchemaPmOnFail) {
/** download */
PnpmWorkspaceYamlSchemaPmOnFail["DOWNLOAD"] = "download";
/** error */
PnpmWorkspaceYamlSchemaPmOnFail["ERROR"] = "error";
/** warn */
PnpmWorkspaceYamlSchemaPmOnFail["WARN"] = "warn";
/** ignore */
PnpmWorkspaceYamlSchemaPmOnFail["IGNORE"] = "ignore";
})(PnpmWorkspaceYamlSchemaPmOnFail || (exports.PnpmWorkspaceYamlSchemaPmOnFail = PnpmWorkspaceYamlSchemaPmOnFail = {}));
/**
* Overrides the `onFail` field of `devEngines.runtime` (and `engines.runtime`) in the root project's `package.json`. This is useful when you want a different local behavior than what is written in the manifest — for instance, forcing pnpm to download the declared runtime even when the manifest sets `onFail: "warn"`.
*
* @schema PnpmWorkspaceYamlSchemaRuntimeOnFail
*/
var PnpmWorkspaceYamlSchemaRuntimeOnFail;
(function (PnpmWorkspaceYamlSchemaRuntimeOnFail) {
/** download */
PnpmWorkspaceYamlSchemaRuntimeOnFail["DOWNLOAD"] = "download";
/** error */
PnpmWorkspaceYamlSchemaRuntimeOnFail["ERROR"] = "error";
/** warn */
PnpmWorkspaceYamlSchemaRuntimeOnFail["WARN"] = "warn";
/** ignore */
PnpmWorkspaceYamlSchemaRuntimeOnFail["IGNORE"] = "ignore";
})(PnpmWorkspaceYamlSchemaRuntimeOnFail || (exports.PnpmWorkspaceYamlSchemaRuntimeOnFail = PnpmWorkspaceYamlSchemaRuntimeOnFail = {}));
/**
* Added a new hoistingLimits setting for `nodeLinker: hoisted` installs, mirroring yarn's `nmHoistingLimits`. It accepts `none` (the default — hoist as far as possible), workspaces (hoist only as far as each workspace package), or dependencies (hoist only up to each workspace package's direct dependencies).
*
* @schema PnpmWorkspaceYamlSchemaHoistingLimits
*/
var PnpmWorkspaceYamlSchemaHoistingLimits;
(function (PnpmWorkspaceYamlSchemaHoistingLimits) {
/** node */
PnpmWorkspaceYamlSchemaHoistingLimits["NODE"] = "node";
/** workspaces */
PnpmWorkspaceYamlSchemaHoistingLimits["WORKSPACES"] = "workspaces";
/** dependencies */
PnpmWorkspaceYamlSchemaHoistingLimits["DEPENDENCIES"] = "dependencies";
})(PnpmWorkspaceYamlSchemaHoistingLimits || (exports.PnpmWorkspaceYamlSchemaHoistingLimits = PnpmWorkspaceYamlSchemaHoistingLimits = {}));
/**
* Caps the bump that a release from the current checkout may apply, after dependent propagation and fixed-group resolution.
*
* @schema PnpmWorkspaceYamlSchemaVersioningMaxBump
*/
var PnpmWorkspaceYamlSchemaVersioningMaxBump;
(function (PnpmWorkspaceYamlSchemaVersioningMaxBump) {
/** patch */
PnpmWorkspaceYamlSchemaVersioningMaxBump["PATCH"] = "patch";
/** minor */
PnpmWorkspaceYamlSchemaVersioningMaxBump["MINOR"] = "minor";
/** major */
PnpmWorkspaceYamlSchemaVersioningMaxBump["MAJOR"] = "major";
})(PnpmWorkspaceYamlSchemaVersioningMaxBump || (exports.PnpmWorkspaceYamlSchemaVersioningMaxBump = PnpmWorkspaceYamlSchemaVersioningMaxBump = {}));
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaVersioningEpics' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaVersioningEpics(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'lead': obj.lead,
'packages': obj.packages?.map(y => y),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PnpmWorkspaceYamlSchemaVersioningChangelog' to JSON representation.
* @internal
*/
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_PnpmWorkspaceYamlSchemaVersioningChangelog(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'storage': obj.storage,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
/**
* Changelog storage mode. `registry` composes changelog entries at publish time, while `repository` commits CHANGELOG.md files in packages.
*
* @schema PnpmWorkspaceYamlSchemaVersioningChangelogStorage
*/
var PnpmWorkspaceYamlSchemaVersioningChangelogStorage;
(function (PnpmWorkspaceYamlSchemaVersioningChangelogStorage) {
/** registry */
PnpmWorkspaceYamlSchemaVersioningChangelogStorage["REGISTRY"] = "registry";
/** repository */
PnpmWorkspaceYamlSchemaVersioningChangelogStorage["REPOSITORY"] = "repository";
})(PnpmWorkspaceYamlSchemaVersioningChangelogStorage || (exports.PnpmWorkspaceYamlSchemaVersioningChangelogStorage = PnpmWorkspaceYamlSchemaVersioningChangelogStorage = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlwQ0Esd0VBNEtDO0FBZ0RELDhHQVNDO0FBeUNELG9GQVVDO0FBb0JELGdHQU9DO0FBMkJELGtGQVFDO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DO0FBZ05ELDRGQVlDO0FBbUhELHNHQVFDO0FBc0JELDhHQU9DOztBQXB6QkQ7OztHQUdHO0FBQ0gscUZBQXFGO0FBQ3JGLFNBQWdCLDhCQUE4QixDQUFDLEdBQXdDO0lBQ3JGLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5SixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsUyxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQjtRQUNsRCxjQUFjLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDaEMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxXQUFXLEVBQUUsR0FB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QUMxRyxDQUFDO0FBaUJEOzs7R0FHRztBQUNILHFGQUFxRjtBQUNyRixTQUFnQixpREFBaUQsQ0FBQyxHQUEyRDtJQUMzSCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTztLQUN2QixDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFHLENBQUM7QUFDRCxvRkFBb0Y7QUFFcEY7Ozs7R0FJRztBQUNILElBQVksaURBS1g7QUFMRCxXQUFZLGlEQUFpRDtJQUMzRCxlQUFlO0lBQ2YsMEVBQXFCLENBQUE7SUFDckIsaUJBQWlCO0lBQ2pCLDhFQUF5QixDQUFBO0FBQzNCLENBQUMsRUFMVyxpREFBaUQsaUVBQWpELGlEQUFpRCxRQUs1RCIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cbi8qKlxuICogSlNPTiBzY2hlbWEgZm9yIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEge1xuICAvKipcbiAgICogV29ya3NwYWNlIHBhY2thZ2UgcGF0aHMuIEdsb2IgcGF0dGVybnMgYXJlIHN1cHBvcnRlZFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcyBhcyByZXVzYWJsZSBjb25zdGFudHMsXG4gICAqIGZvciBsYXRlciByZWZlcmVuY2UgaW4gcGFja2FnZS5qc29uIGZpbGVzLlxuICAgKiBUaGlzIChzaW5ndWxhcikgZmllbGQgY3JlYXRlcyBhIGNhdGFsb2cgbmFtZWQgZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lIGFyYml0cmFyaWx5IG5hbWVkIGNhdGFsb2dzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dzPzogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dNb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBwbnBtIHdpbGwgcmVtb3ZlIHVudXNlZCBjYXRhbG9nIGVudHJpZXMgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjbGVhbnVwVW51c2VkQ2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBVbnVzZWRDYXRhbG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHBucG0gd2lsbCByZW1vdmUgdW51c2VkIGNhdGFsb2cgZW50cmllcyBkdXJpbmcgaW5zdGFsbGF0aW9uLiBgY2xlYW51cFVudXNlZENhdGFsb2dzYCBpcyB0aGUgZGVwcmVjYXRlZCBzcGVsbGluZyBvZiB0aGlzIHNldHRpbmcgYW5kIGNvbnRpbnVlcyB0byB3b3JrOyB3aGVuIGJvdGggYXJlIHNldCwgYGNhdGFsb2dQcnVuZWAgd2lucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nUHJ1bmVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dQcnVuZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgZXhlY3V0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IG9ubHlCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIGFueSBkZXBlbmRlbmN5IGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI292ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGV4dGVuZCB0aGUgZXhpc3RpbmcgcGFja2FnZSBkZWZpbml0aW9ucyB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUV4dGVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VFeHRlbnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBQZXItd29ya3NwYWNlLXByb2plY3QgcG5wbSBzZXR0aW5ncyB0aGF0IHJlcGxhY2UgcHJvamVjdC1zcGVjaWZpYyAubnBtcmMgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUNvbmZpZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VDb25maWdzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJEZXBlbmRlbmN5UnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmN5UnVsZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdG8gcnVuIGJ1aWxkcyBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV2ZXJCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgbmV2ZXJCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYWxsIGJ1aWxkIHNjcmlwdHMgKGUuZy4gcHJlaW5zdGFsbCwgaW5zdGFsbCwgcG9zdGluc3RhbGwpIGZyb20gZGVwZW5kZW5jaWVzIHdpbGwgcnVuIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgcmVxdWlyaW5nIGFwcHJvdmFsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBKU09OIGZpbGUgdGhhdCBsaXN0cyB0aGUgb25seSBwYWNrYWdlcyBwZXJtaXR0ZWQgdG8gcnVuIGluc3RhbGxhdGlvbiBzY3JpcHRzIGR1cmluZyB0aGUgcG5wbSBpbnN0YWxsIHByb2Nlc3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0IGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcHJlY2F0ZWQgdmVyc2lvbnMgdGhhdCB0aGUgd2FybmluZ3MgYXJlIHN1cHByZXNzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgcGF0Y2hlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVkRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVkRGVwZW5kZW5jaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuIChQcmV2aW91c2x5IG5hbWVkIFwiYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1wiKVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93VW51c2VkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dOb25BcHBsaWVkUGF0Y2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaXMgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQYXRjaEZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQYXRjaEZhaWx1cmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1cGRhdGVcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZUNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlQ29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWc7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBkZXBlbmRlbmNpZXMgYWxsb3cgeW91IHRvIHNoYXJlIGFuZCBjZW50cmFsaXplIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNldHRpbmdzLCBhbmQgaG9va3MgYWNyb3NzIG11bHRpcGxlIHByb2plY3RzLiBUaGV5IGFyZSBpbnN0YWxsZWQgYmVmb3JlIGFsbCByZWd1bGFyIGRlcGVuZGVuY2llcyAoJ2RlcGVuZGVuY2llcycsICdkZXZEZXBlbmRlbmNpZXMnLCAnb3B0aW9uYWxEZXBlbmRlbmNpZXMnKSwgbWFraW5nIHRoZW0gaWRlYWwgZm9yIHNldHRpbmcgdXAgY3VzdG9tIGhvb2tzLCBwYXRjaGVzLCBhbmQgY2F0YWxvZyBlbnRyaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbmZpZ0RlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnRGVwZW5kZW5jaWVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1ZGl0XG4gICAqL1xuICByZWFkb25seSBhdWRpdD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IGF1ZGl0Q29uZmlnPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHNjcmlwdHMgdGhhdCBtdXN0IGV4aXN0IGluIGVhY2ggcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXF1aXJlZFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVkU2NyaXB0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N1cHBvcnRlZEFyY2hpdGVjdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IHN1cHBvcnRlZEFyY2hpdGVjdHVyZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBvcHRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgaW5zdGFsbCBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2V4ZWN1dGlvbkVudlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uRW52PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnY7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIGRlcGVuZGVuY2llcyBhcmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0XG4gICAqL1xuICByZWFkb25seSBob2lzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlcyBhcmUgc3ltbGlua2VkIHRvIGVpdGhlciA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMgb3IgdG8gPHdvcmtzcGFjZV9yb290Pi9ub2RlX21vZHVsZXMgZGVwZW5kaW5nIG9uIG90aGVyIGhvaXN0aW5nIHNldHRpbmdzIChob2lzdFBhdHRlcm4gYW5kIHB1YmxpY0hvaXN0UGF0dGVybikuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRlbGxzIHBucG0gd2hpY2ggcGFja2FnZXMgc2hvdWxkIGJlIGhvaXN0ZWQgdG8gbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVubGlrZSBob2lzdFBhdHRlcm4sIHdoaWNoIGhvaXN0cyBkZXBlbmRlbmNpZXMgdG8gYSBoaWRkZW4gbW9kdWxlcyBkaXJlY3RvcnkgaW5zaWRlIHRoZSB2aXJ0dWFsIHN0b3JlLCBwdWJsaWNIb2lzdFBhdHRlcm4gaG9pc3RzIGRlcGVuZGVuY2llcyBtYXRjaGluZyB0aGUgcGF0dGVybiB0byB0aGUgcm9vdCBtb2R1bGVzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwdWJsaWNIb2lzdFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0hvaXN0UGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGNyZWF0ZXMgYSBzZW1pc3RyaWN0IG5vZGVfbW9kdWxlcywgbWVhbmluZyBkZXBlbmRlbmNpZXMgaGF2ZSBhY2Nlc3MgdG8gdW5kZWNsYXJlZCBkZXBlbmRlbmNpZXMgYnV0IG1vZHVsZXMgb3V0c2lkZSBvZiBub2RlX21vZHVsZXMgZG8gbm90LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYW1lZnVsbHlIb2lzdFxuICAgKi9cbiAgcmVhZG9ubHkgc2hhbWVmdWxseUhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSBpbiB3aGljaCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBpbnN0YWxsZWQgKGluc3RlYWQgb2Ygbm9kZV9tb2R1bGVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtb2R1bGVzRGlyXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZUxpbmtlclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUxpbmtlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlcjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIGluamVjdHMgdGhlIGdlbmVyYXRlZCBub2RlX21vZHVsZXMvLnBhY2thZ2UtbWFwLmpzb24gaW50byBwbnBtLW1hbmFnZWQgTm9kZS5qcyBzY3JpcHQgZW52aXJvbm1lbnRzIGJ5IGFkZGluZyBOb2RlJ3MgLS1leHBlcmltZW50YWwtcGFja2FnZS1tYXAgb3B0aW9uIHRvIE5PREVfT1BUSU9OUy4gc2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncy9ub2RlLW1vZHVsZXMjbm9kZWV4cGVyaW1lbnRhbHBhY2thZ2VtYXBcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlRXhwZXJpbWVudGFsUGFja2FnZU1hcFxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZUV4cGVyaW1lbnRhbFBhY2thZ2VNYXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgbm9kZV9tb2R1bGVzLy5wYWNrYWdlLW1hcC5qc29uIGlzIGdlbmVyYXRlZC4gc3RhbmRhcmQgLSBvbmx5IGRlY2xhcmVkIGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFwLiBsb29zZSAtIGFsc28gbWFwcyBwYWNrYWdlcyB0aGF0IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgaW5zdGFsbGVkIG5vZGVfbW9kdWxlcyBsYXlvdXQsIHdoaWNoIGNhbiBhbGxvdyB1bmRlY2xhcmVkIGhvaXN0ZWQgZGVwZW5kZW5jaWVzIHRvIHJlc29sdmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZVBhY2thZ2VNYXBUeXBlXG4gICAqL1xuICByZWFkb25seSBub2RlUGFja2FnZU1hcFR5cGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZTtcblxuICAvKipcbiAgICogV2hlbiBzeW1saW5rIGlzIHNldCB0byBmYWxzZSwgcG5wbSBjcmVhdGVzIGEgdmlydHVhbCBzdG9yZSBkaXJlY3Rvcnkgd2l0aG91dCBhbnkgc3ltbGlua3MuIEl0IGlzIGEgdXNlZnVsIHNldHRpbmcgdG9nZXRoZXIgd2l0aCBub2RlTGlua2VyPXBucC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzeW1saW5rXG4gICAqL1xuICByZWFkb25seSBzeW1saW5rPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBmYWxzZSwgcG5wbSB3aWxsIG5vdCB3cml0ZSBhbnkgZmlsZXMgdG8gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IChub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZU1vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU1vZHVsZXNEaXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdpdGggbGlua3MgdG8gdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpclxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIG9mIGRpcmVjdG9yeSBuYW1lcyBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUgZGlyZWN0b3J5IChub2RlX21vZHVsZXMvLnBucG0pLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZURpck1heExlbmd0aFxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgd2F5IHBhY2thZ2VzIGFyZSBpbXBvcnRlZCBmcm9tIHRoZSBzdG9yZSAoaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzeW1saW5rcyBpbnNpZGUgbm9kZV9tb2R1bGVzLCB0aGVuIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbm9kZUxpbmtlciBzZXR0aW5nLCBub3QgdGhpcyBvbmUpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VJbXBvcnRNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VJbXBvcnRNZXRob2Q/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Q7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggb3JwaGFuIHBhY2thZ2VzIGZyb20gdGhlIG1vZHVsZXMgZGlyZWN0b3J5IHNob3VsZCBiZSByZW1vdmVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNDYWNoZU1heEFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlc0NhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbiBtaW51dGVzIGFmdGVyIHdoaWNoIGRseCBjYWNoZSBleHBpcmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RseENhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBkbHhDYWNoZU1heEFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSBzdG9yZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgYSBmaWxlIGluIHRoZSBzdG9yZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzIGNoZWNrZWQgYmVmb3JlIGxpbmtpbmcgaXQgdG8gYSBwcm9qZWN0J3Mgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZlcmlmeVN0b3JlSW50ZWdyaXR5XG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlTdG9yZUludGVncml0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNvbWUgcmVnaXN0cmllcyBhbGxvdyB0aGUgZXhhY3Qgc2FtZSBjb250ZW50IHRvIGJlIHB1Ymxpc2hlZCB1bmRlciBkaWZmZXJlbnQgcGFja2FnZSBuYW1lcyBhbmQvb3IgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBub2RlX21vZHVsZXMgY29udGFpbnMgb25seSBzeW1saW5rcyB0byBhIGNlbnRyYWwgdmlydHVhbCBzdG9yZSwgcmF0aGVyIHRoYW4gdG8gbm9kZV9tb2R1bGVzLy5wbnBtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gZmFsc2UsIHBucG0gd29uJ3QgcmVhZCBvciBnZW5lcmF0ZSBhIHBucG0tbG9jay55YW1sIGZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIGF2YWlsYWJsZSBwbnBtLWxvY2sueWFtbCBzYXRpc2ZpZXMgdGhlIHBhY2thZ2UuanNvbiBkZXBlbmRlbmNpZXMgZGlyZWN0aXZlLCBhIGhlYWRsZXNzIGluc3RhbGxhdGlvbiBpcyBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyRnJvemVuTG9ja2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlckZyb3plbkxvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIHRoZSBmdWxsIFVSTCB0byB0aGUgcGFja2FnZSdzIHRhcmJhbGwgdG8gZXZlcnkgZW50cnkgaW4gcG5wbS1sb2NrLnlhbWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybFxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIHRoZSBnZW5lcmF0ZWQgbG9ja2ZpbGUgbmFtZSBhZnRlciBpbnN0YWxsYXRpb24gd2lsbCBiZSBuYW1lZCBiYXNlZCBvbiB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBjb21wbGV0ZWx5IGF2b2lkIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRCcmFuY2hMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBicmFuY2ggbmFtZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBtZXJnZSBhbGwgZ2l0IGJyYW5jaCBsb2NrZmlsZSBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybj86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBNYXggbGVuZ3RoIG9mIHRoZSBwZWVyIElEcyBzdWZmaXggYWRkZWQgdG8gZGVwZW5kZW5jeSBrZXlzIGluIHRoZSBsb2NrZmlsZS4gSWYgdGhlIHN1ZmZpeCBpcyBsb25nZXIsIGl0IGlzIHJlcGxhY2VkIHdpdGggYSBoYXNoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJzU3VmZml4TWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSBwZWVyc1N1ZmZpeE1heExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBucG0gcGFja2FnZSByZWdpc3RyeSAodHJhaWxpbmcgc2xhc2ggaW5jbHVkZWQpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSByZWdpc3RyeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENlcnRpZmljYXRlIEF1dGhvcml0eSBzaWduaW5nIGNlcnRpZmljYXRlIHRoYXQgaXMgdHJ1c3RlZCBmb3IgU1NMIGNvbm5lY3Rpb25zIHRvIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYVxuICAgKi9cbiAgcmVhZG9ubHkgY2E/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbXVsdGlwbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FmaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBjZXJ0aWZpY2F0ZSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjZXJ0XG4gICAqL1xuICByZWFkb25seSBjZXJ0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCBrZXkgdG8gcGFzcyB3aGVuIGFjY2Vzc2luZyB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gZmV0Y2hpbmcgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIEdpdCByZXBvc2l0b3JpZXMsIGlmIHRoZSBob3N0IGlzIGxpc3RlZCBpbiB0aGlzIHNldHRpbmcsIHBucG0gd2lsbCB1c2Ugc2hhbGxvdyBjbG9uaW5nIHRvIGZldGNoIG9ubHkgdGhlIG5lZWRlZCBjb21taXQsIG5vdCBhbGwgdGhlIGhpc3RvcnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0U2hhbGxvd0hvc3RzXG4gICAqL1xuICByZWFkb25seSBnaXRTaGFsbG93SG9zdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBwcm94eSB0byB1c2UgZm9yIG91dGdvaW5nIEhUVFBTIHJlcXVlc3RzLiBJZiB0aGUgSFRUUFNfUFJPWFksIGh0dHBzX3Byb3h5LCBIVFRQX1BST1hZIG9yIGh0dHBfcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHVzZWQgaW5zdGVhZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwc1Byb3h5XG4gICAqL1xuICByZWFkb25seSBodHRwc1Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgSFRUUCByZXF1ZXN0cy4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNodHRwUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogbnBtJ3MgbGVnYWN5IHByb3h5IHNldHRpbmcsIHVzZWQgYXMgdGhlIGZhbGxiYWNrIGZvciBib3RoIGh0dHBzUHJveHkgYW5kIGh0dHBQcm94eS4gSWYgdGhlIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgcHJveHkgc2V0dGluZ3Mgd2lsbCBiZSBob25vcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIHJlcXVlc3QgbGlicmFyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgcHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBsb2NhbCBpbnRlcmZhY2UgdG8gdXNlIHdoZW4gbWFraW5nIGNvbm5lY3Rpb25zIHRvIHRoZSBucG0gcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbG9jYWxBZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBsb2NhbEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyB0byB1c2UgcGVyIG9yaWdpbiAocHJvdG9jb2wvaG9zdC9wb3J0IGNvbWJpbmF0aW9uKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtYXhzb2NrZXRzXG4gICAqL1xuICByZWFkb25seSBtYXhzb2NrZXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgZG9tYWluIGV4dGVuc2lvbnMgdGhhdCBhIHByb3h5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9Qcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgbm9Qcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZG8gU1NMIGtleSB2YWxpZGF0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzIHRvIHRoZSByZWdpc3RyeSB2aWEgSFRUUFMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0U3NsXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RTc2w/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgSFRUUChTKSByZXF1ZXN0cyB0byBwcm9jZXNzIHNpbXVsdGFuZW91c2x5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25ldHdvcmtDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0NvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3cgbWFueSB0aW1lcyB0byByZXRyeSBpZiBwbnBtIGZhaWxzIHRvIGZldGNoIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhwb25lbnRpYWwgZmFjdG9yIGZvciByZXRyeSBiYWNrb2ZmLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlGYWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoUmV0cnlGYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIChiYXNlKSB0aW1lb3V0IGZvciByZXRyeWluZyByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWludGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1pbnRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGZhbGxiYWNrIHRpbWVvdXQgdG8gZW5zdXJlIHRoZSByZXRyeSBmYWN0b3IgZG9lcyBub3QgbWFrZSByZXF1ZXN0cyB0b28gbG9uZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFJldHJ5TWF4dGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeU1heHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgZm9yIEhUVFAgcmVxdWVzdHMgdG8gY29tcGxldGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hUaW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgd2FybmluZyBtZXNzYWdlIGlzIGRpc3BsYXllZCBpZiBhIG1ldGFkYXRhIHJlcXVlc3QgdG8gdGhlIHJlZ2lzdHJ5IHRha2VzIGxvbmdlciB0aGFuIHRoZSBzcGVjaWZpZWQgdGhyZXNob2xkIChpbiBtaWxsaXNlY29uZHMpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoV2FyblRpbWVvdXRNc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hXYXJuVGltZW91dE1zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHdhcm5pbmcgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaWYgdGhlIGRvd25sb2FkIHNwZWVkIG9mIGEgdGFyYmFsbCBmcm9tIHRoZSByZWdpc3RyeSBmYWxscyBiZWxvdyB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZCAoaW4gS2lCL3MpLiBBZGRlZCBpbiBwbnBtIHYxMC4xOC4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoTWluU3BlZWRLaUJwc1xuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hNaW5TcGVlZEtpQnBzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFueSBtaXNzaW5nIG5vbi1vcHRpb25hbCBwZWVyIGRlcGVuZGVuY2llcyBhcmUgYXV0b21hdGljYWxseSBpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXV0b0luc3RhbGxQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0luc3RhbGxQZWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCBwYWNrYWdlcyB3aXRoIHBlZXIgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZGVkdXBsaWNhdGVkIGFmdGVyIHBlZXJzIHJlc29sdXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlUGVlckRlcGVuZGVudHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZVBlZXJEZXBlbmRlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBjb21tYW5kcyB3aWxsIGZhaWwgaWYgdGhlcmUgaXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGVlciBkZXBlbmRlbmN5IGluIHRoZSB0cmVlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0cmljdFBlZXJEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFBlZXJEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGRlcGVuZGVuY2llcyBvZiB0aGUgcm9vdCB3b3Jrc3BhY2UgcHJvamVjdCBhcmUgdXNlZCB0byByZXNvbHZlIHBlZXIgZGVwZW5kZW5jaWVzIG9mIGFueSBwcm9qZWN0cyBpbiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290XG4gICAqL1xuICByZWFkb25seSByZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NvbG9yXG4gICAqL1xuICByZWFkb25seSBjb2xvcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3I7XG5cbiAgLyoqXG4gICAqIEFueSBsb2dzIGF0IG9yIGhpZ2hlciB0aGFuIHRoZSBnaXZlbiBsZXZlbCB3aWxsIGJlIHNob3duLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xvZ2xldmVsXG4gICAqL1xuICByZWFkb25seSBsb2dsZXZlbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWw7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgc3R5bGUgb2YgdGhlIGxvZ3MuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcG9ydGVyXG4gICAqL1xuICByZWFkb25seSByZXBvcnRlcj86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXI7XG5cbiAgLyoqXG4gICAqIEV4cGVyaW1lbnRhbCBvcHRpb24gdGhhdCBlbmFibGVzIGJldGEgZmVhdHVyZXMgb2YgdGhlIENMSS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VCZXRhQ2xpXG4gICAqL1xuICByZWFkb25seSB1c2VCZXRhQ2xpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCB0aGUgcHJpbWFyeSBiZWhhdmlvdXIgb2YgcG5wbSBpbnN0YWxsIGJlY29tZXMgdGhhdCBvZiBwbnBtIGluc3RhbGwgLXIsIG1lYW5pbmcgdGhlIGluc3RhbGwgaXMgcGVyZm9ybWVkIG9uIGFsbCB3b3Jrc3BhY2Ugb3Igc3ViZGlyZWN0b3J5IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlY3Vyc2l2ZUluc3RhbGxcbiAgICovXG4gIHJlYWRvbmx5IHJlY3Vyc2l2ZUluc3RhbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGVuYWJsZWQsIHBucG0gd2lsbCBub3QgaW5zdGFsbCBhbnkgcGFja2FnZSB0aGF0IGNsYWltcyB0byBub3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IE5vZGUgdmVyc2lvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmdpbmVTdHJpY3RcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbnBtIGJpbmFyeSB0aGF0IHBucG0gdXNlcyBmb3Igc29tZSBhY3Rpb25zLCBsaWtlIHB1Ymxpc2hpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgbnBtUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBzZXR0aW5nIGlzIGRpc2FibGVkLCBwbnBtIHdpbGwgbm90IGZhaWwgaWYgYSBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyIGlzIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLiBXaGVuIGVuYWJsZWQsIG9ubHkgdGhlIHBhY2thZ2UgbmFtZSBpcyBjaGVja2VkIChzaW5jZSBwbnBtIHY5LjIuMCksIHNvIHlvdSBjYW4gc3RpbGwgcnVuIGFueSB2ZXJzaW9uIG9mIHBucG0gcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlclN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGZhaWwgaWYgaXRzIHZlcnNpb24gZG9lc24ndCBleGFjdGx5IG1hdGNoIHRoZSB2ZXJzaW9uIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwbnBtIHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCBhbmQgcnVuIHRoZSB2ZXJzaW9uIG9mIHBucG0gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZCBvZiBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvIG5vdCBleGVjdXRlIGFueSBzY3JpcHRzIGRlZmluZWQgaW4gdGhlIHByb2plY3QgcGFja2FnZS5qc29uIGFuZCBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLiBTY3JpcHRzIG9mIHRoZSBwcm9qZWN0cyBhcmUgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlRGVwU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRGVwU2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlsZCBwcm9jZXNzZXMgdG8gYWxsb2NhdGUgc2ltdWx0YW5lb3VzbHkgdG8gYnVpbGQgbm9kZV9tb2R1bGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NoaWxkQ29uY3VycmVuY3lcbiAgICovXG4gIHJlYWRvbmx5IGNoaWxkQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFVzZSBhbmQgY2FjaGUgdGhlIHJlc3VsdHMgb2YgKHByZS9wb3N0KWluc3RhbGwgaG9va3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2lkZUVmZmVjdHNDYWNoZVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgdXNlIHRoZSBzaWRlIGVmZmVjdHMgY2FjaGUgaWYgcHJlc2VudCwgZG8gbm90IGNyZWF0ZSBpdCBmb3IgbmV3IHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIFVJRC9HSUQgc3dpdGNoaW5nIHdoZW4gcnVubmluZyBwYWNrYWdlIHNjcmlwdHMuIElmIHNldCBleHBsaWNpdGx5IHRvIGZhbHNlLCB0aGVuIGluc3RhbGxpbmcgYXMgYSBub24tcm9vdCB1c2VyIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1bnNhZmVQZXJtXG4gICAqL1xuICByZWFkb25seSB1bnNhZmVQZXJtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBwYXNzIHRocm91Z2ggdG8gTm9kZS5qcyB2aWEgdGhlIE5PREVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZU9wdGlvbnM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBhbGxvd3MgdGhlIGNoZWNraW5nIG9mIHRoZSBzdGF0ZSBvZiBkZXBlbmRlbmNpZXMgYmVmb3JlIHJ1bm5pbmcgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2ZXJpZnlEZXBzQmVmb3JlUnVuXG4gICAqL1xuICByZWFkb25seSB2ZXJpZnlEZXBzQmVmb3JlUnVuPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHN0cmljdERlcEJ1aWxkcyBpcyBlbmFibGVkLCB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGlmIGFueSBkZXBlbmRlbmNpZXMgaGF2ZSB1bnJldmlld2VkIGJ1aWxkIHNjcmlwdHMgKGFrYSBwb3N0aW5zdGFsbCBzY3JpcHRzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3REZXBCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdERlcEJ1aWxkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1c2VOb2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgdXNlTm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOb2RlLmpzIHZlcnNpb24gdG8gdXNlIHdoZW4gY2hlY2tpbmcgYSBwYWNrYWdlJ3MgZW5naW5lcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbGx5IGF2YWlsYWJsZSBwYWNrYWdlcyBhcmUgbGlua2VkIHRvIG5vZGVfbW9kdWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGRvd25sb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBsaW5rV29ya3NwYWNlUGFja2FnZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcztcblxuICAvKipcbiAgICogRW5hYmxlcyBoYXJkLWxpbmtpbmcgb2YgYWxsIGxvY2FsIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgaW5zdGVhZCBvZiBzeW1saW5raW5nIHRoZW0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5qZWN0V29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGluamVjdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5qZWN0ZWQgd29ya3NwYWNlIGRlcGVuZGVuY2llcyBhcmUgY29sbGVjdGlvbnMgb2YgaGFyZGxpbmtzLCB3aGljaCBkb24ndCBhZGQgb3IgcmVtb3ZlIHRoZSBmaWxlcyB3aGVuIHRoZWlyIHNvdXJjZXMgY2hhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IHN5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBsb2NhbCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIHByZWZlcnJlZCBvdmVyIHBhY2thZ2VzIGZyb20gdGhlIHJlZ2lzdHJ5LCBldmVuIGlmIHRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBpbiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyV29ya3NwYWNlUGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcldvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIGNyZWF0ZXMgYSBzaW5nbGUgcG5wbS1sb2NrLnlhbWwgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgd29ya3NwYWNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVXb3Jrc3BhY2VQcm90b2NvbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBXaGVuIGV4ZWN1dGluZyBjb21tYW5kcyByZWN1cnNpdmVseSBpbiBhIHdvcmtzcGFjZSwgZXhlY3V0ZSB0aGVtIG9uIHRoZSByb290IHdvcmtzcGFjZSBwcm9qZWN0IGFzIHdlbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaW5jbHVkZVdvcmtzcGFjZVJvb3RcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVXb3Jrc3BhY2VSb290PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgbm8gd29ya3NwYWNlIGN5Y2xlIHdhcm5pbmdzIHdpbGwgYmUgcHJpbnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VDeWNsZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGluZyBhIG5ldyBkZXBlbmRlbmN5IHRvIHRoZSByb290IHdvcmtzcGFjZSBwYWNrYWdlIGZhaWxzLCB1bmxlc3MgdGhlIC0taWdub3JlLXdvcmtzcGFjZS1yb290LWNoZWNrIG9yIC13IGZsYWcgaXMgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2tcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVdvcmtzcGFjZVJvb3RDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwgaWYgdGhlIHdvcmtzcGFjZSBoYXMgY3ljbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgdG8gcnVuIHNpbXVsdGFuZW91c2x5LiBGb3IgdW5saW1pdGVkIGNvbmN1cnJlbmN5IHVzZSBJbmZpbml0eS4gWW91IGNhbiBzZXQgdGhlIHZhbHVlIHRvIDw9IDAgYW5kIGl0IHdpbGwgdXNlIGFtb3VudCBvZiBDUFUgY29yZXMgb2YgdGhlIGhvc3QgbWludXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBwcm92aWRlZCBudW1iZXIgYXM6IG1heCgxLCAobnVtYmVyIG9mIGNvcmVzKSAtIGFicyh3b3Jrc3BhY2VDb25jdXJyZW5jeSkpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3dvcmtzcGFjZUNvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VDb25jdXJyZW5jeT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcG5wbSB3aWxsIGZhaWwgaWYgbm8gcGFja2FnZXMgbWF0Y2ggdGhlIGZpbHRlclxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZhaWxJZk5vTWF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxJZk5vTWF0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBwbnBtIGRlcGxveSB3aWxsIHRyeSBjcmVhdGluZyBhIGRlZGljYXRlZCBsb2NrZmlsZSBmcm9tIGEgc2hhcmVkIGxvY2tmaWxlIGZvciBkZXBsb3ltZW50LiBJZiB0aGlzIHNldHRpbmcgaXMgc2V0IHRvIHRydWUsIHRoZSBsZWdhY3kgZGVwbG95IGJlaGF2aW9yIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmb3JjZUxlZ2FjeURlcGxveVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VMZWdhY3lEZXBsb3k/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgaG93IHZlcnNpb25zIG9mIHBhY2thZ2VzIGluc3RhbGxlZCB0byBhIHBhY2thZ2UuanNvbiBmaWxlIGdldCBwcmVmaXhlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlUHJlZml4XG4gICAqL1xuICByZWFkb25seSBzYXZlUHJlZml4PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4O1xuXG4gIC8qKlxuICAgKiBJZiB5b3UgcG5wbSBhZGQgYSBwYWNrYWdlIGFuZCB5b3UgZG9uJ3QgcHJvdmlkZSBhIHNwZWNpZmljIHZlcnNpb24sIHRoZW4gaXQgd2lsbCBpbnN0YWxsIHRoZSBwYWNrYWdlIGF0IHRoZSB2ZXJzaW9uIHJlZ2lzdGVyZWQgdW5kZXIgdGhlIHRhZyBmcm9tIHRoaXMgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0YWdcbiAgICovXG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSBhIGN1c3RvbSBkaXJlY3RvcnkgdG8gc3RvcmUgZ2xvYmFsIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbERpclxuICAgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2V0IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGZvciB0aGUgYmluIGZpbGVzIG9mIGdsb2JhbGx5IGluc3RhbGxlZCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxCaW5EaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbEJpbkRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHdoZXJlIGFsbCB0aGUgcGFja2FnZXMgYXJlIHNhdmVkIG9uIHRoZSBkaXNrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N0YXRlRGlyXG4gICAqL1xuICByZWFkb25seSBzdGF0ZURpcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIHRoZSBjYWNoZSAocGFja2FnZSBtZXRhZGF0YSBhbmQgZGx4KS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYWNoZURpclxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWxsIHRoZSBvdXRwdXQgaXMgd3JpdHRlbiB0byBzdGRlcnIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlU3RkZXJyXG4gICAqL1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBjaGVjayBmb3IgdXBkYXRlcyB0byB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIGFuZCBub3RpZnkgdGhlIHVzZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXBkYXRlTm90aWZpZXJcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZU5vdGlmaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlIHN5bWxpbmtzIHRvIGV4ZWN1dGFibGVzIGluIG5vZGVfbW9kdWxlcy8uYmluIGluc3RlYWQgb2YgY29tbWFuZCBzaGltcy4gVGhpcyBzZXR0aW5nIGlzIGlnbm9yZWQgb24gV2luZG93cywgd2hlcmUgb25seSBjb21tYW5kIHNoaW1zIHdvcmsuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRHVyaW5nIGluc3RhbGxhdGlvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIHNvbWUgcGFja2FnZXMgYXJlIGF1dG9tYXRpY2FsbHkgcGF0Y2hlZC4gSWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGlzLCBzZXQgdGhpcyBjb25maWcgdG8gZmFsc2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlQ29tcGF0aWJpbGl0eURiXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDb21wYXRpYmlsaXR5RGI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBwbnBtIHJlc29sdmVzIGRlcGVuZGVuY2llcywgU2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNyZXNvbHV0aW9ubW9kZVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Jlc29sdXRpb25Nb2RlXG4gICAqL1xuICByZWFkb25seSByZXNvbHV0aW9uTW9kZT86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGlzIHRvIHRydWUgaWYgdGhlIHJlZ2lzdHJ5IHRoYXQgeW91IGFyZSB1c2luZyByZXR1cm5zIHRoZSBcInRpbWVcIiBmaWVsZCBpbiB0aGUgYWJicmV2aWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZmFsc2UsIHRoZSBOT0RFX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCBpbiB0aGUgY29tbWFuZCBzaGltcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNleHRlbmROb2RlUGF0aFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5kTm9kZVBhdGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGRlcGxveWluZyBhIHBhY2thZ2Ugb3IgaW5zdGFsbGluZyBhIGxvY2FsIHBhY2thZ2UsIGFsbCBmaWxlcyBvZiB0aGUgcGFja2FnZSBhcmUgY29waWVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlcGxveUFsbEZpbGVzXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lBbGxGaWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBhbHJlYWR5IHN5bWxpbmtlZCB0byB0aGUgcm9vdCBub2RlX21vZHVsZXMgZGlyZWN0b3J5IG9mIHRoZSB3b3Jrc3BhY2Ugd2lsbCBub3QgYmUgc3ltbGlua2VkIHRvIHN1YnByb2plY3Qgbm9kZV9tb2R1bGVzIGRpcmVjdG9yaWVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZURpcmVjdERlcHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZURpcmVjdERlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgc2V0dGluZyBpcyBlbmFibGVkLCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgaW5qZWN0ZWQgd2lsbCBiZSBzeW1saW5rZWQgZnJvbSB0aGUgd29ya3NwYWNlIHdoZW5ldmVyIHBvc3NpYmxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZUluamVjdGVkRGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlSW5qZWN0ZWREZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBhIGZhc3QgY2hlY2sgd2lsbCBiZSBwZXJmb3JtZWQgYmVmb3JlIHByb2NlZWRpbmcgdG8gaW5zdGFsbGF0aW9uLiBUaGlzIHdheSBhIHJlcGVhdCBpbnN0YWxsIG9yIGFuIGluc3RhbGwgb24gYSBwcm9qZWN0IHdpdGggZXZlcnl0aGluZyB1cC10by1kYXRlIGJlY29tZXMgYSBsb3QgZmFzdGVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI29wdGltaXN0aWNSZXBlYXRJbnN0YWxsXG4gICAqL1xuICByZWFkb25seSBvcHRpbWlzdGljUmVwZWF0SW5zdGFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGN1cnJlbnQgYnJhbmNoIGlzIHlvdXIgcHVibGlzaCBicmFuY2gsIGNsZWFuLCBhbmQgdXAtdG8tZGF0ZSB3aXRoIHJlbW90ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRDaGVja3NcbiAgICovXG4gIHJlYWRvbmx5IGdpdENoZWNrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFVORE9DVU1FTlRFRC4gV2hlbiBgdHJ1ZWAsIGBwbnBtIHB1Ymxpc2hgIHdyaXRlcyB0aGUgUkVBRE1FIGZpbGUncyBjb250ZW50IGludG8gdGhlIHB1Ymxpc2hlZCBwYWNrYWdlLmpzb24gKHRoZSBgcmVhZG1lYCBmaWVsZCksIHNvIHJlZ2lzdHJpZXMgc3VjaCBhcyBucG1qcy5jb20gcmVuZGVyIHRoZSBwYWNrYWdlJ3MgUkVBRE1FLiBBZGRlZCBpbiBwbnBtIDYuMjguMDsgcG5wbSBkb2VzIG5vdCBlbWJlZCB0aGUgUkVBRE1FIHVubGVzcyB0aGlzIGlzIGVuYWJsZWQuIEl0IGFsc28gd29uJ3Qgb3ZlcnJpZGUgYSBgcmVhZG1lYCBmaWVsZCBhbHJlYWR5IHNldCBpbiB0aGUgcGFja2FnZS5qc29uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW1iZWRSZWFkbWVcbiAgICovXG4gIHJlYWRvbmx5IGVtYmVkUmVhZG1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgYnJhbmNoIG9mIHRoZSByZXBvc2l0b3J5IHdoaWNoIGlzIHVzZWQgZm9yIHB1Ymxpc2hpbmcgdGhlIGxhdGVzdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1Ymxpc2hCcmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb25pbmcgc2V0dGluZ3MgZm9yIHBucG0ncyBuYXRpdmUgd29ya3NwYWNlIHJlbGVhc2UgbWFuYWdlbWVudCwgdXNlZCBieSBgcG5wbSBjaGFuZ2VgIGFuZCByZWN1cnNpdmUgYHBucG0gdmVyc2lvbmAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyc2lvbmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbmluZz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZztcblxuICAvKipcbiAgICogV2hlbiBwdWJsaXNoaW5nIGZyb20gYSBzdXBwb3J0ZWQgY2xvdWQgQ0kvQ0Qgc3lzdGVtLCB0aGUgcGFja2FnZSB3aWxsIGJlIHB1YmxpY2x5IGxpbmtlZCB0byB3aGVyZSBpdCB3YXMgYnVpbHQgYW5kIHB1Ymxpc2hlZCBmcm9tLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Byb3ZlbmFuY2VcbiAgICovXG4gIHJlYWRvbmx5IHByb3ZlbmFuY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGxvY2FsIHBucG1maWxlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BucG1maWxlXG4gICAqL1xuICByZWFkb25seSBwbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIG9mIGEgZ2xvYmFsIHBucG1maWxlLiBBIGdsb2JhbCBwbnBtZmlsZSBpcyB1c2VkIGJ5IGFsbCBwcm9qZWN0cyBkdXJpbmcgaW5zdGFsbGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dsb2JhbFBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxQbnBtZmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogLnBucG1maWxlLmNqcyB3aWxsIGJlIGlnbm9yZWQuIFVzZWZ1bCB0b2dldGhlciB3aXRoIC0taWdub3JlLXNjcmlwdHMgd2hlbiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBubyBzY3JpcHQgZ2V0cyBleGVjdXRlZCBkdXJpbmcgaW5zdGFsbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQbnBtZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlUG5wbWZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2VuZXJhdGVkIHBhdGNoIGZpbGUgd2lsbCBiZSBzYXZlZCB0byB0aGlzIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVzRGlyXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVzRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCBydW4gYW55IHByZS9wb3N0IHNjcmlwdHMgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNlbmFibGVQcmVQb3N0U2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUHJlUG9zdFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hlbGwgdG8gdXNlIGZvciBzY3JpcHRzIHJ1biB3aXRoIHRoZSBwbnBtIHJ1biBjb21tYW5kLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NjcmlwdFNoZWxsXG4gICAqL1xuICByZWFkb25seSBzY3JpcHRTaGVsbD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgdXNlIGEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIGJhc2gtbGlrZSBzaGVsbCB0byBleGVjdXRlIHNjcmlwdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hlbGxFbXVsYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgc2hlbGxFbXVsYXRvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNhdmVkIGRlcGVuZGVuY2llcyB3aWxsIGJlIGNvbmZpZ3VyZWQgd2l0aCBhbiBleGFjdCB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHBucG0ncyBkZWZhdWx0IHNlbXZlciByYW5nZSBvcGVyYXRvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzYXZlRXhhY3RcbiAgICovXG4gIHJlYWRvbmx5IHNhdmVFeGFjdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG1pbmltdW1SZWxlYXNlQWdlIGRlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgdGhhdCBtdXN0IHBhc3MgYWZ0ZXIgYSB2ZXJzaW9uIGlzIHB1Ymxpc2hlZCBiZWZvcmUgcG5wbSB3aWxsIGluc3RhbGwgaXQuIFRoaXMgYXBwbGllcyB0byBhbGwgZGVwZW5kZW5jaWVzLCBpbmNsdWRpbmcgdHJhbnNpdGl2ZSBvbmVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSWYgeW91IHNldCBgbWluaW11bVJlbGVhc2VBZ2VgIGJ1dCBuZWVkIGNlcnRhaW4gZGVwZW5kZW5jaWVzIHRvIGFsd2F5cyBpbnN0YWxsIHRoZSBuZXdlc3QgdmVyc2lvbiBpbW1lZGlhdGVseSwgeW91IGNhbiBsaXN0IHRoZW0gdW5kZXIgYG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZWAuIFRoZSBleGNsdXNpb24gd29ya3MgYnkgYHBhY2thZ2UgbmFtZWAgYW5kIGFwcGxpZXMgdG8gYWxsIHZlcnNpb25zIG9mIHRoYXQgcGFja2FnZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgcG5wbSBiZWhhdmVzIHdoZW4gbm8gdmVyc2lvbiBvZiBhIGRlcGVuZGVuY3kgc2F0aXNmaWVzIHRoZSBtaW5pbXVtUmVsZWFzZUFnZSBjb25zdHJhaW50IHdpdGhpbiB0aGUgcmVxdWVzdGVkIHJhbmdlLlxuICAgKiBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjbWluaW11bXJlbGVhc2VhZ2VzdHJpY3RcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNtaW5pbXVtUmVsZWFzZUFnZVN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIGFkZCwgcG5wbSB1cGRhdGUsIGFuZCBwbnBtIHJlbW92ZSBwcnVuZSB0aGUgZW50cmllcyBvZiBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUgaW4gcG5wbS13b3Jrc3BhY2UueWFtbCB0aGF0IHRoZSBmcmVzaGx5IHdyaXR0ZW4gbG9ja2ZpbGUgbm8gbG9uZ2VyIHJlc29sdmVzOiBhIHZlcnNpb24gdGhhdCBpcyBnb25lIGlzIGRyb3BwZWQgKGFuIGVudHJ5IGlzIHJlbW92ZWQgb25jZSBub25lIG9mIGl0cyB2ZXJzaW9ucyByZW1haW4pLCBhbmQgYW4gZW50cnkgZm9yIGEgcGFja2FnZSB0aGF0IGlzIG5vIGxvbmdlciBpbiB0aGUgbG9ja2ZpbGUgaXMgcmVtb3ZlZCB0b28uIE5hbWUgcGF0dGVybnMgKEBteW9yZy8qKSBhcmUgYWx3YXlzIGtlcHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlUHJ1bmVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnlwYXNzIHN0YWxlbmVzcyBjaGVja3MgZm9yIGNhY2hlZCBkYXRhLiBNaXNzaW5nIGRhdGEgd2lsbCBzdGlsbCBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgc2VydmVyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlck9mZmxpbmVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZlck9mZmxpbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBuby1kb3duZ3JhZGUsIHBucG0gd2lsbCBmYWlsIGlmIGEgcGFja2FnZSdzIHRydXN0IGxldmVsIGhhcyBkZWNyZWFzZWQgY29tcGFyZWQgdG8gcHJldmlvdXMgcmVsZWFzZXMuIEZvciBleGFtcGxlLCBpZiBhIHBhY2thZ2Ugd2FzIHByZXZpb3VzbHkgcHVibGlzaGVkIGJ5IGEgdHJ1c3RlZCBwdWJsaXNoZXIgYnV0IG5vdyBvbmx5IGhhcyBwcm92ZW5hbmNlIG9yIG5vIHRydXN0IGV2aWRlbmNlLCBpbnN0YWxsYXRpb24gd2lsbCBmYWlsLiBUaGlzIGhlbHBzIHByZXZlbnQgaW5zdGFsbGluZyBwb3RlbnRpYWxseSBjb21wcm9taXNlZCB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdFBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3k/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5O1xuXG4gIC8qKlxuICAgKiBZb3UgY2FuIG5vdyBsaXN0IG9uZSBvciBtb3JlIHNwZWNpZmljIHBhY2thZ2VzIG9yIHZlcnNpb25zIHRoYXQgcG5wbSBzaG91bGQgYWxsb3cgdG8gaW5zdGFsbCwgZXZlbiBpZiB0aG9zZSBwYWNrYWdlcyBkb24ndCBzYXRpc2Z5IHRoZSB0cnVzdCBwb2xpY3kgcmVxdWlyZW1lbnQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lFeGNsdWRlXG4gICAqL1xuICByZWFkb25seSB0cnVzdFBvbGljeUV4Y2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBtYXAgb2YgcGFja2FnZSBtYXRjaGVycyB0byBleHBsaWNpdGx5IGFsbG93IChgdHJ1ZWApIG9yIGRpc2FsbG93IChgZmFsc2VgKSBzY3JpcHQgZXhlY3V0aW9uLiBUaGlzIGZpZWxkIHJlcGxhY2VzIGBvbmx5QnVpbHREZXBlbmRlbmNpZXNgIGFuZCBgaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzYCAod2hpY2ggYXJlIGFsc28gZGVwcmVjYXRlZCBieSB0aGlzIG5ldyBzZXR0aW5nKSwgcHJvdmlkaW5nIGEgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhbGxvd0J1aWxkc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dCdWlsZHM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIGl0IHByZXZlbnRzIHRoZSByZXNvbHV0aW9uIG9mIGV4b3RpYyBwcm90b2NvbHMgKGxpa2UgZ2l0K3NzaDogb3IgZGlyZWN0IGh0dHBzOiB0YXJiYWxscykgaW4gdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMuIE9ubHkgZGlyZWN0IGRlcGVuZGVuY2llcyBhcmUgYWxsb3dlZCB0byB1c2UgZXhvdGljIHNvdXJjZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYmxvY2tFeG90aWNTdWJkZXBzXG4gICAqL1xuICByZWFkb25seSBibG9ja0V4b3RpY1N1YmRlcHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgaWdub3JpbmcgdGhlIHRydXN0IHBvbGljeSBjaGVjayBmb3IgcGFja2FnZXMgcHVibGlzaGVkIG1vcmUgdGhhbiB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaW51dGVzIGFnby4gVGhpcyBpcyB1c2VmdWwgd2hlbiBlbmFibGluZyBzdHJpY3QgdHJ1c3QgcG9saWNpZXMsIGFzIGl0IGFsbG93cyBvbGRlciB2ZXJzaW9ucyBvZiBwYWNrYWdlcyAod2hpY2ggbWF5IGxhY2sgYSBwcm9jZXNzIGZvciBwdWJsaXNoaW5nIHdpdGggc2lnbmF0dXJlcyBvciBwcm92ZW5hbmNlKSB0byBiZSBpbnN0YWxsZWQgd2l0aG91dCBtYW51YWwgZXhjbHVzaW9uLCBhc3N1bWluZyB0aGV5IGFyZSBzYWZlIGR1ZSB0byB0aGVpciBhZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lJZ25vcmVBZnRlclxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3lJZ25vcmVBZnRlcj86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGxldmVsIG9mIGlzc3VlcyByZXBvcnRlZCBieSBgcG5wbSBhdWRpdGAuIFdoZW4gc2V0IHRvICdsb3cnLCBhbGwgdnVsbmVyYWJpbGl0aWVzIGFyZSByZXBvcnRlZC4gV2hlbiBzZXQgdG8gJ21vZGVyYXRlJywgJ2hpZ2gnLCBvciAnY3JpdGljYWwnLCBvbmx5IHZ1bG5lcmFiaWxpdGllcyB3aXRoIHRoYXQgc2V2ZXJpdHkgb3IgaGlnaGVyIGFyZSByZXBvcnRlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdExldmVsXG4gICAqL1xuICByZWFkb25seSBhdWRpdExldmVsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBlZXIgZGVwZW5kZW5jeSBzdWZmaXhlcyB1c2UgdmVyc2lvbi1vbmx5IGlkZW50aWZpZXJzIChgbmFtZUB2ZXJzaW9uYCkgaW5zdGVhZCBvZiBmdWxsIGRlcCBwYXRocywgZWxpbWluYXRpbmcgbmVzdGVkIHN1ZmZpeGVzIGxpa2UgYChmb29AMS4wLjAoYmFyQDIuMC4wKSlgLiBUaGlzIGRyYW1hdGljYWxseSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcGFja2FnZSBpbnN0YW5jZXMgaW4gcHJvamVjdHMgd2l0aCBtYW55IHJlY3Vyc2l2ZSBwZWVyIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVQZWVyc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVkdXBlUGVlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyByZWdpc3RyeSBhdXRoZW50aWNhdGlvbiB0b2tlbnMuIEJ5IGRlZmF1bHQsIHBucG0gcmVhZHMgYXV0aCB0b2tlbnMgZnJvbSB+Ly5ucG1yYyBhcyBhIGZhbGxiYWNrIGZvciByZWdpc3RyeSBhdXRoZW50aWNhdGlvbi4gVXNlIHRoaXMgc2V0dGluZyB0byBwb2ludCB0byBhIGRpZmZlcmVudCBmaWxlIGluc3RlYWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbnBtcmNBdXRoRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbnBtcmNBdXRoRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHBucG0gc2tpcHMgdGhlIGBtaW5pbXVtUmVsZWFzZUFnZWAgY2hlY2sgZm9yIGEgcGFja2FnZSB3aG9zZSByZWdpc3RyeSBtZXRhZGF0YSBkb2VzIG5vdCBpbmNsdWRlIHRoZSB0aW1lIGZpZWxkIChzb21lIHByaXZhdGUgcmVnaXN0cmllcyBhbmQgbWlycm9ycyBvbWl0IGl0KS4gU2V0IHRvIGBmYWxzZWAgdG8gZmFpbCByZXNvbHV0aW9uIGluIHRoYXQgY2FzZSBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgdGhlIHBhY2thZ2UuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSByZWdpc3RyaWVzIGZvciBzY29wZWQgcGFja2FnZXMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUgYGRlZmF1bHRgIGtleSBzZXRzIHRoZSBtYWluIHJlZ2lzdHJ5IChlcXVpdmFsZW50IHRvIHRoZSBgcmVnaXN0cnlgIGAubnBtcmNgIHNldHRpbmcpLiBTY29wZWQga2V5cyBjb25maWd1cmUgcmVnaXN0cmllcyBmb3Igc3BlY2lmaWMgcGFja2FnZSBzY29wZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cmllcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIERlZmluZXMgbmFtZWQgcmVnaXN0cnkgYWxpYXNlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgcHJlZml4IHdoZW4gaW5zdGFsbGluZyBwYWNrYWdlcywgZS5nLiBgcG5wbSBhZGQgd29yazpAY29ycC9saWJAXjIuMC4wYCByZXNvbHZlcyBgQGNvcnAvbGliQF4yLjAuMGAgYWdhaW5zdCB0aGUgY29uZmlndXJlZCBVUkwuIEJ1aWx0LWluIGFsaWFzZXMgYGdoOmAgKGh0dHBzOi8vbnBtLnBrZy5naXRodWIuY29tLykgYW5kIGBucG1qczpgIChodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8pIHdvcmsgd2l0aG91dCBhbnkgY29uZmlndXJhdGlvbiBhbmQgY2FuIGJlIG92ZXJyaWRkZW4uIEFuIGFsaWFzIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBvbmx5IGxldHRlcnMsIGRpZ2l0cywgYC5gLCBgX2AsIGFuZCBgLWAuIEFkZGVkIGluIHBucG0gMTEuMS4wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25hbWVkUmVnaXN0cmllc1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZWRSZWdpc3RyaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgcG5wbSBwb3B1bGF0ZXMgdGhlIHZpcnR1YWwgc3RvcmUgd2l0aG91dCBjcmVhdGluZyBpbXBvcnRlciBzeW1saW5rcywgaG9pc3RpbmcsIGJpbiBsaW5rcywgb3IgcnVubmluZyBsaWZlY3ljbGUgc2NyaXB0cy4gVGhpcyBpcyB1c2VmdWwgZm9yIHByZS1wb3B1bGF0aW5nIGEgc3RvcmUgKGUuZy4sIGluIE5peCBidWlsZHMpIHdpdGhvdXQgY3JlYXRpbmcgdW5uZWNlc3NhcnkgcHJvamVjdC1sZXZlbCBhcnRpZmFjdHMuIHBucG0gZmV0Y2ggdXNlcyB0aGlzIG1vZGUgaW50ZXJuYWxseS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN2aXJ0dWFsU3RvcmVPbmx5XG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVPbmx5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBiZWhhdmlvciBvZiBib3RoIHRoZSBgcGFja2FnZU1hbmFnZXJgIGZpZWxkIGFuZCBgZGV2RW5naW5lcy5wYWNrYWdlTWFuYWdlcmAgd2hlbiB0aGUgcnVubmluZyBwbnBtIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGRlY2xhcmVkIG9uZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwbU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcG1PbkZhaWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGZpZWxkIG9mIGBkZXZFbmdpbmVzLnJ1bnRpbWVgIChhbmQgYGVuZ2luZXMucnVudGltZWApIGluIHRoZSByb290IHByb2plY3QncyBgcGFja2FnZS5qc29uYC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCBhIGRpZmZlcmVudCBsb2NhbCBiZWhhdmlvciB0aGFuIHdoYXQgaXMgd3JpdHRlbiBpbiB0aGUgbWFuaWZlc3Qg4oCUIGZvciBpbnN0YW5jZSwgZm9yY2luZyBwbnBtIHRvIGRvd25sb2FkIHRoZSBkZWNsYXJlZCBydW50aW1lIGV2ZW4gd2hlbiB0aGUgbWFuaWZlc3Qgc2V0cyBgb25GYWlsOiBcIndhcm5cImAuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcnVudGltZU9uRmFpbFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbDtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGN1c3RvbSBOb2RlLmpzIGRvd25sb2FkIG1pcnJvcnMgaW4gYHBucG0td29ya3NwYWNlLnlhbWxgLiBUaGUga2V5cyBhcmUgcmVsZWFzZSBjaGFubmVscyAoYHJlbGVhc2VgLCBgcmNgLCBgbmlnaHRseWAsIGB2OC1jYW5hcnlgLCBldGMuKSBhbmQgdGhlIHZhbHVlcyBhcmUgYmFzZSBVUkxzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25vZGVEb3dubG9hZE1pcnJvcnNcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVEb3dubG9hZE1pcnJvcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIG5ldyB0cnVzdExvY2tmaWxlIHNldHRpbmcgY29udHJvbHMgd2hldGhlciBwbnBtIGluc3RhbGwgcmUtYXBwbGllcyB0aGUgYG1pbmltdW1SZWxlYXNlQWdlYCAvIGB0cnVzdFBvbGljeTogJ25vLWRvd25ncmFkZSdgIGNoZWNrcyB0byBldmVyeSBlbnRyeSBpbiB0aGUgbG9hZGVkIGxvY2tmaWxlLiBXaGVuIHRydWUsIHRoZSBpbnN0YWxsIHRyZWF0cyB0aGUgbG9ja2ZpbGUgYXMgYWxyZWFkeS10cnVzdGVkIGFuZCBza2lwcyB0aGUgdmVyaWZpY2F0aW9uIHBhc3Mg4oCUIHVzZWZ1bCBmb3IgY2xvc2VkLXNvdXJjZSBwcm9qZWN0cyB3aGVyZSBldmVyeSBjb21taXQgY29tZXMgZnJvbSBhIHRydXN0ZWQgYXV0aG9yLiBUaGUgZGVmYXVsdCBpcyBmYWxzZSwgc28gdmVyaWZpY2F0aW9uIHN0YXlzIG9uIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGVkIGEgbmV3IGhvaXN0aW5nTGltaXRzIHNldHRpbmcgZm9yIGBub2RlTGlua2VyOiBob2lzdGVkYCBpbnN0YWxscywgbWlycm9yaW5nIHlhcm4ncyBgbm1Ib2lzdGluZ0xpbWl0c2AuIEl0IGFjY2VwdHMgYG5vbmVgICh0aGUgZGVmYXVsdCDigJQgaG9pc3QgYXMgZmFyIGFzIHBvc3NpYmxlKSwgd29ya3NwYWNlcyAoaG9pc3Qgb25seSBhcyBmYXIgYXMgZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSksIG9yIGRlcGVuZGVuY2llcyAoaG9pc3Qgb25seSB1cCB0byBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlJ3MgZGlyZWN0IGRlcGVuZGVuY2llcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RpbmdMaW1pdHNcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0aW5nTGltaXRzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0cztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAncGFja2FnZXMnOiBvYmoucGFja2FnZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdjYXRhbG9nJzogKChvYmouY2F0YWxvZykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmNhdGFsb2cpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdjYXRhbG9ncyc6ICgob2JqLmNhdGFsb2dzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZ3MpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiAoKGlbMV0pID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKGlbMV0pLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpIH0pLCB7fSkpLFxuICAgICdjYXRhbG9nTW9kZSc6IG9iai5jYXRhbG9nTW9kZSxcbiAgICAnY2xlYW51cFVudXNlZENhdGFsb2dzJzogb2JqLmNsZWFudXBVbnVzZWRDYXRhbG9ncyxcbiAgICAnY2F0YWxvZ1BydW5lJzogb2JqLmNhdGFsb2dQcnVuZSxcbiAgICAnb25seUJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm9ubHlCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ292ZXJyaWRlcyc6IG9iai5vdmVycmlkZXMsXG4gICAgJ3BhY2thZ2VFeHRlbnNpb25zJzogb2JqLnBhY2thZ2VFeHRlbnNpb25zLFxuICAgICdwYWNrYWdlQ29uZmlncyc6IG9iai5wYWNrYWdlQ29uZmlncyxcbiAgICAncGVlckRlcGVuZGVuY3lSdWxlcyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqLnBlZXJEZXBlbmRlbmN5UnVsZXMpLFxuICAgICduZXZlckJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLm5ldmVyQnVpbHREZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdkYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzJzogb2JqLmRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHMsXG4gICAgJ29ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZSxcbiAgICAnaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzJzogb2JqLmlnbm9yZWRCdWlsdERlcGVuZGVuY2llcz8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMnOiAoKG9iai5hbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3BhdGNoZWREZXBlbmRlbmNpZXMnOiAoKG9iai5wYXRjaGVkRGVwZW5kZW5jaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucGF0Y2hlZERlcGVuZGVuY2llcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2FsbG93VW51c2VkUGF0Y2hlcyc6IG9iai5hbGxvd1VudXNlZFBhdGNoZXMsXG4gICAgJ2FsbG93Tm9uQXBwbGllZFBhdGNoZXMnOiBvYmouYWxsb3dOb25BcHBsaWVkUGF0Y2hlcyxcbiAgICAnaWdub3JlUGF0Y2hGYWlsdXJlcyc6IG9iai5pZ25vcmVQYXRjaEZhaWx1cmVzLFxuICAgICd1cGRhdGUnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUob2JqLnVwZGF0ZSksXG4gICAgJ3VwZGF0ZUNvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyhvYmoudXBkYXRlQ29uZmlnKSxcbiAgICAnY29uZmlnRGVwZW5kZW5jaWVzJzogb2JqLmNvbmZpZ0RlcGVuZGVuY2llcyxcbiAgICAnYXVkaXQnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmouYXVkaXQpLFxuICAgICdhdWRpdENvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnKG9iai5hdWRpdENvbmZpZyksXG4gICAgJ3JlcXVpcmVkU2NyaXB0cyc6IG9iai5yZXF1aXJlZFNjcmlwdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmouc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyksXG4gICAgJ2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdleGVjdXRpb25FbnYnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqLmV4ZWN1dGlvbkVudiksXG4gICAgJ2hvaXN0Jzogb2JqLmhvaXN0LFxuICAgICdob2lzdFdvcmtzcGFjZVBhY2thZ2VzJzogb2JqLmhvaXN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ2hvaXN0UGF0dGVybic6IG9iai5ob2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwdWJsaWNIb2lzdFBhdHRlcm4nOiBvYmoucHVibGljSG9pc3RQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAnc2hhbWVmdWxseUhvaXN0Jzogb2JqLnNoYW1lZnVsbHlIb2lzdCxcbiAgICAnbW9kdWxlc0Rpcic6IG9iai5tb2R1bGVzRGlyLFxuICAgICdub2RlTGlua2VyJzogb2JqLm5vZGVMaW5rZXIsXG4gICAgJ25vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwJzogb2JqLm5vZGVFeHBlcmltZW50YWxQYWNrYWdlTWFwLFxuICAgICdub2RlUGFja2FnZU1hcFR5cGUnOiBvYmoubm9kZVBhY2thZ2VNYXBUeXBlLFxuICAgICdzeW1saW5rJzogb2JqLnN5bWxpbmssXG4gICAgJ2VuYWJsZU1vZHVsZXNEaXInOiBvYmouZW5hYmxlTW9kdWxlc0RpcixcbiAgICAndmlydHVhbFN0b3JlRGlyJzogb2JqLnZpcnR1YWxTdG9yZURpcixcbiAgICAndmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoJzogb2JqLnZpcnR1YWxTdG9yZURpck1heExlbmd0aCxcbiAgICAncGFja2FnZUltcG9ydE1ldGhvZCc6IG9iai5wYWNrYWdlSW1wb3J0TWV0aG9kLFxuICAgICdtb2R1bGVzQ2FjaGVNYXhBZ2UnOiBvYmoubW9kdWxlc0NhY2hlTWF4QWdlLFxuICAgICdkbHhDYWNoZU1heEFnZSc6IG9iai5kbHhDYWNoZU1heEFnZSxcbiAgICAnc3RvcmVEaXInOiBvYmouc3RvcmVEaXIsXG4gICAgJ3ZlcmlmeVN0b3JlSW50ZWdyaXR5Jzogb2JqLnZlcmlmeVN0b3JlSW50ZWdyaXR5LFxuICAgICdzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayc6IG9iai5zdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVjayxcbiAgICAnZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlJzogb2JqLmVuYWJsZUdsb2JhbFZpcnR1YWxTdG9yZSxcbiAgICAnbG9ja2ZpbGUnOiBvYmoubG9ja2ZpbGUsXG4gICAgJ3ByZWZlckZyb3plbkxvY2tmaWxlJzogb2JqLnByZWZlckZyb3plbkxvY2tmaWxlLFxuICAgICdsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsJzogb2JqLmxvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwsXG4gICAgJ2dpdEJyYW5jaExvY2tmaWxlJzogb2JqLmdpdEJyYW5jaExvY2tmaWxlLFxuICAgICdtZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4nOiBvYmoubWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAncGVlcnNTdWZmaXhNYXhMZW5ndGgnOiBvYmoucGVlcnNTdWZmaXhNYXhMZW5ndGgsXG4gICAgJ3JlZ2lzdHJ5Jzogb2JqLnJlZ2lzdHJ5LFxuICAgICdjYSc6IG9iai5jYSxcbiAgICAnY2FmaWxlJzogb2JqLmNhZmlsZSxcbiAgICAnY2VydCc6IG9iai5jZXJ0LFxuICAgICdrZXknOiBvYmoua2V5LFxuICAgICdnaXRTaGFsbG93SG9zdHMnOiBvYmouZ2l0U2hhbGxvd0hvc3RzPy5tYXAoeSA9PiB5KSxcbiAgICAnaHR0cHNQcm94eSc6IG9iai5odHRwc1Byb3h5LFxuICAgICdodHRwUHJveHknOiBvYmouaHR0cFByb3h5LFxuICAgICdwcm94eSc6IG9iai5wcm94eSxcbiAgICAnbG9jYWxBZGRyZXNzJzogb2JqLmxvY2FsQWRkcmVzcyxcbiAgICAnbWF4c29ja2V0cyc6IG9iai5tYXhzb2NrZXRzLFxuICAgICdub1Byb3h5Jzogb2JqLm5vUHJveHksXG4gICAgJ3N0cmljdFNzbCc6IG9iai5zdHJpY3RTc2wsXG4gICAgJ25ldHdvcmtDb25jdXJyZW5jeSc6IG9iai5uZXR3b3JrQ29uY3VycmVuY3ksXG4gICAgJ2ZldGNoUmV0cmllcyc6IG9iai5mZXRjaFJldHJpZXMsXG4gICAgJ2ZldGNoUmV0cnlGYWN0b3InOiBvYmouZmV0Y2hSZXRyeUZhY3RvcixcbiAgICAnZmV0Y2hSZXRyeU1pbnRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1pbnRpbWVvdXQsXG4gICAgJ2ZldGNoUmV0cnlNYXh0aW1lb3V0Jzogb2JqLmZldGNoUmV0cnlNYXh0aW1lb3V0LFxuICAgICdmZXRjaFRpbWVvdXQnOiBvYmouZmV0Y2hUaW1lb3V0LFxuICAgICdmZXRjaFdhcm5UaW1lb3V0TXMnOiBvYmouZmV0Y2hXYXJuVGltZW91dE1zLFxuICAgICdmZXRjaE1pblNwZWVkS2lCcHMnOiBvYmouZmV0Y2hNaW5TcGVlZEtpQnBzLFxuICAgICdhdXRvSW5zdGFsbFBlZXJzJzogb2JqLmF1dG9JbnN0YWxsUGVlcnMsXG4gICAgJ2RlZHVwZVBlZXJEZXBlbmRlbnRzJzogb2JqLmRlZHVwZVBlZXJEZXBlbmRlbnRzLFxuICAgICdzdHJpY3RQZWVyRGVwZW5kZW5jaWVzJzogb2JqLnN0cmljdFBlZXJEZXBlbmRlbmNpZXMsXG4gICAgJ3Jlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290Jzogb2JqLnJlc29sdmVQZWVyc0Zyb21Xb3Jrc3BhY2VSb290LFxuICAgICdjb2xvcic6IG9iai5jb2xvcixcbiAgICAnbG9nbGV2ZWwnOiBvYmoubG9nbGV2ZWwsXG4gICAgJ3JlcG9ydGVyJzogb2JqLnJlcG9ydGVyLFxuICAgICd1c2VCZXRhQ2xpJzogb2JqLnVzZUJldGFDbGksXG4gICAgJ3JlY3Vyc2l2ZUluc3RhbGwnOiBvYmoucmVjdXJzaXZlSW5zdGFsbCxcbiAgICAnZW5naW5lU3RyaWN0Jzogb2JqLmVuZ2luZVN0cmljdCxcbiAgICAnbnBtUGF0aCc6IG9iai5ucG1QYXRoLFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdCc6IG9iai5wYWNrYWdlTWFuYWdlclN0cmljdCxcbiAgICAncGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uJzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbixcbiAgICAnbWFuYWdlUGFja2FnZU1hbmFnZXJWZXJzaW9ucyc6IG9iai5tYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zLFxuICAgICdpZ25vcmVTY3JpcHRzJzogb2JqLmlnbm9yZVNjcmlwdHMsXG4gICAgJ2lnbm9yZURlcFNjcmlwdHMnOiBvYmouaWdub3JlRGVwU2NyaXB0cyxcbiAgICAnY2hpbGRDb25jdXJyZW5jeSc6IG9iai5jaGlsZENvbmN1cnJlbmN5LFxuICAgICdzaWRlRWZmZWN0c0NhY2hlJzogb2JqLnNpZGVFZmZlY3RzQ2FjaGUsXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSc6IG9iai5zaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHksXG4gICAgJ3Vuc2FmZVBlcm0nOiBvYmoudW5zYWZlUGVybSxcbiAgICAnbm9kZU9wdGlvbnMnOiBvYmoubm9kZU9wdGlvbnMsXG4gICAgJ3ZlcmlmeURlcHNCZWZvcmVSdW4nOiBvYmoudmVyaWZ5RGVwc0JlZm9yZVJ1bixcbiAgICAnc3RyaWN0RGVwQnVpbGRzJzogb2JqLnN0cmljdERlcEJ1aWxkcyxcbiAgICAndXNlTm9kZVZlcnNpb24nOiBvYmoudXNlTm9kZVZlcnNpb24sXG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICAgICdsaW5rV29ya3NwYWNlUGFja2FnZXMnOiBvYmoubGlua1dvcmtzcGFjZVBhY2thZ2VzPy52YWx1ZSxcbiAgICAnaW5qZWN0V29ya3NwYWNlUGFja2FnZXMnOiBvYmouaW5qZWN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3N5bmNJbmplY3RlZERlcHNBZnRlclNjcmlwdHMnOiBvYmouc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cz8ubWFwKHkgPT4geSksXG4gICAgJ3ByZWZlcldvcmtzcGFjZVBhY2thZ2VzJzogb2JqLnByZWZlcldvcmtzcGFjZVBhY2thZ2VzLFxuICAgICdzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSc6IG9iai5zaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZSxcbiAgICAnc2F2ZVdvcmtzcGFjZVByb3RvY29sJzogb2JqLnNhdmVXb3Jrc3BhY2VQcm90b2NvbD8udmFsdWUsXG4gICAgJ2luY2x1ZGVXb3Jrc3BhY2VSb290Jzogb2JqLmluY2x1ZGVXb3Jrc3BhY2VSb290LFxuICAgICdpZ25vcmVXb3Jrc3BhY2VDeWNsZXMnOiBvYmouaWdub3JlV29ya3NwYWNlQ3ljbGVzLFxuICAgICdpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2snOiBvYmouaWdub3JlV29ya3NwYWNlUm9vdENoZWNrLFxuICAgICdkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyc6IG9iai5kaXNhbGxvd1dvcmtzcGFjZUN5Y2xlcyxcbiAgICAnd29ya3NwYWNlQ29uY3VycmVuY3knOiBvYmoud29ya3NwYWNlQ29uY3VycmVuY3ksXG4gICAgJ2ZhaWxJZk5vTWF0Y2gnOiBvYmouZmFpbElmTm9NYXRjaCxcbiAgICAnZm9yY2VMZWdhY3lEZXBsb3knOiBvYmouZm9yY2VMZWdhY3lEZXBsb3ksXG4gICAgJ3NhdmVQcmVmaXgnOiBvYmouc2F2ZVByZWZpeCxcbiAgICAndGFnJzogb2JqLnRhZyxcbiAgICAnZ2xvYmFsRGlyJzogb2JqLmdsb2JhbERpcixcbiAgICAnZ2xvYmFsQmluRGlyJzogb2JqLmdsb2JhbEJpbkRpcixcbiAgICAnc3RhdGVEaXInOiBvYmouc3RhdGVEaXIsXG4gICAgJ2NhY2hlRGlyJzogb2JqLmNhY2hlRGlyLFxuICAgICd1c2VTdGRlcnInOiBvYmoudXNlU3RkZXJyLFxuICAgICd1cGRhdGVOb3RpZmllcic6IG9iai51cGRhdGVOb3RpZmllcixcbiAgICAncHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMnOiBvYmoucHJlZmVyU3ltbGlua2VkRXhlY3V0YWJsZXMsXG4gICAgJ2lnbm9yZUNvbXBhdGliaWxpdHlEYic6IG9iai5pZ25vcmVDb21wYXRpYmlsaXR5RGIsXG4gICAgJ3Jlc29sdXRpb25Nb2RlJzogb2JqLnJlc29sdXRpb25Nb2RlLFxuICAgICdyZWdpc3RyeVN1cHBvcnRzVGltZUZpZWxkJzogb2JqLnJlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQsXG4gICAgJ2V4dGVuZE5vZGVQYXRoJzogb2JqLmV4dGVuZE5vZGVQYXRoLFxuICAgICdkZXBsb3lBbGxGaWxlcyc6IG9iai5kZXBsb3lBbGxGaWxlcyxcbiAgICAnZGVkdXBlRGlyZWN0RGVwcyc6IG9iai5kZWR1cGVEaXJlY3REZXBzLFxuICAgICdkZWR1cGVJbmplY3RlZERlcHMnOiBvYmouZGVkdXBlSW5qZWN0ZWREZXBzLFxuICAgICdvcHRpbWlzdGljUmVwZWF0SW5zdGFsbCc6IG9iai5vcHRpbWlzdGljUmVwZWF0SW5zdGFsbCxcbiAgICAnZ2l0Q2hlY2tzJzogb2JqLmdpdENoZWNrcyxcbiAgICAnZW1iZWRSZWFkbWUnOiBvYmouZW1iZWRSZWFkbWUsXG4gICAgJ3B1Ymxpc2hCcmFuY2gnOiBvYmoucHVibGlzaEJyYW5jaCxcbiAgICAndmVyc2lvbmluZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcob2JqLnZlcnNpb25pbmcpLFxuICAgICdwcm92ZW5hbmNlJzogb2JqLnByb3ZlbmFuY2UsXG4gICAgJ3BucG1maWxlJzogb2JqLnBucG1maWxlLFxuICAgICdnbG9iYWxQbnBtZmlsZSc6IG9iai5nbG9iYWxQbnBtZmlsZSxcbiAgICAnaWdub3JlUG5wbWZpbGUnOiBvYmouaWdub3JlUG5wbWZpbGUsXG4gICAgJ3BhdGNoZXNEaXInOiBvYmoucGF0Y2hlc0RpcixcbiAgICAnZW5hYmxlUHJlUG9zdFNjcmlwdHMnOiBvYmouZW5hYmxlUHJlUG9zdFNjcmlwdHMsXG4gICAgJ3NjcmlwdFNoZWxsJzogb2JqLnNjcmlwdFNoZWxsLFxuICAgICdzaGVsbEVtdWxhdG9yJzogb2JqLnNoZWxsRW11bGF0b3IsXG4gICAgJ3NhdmVFeGFjdCc6IG9iai5zYXZlRXhhY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VTdHJpY3QnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VTdHJpY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVBydW5lLFxuICAgICdwcmVmZXJPZmZsaW5lJzogb2JqLnByZWZlck9mZmxpbmUsXG4gICAgJ3RydXN0UG9saWN5Jzogb2JqLnRydXN0UG9saWN5LFxuICAgICd0cnVzdFBvbGljeUV4Y2x1ZGUnOiBvYmoudHJ1c3RQb2xpY3lFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3dCdWlsZHMnOiBvYmouYWxsb3dCdWlsZHMsXG4gICAgJ2Jsb2NrRXhvdGljU3ViZGVwcyc6IG9iai5ibG9ja0V4b3RpY1N1YmRlcHMsXG4gICAgJ3RydXN0UG9saWN5SWdub3JlQWZ0ZXInOiBvYmoudHJ1c3RQb2xpY3lJZ25vcmVBZnRlcixcbiAgICAnYXVkaXRMZXZlbCc6IG9iai5hdWRpdExldmVsLFxuICAgICdkZWR1cGVQZWVycyc6IG9iai5kZWR1cGVQZWVycyxcbiAgICAnbnBtcmNBdXRoRmlsZSc6IG9iai5ucG1yY0F1dGhGaWxlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUlnbm9yZU1pc3NpbmdUaW1lJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWUsXG4gICAgJ3JlZ2lzdHJpZXMnOiAoKG9iai5yZWdpc3RyaWVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoucmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ25hbWVkUmVnaXN0cmllcyc6ICgob2JqLm5hbWVkUmVnaXN0cmllcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLm5hbWVkUmVnaXN0cmllcykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ3ZpcnR1YWxTdG9yZU9ubHknOiBvYmoudmlydHVhbFN0b3JlT25seSxcbiAgICAncG1PbkZhaWwnOiBvYmoucG1PbkZhaWwsXG4gICAgJ3J1bnRpbWVPbkZhaWwnOiBvYmoucnVudGltZU9uRmFpbCxcbiAgICAnbm9kZURvd25sb2FkTWlycm9ycyc6ICgob2JqLm5vZGVEb3dubG9hZE1pcnJvcnMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5ub2RlRG93bmxvYWRNaXJyb3JzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAndHJ1c3RMb2NrZmlsZSc6IG9iai50cnVzdExvY2tmaWxlLFxuICAgICdob2lzdGluZ0xpbWl0cyc6IG9iai5ob2lzdGluZ0xpbWl0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNhdGFsb2dNb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGUge1xuICAvKiogc3RyaWN0ICovXG4gIFNUUklDVCA9IFwic3RyaWN0XCIsXG4gIC8qKiBwcmVmZXIgKi9cbiAgUFJFRkVSID0gXCJwcmVmZXJcIixcbiAgLyoqIG1hbnVhbCAqL1xuICBNQU5VQUwgPSBcIm1hbnVhbFwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzIHtcbiAgLyoqXG4gICAqIHBucG0gd2lsbCBub3QgcHJpbnQgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBwZWVyIGRlcGVuZGVuY2llcyBmcm9tIHRoaXMgbGlzdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjaWdub3JlTWlzc2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlTWlzc2luZz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVbm1ldCBwZWVyIGRlcGVuZGVuY3kgd2FybmluZ3Mgd2lsbCBub3QgYmUgcHJpbnRlZCBmb3IgcGVlciBkZXBlbmRlbmNpZXMgb2YgdGhlIHNwZWNpZmllZCByYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjYWxsb3dlZFZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkVmVyc2lvbnM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEFueSBwZWVyIGRlcGVuZGVuY3kgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2lsbCBiZSByZXNvbHZlZCBmcm9tIGFueSB2ZXJzaW9uLCByZWdhcmRsZXNzIG9mIHRoZSByYW5nZSBzcGVjaWZpZWQgaW4gXCJwZWVyRGVwZW5kZW5jaWVzXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzI2FsbG93QW55XG4gICAqL1xuICByZWFkb25seSBhbGxvd0FueT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVNaXNzaW5nJzogb2JqLmlnbm9yZU1pc3Npbmc/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd2VkVmVyc2lvbnMnOiBvYmouYWxsb3dlZFZlcnNpb25zLFxuICAgICdhbGxvd0FueSc6IG9iai5hbGxvd0FueT8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUge1xuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcGVuZGVuY3kgbmFtZSBwYXR0ZXJucyB0aGF0IHBucG0gdXBkYXRlIGFuZCBwbnBtIG91dGRhdGVkIHNob3VsZCBza2lwLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlI2lnbm9yZURlcHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHVwZGF0ZSB3cml0ZXMgYSBjaGFuZ2UgaW50ZW50IGFmdGVyIHVwZGF0aW5nIHdvcmtzcGFjZSBtYW5pZmVzdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjY2hhbmdlc2V0XG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gdXBkYXRlIGFuZCBwbnBtIG91dGRhdGVkIGFsc28gY2hlY2sgdGhlIEdpdEh1YiBBY3Rpb25zIHJlZmVyZW5jZWQgYnkgdGhlIHJlcG9zaXRvcnkncyB3b3JrZmxvdyBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZSNnaXRodWJBY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBnaXRodWJBY3Rpb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGJhc2UgVVJMIG9mIHRoZSBHaXRIdWIgc2VydmVyIHRoYXQgaG9zdHMgdGhlIHJlcG9zaXRvcmllcyBvZiB0aGUgR2l0SHViIEFjdGlvbnMgcmVmZXJlbmNlZCBieSB0aGUgd29ya2Zsb3cgZmlsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUjZ2l0aHViQWN0aW9uc1NlcnZlclxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViQWN0aW9uc1NlcnZlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZShvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlRGVwcyc6IG9iai5pZ25vcmVEZXBzPy5tYXAoeSA9PiB5KSxcbiAgICAnY2hhbmdlc2V0Jzogb2JqLmNoYW5nZXNldCxcbiAgICAnZ2l0aHViQWN0aW9ucyc6IG9iai5naXRodWJBY3Rpb25zLFxuICAgICdnaXRodWJBY3Rpb25zU2VydmVyJzogb2JqLmdpdGh1YkFjdGlvbnNTZXJ2ZXIsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBydW5uaW5nIFwicG5wbSBvdXRkYXRlZFwiIG9yIFwicG5wbSB1cGRhdGUgLS1sYXRlc3RcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyNpZ25vcmVEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVEZXBlbmRlbmNpZXMnOiBvYmouaWdub3JlRGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQge1xuICAvKipcbiAgICogT25seSBwcmludCBhZHZpc29yaWVzIHdpdGggc2V2ZXJpdHkgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgbGV2ZWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWw7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBHSFNBIGNvZGVzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IHBucG0gYXVkaXQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdCNpZ25vcmVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdChvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdsZXZlbCc6IG9iai5sZXZlbCxcbiAgICAnaWdub3JlJzogb2JqLmlnbm9yZT8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBDVkUgSURzIHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IFwicG5wbSBhdWRpdFwiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcjaWdub3JlQ3Zlc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ3Zlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgR0hTQSBDb2RlcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUdoc2FzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVHaHNhcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpZ25vcmVDdmVzJzogb2JqLmlnbm9yZUN2ZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdpZ25vcmVHaHNhcyc6IG9iai5pZ25vcmVHaHNhcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBTcGVjaWZpZXMgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggeW91J2QgbGlrZSB0byBpbnN0YWxsIG9wdGlvbmFsIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5IGRvbid0IG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIHN5c3RlbSBydW5uaW5nIHRoZSBpbnN0YWxsLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTdXBwb3J0ZWRBcmNoaXRlY3R1cmVzI29zXG4gICAqL1xuICByZWFkb25seSBvcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNjcHVcbiAgICovXG4gIHJlYWRvbmx5IGNwdT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNsaWJjXG4gICAqL1xuICByZWFkb25seSBsaWJjPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ29zJzogb2JqLm9zPy5tYXAoeSA9PiB5KSxcbiAgICAnY3B1Jzogb2JqLmNwdT8ubWFwKHkgPT4geSksXG4gICAgJ2xpYmMnOiBvYmoubGliYz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoaWNoIGV4YWN0IE5vZGUuanMgdmVyc2lvbiBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHByb2plY3QncyBydW50aW1lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52I25vZGVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBub2RlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudihvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBEZWZpbmVzIHdoYXQgbGlua2VyIHNob3VsZCBiZSB1c2VkIGZvciBpbnN0YWxsaW5nIE5vZGUgcGFja2FnZXMuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVMaW5rZXJcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyIHtcbiAgLyoqIGlzb2xhdGVkICovXG4gIElTT0xBVEVEID0gXCJpc29sYXRlZFwiLFxuICAvKiogaG9pc3RlZCAqL1xuICBIT0lTVEVEID0gXCJob2lzdGVkXCIsXG4gIC8qKiBwbnAgKi9cbiAgUE5QID0gXCJwbnBcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBob3cgbm9kZV9tb2R1bGVzLy5wYWNrYWdlLW1hcC5qc29uIGlzIGdlbmVyYXRlZC4gc3RhbmRhcmQgLSBvbmx5IGRlY2xhcmVkIGRlcGVuZGVuY2llcyBhcmUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHBhY2thZ2UgbWFwLiBsb29zZSAtIGFsc28gbWFwcyBwYWNrYWdlcyB0aGF0IGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgaW5zdGFsbGVkIG5vZGVfbW9kdWxlcyBsYXlvdXQsIHdoaWNoIGNhbiBhbGxvdyB1bmRlY2xhcmVkIGhvaXN0ZWQgZGVwZW5kZW5jaWVzIHRvIHJlc29sdmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYU5vZGVQYWNrYWdlTWFwVHlwZSB7XG4gIC8qKiBzdGFuZGFyZCAqL1xuICBTVEFOREFSRCA9IFwic3RhbmRhcmRcIixcbiAgLyoqIGxvb3NlICovXG4gIExPT1NFID0gXCJsb29zZVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSB3YXkgcGFja2FnZXMgYXJlIGltcG9ydGVkIGZyb20gdGhlIHN0b3JlIChpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHN5bWxpbmtzIGluc2lkZSBub2RlX21vZHVsZXMsIHRoZW4geW91IG5lZWQgdG8gY2hhbmdlIHRoZSBub2RlTGlua2VyIHNldHRpbmcsIG5vdCB0aGlzIG9uZSkuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2RcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQYWNrYWdlSW1wb3J0TWV0aG9kIHtcbiAgLyoqIGF1dG8gKi9cbiAgQVVUTyA9IFwiYXV0b1wiLFxuICAvKiogaGFyZGxpbmsgKi9cbiAgSEFSRExJTksgPSBcImhhcmRsaW5rXCIsXG4gIC8qKiBjb3B5ICovXG4gIENPUFkgPSBcImNvcHlcIixcbiAgLyoqIGNsb25lICovXG4gIENMT05FID0gXCJjbG9uZVwiLFxuICAvKiogY2xvbmUtb3ItY29weSAqL1xuICBDTE9ORV9IWVBIRU5fT1JfSFlQSEVOX0NPUFkgPSBcImNsb25lLW9yLWNvcHlcIixcbn1cblxuLyoqXG4gKiBDb250cm9scyBjb2xvcnMgaW4gdGhlIG91dHB1dC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ29sb3JcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvciB7XG4gIC8qKiBhbHdheXMgKi9cbiAgQUxXQVlTID0gXCJhbHdheXNcIixcbiAgLyoqIGF1dG8gKi9cbiAgQVVUTyA9IFwiYXV0b1wiLFxuICAvKiogbmV2ZXIgKi9cbiAgTkVWRVIgPSBcIm5ldmVyXCIsXG59XG5cbi8qKlxuICogQW55IGxvZ3MgYXQgb3IgaGlnaGVyIHRoYW4gdGhlIGdpdmVuIGxldmVsIHdpbGwgYmUgc2hvd24uXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWwge1xuICAvKiogZGVidWcgKi9cbiAgREVCVUcgPSBcImRlYnVnXCIsXG4gIC8qKiBpbmZvICovXG4gIElORk8gPSBcImluZm9cIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogZXJyb3IgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG59XG5cbi8qKlxuICogQWxsb3dzIHlvdSB0byBjdXN0b21pemUgdGhlIG91dHB1dCBzdHlsZSBvZiB0aGUgbG9ncy5cbiAqIGh0dHBzOi8vcG5wbS5pby9jbGkvaW5zdGFsbCMtLXJlcG9ydGVybmFtZVxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXBvcnRlclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyIHtcbiAgLyoqIHNpbGVudCAqL1xuICBTSUxFTlQgPSBcInNpbGVudFwiLFxuICAvKiogZGVmYXVsdCAqL1xuICBERUZBVUxUID0gXCJkZWZhdWx0XCIsXG4gIC8qKiBhcHBlbmQtb25seSAqL1xuICBBUFBFTkRfSFlQSEVOX09OTFkgPSBcImFwcGVuZC1vbmx5XCIsXG4gIC8qKiBuZGpzb24gKi9cbiAgTkRKU09OID0gXCJuZGpzb25cIixcbn1cblxuLyoqXG4gKiBJZiB0aGlzIGlzIGVuYWJsZWQsIGxvY2FsbHkgYXZhaWxhYmxlIHBhY2thZ2VzIGFyZSBsaW5rZWQgdG8gbm9kZV9tb2R1bGVzIGluc3RlYWQgb2YgYmVpbmcgZG93bmxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxpbmtXb3Jrc3BhY2VQYWNrYWdlcyh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgc2V0dGluZyBjb250cm9scyBob3cgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGxpbmtlZCBmcm9tIHRoZSB3b3Jrc3BhY2UgYXJlIGFkZGVkIHRvIHBhY2thZ2UuanNvbi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sXG4gKi9cbmV4cG9ydCBjbGFzcyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHN0YXRpYyBmcm9tU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCB7XG4gICAgcmV0dXJuIG5ldyBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSBob3cgdmVyc2lvbnMgb2YgcGFja2FnZXMgaW5zdGFsbGVkIHRvIGEgcGFja2FnZS5qc29uIGZpbGUgZ2V0IHByZWZpeGVkLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4XG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVByZWZpeCB7XG4gIC8qKiBeICovXG4gIFZBTFVFX0NBUkFUID0gXCJeXCIsXG4gIC8qKiB+ICovXG4gIFZBTFVFX1RJTERFID0gXCJ+XCIsXG4gIC8qKiA9ICovXG4gIFZBTFVFX0VRVUFMUyA9IFwiPVwiLFxufVxuXG4vKipcbiAqIERldGVybWluZXMgaG93IHBucG0gcmVzb2x2ZXMgZGVwZW5kZW5jaWVzLCBTZWUgaHR0cHM6Ly9wbnBtLmlvL3NldHRpbmdzI3Jlc29sdXRpb25tb2RlXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVzb2x1dGlvbk1vZGUge1xuICAvKiogaGlnaGVzdCAqL1xuICBISUdIRVNUID0gXCJoaWdoZXN0XCIsXG4gIC8qKiB0aW1lLWJhc2VkICovXG4gIFRJTUVfSFlQSEVOX0JBU0VEID0gXCJ0aW1lLWJhc2VkXCIsXG4gIC8qKiBsb3dlc3QtZGlyZWN0ICovXG4gIExPV0VTVF9IWVBIRU5fRElSRUNUID0gXCJsb3dlc3QtZGlyZWN0XCIsXG59XG5cbi8qKlxuICogVmVyc2lvbmluZyBzZXR0aW5ncyBmb3IgcG5wbSdzIG5hdGl2ZSB3b3Jrc3BhY2UgcmVsZWFzZSBtYW5hZ2VtZW50LCB1c2VkIGJ5IGBwbnBtIGNoYW5nZWAgYW5kIHJlY3Vyc2l2ZSBgcG5wbSB2ZXJzaW9uYC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyB7XG4gIC8qKlxuICAgKiBHcm91cHMgb2Ygd29ya3NwYWNlIHByb2plY3RzIHRoYXQgYWx3YXlzIHJlbGVhc2UgdG9nZXRoZXIgYXQgb25lIHNoYXJlZCB2ZXJzaW9uLiBUaGUgc2hhcmVkIHZlcnNpb24gaXMgdGhlIGhpZ2hlc3QgY3VycmVudCB2ZXJzaW9uIGluIHRoZSBncm91cCwgYnVtcGVkIGJ5IHRoZSBsYXJnZXN0IGJ1bXAgYW55IG1lbWJlciBuZWVkcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjZml4ZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpeGVkPzogc3RyaW5nW11bXTtcblxuICAvKipcbiAgICogV29ya3NwYWNlIHByb2plY3RzIHBlcm1hbmVudGx5IGV4Y2x1ZGVkIGZyb20gdmVyc2lvbmluZyBhbmQgZGVwZW5kZW50IHByb3BhZ2F0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNpZ25vcmVcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYXBzIHRoZSBidW1wIHRoYXQgYSByZWxlYXNlIGZyb20gdGhlIGN1cnJlbnQgY2hlY2tvdXQgbWF5IGFwcGx5LCBhZnRlciBkZXBlbmRlbnQgcHJvcGFnYXRpb24gYW5kIGZpeGVkLWdyb3VwIHJlc29sdXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI21heEJ1bXBcbiAgICovXG4gIHJlYWRvbmx5IG1heEJ1bXA/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wO1xuXG4gIC8qKlxuICAgKiBNYXBzIGEgd29ya3NwYWNlIHByb2plY3QgdG8gYSByZWxlYXNlIGxhbmUuIFVubGlzdGVkIHByb2plY3RzIGFyZSBvbiB0aGUgcmVzZXJ2ZWQgYG1haW5gIGxhbmUgYW5kIHJlbGVhc2Ugc3RhYmxlIHZlcnNpb25zLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZyNsYW5lc1xuICAgKi9cbiAgcmVhZG9ubHkgbGFuZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaWVzIG1lbWJlciBwcm9qZWN0cyB0byBhIGxlYWQgcHJvamVjdCBhbmQgY29uc3RyYWlucyB0aGVpciBtYWpvciB2ZXJzaW9ucyB0byB0aGUgbGVhZCdzIG1ham9yLXZlcnNpb24gYmFuZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcjZXBpY3NcbiAgICovXG4gIHJlYWRvbmx5IGVwaWNzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3NbXTtcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hlcmUgcmVsZWFzZSBjaGFuZ2Vsb2cgY29udGVudCBpcyBzdG9yZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nI2NoYW5nZWxvZ1xuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlbG9nPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmcgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdmaXhlZCc6IG9iai5maXhlZD8ubWFwKHkgPT4geT8ubWFwKHkgPT4geSkpLFxuICAgICdpZ25vcmUnOiBvYmouaWdub3JlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWF4QnVtcCc6IG9iai5tYXhCdW1wLFxuICAgICdsYW5lcyc6ICgob2JqLmxhbmVzKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmoubGFuZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdlcGljcyc6IG9iai5lcGljcz8ubWFwKHkgPT4gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzKHkpKSxcbiAgICAnY2hhbmdlbG9nJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZyhvYmouY2hhbmdlbG9nKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUcnVzdFBvbGljeVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5IHtcbiAgLyoqIG9mZiAqL1xuICBPRkYgPSBcIm9mZlwiLFxuICAvKiogbm8tZG93bmdyYWRlICovXG4gIE5PX0hZUEhFTl9ET1dOR1JBREUgPSBcIm5vLWRvd25ncmFkZVwiLFxufVxuXG4vKipcbiAqIE9ubHkgcHJpbnQgYWR2aXNvcmllcyB3aXRoIHNldmVyaXR5IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzIGxldmVsLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRMZXZlbCB7XG4gIC8qKiBsb3cgKi9cbiAgTE9XID0gXCJsb3dcIixcbiAgLyoqIG1vZGVyYXRlICovXG4gIE1PREVSQVRFID0gXCJtb2RlcmF0ZVwiLFxuICAvKiogaGlnaCAqL1xuICBISUdIID0gXCJoaWdoXCIsXG4gIC8qKiBjcml0aWNhbCAqL1xuICBDUklUSUNBTCA9IFwiY3JpdGljYWxcIixcbn1cblxuLyoqXG4gKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGJlaGF2aW9yIG9mIGJvdGggdGhlIGBwYWNrYWdlTWFuYWdlcmAgZmllbGQgYW5kIGBkZXZFbmdpbmVzLnBhY2thZ2VNYW5hZ2VyYCB3aGVuIHRoZSBydW5uaW5nIHBucG0gdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgZGVjbGFyZWQgb25lLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQbU9uRmFpbFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsIHtcbiAgLyoqIGRvd25sb2FkICovXG4gIERPV05MT0FEID0gXCJkb3dubG9hZFwiLFxuICAvKiogZXJyb3IgKi9cbiAgRVJST1IgPSBcImVycm9yXCIsXG4gIC8qKiB3YXJuICovXG4gIFdBUk4gPSBcIndhcm5cIixcbiAgLyoqIGlnbm9yZSAqL1xuICBJR05PUkUgPSBcImlnbm9yZVwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgZmllbGQgb2YgYGRldkVuZ2luZXMucnVudGltZWAgKGFuZCBgZW5naW5lcy5ydW50aW1lYCkgaW4gdGhlIHJvb3QgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGEgZGlmZmVyZW50IGxvY2FsIGJlaGF2aW9yIHRoYW4gd2hhdCBpcyB3cml0dGVuIGluIHRoZSBtYW5pZmVzdCDigJQgZm9yIGluc3RhbmNlLCBmb3JjaW5nIHBucG0gdG8gZG93bmxvYWQgdGhlIGRlY2xhcmVkIHJ1bnRpbWUgZXZlbiB3aGVuIHRoZSBtYW5pZmVzdCBzZXRzIGBvbkZhaWw6IFwid2FyblwiYC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJ1bnRpbWVPbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogQWRkZWQgYSBuZXcgaG9pc3RpbmdMaW1pdHMgc2V0dGluZyBmb3IgYG5vZGVMaW5rZXI6IGhvaXN0ZWRgIGluc3RhbGxzLCBtaXJyb3JpbmcgeWFybidzIGBubUhvaXN0aW5nTGltaXRzYC4gSXQgYWNjZXB0cyBgbm9uZWAgKHRoZSBkZWZhdWx0IOKAlCBob2lzdCBhcyBmYXIgYXMgcG9zc2libGUpLCB3b3Jrc3BhY2VzIChob2lzdCBvbmx5IGFzIGZhciBhcyBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlKSwgb3IgZGVwZW5kZW5jaWVzIChob2lzdCBvbmx5IHVwIHRvIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UncyBkaXJlY3QgZGVwZW5kZW5jaWVzKS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hSG9pc3RpbmdMaW1pdHNcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0cyB7XG4gIC8qKiBub2RlICovXG4gIE5PREUgPSBcIm5vZGVcIixcbiAgLyoqIHdvcmtzcGFjZXMgKi9cbiAgV09SS1NQQUNFUyA9IFwid29ya3NwYWNlc1wiLFxuICAvKiogZGVwZW5kZW5jaWVzICovXG4gIERFUEVOREVOQ0lFUyA9IFwiZGVwZW5kZW5jaWVzXCIsXG59XG5cbi8qKlxuICogQ2FwcyB0aGUgYnVtcCB0aGF0IGEgcmVsZWFzZSBmcm9tIHRoZSBjdXJyZW50IGNoZWNrb3V0IG1heSBhcHBseSwgYWZ0ZXIgZGVwZW5kZW50IHByb3BhZ2F0aW9uIGFuZCBmaXhlZC1ncm91cCByZXNvbHV0aW9uLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nTWF4QnVtcFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdNYXhCdW1wIHtcbiAgLyoqIHBhdGNoICovXG4gIFBBVENIID0gXCJwYXRjaFwiLFxuICAvKiogbWlub3IgKi9cbiAgTUlOT1IgPSBcIm1pbm9yXCIsXG4gIC8qKiBtYWpvciAqL1xuICBNQUpPUiA9IFwibWFqb3JcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3Mge1xuICAvKipcbiAgICogTGVhZCB3b3Jrc3BhY2UgcHJvamVjdCBuYW1lIG9yIGEgYC4vYC1wcmVmaXhlZCB3b3Jrc3BhY2UtcmVsYXRpdmUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzI2xlYWRcbiAgICovXG4gIHJlYWRvbmx5IGxlYWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUHJvamVjdCBzZWxlY3RvcnMgbWF0Y2hlZCBpbiBvcmRlciwgc3VwcG9ydGluZyBuYW1lIGdsb2JzLCBgLi9gLXByZWZpeGVkIGRpcmVjdG9yeSBnbG9icywgYW5kIGAhYC1wcmVmaXhlZCBuZWdhdGlvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MjcGFja2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nRXBpY3MnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVZlcnNpb25pbmdFcGljcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0VwaWNzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnbGVhZCc6IG9iai5sZWFkLFxuICAgICdwYWNrYWdlcyc6IG9iai5wYWNrYWdlcz8ubWFwKHkgPT4geSksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBDb250cm9scyB3aGVyZSByZWxlYXNlIGNoYW5nZWxvZyBjb250ZW50IGlzIHN0b3JlZC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZyB7XG4gIC8qKlxuICAgKiBDaGFuZ2Vsb2cgc3RvcmFnZSBtb2RlLiBgcmVnaXN0cnlgIGNvbXBvc2VzIGNoYW5nZWxvZyBlbnRyaWVzIGF0IHB1Ymxpc2ggdGltZSwgd2hpbGUgYHJlcG9zaXRvcnlgIGNvbW1pdHMgQ0hBTkdFTE9HLm1kIGZpbGVzIGluIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZyNzdG9yYWdlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnc3RvcmFnZSc6IG9iai5zdG9yYWdlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQ2hhbmdlbG9nIHN0b3JhZ2UgbW9kZS4gYHJlZ2lzdHJ5YCBjb21wb3NlcyBjaGFuZ2Vsb2cgZW50cmllcyBhdCBwdWJsaXNoIHRpbWUsIHdoaWxlIGByZXBvc2l0b3J5YCBjb21taXRzIENIQU5HRUxPRy5tZCBmaWxlcyBpbiBwYWNrYWdlcy5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVmVyc2lvbmluZ0NoYW5nZWxvZ1N0b3JhZ2VcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFWZXJzaW9uaW5nQ2hhbmdlbG9nU3RvcmFnZSB7XG4gIC8qKiByZWdpc3RyeSAqL1xuICBSRUdJU1RSWSA9IFwicmVnaXN0cnlcIixcbiAgLyoqIHJlcG9zaXRvcnkgKi9cbiAgUkVQT1NJVE9SWSA9IFwicmVwb3NpdG9yeVwiLFxufVxuIl19