projen 0.101.6 → 0.101.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +5063 -398
- package/lib/ai-instructions.js +2 -2
- package/lib/awscdk/auto-discover.js +6 -6
- package/lib/awscdk/awscdk-app-java.js +1 -1
- package/lib/awscdk/awscdk-app-py.js +1 -1
- package/lib/awscdk/awscdk-app-ts.js +1 -1
- package/lib/awscdk/awscdk-construct.js +1 -1
- package/lib/awscdk/awscdk-deps-java.js +1 -1
- package/lib/awscdk/awscdk-deps-js.js +1 -1
- package/lib/awscdk/awscdk-deps-py.js +1 -1
- package/lib/awscdk/awscdk-deps.js +1 -1
- package/lib/awscdk/cdk-config.js +3 -3
- package/lib/awscdk/cdk-tasks.js +1 -1
- package/lib/awscdk/integration-test.js +1 -1
- package/lib/awscdk/lambda-extension.js +1 -1
- package/lib/awscdk/lambda-function.js +2 -2
- package/lib/build/build-workflow.js +1 -1
- package/lib/cdk/auto-discover-base.js +2 -2
- package/lib/cdk/construct-lib.js +1 -1
- package/lib/cdk/integration-test-base.js +1 -1
- package/lib/cdk/jsii-build.js +1 -1
- package/lib/cdk/jsii-docgen.js +1 -1
- package/lib/cdk/jsii-project.js +1 -1
- package/lib/cdk8s/auto-discover.js +2 -2
- package/lib/cdk8s/cdk8s-app-py.js +1 -1
- package/lib/cdk8s/cdk8s-app-ts.js +1 -1
- package/lib/cdk8s/cdk8s-construct.js +1 -1
- package/lib/cdk8s/cdk8s-deps-py.js +1 -1
- package/lib/cdk8s/cdk8s-deps.js +1 -1
- package/lib/cdk8s/integration-test.js +1 -1
- package/lib/cdktf/cdktf-construct.js +1 -1
- package/lib/circleci/circleci.js +1 -1
- package/lib/cli/util.js +2 -2
- package/lib/component.js +2 -2
- package/lib/dependencies.js +1 -1
- package/lib/dev-env.js +1 -1
- package/lib/docker-compose/docker-compose-service.js +1 -1
- package/lib/docker-compose/docker-compose.js +1 -1
- package/lib/file.js +1 -1
- package/lib/gitattributes.js +1 -1
- package/lib/github/actions-provider.js +1 -1
- package/lib/github/auto-approve.js +1 -1
- package/lib/github/auto-merge.js +6 -7
- package/lib/github/auto-queue.js +1 -1
- package/lib/github/dependabot.js +1 -1
- package/lib/github/dependency-review.js +1 -1
- package/lib/github/github-credentials.js +1 -1
- package/lib/github/github-project.js +1 -1
- package/lib/github/github.js +1 -1
- package/lib/github/merge-queue.js +1 -1
- package/lib/github/mergify.d.ts +32 -1
- package/lib/github/mergify.js +5 -2
- package/lib/github/pr-template.js +1 -1
- package/lib/github/pull-request-backport.js +1 -1
- package/lib/github/pull-request-lint.js +1 -1
- package/lib/github/stale.js +1 -1
- package/lib/github/task-workflow-job.js +1 -1
- package/lib/github/task-workflow.js +1 -1
- package/lib/github/workflow-actions.js +1 -1
- package/lib/github/workflow-jobs.js +1 -1
- package/lib/github/workflow-steps.js +1 -1
- package/lib/github/workflows.js +1 -1
- package/lib/gitlab/configuration.js +1 -1
- package/lib/gitlab/gitlab-configuration.js +1 -1
- package/lib/gitlab/nested-configuration.js +1 -1
- package/lib/gitpod.js +1 -1
- package/lib/ignore-file.js +1 -1
- package/lib/ini.js +1 -1
- package/lib/java/java-project.js +1 -1
- package/lib/java/junit.js +1 -1
- package/lib/java/maven-compile.js +1 -1
- package/lib/java/maven-packaging.js +1 -1
- package/lib/java/maven-sample.js +1 -1
- package/lib/java/pom.js +2 -2
- package/lib/java/projenrc.js +1 -1
- package/lib/javascript/biome/biome.js +1 -1
- package/lib/javascript/bundler.js +1 -1
- package/lib/javascript/eslint.js +1 -1
- package/lib/javascript/index.d.ts +2 -0
- package/lib/javascript/index.js +3 -1
- package/lib/javascript/jest.js +4 -4
- package/lib/javascript/license-checker.js +1 -1
- package/lib/javascript/node-package.d.ts +113 -0
- package/lib/javascript/node-package.js +159 -3
- package/lib/javascript/node-project.js +1 -1
- package/lib/javascript/npm-config.js +1 -1
- package/lib/javascript/pnpm-workspace-config.d.ts +1256 -0
- package/lib/javascript/pnpm-workspace-config.js +492 -0
- package/lib/javascript/pnpm-workspace.d.ts +23 -0
- package/lib/javascript/pnpm-workspace.js +34 -0
- package/lib/javascript/prettier.js +1 -1
- package/lib/javascript/projenrc.js +1 -1
- package/lib/javascript/typescript-config.js +2 -2
- package/lib/javascript/upgrade-dependencies.js +2 -2
- package/lib/javascript/yarnrc.js +1 -1
- package/lib/json-patch.js +1 -1
- package/lib/json.js +1 -1
- package/lib/license.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/makefile.js +1 -1
- package/lib/object-file.js +1 -1
- package/lib/project-build.js +1 -1
- package/lib/project-tree.js +1 -1
- package/lib/project.js +1 -1
- package/lib/projects.js +1 -1
- package/lib/projenrc-json.js +1 -1
- package/lib/projenrc.js +1 -1
- package/lib/python/pip.js +1 -1
- package/lib/python/poetry.js +2 -2
- package/lib/python/projenrc.js +1 -1
- package/lib/python/pyproject-toml-file.js +1 -1
- package/lib/python/pytest-sample.js +1 -1
- package/lib/python/pytest.js +1 -1
- package/lib/python/python-project.js +1 -1
- package/lib/python/python-sample.js +1 -1
- package/lib/python/requirements-file.js +1 -1
- package/lib/python/setuppy.js +1 -1
- package/lib/python/setuptools.js +1 -1
- package/lib/python/uv.js +1 -1
- package/lib/python/venv.js +1 -1
- package/lib/readme.js +1 -1
- package/lib/release/publisher.js +1 -1
- package/lib/release/release-trigger.js +1 -1
- package/lib/release/release.js +1 -1
- package/lib/renovatebot.js +1 -1
- package/lib/run-task.cjs +9 -1
- package/lib/sample-file.js +2 -2
- package/lib/script-runner.js +1 -1
- package/lib/source-code.js +1 -1
- package/lib/task-shell.js +1 -1
- package/lib/task.js +1 -1
- package/lib/tasks.js +1 -1
- package/lib/testing.js +1 -1
- package/lib/textfile.js +1 -1
- package/lib/toml.js +1 -1
- package/lib/typescript/projenrc-ts.js +1 -1
- package/lib/typescript/projenrc.js +1 -1
- package/lib/typescript/typescript-runner.js +1 -1
- package/lib/typescript/typescript-typedoc.js +1 -1
- package/lib/typescript/typescript.js +5 -5
- package/lib/version.js +2 -2
- package/lib/vscode/devcontainer.js +1 -1
- package/lib/vscode/extensions.js +1 -1
- package/lib/vscode/launch-config.js +1 -1
- package/lib/vscode/settings.js +1 -1
- package/lib/vscode/vscode.js +1 -1
- package/lib/web/next.js +3 -3
- package/lib/web/postcss.js +1 -1
- package/lib/web/react.js +3 -3
- package/lib/web/tailwind.js +1 -1
- package/lib/xmlfile.js +1 -1
- package/lib/yaml.js +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
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.PnpmWorkspaceYamlSchemaNodeLinker = exports.PnpmWorkspaceYamlSchemaCatalogMode = void 0;
|
|
4
|
+
exports.toJson_PnpmWorkspaceYamlSchema = toJson_PnpmWorkspaceYamlSchema;
|
|
5
|
+
exports.toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules = toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules;
|
|
6
|
+
exports.toJson_PnpmWorkspaceYamlSchemaUpdateConfig = toJson_PnpmWorkspaceYamlSchemaUpdateConfig;
|
|
7
|
+
exports.toJson_PnpmWorkspaceYamlSchemaAuditConfig = toJson_PnpmWorkspaceYamlSchemaAuditConfig;
|
|
8
|
+
exports.toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures = toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures;
|
|
9
|
+
exports.toJson_PnpmWorkspaceYamlSchemaExecutionEnv = toJson_PnpmWorkspaceYamlSchemaExecutionEnv;
|
|
10
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
11
|
+
/**
|
|
12
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchema' to JSON representation.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
16
|
+
function toJson_PnpmWorkspaceYamlSchema(obj) {
|
|
17
|
+
if (obj === undefined) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const result = {
|
|
21
|
+
'packages': obj.packages?.map(y => y),
|
|
22
|
+
'catalog': ((obj.catalog) === undefined) ? undefined : (Object.entries(obj.catalog).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
23
|
+
'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] }), {})) }), {})),
|
|
24
|
+
'catalogMode': obj.catalogMode,
|
|
25
|
+
'cleanupUnusedCatalogs': obj.cleanupUnusedCatalogs,
|
|
26
|
+
'onlyBuiltDependencies': obj.onlyBuiltDependencies?.map(y => y),
|
|
27
|
+
'overrides': obj.overrides,
|
|
28
|
+
'packageExtensions': obj.packageExtensions,
|
|
29
|
+
'peerDependencyRules': toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules(obj.peerDependencyRules),
|
|
30
|
+
'neverBuiltDependencies': obj.neverBuiltDependencies?.map(y => y),
|
|
31
|
+
'dangerouslyAllowAllBuilds': obj.dangerouslyAllowAllBuilds,
|
|
32
|
+
'onlyBuiltDependenciesFile': obj.onlyBuiltDependenciesFile,
|
|
33
|
+
'ignoredBuiltDependencies': obj.ignoredBuiltDependencies?.map(y => y),
|
|
34
|
+
'allowedDeprecatedVersions': ((obj.allowedDeprecatedVersions) === undefined) ? undefined : (Object.entries(obj.allowedDeprecatedVersions).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
35
|
+
'patchedDependencies': ((obj.patchedDependencies) === undefined) ? undefined : (Object.entries(obj.patchedDependencies).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
36
|
+
'allowUnusedPatches': obj.allowUnusedPatches,
|
|
37
|
+
'allowNonAppliedPatches': obj.allowNonAppliedPatches,
|
|
38
|
+
'ignorePatchFailures': obj.ignorePatchFailures,
|
|
39
|
+
'updateConfig': toJson_PnpmWorkspaceYamlSchemaUpdateConfig(obj.updateConfig),
|
|
40
|
+
'configDependencies': obj.configDependencies,
|
|
41
|
+
'auditConfig': toJson_PnpmWorkspaceYamlSchemaAuditConfig(obj.auditConfig),
|
|
42
|
+
'requiredScripts': obj.requiredScripts?.map(y => y),
|
|
43
|
+
'supportedArchitectures': toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures(obj.supportedArchitectures),
|
|
44
|
+
'ignoredOptionalDependencies': obj.ignoredOptionalDependencies?.map(y => y),
|
|
45
|
+
'executionEnv': toJson_PnpmWorkspaceYamlSchemaExecutionEnv(obj.executionEnv),
|
|
46
|
+
'hoist': obj.hoist,
|
|
47
|
+
'hoistWorkspacePackages': obj.hoistWorkspacePackages,
|
|
48
|
+
'hoistPattern': obj.hoistPattern?.map(y => y),
|
|
49
|
+
'publicHoistPattern': obj.publicHoistPattern?.map(y => y),
|
|
50
|
+
'shamefullyHoist': obj.shamefullyHoist,
|
|
51
|
+
'modulesDir': obj.modulesDir,
|
|
52
|
+
'nodeLinker': obj.nodeLinker,
|
|
53
|
+
'symlink': obj.symlink,
|
|
54
|
+
'enableModulesDir': obj.enableModulesDir,
|
|
55
|
+
'virtualStoreDir': obj.virtualStoreDir,
|
|
56
|
+
'virtualStoreDirMaxLength': obj.virtualStoreDirMaxLength,
|
|
57
|
+
'packageImportMethod': obj.packageImportMethod,
|
|
58
|
+
'modulesCacheMaxAge': obj.modulesCacheMaxAge,
|
|
59
|
+
'dlxCacheMaxAge': obj.dlxCacheMaxAge,
|
|
60
|
+
'storeDir': obj.storeDir,
|
|
61
|
+
'verifyStoreIntegrity': obj.verifyStoreIntegrity,
|
|
62
|
+
'strictStorePkgContentCheck': obj.strictStorePkgContentCheck,
|
|
63
|
+
'enableGlobalVirtualStore': obj.enableGlobalVirtualStore,
|
|
64
|
+
'lockfile': obj.lockfile,
|
|
65
|
+
'preferFrozenLockfile': obj.preferFrozenLockfile,
|
|
66
|
+
'lockfileIncludeTarballUrl': obj.lockfileIncludeTarballUrl,
|
|
67
|
+
'gitBranchLockfile': obj.gitBranchLockfile,
|
|
68
|
+
'mergeGitBranchLockfilesBranchPattern': obj.mergeGitBranchLockfilesBranchPattern?.map(y => y),
|
|
69
|
+
'peersSuffixMaxLength': obj.peersSuffixMaxLength,
|
|
70
|
+
'registry': obj.registry,
|
|
71
|
+
'ca': obj.ca,
|
|
72
|
+
'cafile': obj.cafile,
|
|
73
|
+
'cert': obj.cert,
|
|
74
|
+
'key': obj.key,
|
|
75
|
+
'gitShallowHosts': obj.gitShallowHosts?.map(y => y),
|
|
76
|
+
'httpsProxy': obj.httpsProxy,
|
|
77
|
+
'proxy': obj.proxy,
|
|
78
|
+
'localAddress': obj.localAddress,
|
|
79
|
+
'maxsockets': obj.maxsockets,
|
|
80
|
+
'noproxy': obj.noproxy,
|
|
81
|
+
'strictSsl': obj.strictSsl,
|
|
82
|
+
'networkConcurrency': obj.networkConcurrency,
|
|
83
|
+
'fetchRetries': obj.fetchRetries,
|
|
84
|
+
'fetchRetryFactor': obj.fetchRetryFactor,
|
|
85
|
+
'fetchRetryMintimeout': obj.fetchRetryMintimeout,
|
|
86
|
+
'fetchRetryMaxtimeout': obj.fetchRetryMaxtimeout,
|
|
87
|
+
'fetchTimeout': obj.fetchTimeout,
|
|
88
|
+
'autoInstallPeers': obj.autoInstallPeers,
|
|
89
|
+
'dedupePeerDependents': obj.dedupePeerDependents,
|
|
90
|
+
'strictPeerDependencies': obj.strictPeerDependencies,
|
|
91
|
+
'resolvePeersFromWorkspaceRoot': obj.resolvePeersFromWorkspaceRoot,
|
|
92
|
+
'color': obj.color,
|
|
93
|
+
'loglevel': obj.loglevel,
|
|
94
|
+
'reporter': obj.reporter,
|
|
95
|
+
'useBetaCli': obj.useBetaCli,
|
|
96
|
+
'recursiveInstall': obj.recursiveInstall,
|
|
97
|
+
'engineStrict': obj.engineStrict,
|
|
98
|
+
'npmPath': obj.npmPath,
|
|
99
|
+
'packageManagerStrict': obj.packageManagerStrict,
|
|
100
|
+
'packageManagerStrictVersion': obj.packageManagerStrictVersion,
|
|
101
|
+
'managePackageManagerVersions': obj.managePackageManagerVersions,
|
|
102
|
+
'ignoreScripts': obj.ignoreScripts,
|
|
103
|
+
'ignoreDepScripts': obj.ignoreDepScripts,
|
|
104
|
+
'childConcurrency': obj.childConcurrency,
|
|
105
|
+
'sideEffectsCache': obj.sideEffectsCache,
|
|
106
|
+
'sideEffectsCacheReadonly': obj.sideEffectsCacheReadonly,
|
|
107
|
+
'unsafePerm': obj.unsafePerm,
|
|
108
|
+
'nodeOptions': obj.nodeOptions,
|
|
109
|
+
'verifyDepsBeforeRun': obj.verifyDepsBeforeRun,
|
|
110
|
+
'strictDepBuilds': obj.strictDepBuilds,
|
|
111
|
+
'useNodeVersion': obj.useNodeVersion,
|
|
112
|
+
'nodeVersion': obj.nodeVersion,
|
|
113
|
+
'linkWorkspacePackages': obj.linkWorkspacePackages?.value,
|
|
114
|
+
'injectWorkspacePackages': obj.injectWorkspacePackages,
|
|
115
|
+
'syncInjectedDepsAfterScripts': obj.syncInjectedDepsAfterScripts?.map(y => y),
|
|
116
|
+
'preferWorkspacePackages': obj.preferWorkspacePackages,
|
|
117
|
+
'sharedWorkspaceLockfile': obj.sharedWorkspaceLockfile,
|
|
118
|
+
'saveWorkspaceProtocol': obj.saveWorkspaceProtocol?.value,
|
|
119
|
+
'includeWorkspaceRoot': obj.includeWorkspaceRoot,
|
|
120
|
+
'ignoreWorkspaceCycles': obj.ignoreWorkspaceCycles,
|
|
121
|
+
'ignoreWorkspaceRootCheck': obj.ignoreWorkspaceRootCheck,
|
|
122
|
+
'disallowWorkspaceCycles': obj.disallowWorkspaceCycles,
|
|
123
|
+
'workspaceConcurrency': obj.workspaceConcurrency,
|
|
124
|
+
'failIfNoMatch': obj.failIfNoMatch,
|
|
125
|
+
'forceLegacyDeploy': obj.forceLegacyDeploy,
|
|
126
|
+
'savePrefix': obj.savePrefix,
|
|
127
|
+
'tag': obj.tag,
|
|
128
|
+
'globalDir': obj.globalDir,
|
|
129
|
+
'globalBinDir': obj.globalBinDir,
|
|
130
|
+
'stateDir': obj.stateDir,
|
|
131
|
+
'cacheDir': obj.cacheDir,
|
|
132
|
+
'useStderr': obj.useStderr,
|
|
133
|
+
'updateNotifier': obj.updateNotifier,
|
|
134
|
+
'preferSymlinkedExecutables': obj.preferSymlinkedExecutables,
|
|
135
|
+
'ignoreCompatibilityDb': obj.ignoreCompatibilityDb,
|
|
136
|
+
'resolutionMode': obj.resolutionMode,
|
|
137
|
+
'registrySupportsTimeField': obj.registrySupportsTimeField,
|
|
138
|
+
'extendNodePath': obj.extendNodePath,
|
|
139
|
+
'deployAllFiles': obj.deployAllFiles,
|
|
140
|
+
'dedupeDirectDeps': obj.dedupeDirectDeps,
|
|
141
|
+
'dedupeInjectedDeps': obj.dedupeInjectedDeps,
|
|
142
|
+
'optimisticRepeatInstall': obj.optimisticRepeatInstall,
|
|
143
|
+
'gitChecks': obj.gitChecks,
|
|
144
|
+
'embedReadme': obj.embedReadme,
|
|
145
|
+
'publishBranch': obj.publishBranch,
|
|
146
|
+
'provenance': obj.provenance,
|
|
147
|
+
'pnpmfile': obj.pnpmfile,
|
|
148
|
+
'globalPnpmfile': obj.globalPnpmfile,
|
|
149
|
+
'ignorePnpmfile': obj.ignorePnpmfile,
|
|
150
|
+
'patchesDir': obj.patchesDir,
|
|
151
|
+
'enablePrePostScripts': obj.enablePrePostScripts,
|
|
152
|
+
'scriptShell': obj.scriptShell,
|
|
153
|
+
'shellEmulator': obj.shellEmulator,
|
|
154
|
+
'saveExact': obj.saveExact,
|
|
155
|
+
'minimumReleaseAge': obj.minimumReleaseAge,
|
|
156
|
+
'minimumReleaseAgeExclude': obj.minimumReleaseAgeExclude?.map(y => y),
|
|
157
|
+
'minimumReleaseAgeStrict': obj.minimumReleaseAgeStrict,
|
|
158
|
+
'preferOffline': obj.preferOffline,
|
|
159
|
+
'trustPolicy': obj.trustPolicy,
|
|
160
|
+
'trustPolicyExclude': obj.trustPolicyExclude?.map(y => y),
|
|
161
|
+
'allowBuilds': obj.allowBuilds,
|
|
162
|
+
'blockExoticSubdeps': obj.blockExoticSubdeps,
|
|
163
|
+
'trustPolicyIgnoreAfter': obj.trustPolicyIgnoreAfter,
|
|
164
|
+
'auditLevel': obj.auditLevel,
|
|
165
|
+
'dedupePeers': obj.dedupePeers,
|
|
166
|
+
'npmrcAuthFile': obj.npmrcAuthFile,
|
|
167
|
+
'minimumReleaseAgeIgnoreMissingTime': obj.minimumReleaseAgeIgnoreMissingTime,
|
|
168
|
+
'registries': ((obj.registries) === undefined) ? undefined : (Object.entries(obj.registries).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
169
|
+
'virtualStoreOnly': obj.virtualStoreOnly,
|
|
170
|
+
'pmOnFail': obj.pmOnFail,
|
|
171
|
+
'runtimeOnFail': obj.runtimeOnFail,
|
|
172
|
+
'nodeDownloadMirrors': ((obj.nodeDownloadMirrors) === undefined) ? undefined : (Object.entries(obj.nodeDownloadMirrors).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})),
|
|
173
|
+
'trustLockfile': obj.trustLockfile,
|
|
174
|
+
'hoistingLimits': obj.hoistingLimits,
|
|
175
|
+
};
|
|
176
|
+
// filter undefined values
|
|
177
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
178
|
+
}
|
|
179
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
180
|
+
/**
|
|
181
|
+
* Controlling if and how dependencies are added to the default catalog
|
|
182
|
+
*
|
|
183
|
+
* @schema PnpmWorkspaceYamlSchemaCatalogMode
|
|
184
|
+
*/
|
|
185
|
+
var PnpmWorkspaceYamlSchemaCatalogMode;
|
|
186
|
+
(function (PnpmWorkspaceYamlSchemaCatalogMode) {
|
|
187
|
+
/** strict */
|
|
188
|
+
PnpmWorkspaceYamlSchemaCatalogMode["STRICT"] = "strict";
|
|
189
|
+
/** prefer */
|
|
190
|
+
PnpmWorkspaceYamlSchemaCatalogMode["PREFER"] = "prefer";
|
|
191
|
+
/** manual */
|
|
192
|
+
PnpmWorkspaceYamlSchemaCatalogMode["MANUAL"] = "manual";
|
|
193
|
+
})(PnpmWorkspaceYamlSchemaCatalogMode || (exports.PnpmWorkspaceYamlSchemaCatalogMode = PnpmWorkspaceYamlSchemaCatalogMode = {}));
|
|
194
|
+
/**
|
|
195
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchemaPeerDependencyRules' to JSON representation.
|
|
196
|
+
* @internal
|
|
197
|
+
*/
|
|
198
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
199
|
+
function toJson_PnpmWorkspaceYamlSchemaPeerDependencyRules(obj) {
|
|
200
|
+
if (obj === undefined) {
|
|
201
|
+
return undefined;
|
|
202
|
+
}
|
|
203
|
+
const result = {
|
|
204
|
+
'ignoreMissing': obj.ignoreMissing?.map(y => y),
|
|
205
|
+
'allowedVersions': obj.allowedVersions,
|
|
206
|
+
'allowAny': obj.allowAny?.map(y => y),
|
|
207
|
+
};
|
|
208
|
+
// filter undefined values
|
|
209
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchemaUpdateConfig' to JSON representation.
|
|
213
|
+
* @internal
|
|
214
|
+
*/
|
|
215
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
216
|
+
function toJson_PnpmWorkspaceYamlSchemaUpdateConfig(obj) {
|
|
217
|
+
if (obj === undefined) {
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
const result = {
|
|
221
|
+
'ignoreDependencies': obj.ignoreDependencies?.map(y => y),
|
|
222
|
+
};
|
|
223
|
+
// filter undefined values
|
|
224
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchemaAuditConfig' to JSON representation.
|
|
228
|
+
* @internal
|
|
229
|
+
*/
|
|
230
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
231
|
+
function toJson_PnpmWorkspaceYamlSchemaAuditConfig(obj) {
|
|
232
|
+
if (obj === undefined) {
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
const result = {
|
|
236
|
+
'ignoreCves': obj.ignoreCves?.map(y => y),
|
|
237
|
+
'ignoreGhsas': obj.ignoreGhsas?.map(y => y),
|
|
238
|
+
};
|
|
239
|
+
// filter undefined values
|
|
240
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchemaSupportedArchitectures' to JSON representation.
|
|
244
|
+
* @internal
|
|
245
|
+
*/
|
|
246
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
247
|
+
function toJson_PnpmWorkspaceYamlSchemaSupportedArchitectures(obj) {
|
|
248
|
+
if (obj === undefined) {
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
const result = {
|
|
252
|
+
'os': obj.os?.map(y => y),
|
|
253
|
+
'cpu': obj.cpu?.map(y => y),
|
|
254
|
+
'libc': obj.libc?.map(y => y),
|
|
255
|
+
};
|
|
256
|
+
// filter undefined values
|
|
257
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Converts an object of type 'PnpmWorkspaceYamlSchemaExecutionEnv' to JSON representation.
|
|
261
|
+
* @internal
|
|
262
|
+
*/
|
|
263
|
+
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
264
|
+
function toJson_PnpmWorkspaceYamlSchemaExecutionEnv(obj) {
|
|
265
|
+
if (obj === undefined) {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
const result = {
|
|
269
|
+
'nodeVersion': obj.nodeVersion,
|
|
270
|
+
};
|
|
271
|
+
// filter undefined values
|
|
272
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
273
|
+
}
|
|
274
|
+
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
|
|
275
|
+
/**
|
|
276
|
+
* Defines what linker should be used for installing Node packages.
|
|
277
|
+
*
|
|
278
|
+
* @schema PnpmWorkspaceYamlSchemaNodeLinker
|
|
279
|
+
*/
|
|
280
|
+
var PnpmWorkspaceYamlSchemaNodeLinker;
|
|
281
|
+
(function (PnpmWorkspaceYamlSchemaNodeLinker) {
|
|
282
|
+
/** isolated */
|
|
283
|
+
PnpmWorkspaceYamlSchemaNodeLinker["ISOLATED"] = "isolated";
|
|
284
|
+
/** hoisted */
|
|
285
|
+
PnpmWorkspaceYamlSchemaNodeLinker["HOISTED"] = "hoisted";
|
|
286
|
+
/** pnp */
|
|
287
|
+
PnpmWorkspaceYamlSchemaNodeLinker["PNP"] = "pnp";
|
|
288
|
+
})(PnpmWorkspaceYamlSchemaNodeLinker || (exports.PnpmWorkspaceYamlSchemaNodeLinker = PnpmWorkspaceYamlSchemaNodeLinker = {}));
|
|
289
|
+
/**
|
|
290
|
+
* 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).
|
|
291
|
+
*
|
|
292
|
+
* @schema PnpmWorkspaceYamlSchemaPackageImportMethod
|
|
293
|
+
*/
|
|
294
|
+
var PnpmWorkspaceYamlSchemaPackageImportMethod;
|
|
295
|
+
(function (PnpmWorkspaceYamlSchemaPackageImportMethod) {
|
|
296
|
+
/** auto */
|
|
297
|
+
PnpmWorkspaceYamlSchemaPackageImportMethod["AUTO"] = "auto";
|
|
298
|
+
/** hardlink */
|
|
299
|
+
PnpmWorkspaceYamlSchemaPackageImportMethod["HARDLINK"] = "hardlink";
|
|
300
|
+
/** copy */
|
|
301
|
+
PnpmWorkspaceYamlSchemaPackageImportMethod["COPY"] = "copy";
|
|
302
|
+
/** clone */
|
|
303
|
+
PnpmWorkspaceYamlSchemaPackageImportMethod["CLONE"] = "clone";
|
|
304
|
+
/** clone-or-copy */
|
|
305
|
+
PnpmWorkspaceYamlSchemaPackageImportMethod["CLONE_HYPHEN_OR_HYPHEN_COPY"] = "clone-or-copy";
|
|
306
|
+
})(PnpmWorkspaceYamlSchemaPackageImportMethod || (exports.PnpmWorkspaceYamlSchemaPackageImportMethod = PnpmWorkspaceYamlSchemaPackageImportMethod = {}));
|
|
307
|
+
/**
|
|
308
|
+
* Controls colors in the output.
|
|
309
|
+
*
|
|
310
|
+
* @schema PnpmWorkspaceYamlSchemaColor
|
|
311
|
+
*/
|
|
312
|
+
var PnpmWorkspaceYamlSchemaColor;
|
|
313
|
+
(function (PnpmWorkspaceYamlSchemaColor) {
|
|
314
|
+
/** always */
|
|
315
|
+
PnpmWorkspaceYamlSchemaColor["ALWAYS"] = "always";
|
|
316
|
+
/** auto */
|
|
317
|
+
PnpmWorkspaceYamlSchemaColor["AUTO"] = "auto";
|
|
318
|
+
/** never */
|
|
319
|
+
PnpmWorkspaceYamlSchemaColor["NEVER"] = "never";
|
|
320
|
+
})(PnpmWorkspaceYamlSchemaColor || (exports.PnpmWorkspaceYamlSchemaColor = PnpmWorkspaceYamlSchemaColor = {}));
|
|
321
|
+
/**
|
|
322
|
+
* Any logs at or higher than the given level will be shown.
|
|
323
|
+
*
|
|
324
|
+
* @schema PnpmWorkspaceYamlSchemaLoglevel
|
|
325
|
+
*/
|
|
326
|
+
var PnpmWorkspaceYamlSchemaLoglevel;
|
|
327
|
+
(function (PnpmWorkspaceYamlSchemaLoglevel) {
|
|
328
|
+
/** debug */
|
|
329
|
+
PnpmWorkspaceYamlSchemaLoglevel["DEBUG"] = "debug";
|
|
330
|
+
/** info */
|
|
331
|
+
PnpmWorkspaceYamlSchemaLoglevel["INFO"] = "info";
|
|
332
|
+
/** warn */
|
|
333
|
+
PnpmWorkspaceYamlSchemaLoglevel["WARN"] = "warn";
|
|
334
|
+
/** error */
|
|
335
|
+
PnpmWorkspaceYamlSchemaLoglevel["ERROR"] = "error";
|
|
336
|
+
})(PnpmWorkspaceYamlSchemaLoglevel || (exports.PnpmWorkspaceYamlSchemaLoglevel = PnpmWorkspaceYamlSchemaLoglevel = {}));
|
|
337
|
+
/**
|
|
338
|
+
* Allows you to customize the output style of the logs.
|
|
339
|
+
* https://pnpm.io/cli/install#--reportername
|
|
340
|
+
*
|
|
341
|
+
* @schema PnpmWorkspaceYamlSchemaReporter
|
|
342
|
+
*/
|
|
343
|
+
var PnpmWorkspaceYamlSchemaReporter;
|
|
344
|
+
(function (PnpmWorkspaceYamlSchemaReporter) {
|
|
345
|
+
/** silent */
|
|
346
|
+
PnpmWorkspaceYamlSchemaReporter["SILENT"] = "silent";
|
|
347
|
+
/** default */
|
|
348
|
+
PnpmWorkspaceYamlSchemaReporter["DEFAULT"] = "default";
|
|
349
|
+
/** append-only */
|
|
350
|
+
PnpmWorkspaceYamlSchemaReporter["APPEND_HYPHEN_ONLY"] = "append-only";
|
|
351
|
+
/** ndjson */
|
|
352
|
+
PnpmWorkspaceYamlSchemaReporter["NDJSON"] = "ndjson";
|
|
353
|
+
})(PnpmWorkspaceYamlSchemaReporter || (exports.PnpmWorkspaceYamlSchemaReporter = PnpmWorkspaceYamlSchemaReporter = {}));
|
|
354
|
+
/**
|
|
355
|
+
* If this is enabled, locally available packages are linked to node_modules instead of being downloaded from the registry.
|
|
356
|
+
*
|
|
357
|
+
* @schema PnpmWorkspaceYamlSchemaLinkWorkspacePackages
|
|
358
|
+
*/
|
|
359
|
+
class PnpmWorkspaceYamlSchemaLinkWorkspacePackages {
|
|
360
|
+
value;
|
|
361
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaLinkWorkspacePackages", version: "0.101.8" };
|
|
362
|
+
static fromBoolean(value) {
|
|
363
|
+
return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
|
|
364
|
+
}
|
|
365
|
+
static fromString(value) {
|
|
366
|
+
return new PnpmWorkspaceYamlSchemaLinkWorkspacePackages(value);
|
|
367
|
+
}
|
|
368
|
+
constructor(value) {
|
|
369
|
+
this.value = value;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.PnpmWorkspaceYamlSchemaLinkWorkspacePackages = PnpmWorkspaceYamlSchemaLinkWorkspacePackages;
|
|
373
|
+
/**
|
|
374
|
+
* This setting controls how dependencies that are linked from the workspace are added to package.json.
|
|
375
|
+
*
|
|
376
|
+
* @schema PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol
|
|
377
|
+
*/
|
|
378
|
+
class PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol {
|
|
379
|
+
value;
|
|
380
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.javascript.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol", version: "0.101.8" };
|
|
381
|
+
static fromBoolean(value) {
|
|
382
|
+
return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
|
|
383
|
+
}
|
|
384
|
+
static fromString(value) {
|
|
385
|
+
return new PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol(value);
|
|
386
|
+
}
|
|
387
|
+
constructor(value) {
|
|
388
|
+
this.value = value;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
exports.PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol = PnpmWorkspaceYamlSchemaSaveWorkspaceProtocol;
|
|
392
|
+
/**
|
|
393
|
+
* Configure how versions of packages installed to a package.json file get prefixed.
|
|
394
|
+
*
|
|
395
|
+
* @schema PnpmWorkspaceYamlSchemaSavePrefix
|
|
396
|
+
*/
|
|
397
|
+
var PnpmWorkspaceYamlSchemaSavePrefix;
|
|
398
|
+
(function (PnpmWorkspaceYamlSchemaSavePrefix) {
|
|
399
|
+
/** ^ */
|
|
400
|
+
PnpmWorkspaceYamlSchemaSavePrefix["VALUE_CARAT"] = "^";
|
|
401
|
+
/** ~ */
|
|
402
|
+
PnpmWorkspaceYamlSchemaSavePrefix["VALUE_TILDE"] = "~";
|
|
403
|
+
})(PnpmWorkspaceYamlSchemaSavePrefix || (exports.PnpmWorkspaceYamlSchemaSavePrefix = PnpmWorkspaceYamlSchemaSavePrefix = {}));
|
|
404
|
+
/**
|
|
405
|
+
* Determines how pnpm resolves dependencies, See https://pnpm.io/settings#resolutionmode
|
|
406
|
+
*
|
|
407
|
+
* @schema PnpmWorkspaceYamlSchemaResolutionMode
|
|
408
|
+
*/
|
|
409
|
+
var PnpmWorkspaceYamlSchemaResolutionMode;
|
|
410
|
+
(function (PnpmWorkspaceYamlSchemaResolutionMode) {
|
|
411
|
+
/** highest */
|
|
412
|
+
PnpmWorkspaceYamlSchemaResolutionMode["HIGHEST"] = "highest";
|
|
413
|
+
/** time-based */
|
|
414
|
+
PnpmWorkspaceYamlSchemaResolutionMode["TIME_HYPHEN_BASED"] = "time-based";
|
|
415
|
+
/** lowest-direct */
|
|
416
|
+
PnpmWorkspaceYamlSchemaResolutionMode["LOWEST_HYPHEN_DIRECT"] = "lowest-direct";
|
|
417
|
+
})(PnpmWorkspaceYamlSchemaResolutionMode || (exports.PnpmWorkspaceYamlSchemaResolutionMode = PnpmWorkspaceYamlSchemaResolutionMode = {}));
|
|
418
|
+
/**
|
|
419
|
+
* 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.
|
|
420
|
+
*
|
|
421
|
+
* @schema PnpmWorkspaceYamlSchemaTrustPolicy
|
|
422
|
+
*/
|
|
423
|
+
var PnpmWorkspaceYamlSchemaTrustPolicy;
|
|
424
|
+
(function (PnpmWorkspaceYamlSchemaTrustPolicy) {
|
|
425
|
+
/** off */
|
|
426
|
+
PnpmWorkspaceYamlSchemaTrustPolicy["OFF"] = "off";
|
|
427
|
+
/** no-downgrade */
|
|
428
|
+
PnpmWorkspaceYamlSchemaTrustPolicy["NO_HYPHEN_DOWNGRADE"] = "no-downgrade";
|
|
429
|
+
})(PnpmWorkspaceYamlSchemaTrustPolicy || (exports.PnpmWorkspaceYamlSchemaTrustPolicy = PnpmWorkspaceYamlSchemaTrustPolicy = {}));
|
|
430
|
+
/**
|
|
431
|
+
* Controls the level of issues reported by `pnpm audit`. When set to 'low', all vulnerabilities are reported. When set to 'moderate', 'high', or 'critical', only vulnerabilities with that severity or higher are reported.
|
|
432
|
+
*
|
|
433
|
+
* @schema PnpmWorkspaceYamlSchemaAuditLevel
|
|
434
|
+
*/
|
|
435
|
+
var PnpmWorkspaceYamlSchemaAuditLevel;
|
|
436
|
+
(function (PnpmWorkspaceYamlSchemaAuditLevel) {
|
|
437
|
+
/** low */
|
|
438
|
+
PnpmWorkspaceYamlSchemaAuditLevel["LOW"] = "low";
|
|
439
|
+
/** moderate */
|
|
440
|
+
PnpmWorkspaceYamlSchemaAuditLevel["MODERATE"] = "moderate";
|
|
441
|
+
/** high */
|
|
442
|
+
PnpmWorkspaceYamlSchemaAuditLevel["HIGH"] = "high";
|
|
443
|
+
/** critical */
|
|
444
|
+
PnpmWorkspaceYamlSchemaAuditLevel["CRITICAL"] = "critical";
|
|
445
|
+
})(PnpmWorkspaceYamlSchemaAuditLevel || (exports.PnpmWorkspaceYamlSchemaAuditLevel = PnpmWorkspaceYamlSchemaAuditLevel = {}));
|
|
446
|
+
/**
|
|
447
|
+
* Overrides the `onFail` behavior of both the `packageManager` field and `devEngines.packageManager` when the running pnpm version does not match the declared one.
|
|
448
|
+
*
|
|
449
|
+
* @schema PnpmWorkspaceYamlSchemaPmOnFail
|
|
450
|
+
*/
|
|
451
|
+
var PnpmWorkspaceYamlSchemaPmOnFail;
|
|
452
|
+
(function (PnpmWorkspaceYamlSchemaPmOnFail) {
|
|
453
|
+
/** download */
|
|
454
|
+
PnpmWorkspaceYamlSchemaPmOnFail["DOWNLOAD"] = "download";
|
|
455
|
+
/** error */
|
|
456
|
+
PnpmWorkspaceYamlSchemaPmOnFail["ERROR"] = "error";
|
|
457
|
+
/** warn */
|
|
458
|
+
PnpmWorkspaceYamlSchemaPmOnFail["WARN"] = "warn";
|
|
459
|
+
/** ignore */
|
|
460
|
+
PnpmWorkspaceYamlSchemaPmOnFail["IGNORE"] = "ignore";
|
|
461
|
+
})(PnpmWorkspaceYamlSchemaPmOnFail || (exports.PnpmWorkspaceYamlSchemaPmOnFail = PnpmWorkspaceYamlSchemaPmOnFail = {}));
|
|
462
|
+
/**
|
|
463
|
+
* 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"`.
|
|
464
|
+
*
|
|
465
|
+
* @schema PnpmWorkspaceYamlSchemaRuntimeOnFail
|
|
466
|
+
*/
|
|
467
|
+
var PnpmWorkspaceYamlSchemaRuntimeOnFail;
|
|
468
|
+
(function (PnpmWorkspaceYamlSchemaRuntimeOnFail) {
|
|
469
|
+
/** download */
|
|
470
|
+
PnpmWorkspaceYamlSchemaRuntimeOnFail["DOWNLOAD"] = "download";
|
|
471
|
+
/** error */
|
|
472
|
+
PnpmWorkspaceYamlSchemaRuntimeOnFail["ERROR"] = "error";
|
|
473
|
+
/** warn */
|
|
474
|
+
PnpmWorkspaceYamlSchemaRuntimeOnFail["WARN"] = "warn";
|
|
475
|
+
/** ignore */
|
|
476
|
+
PnpmWorkspaceYamlSchemaRuntimeOnFail["IGNORE"] = "ignore";
|
|
477
|
+
})(PnpmWorkspaceYamlSchemaRuntimeOnFail || (exports.PnpmWorkspaceYamlSchemaRuntimeOnFail = PnpmWorkspaceYamlSchemaRuntimeOnFail = {}));
|
|
478
|
+
/**
|
|
479
|
+
* 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).
|
|
480
|
+
*
|
|
481
|
+
* @schema PnpmWorkspaceYamlSchemaHoistingLimits
|
|
482
|
+
*/
|
|
483
|
+
var PnpmWorkspaceYamlSchemaHoistingLimits;
|
|
484
|
+
(function (PnpmWorkspaceYamlSchemaHoistingLimits) {
|
|
485
|
+
/** node */
|
|
486
|
+
PnpmWorkspaceYamlSchemaHoistingLimits["NODE"] = "node";
|
|
487
|
+
/** workspaces */
|
|
488
|
+
PnpmWorkspaceYamlSchemaHoistingLimits["WORKSPACES"] = "workspaces";
|
|
489
|
+
/** dependencies */
|
|
490
|
+
PnpmWorkspaceYamlSchemaHoistingLimits["DEPENDENCIES"] = "dependencies";
|
|
491
|
+
})(PnpmWorkspaceYamlSchemaHoistingLimits || (exports.PnpmWorkspaceYamlSchemaHoistingLimits = PnpmWorkspaceYamlSchemaHoistingLimits = {}));
|
|
492
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2phdmFzY3JpcHQvcG5wbS13b3Jrc3BhY2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlrQ0Esd0VBZ0tDO0FBZ0RELDhHQVNDO0FBb0JELGdHQU9DO0FBMkJELDhGQVFDO0FBOEJELG9IQVNDO0FBb0JELGdHQU9DOztBQTlWRDs7O0dBR0c7QUFDSCxxRkFBcUY7QUFDckYsU0FBZ0IsOEJBQThCLENBQUMsR0FBd0M7SUFDckYsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsU0FBUyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlKLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENB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OztHQUlHO0FBQ0gsSUFBWSxvQ0FTWDtBQVRELFdBQVksb0NBQW9DO0lBQzlDLGVBQWU7SUFDZiw2REFBcUIsQ0FBQTtJQUNyQixZQUFZO0lBQ1osdURBQWUsQ0FBQTtJQUNmLFdBQVc7SUFDWCxxREFBYSxDQUFBO0lBQ2IsYUFBYTtJQUNiLHlEQUFpQixDQUFBO0FBQ25CLENBQUMsRUFUVyxvQ0FBb0Msb0RBQXBDLG9DQUFvQyxRQVMvQztBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHFDQU9YO0FBUEQsV0FBWSxxQ0FBcUM7SUFDL0MsV0FBVztJQUNYLHNEQUFhLENBQUE7SUFDYixpQkFBaUI7SUFDakIsa0VBQXlCLENBQUE7SUFDekIsbUJBQW1CO0lBQ25CLHNFQUE2QixDQUFBO0FBQy9CLENBQUMsRUFQVyxxQ0FBcUMscURBQXJDLHFDQUFxQyxRQU9oRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5vZGUgLi9wcm9qZW4uanNcIi5cbi8qKlxuICogSlNPTiBzY2hlbWEgZm9yIHBucG0td29ya3NwYWNlLnlhbWwgZmlsZXNcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEge1xuICAvKipcbiAgICogV29ya3NwYWNlIHBhY2thZ2UgcGF0aHMuIEdsb2IgcGF0dGVybnMgYXJlIHN1cHBvcnRlZFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgZGVwZW5kZW5jeSB2ZXJzaW9uIHJhbmdlcyBhcyByZXVzYWJsZSBjb25zdGFudHMsXG4gICAqIGZvciBsYXRlciByZWZlcmVuY2UgaW4gcGFja2FnZS5qc29uIGZpbGVzLlxuICAgKiBUaGlzIChzaW5ndWxhcikgZmllbGQgY3JlYXRlcyBhIGNhdGFsb2cgbmFtZWQgZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjYXRhbG9nXG4gICAqL1xuICByZWFkb25seSBjYXRhbG9nPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRGVmaW5lIGFyYml0cmFyaWx5IG5hbWVkIGNhdGFsb2dzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dzPzogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH07XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsaW5nIGlmIGFuZCBob3cgZGVwZW5kZW5jaWVzIGFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjYXRhbG9nXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2F0YWxvZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGNhdGFsb2dNb2RlPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBwbnBtIHdpbGwgcmVtb3ZlIHVudXNlZCBjYXRhbG9nIGVudHJpZXMgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjbGVhbnVwVW51c2VkQ2F0YWxvZ3NcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFudXBVbnVzZWRDYXRhbG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYWNrYWdlIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgZXhlY3V0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvbmx5QnVpbHREZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IG9ubHlCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG92ZXJyaWRlIGFueSBkZXBlbmRlbmN5IGluIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI292ZXJyaWRlc1xuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnJpZGVzPzogYW55O1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGV4dGVuZCB0aGUgZXhpc3RpbmcgcGFja2FnZSBkZWZpbml0aW9ucyB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUV4dGVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VFeHRlbnNpb25zPzogYW55O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BlZXJEZXBlbmRlbmN5UnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJEZXBlbmRlbmN5UnVsZXM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXM7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdG8gcnVuIGJ1aWxkcyBmb3IuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV2ZXJCdWlsdERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgbmV2ZXJCdWlsdERlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYWxsIGJ1aWxkIHNjcmlwdHMgKGUuZy4gcHJlaW5zdGFsbCwgaW5zdGFsbCwgcG9zdGluc3RhbGwpIGZyb20gZGVwZW5kZW5jaWVzIHdpbGwgcnVuIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgcmVxdWlyaW5nIGFwcHJvdmFsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Rhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGRhbmdlcm91c2x5QWxsb3dBbGxCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBKU09OIGZpbGUgdGhhdCBsaXN0cyB0aGUgb25seSBwYWNrYWdlcyBwZXJtaXR0ZWQgdG8gcnVuIGluc3RhbGxhdGlvbiBzY3JpcHRzIGR1cmluZyB0aGUgcG5wbSBpbnN0YWxsIHByb2Nlc3MuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgb25seUJ1aWx0RGVwZW5kZW5jaWVzRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHBhY2thZ2UgbmFtZXMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0IGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlZEJ1aWx0RGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRlcHJlY2F0ZWQgdmVyc2lvbnMgdGhhdCB0aGUgd2FybmluZ3MgYXJlIHN1cHByZXNzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgcGF0Y2hlZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYXRjaGVkRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBwYXRjaGVkRGVwZW5kZW5jaWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuIChQcmV2aW91c2x5IG5hbWVkIFwiYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1wiKVxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2FsbG93VW51c2VkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dVbnVzZWRQYXRjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBpbnN0YWxsYXRpb24gd29uJ3QgZmFpbCBpZiBzb21lIG9mIHRoZSBwYXRjaGVzIGZyb20gdGhlIFwicGF0Y2hlZERlcGVuZGVuY2llc1wiIGZpZWxkIHdlcmUgbm90IGFwcGxpZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dOb25BcHBsaWVkUGF0Y2hlc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dOb25BcHBsaWVkUGF0Y2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaXMgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkLiBFcnJvcnMgb3V0IHdoZW4gYSBwYXRjaCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gb3IgdmVyc2lvbiByYW5nZSBmYWlscy4gSWdub3JlcyBmYWlsdXJlcyBmcm9tIG5hbWUtb25seSBwYXRjaGVzLiBXaGVuIHRydWUsIHByaW50cyBhIHdhcm5pbmcgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4gYW55IHBhdGNoIGNhbm5vdCBiZSBhcHBsaWVkLiBXaGVuIGZhbHNlLCBlcnJvcnMgb3V0IGZvciBhbnkgcGF0Y2ggZmFpbHVyZS5cbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVQYXRjaEZhaWx1cmVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQYXRjaEZhaWx1cmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN1cGRhdGVDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZUNvbmZpZz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBDb25maWcgZGVwZW5kZW5jaWVzIGFsbG93IHlvdSB0byBzaGFyZSBhbmQgY2VudHJhbGl6ZSBjb25maWd1cmF0aW9uIGZpbGVzLCBzZXR0aW5ncywgYW5kIGhvb2tzIGFjcm9zcyBtdWx0aXBsZSBwcm9qZWN0cy4gVGhleSBhcmUgaW5zdGFsbGVkIGJlZm9yZSBhbGwgcmVndWxhciBkZXBlbmRlbmNpZXMgKCdkZXBlbmRlbmNpZXMnLCAnZGV2RGVwZW5kZW5jaWVzJywgJ29wdGlvbmFsRGVwZW5kZW5jaWVzJyksIG1ha2luZyB0aGVtIGlkZWFsIGZvciBzZXR0aW5nIHVwIGN1c3RvbSBob29rcywgcGF0Y2hlcywgYW5kIGNhdGFsb2cgZW50cmllcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjb25maWdEZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0RlcGVuZGVuY2llcz86IGFueTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNhdWRpdENvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXRDb25maWc/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IG11c3QgZXhpc3QgaW4gZWFjaCBwcm9qZWN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlcXVpcmVkU2NyaXB0c1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWRTY3JpcHRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCB5b3UnZCBsaWtlIHRvIGluc3RhbGwgb3B0aW9uYWwgZGVwZW5kZW5jaWVzLCBldmVuIGlmIHRoZXkgZG9uJ3QgbWF0Y2ggdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgc3lzdGVtIHJ1bm5pbmcgdGhlIGluc3RhbGwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcz86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG9wdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBpbnN0YWxsIHNob3VsZCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlZE9wdGlvbmFsRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZXhlY3V0aW9uRW52XG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25FbnY/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBob2lzdGVkIHRvIG5vZGVfbW9kdWxlcy8ucG5wbS9ub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RcbiAgICovXG4gIHJlYWRvbmx5IGhvaXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2VzIGFyZSBzeW1saW5rZWQgdG8gZWl0aGVyIDx3b3Jrc3BhY2Vfcm9vdD4vbm9kZV9tb2R1bGVzLy5wbnBtL25vZGVfbW9kdWxlcyBvciB0byA8d29ya3NwYWNlX3Jvb3Q+L25vZGVfbW9kdWxlcyBkZXBlbmRpbmcgb24gb3RoZXIgaG9pc3Rpbmcgc2V0dGluZ3MgKGhvaXN0UGF0dGVybiBhbmQgcHVibGljSG9pc3RQYXR0ZXJuKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdFdvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBob2lzdFdvcmtzcGFjZVBhY2thZ2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGVsbHMgcG5wbSB3aGljaCBwYWNrYWdlcyBzaG91bGQgYmUgaG9pc3RlZCB0byBub2RlX21vZHVsZXMvLnBucG0vbm9kZV9tb2R1bGVzXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaG9pc3RQYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSBob2lzdFBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVW5saWtlIGhvaXN0UGF0dGVybiwgd2hpY2ggaG9pc3RzIGRlcGVuZGVuY2llcyB0byBhIGhpZGRlbiBtb2R1bGVzIGRpcmVjdG9yeSBpbnNpZGUgdGhlIHZpcnR1YWwgc3RvcmUsIHB1YmxpY0hvaXN0UGF0dGVybiBob2lzdHMgZGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHRvIHRoZSByb290IG1vZHVsZXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3B1YmxpY0hvaXN0UGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSG9pc3RQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHBucG0gY3JlYXRlcyBhIHNlbWlzdHJpY3Qgbm9kZV9tb2R1bGVzLCBtZWFuaW5nIGRlcGVuZGVuY2llcyBoYXZlIGFjY2VzcyB0byB1bmRlY2xhcmVkIGRlcGVuZGVuY2llcyBidXQgbW9kdWxlcyBvdXRzaWRlIG9mIG5vZGVfbW9kdWxlcyBkbyBub3QuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2hhbWVmdWxseUhvaXN0XG4gICAqL1xuICByZWFkb25seSBzaGFtZWZ1bGx5SG9pc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGRlcGVuZGVuY2llcyB3aWxsIGJlIGluc3RhbGxlZCAoaW5zdGVhZCBvZiBub2RlX21vZHVsZXMpLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21vZHVsZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hhdCBsaW5rZXIgc2hvdWxkIGJlIHVzZWQgZm9yIGluc3RhbGxpbmcgTm9kZSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlTGlua2VyXG4gICAqL1xuICByZWFkb25seSBub2RlTGlua2VyPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHN5bWxpbmsgaXMgc2V0IHRvIGZhbHNlLCBwbnBtIGNyZWF0ZXMgYSB2aXJ0dWFsIHN0b3JlIGRpcmVjdG9yeSB3aXRob3V0IGFueSBzeW1saW5rcy4gSXQgaXMgYSB1c2VmdWwgc2V0dGluZyB0b2dldGhlciB3aXRoIG5vZGVMaW5rZXI9cG5wLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3N5bWxpbmtcbiAgICovXG4gIHJlYWRvbmx5IHN5bWxpbms/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCBwbnBtIHdpbGwgbm90IHdyaXRlIGFueSBmaWxlcyB0byB0aGUgbW9kdWxlcyBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5hYmxlTW9kdWxlc0RpclxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTW9kdWxlc0Rpcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2l0aCBsaW5rcyB0byB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1heGltdW0gYWxsb3dlZCBsZW5ndGggb2YgZGlyZWN0b3J5IG5hbWVzIGluc2lkZSB0aGUgdmlydHVhbCBzdG9yZSBkaXJlY3RvcnkgKG5vZGVfbW9kdWxlcy8ucG5wbSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSB3YXkgcGFja2FnZXMgYXJlIGltcG9ydGVkIGZyb20gdGhlIHN0b3JlIChpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHN5bWxpbmtzIGluc2lkZSBub2RlX21vZHVsZXMsIHRoZW4geW91IG5lZWQgdG8gY2hhbmdlIHRoZSBub2RlTGlua2VyIHNldHRpbmcsIG5vdCB0aGlzIG9uZSkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGFja2FnZUltcG9ydE1ldGhvZFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZUltcG9ydE1ldGhvZD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZDtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW4gbWludXRlcyBhZnRlciB3aGljaCBvcnBoYW4gcGFja2FnZXMgZnJvbSB0aGUgbW9kdWxlcyBkaXJlY3Rvcnkgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbW9kdWxlc0NhY2hlTWF4QWdlXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzQ2FjaGVNYXhBZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggZGx4IGNhY2hlIGV4cGlyZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGx4Q2FjaGVNYXhBZ2VcbiAgICovXG4gIHJlYWRvbmx5IGRseENhY2hlTWF4QWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gd2hlcmUgYWxsIHRoZSBwYWNrYWdlcyBhcmUgc2F2ZWQgb24gdGhlIGRpc2suXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RvcmVEaXJcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBpZiBhIGZpbGUgaW4gdGhlIHN0b3JlIGhhcyBiZWVuIG1vZGlmaWVkLCB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUgaXMgY2hlY2tlZCBiZWZvcmUgbGlua2luZyBpdCB0byBhIHByb2plY3QncyBub2RlX21vZHVsZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyaWZ5U3RvcmVJbnRlZ3JpdHlcbiAgICovXG4gIHJlYWRvbmx5IHZlcmlmeVN0b3JlSW50ZWdyaXR5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU29tZSByZWdpc3RyaWVzIGFsbG93IHRoZSBleGFjdCBzYW1lIGNvbnRlbnQgdG8gYmUgcHVibGlzaGVkIHVuZGVyIGRpZmZlcmVudCBwYWNrYWdlIG5hbWVzIGFuZC9vciB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RTdG9yZVBrZ0NvbnRlbnRDaGVja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RyaWN0U3RvcmVQa2dDb250ZW50Q2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIG5vZGVfbW9kdWxlcyBjb250YWlucyBvbmx5IHN5bWxpbmtzIHRvIGEgY2VudHJhbCB2aXJ0dWFsIHN0b3JlLCByYXRoZXIgdGhhbiB0byBub2RlX21vZHVsZXMvLnBucG0uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBmYWxzZSwgcG5wbSB3b24ndCByZWFkIG9yIGdlbmVyYXRlIGEgcG5wbS1sb2NrLnlhbWwgZmlsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlIGFuZCB0aGUgYXZhaWxhYmxlIHBucG0tbG9jay55YW1sIHNhdGlzZmllcyB0aGUgcGFja2FnZS5qc29uIGRlcGVuZGVuY2llcyBkaXJlY3RpdmUsIGEgaGVhZGxlc3MgaW5zdGFsbGF0aW9uIGlzIHBlcmZvcm1lZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJGcm96ZW5Mb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVyRnJvemVuTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGZ1bGwgVVJMIHRvIHRoZSBwYWNrYWdlJ3MgdGFyYmFsbCB0byBldmVyeSBlbnRyeSBpbiBwbnBtLWxvY2sueWFtbC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsXG4gICAqL1xuICByZWFkb25seSBsb2NrZmlsZUluY2x1ZGVUYXJiYWxsVXJsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIGdlbmVyYXRlZCBsb2NrZmlsZSBuYW1lIGFmdGVyIGluc3RhbGxhdGlvbiB3aWxsIGJlIG5hbWVkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGJyYW5jaCBuYW1lIHRvIGNvbXBsZXRlbHkgYXZvaWQgbWVyZ2UgY29uZmxpY3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2dpdEJyYW5jaExvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSBnaXRCcmFuY2hMb2NrZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBtYXRjaGVzIHRoZSBjdXJyZW50IGJyYW5jaCBuYW1lIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIG1lcmdlIGFsbCBnaXQgYnJhbmNoIGxvY2tmaWxlIGZpbGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgbWVyZ2VHaXRCcmFuY2hMb2NrZmlsZXNCcmFuY2hQYXR0ZXJuPzogYW55W107XG5cbiAgLyoqXG4gICAqIE1heCBsZW5ndGggb2YgdGhlIHBlZXIgSURzIHN1ZmZpeCBhZGRlZCB0byBkZXBlbmRlbmN5IGtleXMgaW4gdGhlIGxvY2tmaWxlLiBJZiB0aGUgc3VmZml4IGlzIGxvbmdlciwgaXQgaXMgcmVwbGFjZWQgd2l0aCBhIGhhc2guXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcGVlcnNTdWZmaXhNYXhMZW5ndGhcbiAgICovXG4gIHJlYWRvbmx5IHBlZXJzU3VmZml4TWF4TGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBVUkwgb2YgdGhlIG5wbSBwYWNrYWdlIHJlZ2lzdHJ5ICh0cmFpbGluZyBzbGFzaCBpbmNsdWRlZCkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHNpZ25pbmcgY2VydGlmaWNhdGUgdGhhdCBpcyB0cnVzdGVkIGZvciBTU0wgY29ubmVjdGlvbnMgdG8gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NhXG4gICAqL1xuICByZWFkb25seSBjYT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIG9uZSBvciBtdWx0aXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgc2lnbmluZyBjZXJ0aWZpY2F0ZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2FmaWxlXG4gICAqL1xuICByZWFkb25seSBjYWZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2xpZW50IGNlcnRpZmljYXRlIHRvIHBhc3Mgd2hlbiBhY2Nlc3NpbmcgdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2NlcnRcbiAgICovXG4gIHJlYWRvbmx5IGNlcnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2xpZW50IGtleSB0byBwYXNzIHdoZW4gYWNjZXNzaW5nIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBmZXRjaGluZyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgR2l0IHJlcG9zaXRvcmllcywgaWYgdGhlIGhvc3QgaXMgbGlzdGVkIGluIHRoaXMgc2V0dGluZywgcG5wbSB3aWxsIHVzZSBzaGFsbG93IGNsb25pbmcgdG8gZmV0Y2ggb25seSB0aGUgbmVlZGVkIGNvbW1pdCwgbm90IGFsbCB0aGUgaGlzdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnaXRTaGFsbG93SG9zdHNcbiAgICovXG4gIHJlYWRvbmx5IGdpdFNoYWxsb3dIb3N0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIHByb3h5IHRvIHVzZSBmb3Igb3V0Z29pbmcgSFRUUFMgcmVxdWVzdHMuIElmIHRoZSBIVFRQU19QUk9YWSwgaHR0cHNfcHJveHksIEhUVFBfUFJPWFkgb3IgaHR0cF9wcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIHNldCwgdGhlaXIgdmFsdWVzIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2h0dHBzUHJveHlcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBzUHJveHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcHJveHkgdG8gdXNlIGZvciBvdXRnb2luZyBodHRwIHJlcXVlc3RzLiBJZiB0aGUgSFRUUF9QUk9YWSBvciBodHRwX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc2V0LCBwcm94eSBzZXR0aW5ncyB3aWxsIGJlIGhvbm9yZWQgYnkgdGhlIHVuZGVybHlpbmcgcmVxdWVzdCBsaWJyYXJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3Byb3h5XG4gICAqL1xuICByZWFkb25seSBwcm94eT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGludGVyZmFjZSB0byB1c2Ugd2hlbiBtYWtpbmcgY29ubmVjdGlvbnMgdG8gdGhlIG5wbSByZWdpc3RyeS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2NhbEFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IGxvY2FsQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIHVzZSBwZXIgb3JpZ2luIChwcm90b2NvbC9ob3N0L3BvcnQgY29tYmluYXRpb24pLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21heHNvY2tldHNcbiAgICovXG4gIHJlYWRvbmx5IG1heHNvY2tldHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiBkb21haW4gZXh0ZW5zaW9ucyB0aGF0IGEgcHJveHkgc2hvdWxkIG5vdCBiZSB1c2VkIGZvci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub3Byb3h5XG4gICAqL1xuICByZWFkb25seSBub3Byb3h5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBkbyBTU0wga2V5IHZhbGlkYXRpb24gd2hlbiBtYWtpbmcgcmVxdWVzdHMgdG8gdGhlIHJlZ2lzdHJ5IHZpYSBIVFRQUy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RTc2xcbiAgICovXG4gIHJlYWRvbmx5IHN0cmljdFNzbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBIVFRQKFMpIHJlcXVlc3RzIHRvIHByb2Nlc3Mgc2ltdWx0YW5lb3VzbHkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbmV0d29ya0NvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHRvIHJldHJ5IGlmIHBucG0gZmFpbHMgdG8gZmV0Y2ggZnJvbSB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hSZXRyaWVzXG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJpZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBleHBvbmVudGlhbCBmYWN0b3IgZm9yIHJldHJ5IGJhY2tvZmYuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZmV0Y2hSZXRyeUZhY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgZmV0Y2hSZXRyeUZhY3Rvcj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gKGJhc2UpIHRpbWVvdXQgZm9yIHJldHJ5aW5nIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlNaW50aW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJ5TWludGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gZmFsbGJhY2sgdGltZW91dCB0byBlbnN1cmUgdGhlIHJldHJ5IGZhY3RvciBkb2VzIG5vdCBtYWtlIHJlcXVlc3RzIHRvbyBsb25nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2ZldGNoUmV0cnlNYXh0aW1lb3V0XG4gICAqL1xuICByZWFkb25seSBmZXRjaFJldHJ5TWF4dGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBmb3IgSFRUUCByZXF1ZXN0cyB0byBjb21wbGV0ZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmZXRjaFRpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IGZldGNoVGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBhbnkgbWlzc2luZyBub24tb3B0aW9uYWwgcGVlciBkZXBlbmRlbmNpZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2F1dG9JbnN0YWxsUGVlcnNcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9JbnN0YWxsUGVlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgc2V0dGluZyBpcyBzZXQgdG8gdHJ1ZSwgcGFja2FnZXMgd2l0aCBwZWVyIGRlcGVuZGVuY2llcyB3aWxsIGJlIGRlZHVwbGljYXRlZCBhZnRlciBwZWVycyByZXNvbHV0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2RlZHVwZVBlZXJEZXBlbmRlbnRzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVQZWVyRGVwZW5kZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgY29tbWFuZHMgd2lsbCBmYWlsIGlmIHRoZXJlIGlzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBlZXIgZGVwZW5kZW5jeSBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdHJpY3RQZWVyRGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBzdHJpY3RQZWVyRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBkZXBlbmRlbmNpZXMgb2YgdGhlIHJvb3Qgd29ya3NwYWNlIHByb2plY3QgYXJlIHVzZWQgdG8gcmVzb2x2ZSBwZWVyIGRlcGVuZGVuY2llcyBvZiBhbnkgcHJvamVjdHMgaW4gdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXNvbHZlUGVlcnNGcm9tV29ya3NwYWNlUm9vdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBjb2xvcnMgaW4gdGhlIG91dHB1dC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjb2xvclxuICAgKi9cbiAgcmVhZG9ubHkgY29sb3I/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yO1xuXG4gIC8qKlxuICAgKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNsb2dsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nbGV2ZWw/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUxvZ2xldmVsO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICAgKiBodHRwczovL3BucG0uaW8vY2xpL2luc3RhbGwjLS1yZXBvcnRlcm5hbWVcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXBvcnRlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0ZXI/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyO1xuXG4gIC8qKlxuICAgKiBFeHBlcmltZW50YWwgb3B0aW9uIHRoYXQgZW5hYmxlcyBiZXRhIGZlYXR1cmVzIG9mIHRoZSBDTEkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlQmV0YUNsaVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQmV0YUNsaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgdGhlIHByaW1hcnkgYmVoYXZpb3VyIG9mIHBucG0gaW5zdGFsbCBiZWNvbWVzIHRoYXQgb2YgcG5wbSBpbnN0YWxsIC1yLCBtZWFuaW5nIHRoZSBpbnN0YWxsIGlzIHBlcmZvcm1lZCBvbiBhbGwgd29ya3NwYWNlIG9yIHN1YmRpcmVjdG9yeSBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZWN1cnNpdmVJbnN0YWxsXG4gICAqL1xuICByZWFkb25seSByZWN1cnNpdmVJbnN0YWxsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBlbmFibGVkLCBwbnBtIHdpbGwgbm90IGluc3RhbGwgYW55IHBhY2thZ2UgdGhhdCBjbGFpbXMgdG8gbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBOb2RlIHZlcnNpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZW5naW5lU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBlbmdpbmVTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgdGhlIG5wbSBiaW5hcnkgdGhhdCBwbnBtIHVzZXMgZm9yIHNvbWUgYWN0aW9ucywgbGlrZSBwdWJsaXNoaW5nLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25wbVBhdGhcbiAgICovXG4gIHJlYWRvbmx5IG5wbVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgc2V0dGluZyBpcyBkaXNhYmxlZCwgcG5wbSB3aWxsIG5vdCBmYWlsIGlmIGEgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlciBpcyBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi4gV2hlbiBlbmFibGVkLCBvbmx5IHRoZSBwYWNrYWdlIG5hbWUgaXMgY2hlY2tlZCAoc2luY2UgcG5wbSB2OS4yLjApLCBzbyB5b3UgY2FuIHN0aWxsIHJ1biBhbnkgdmVyc2lvbiBvZiBwbnBtIHJlZ2FyZGxlc3Mgb2YgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluIHRoZSBwYWNrYWdlTWFuYWdlciBmaWVsZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlTWFuYWdlclN0cmljdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXJTdHJpY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHBucG0gd2lsbCBmYWlsIGlmIGl0cyB2ZXJzaW9uIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4gdGhlIHBhY2thZ2VNYW5hZ2VyIGZpZWxkIG9mIHBhY2thZ2UuanNvbi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyU3RyaWN0VmVyc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgcG5wbSB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgYW5kIHJ1biB0aGUgdmVyc2lvbiBvZiBwbnBtIHNwZWNpZmllZCBpbiB0aGUgcGFja2FnZU1hbmFnZXIgZmllbGQgb2YgcGFja2FnZS5qc29uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEbyBub3QgZXhlY3V0ZSBhbnkgc2NyaXB0cyBkZWZpbmVkIGluIHRoZSBwcm9qZWN0IHBhY2thZ2UuanNvbiBhbmQgaXRzIGRlcGVuZGVuY2llcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNpZ25vcmVTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVTY3JpcHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG8gbm90IGV4ZWN1dGUgYW55IHNjcmlwdHMgb2YgdGhlIGluc3RhbGxlZCBwYWNrYWdlcy4gU2NyaXB0cyBvZiB0aGUgcHJvamVjdHMgYXJlIGV4ZWN1dGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZURlcFNjcmlwdHNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZURlcFNjcmlwdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzIHRvIGFsbG9jYXRlIHNpbXVsdGFuZW91c2x5IHRvIGJ1aWxkIG5vZGVfbW9kdWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNjaGlsZENvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSBjaGlsZENvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBVc2UgYW5kIGNhY2hlIHRoZSByZXN1bHRzIG9mIChwcmUvcG9zdClpbnN0YWxsIGhvb2tzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NpZGVFZmZlY3RzQ2FjaGVcbiAgICovXG4gIHJlYWRvbmx5IHNpZGVFZmZlY3RzQ2FjaGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPbmx5IHVzZSB0aGUgc2lkZSBlZmZlY3RzIGNhY2hlIGlmIHByZXNlbnQsIGRvIG5vdCBjcmVhdGUgaXQgZm9yIG5ldyBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaWRlRWZmZWN0c0NhY2hlUmVhZG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHNpZGVFZmZlY3RzQ2FjaGVSZWFkb25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIGVuYWJsZSBVSUQvR0lEIHN3aXRjaGluZyB3aGVuIHJ1bm5pbmcgcGFja2FnZSBzY3JpcHRzLiBJZiBzZXQgZXhwbGljaXRseSB0byBmYWxzZSwgdGhlbiBpbnN0YWxsaW5nIGFzIGEgbm9uLXJvb3QgdXNlciB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdW5zYWZlUGVybVxuICAgKi9cbiAgcmVhZG9ubHkgdW5zYWZlUGVybT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgdG8gcGFzcyB0aHJvdWdoIHRvIE5vZGUuanMgdmlhIHRoZSBOT0RFX09QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZU9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVPcHRpb25zPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgYWxsb3dzIHRoZSBjaGVja2luZyBvZiB0aGUgc3RhdGUgb2YgZGVwZW5kZW5jaWVzIGJlZm9yZSBydW5uaW5nIHNjcmlwdHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdmVyaWZ5RGVwc0JlZm9yZVJ1blxuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5RGVwc0JlZm9yZVJ1bj86IGFueTtcblxuICAvKipcbiAgICogV2hlbiBzdHJpY3REZXBCdWlsZHMgaXMgZW5hYmxlZCwgdGhlIGluc3RhbGxhdGlvbiB3aWxsIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBpZiBhbnkgZGVwZW5kZW5jaWVzIGhhdmUgdW5yZXZpZXdlZCBidWlsZCBzY3JpcHRzIChha2EgcG9zdGluc3RhbGwgc2NyaXB0cykuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc3RyaWN0RGVwQnVpbGRzXG4gICAqL1xuICByZWFkb25seSBzdHJpY3REZXBCdWlsZHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hpY2ggZXhhY3QgTm9kZS5qcyB2ZXJzaW9uIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgcHJvamVjdCdzIHJ1bnRpbWUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdXNlTm9kZVZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHVzZU5vZGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZS5qcyB2ZXJzaW9uIHRvIHVzZSB3aGVuIGNoZWNraW5nIGEgcGFja2FnZSdzIGVuZ2luZXMgc2V0dGluZy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWxseSBhdmFpbGFibGUgcGFja2FnZXMgYXJlIGxpbmtlZCB0byBub2RlX21vZHVsZXMgaW5zdGVhZCBvZiBiZWluZyBkb3dubG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2xpbmtXb3Jrc3BhY2VQYWNrYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgbGlua1dvcmtzcGFjZVBhY2thZ2VzPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXM7XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgaGFyZC1saW5raW5nIG9mIGFsbCBsb2NhbCB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzIGluc3RlYWQgb2Ygc3ltbGlua2luZyB0aGVtLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2luamVjdFdvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBpbmplY3RXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluamVjdGVkIHdvcmtzcGFjZSBkZXBlbmRlbmNpZXMgYXJlIGNvbGxlY3Rpb25zIG9mIGhhcmRsaW5rcywgd2hpY2ggZG9uJ3QgYWRkIG9yIHJlbW92ZSB0aGUgZmlsZXMgd2hlbiB0aGVpciBzb3VyY2VzIGNoYW5nZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBzeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWwgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlIGFyZSBwcmVmZXJyZWQgb3ZlciBwYWNrYWdlcyBmcm9tIHRoZSByZWdpc3RyeSwgZXZlbiBpZiB0aGVyZSBpcyBhIG5ld2VyIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgaW4gdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlcldvcmtzcGFjZVBhY2thZ2VzXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJXb3Jrc3BhY2VQYWNrYWdlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgZW5hYmxlZCwgcG5wbSBjcmVhdGVzIGEgc2luZ2xlIHBucG0tbG9jay55YW1sIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaGFyZWRXb3Jrc3BhY2VMb2NrZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgc2hhcmVkV29ya3NwYWNlTG9ja2ZpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNldHRpbmcgY29udHJvbHMgaG93IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBsaW5rZWQgZnJvbSB0aGUgd29ya3NwYWNlIGFyZSBhZGRlZCB0byBwYWNrYWdlLmpzb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2F2ZVdvcmtzcGFjZVByb3RvY29sXG4gICAqL1xuICByZWFkb25seSBzYXZlV29ya3NwYWNlUHJvdG9jb2w/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVXb3Jrc3BhY2VQcm90b2NvbDtcblxuICAvKipcbiAgICogV2hlbiBleGVjdXRpbmcgY29tbWFuZHMgcmVjdXJzaXZlbHkgaW4gYSB3b3Jrc3BhY2UsIGV4ZWN1dGUgdGhlbSBvbiB0aGUgcm9vdCB3b3Jrc3BhY2UgcHJvamVjdCBhcyB3ZWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2luY2x1ZGVXb3Jrc3BhY2VSb290XG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlV29ya3NwYWNlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUsIG5vIHdvcmtzcGFjZSBjeWNsZSB3YXJuaW5ncyB3aWxsIGJlIHByaW50ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlV29ya3NwYWNlQ3ljbGVzXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVXb3Jrc3BhY2VDeWNsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGRpbmcgYSBuZXcgZGVwZW5kZW5jeSB0byB0aGUgcm9vdCB3b3Jrc3BhY2UgcGFja2FnZSBmYWlscywgdW5sZXNzIHRoZSAtLWlnbm9yZS13b3Jrc3BhY2Utcm9vdC1jaGVjayBvciAtdyBmbGFnIGlzIHVzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjaWdub3JlV29ya3NwYWNlUm9vdENoZWNrXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBpbnN0YWxsYXRpb24gd2lsbCBmYWlsIGlmIHRoZSB3b3Jrc3BhY2UgaGFzIGN5Y2xlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkaXNhbGxvd1dvcmtzcGFjZUN5Y2xlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWxsb3dXb3Jrc3BhY2VDeWNsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIHRvIHJ1biBzaW11bHRhbmVvdXNseS4gRm9yIHVubGltaXRlZCBjb25jdXJyZW5jeSB1c2UgSW5maW5pdHkuIFlvdSBjYW4gc2V0IHRoZSB2YWx1ZSB0byA8PSAwIGFuZCBpdCB3aWxsIHVzZSBhbW91bnQgb2YgQ1BVIGNvcmVzIG9mIHRoZSBob3N0IG1pbnVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcHJvdmlkZWQgbnVtYmVyIGFzOiBtYXgoMSwgKG51bWJlciBvZiBjb3JlcykgLSBhYnMod29ya3NwYWNlQ29uY3VycmVuY3kpKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN3b3Jrc3BhY2VDb25jdXJyZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya3NwYWNlQ29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHBucG0gd2lsbCBmYWlsIGlmIG5vIHBhY2thZ2VzIG1hdGNoIHRoZSBmaWx0ZXJcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNmYWlsSWZOb01hdGNoXG4gICAqL1xuICByZWFkb25seSBmYWlsSWZOb01hdGNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgcG5wbSBkZXBsb3kgd2lsbCB0cnkgY3JlYXRpbmcgYSBkZWRpY2F0ZWQgbG9ja2ZpbGUgZnJvbSBhIHNoYXJlZCBsb2NrZmlsZSBmb3IgZGVwbG95bWVudC4gSWYgdGhpcyBzZXR0aW5nIGlzIHNldCB0byB0cnVlLCB0aGUgbGVnYWN5IGRlcGxveSBiZWhhdmlvciB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZm9yY2VMZWdhY3lEZXBsb3lcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlTGVnYWN5RGVwbG95PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2F2ZVByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZVByZWZpeD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVByZWZpeDtcblxuICAvKipcbiAgICogSWYgeW91IHBucG0gYWRkIGEgcGFja2FnZSBhbmQgeW91IGRvbid0IHByb3ZpZGUgYSBzcGVjaWZpYyB2ZXJzaW9uLCB0aGVuIGl0IHdpbGwgaW5zdGFsbCB0aGUgcGFja2FnZSBhdCB0aGUgdmVyc2lvbiByZWdpc3RlcmVkIHVuZGVyIHRoZSB0YWcgZnJvbSB0aGlzIHNldHRpbmcuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdGFnXG4gICAqL1xuICByZWFkb25seSB0YWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjdXN0b20gZGlyZWN0b3J5IHRvIHN0b3JlIGdsb2JhbCBwYWNrYWdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNnbG9iYWxEaXJcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbERpcj86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3dzIHRvIHNldCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgdGhlIGJpbiBmaWxlcyBvZiBnbG9iYWxseSBpbnN0YWxsZWQgcGFja2FnZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsQmluRGlyXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxCaW5EaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSBhbGwgdGhlIHBhY2thZ2VzIGFyZSBzYXZlZCBvbiB0aGUgZGlzay5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzdGF0ZURpclxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgY2FjaGUgKHBhY2thZ2UgbWV0YWRhdGEgYW5kIGRseCkuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjY2FjaGVEaXJcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGFsbCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW4gdG8gc3RkZXJyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VzZVN0ZGVyclxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3RkZXJyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBwbnBtIHdpbGwgY2hlY2sgZm9yIHVwZGF0ZXMgdG8gdGhlIGluc3RhbGxlZCBwYWNrYWdlcyBhbmQgbm90aWZ5IHRoZSB1c2VyLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3VwZGF0ZU5vdGlmaWVyXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVOb3RpZmllcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBzeW1saW5rcyB0byBleGVjdXRhYmxlcyBpbiBub2RlX21vZHVsZXMvLmJpbiBpbnN0ZWFkIG9mIGNvbW1hbmQgc2hpbXMuIFRoaXMgc2V0dGluZyBpcyBpZ25vcmVkIG9uIFdpbmRvd3MsIHdoZXJlIG9ubHkgY29tbWFuZCBzaGltcyB3b3JrLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ByZWZlclN5bWxpbmtlZEV4ZWN1dGFibGVzXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIER1cmluZyBpbnN0YWxsYXRpb24gdGhlIGRlcGVuZGVuY2llcyBvZiBzb21lIHBhY2thZ2VzIGFyZSBhdXRvbWF0aWNhbGx5IHBhdGNoZWQuIElmIHlvdSB3YW50IHRvIGRpc2FibGUgdGhpcywgc2V0IHRoaXMgY29uZmlnIHRvIGZhbHNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZUNvbXBhdGliaWxpdHlEYlxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ29tcGF0aWJpbGl0eURiPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBob3cgcG5wbSByZXNvbHZlcyBkZXBlbmRlbmNpZXMsIFNlZSBodHRwczovL3BucG0uaW8vc2V0dGluZ3MjcmVzb2x1dGlvbm1vZGVcbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNyZXNvbHV0aW9uTW9kZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x1dGlvbk1vZGU/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlIGlmIHRoZSByZWdpc3RyeSB0aGF0IHlvdSBhcmUgdXNpbmcgcmV0dXJucyB0aGUgXCJ0aW1lXCIgZmllbGQgaW4gdGhlIGFiYnJldmlhdGVkIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGRcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIGZhbHNlLCB0aGUgTk9ERV9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgaW4gdGhlIGNvbW1hbmQgc2hpbXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZXh0ZW5kTm9kZVBhdGhcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuZE5vZGVQYXRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBkZXBsb3lpbmcgYSBwYWNrYWdlIG9yIGluc3RhbGxpbmcgYSBsb2NhbCBwYWNrYWdlLCBhbGwgZmlsZXMgb2YgdGhlIHBhY2thZ2UgYXJlIGNvcGllZC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZXBsb3lBbGxGaWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95QWxsRmlsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBzeW1saW5rZWQgdG8gdGhlIHJvb3Qgbm9kZV9tb2R1bGVzIGRpcmVjdG9yeSBvZiB0aGUgd29ya3NwYWNlIHdpbGwgbm90IGJlIHN5bWxpbmtlZCB0byBzdWJwcm9qZWN0IG5vZGVfbW9kdWxlcyBkaXJlY3Rvcmllcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVEaXJlY3REZXBzXG4gICAqL1xuICByZWFkb25seSBkZWR1cGVEaXJlY3REZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0aGlzIHNldHRpbmcgaXMgZW5hYmxlZCwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGluamVjdGVkIHdpbGwgYmUgc3ltbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSB3aGVuZXZlciBwb3NzaWJsZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNkZWR1cGVJbmplY3RlZERlcHNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZUluamVjdGVkRGVwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBmYXN0IGNoZWNrIHdpbGwgYmUgcGVyZm9ybWVkIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGluc3RhbGxhdGlvbi4gVGhpcyB3YXkgYSByZXBlYXQgaW5zdGFsbCBvciBhbiBpbnN0YWxsIG9uIGEgcHJvamVjdCB3aXRoIGV2ZXJ5dGhpbmcgdXAtdG8tZGF0ZSBiZWNvbWVzIGEgbG90IGZhc3Rlci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNvcHRpbWlzdGljUmVwZWF0SW5zdGFsbFxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW1pc3RpY1JlcGVhdEluc3RhbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjdXJyZW50IGJyYW5jaCBpcyB5b3VyIHB1Ymxpc2ggYnJhbmNoLCBjbGVhbiwgYW5kIHVwLXRvLWRhdGUgd2l0aCByZW1vdGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2l0Q2hlY2tzXG4gICAqL1xuICByZWFkb25seSBnaXRDaGVja3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVTkRPQ1VNRU5URUQuIFdoZW4gYHRydWVgLCBgcG5wbSBwdWJsaXNoYCB3cml0ZXMgdGhlIFJFQURNRSBmaWxlJ3MgY29udGVudCBpbnRvIHRoZSBwdWJsaXNoZWQgcGFja2FnZS5qc29uICh0aGUgYHJlYWRtZWAgZmllbGQpLCBzbyByZWdpc3RyaWVzIHN1Y2ggYXMgbnBtanMuY29tIHJlbmRlciB0aGUgcGFja2FnZSdzIFJFQURNRS4gQWRkZWQgaW4gcG5wbSA2LjI4LjA7IHBucG0gZG9lcyBub3QgZW1iZWQgdGhlIFJFQURNRSB1bmxlc3MgdGhpcyBpcyBlbmFibGVkLiBJdCBhbHNvIHdvbid0IG92ZXJyaWRlIGEgYHJlYWRtZWAgZmllbGQgYWxyZWFkeSBzZXQgaW4gdGhlIHBhY2thZ2UuanNvblxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VtYmVkUmVhZG1lXG4gICAqL1xuICByZWFkb25seSBlbWJlZFJlYWRtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmltYXJ5IGJyYW5jaCBvZiB0aGUgcmVwb3NpdG9yeSB3aGljaCBpcyB1c2VkIGZvciBwdWJsaXNoaW5nIHRoZSBsYXRlc3QgY2hhbmdlcy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwdWJsaXNoQnJhbmNoXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoQnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHB1Ymxpc2hpbmcgZnJvbSBhIHN1cHBvcnRlZCBjbG91ZCBDSS9DRCBzeXN0ZW0sIHRoZSBwYWNrYWdlIHdpbGwgYmUgcHVibGljbHkgbGlua2VkIHRvIHdoZXJlIGl0IHdhcyBidWlsdCBhbmQgcHVibGlzaGVkIGZyb20uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcHJvdmVuYW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmVuYW5jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiBvZiB0aGUgbG9jYWwgcG5wbWZpbGUuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjcG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gb2YgYSBnbG9iYWwgcG5wbWZpbGUuIEEgZ2xvYmFsIHBucG1maWxlIGlzIHVzZWQgYnkgYWxsIHByb2plY3RzIGR1cmluZyBpbnN0YWxsYXRpb24uXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZ2xvYmFsUG5wbWZpbGVcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFBucG1maWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAucG5wbWZpbGUuY2pzIHdpbGwgYmUgaWdub3JlZC4gVXNlZnVsIHRvZ2V0aGVyIHdpdGggLS1pZ25vcmUtc2NyaXB0cyB3aGVuIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IG5vIHNjcmlwdCBnZXRzIGV4ZWN1dGVkIGR1cmluZyBpbnN0YWxsLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2lnbm9yZVBucG1maWxlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQbnBtZmlsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBnZW5lcmF0ZWQgcGF0Y2ggZmlsZSB3aWxsIGJlIHNhdmVkIHRvIHRoaXMgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BhdGNoZXNEaXJcbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoZXNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgcG5wbSB3aWxsIHJ1biBhbnkgcHJlL3Bvc3Qgc2NyaXB0cyBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2VuYWJsZVByZVBvc3RTY3JpcHRzXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcmVQb3N0U2NyaXB0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzaGVsbCB0byB1c2UgZm9yIHNjcmlwdHMgcnVuIHdpdGggdGhlIHBucG0gcnVuIGNvbW1hbmQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjc2NyaXB0U2hlbGxcbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdFNoZWxsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHBucG0gd2lsbCB1c2UgYSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGEgYmFzaC1saWtlIHNoZWxsIHRvIGV4ZWN1dGUgc2NyaXB0cy5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNzaGVsbEVtdWxhdG9yXG4gICAqL1xuICByZWFkb25seSBzaGVsbEVtdWxhdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2F2ZWQgZGVwZW5kZW5jaWVzIHdpbGwgYmUgY29uZmlndXJlZCB3aXRoIGFuIGV4YWN0IHZlcnNpb24gcmF0aGVyIHRoYW4gdXNpbmcgcG5wbSdzIGRlZmF1bHQgc2VtdmVyIHJhbmdlIG9wZXJhdG9yLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3NhdmVFeGFjdFxuICAgKi9cbiAgcmVhZG9ubHkgc2F2ZUV4YWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbWluaW11bVJlbGVhc2VBZ2UgZGVmaW5lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWludXRlcyB0aGF0IG11c3QgcGFzcyBhZnRlciBhIHZlcnNpb24gaXMgcHVibGlzaGVkIGJlZm9yZSBwbnBtIHdpbGwgaW5zdGFsbCBpdC4gVGhpcyBhcHBsaWVzIHRvIGFsbCBkZXBlbmRlbmNpZXMsIGluY2x1ZGluZyB0cmFuc2l0aXZlIG9uZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbWluaW11bVJlbGVhc2VBZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB5b3Ugc2V0IGBtaW5pbXVtUmVsZWFzZUFnZWAgYnV0IG5lZWQgY2VydGFpbiBkZXBlbmRlbmNpZXMgdG8gYWx3YXlzIGluc3RhbGwgdGhlIG5ld2VzdCB2ZXJzaW9uIGltbWVkaWF0ZWx5LCB5b3UgY2FuIGxpc3QgdGhlbSB1bmRlciBgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlYC4gVGhlIGV4Y2x1c2lvbiB3b3JrcyBieSBgcGFja2FnZSBuYW1lYCBhbmQgYXBwbGllcyB0byBhbGwgdmVyc2lvbnMgb2YgdGhhdCBwYWNrYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlRXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIGhvdyBwbnBtIGJlaGF2ZXMgd2hlbiBubyB2ZXJzaW9uIG9mIGEgZGVwZW5kZW5jeSBzYXRpc2ZpZXMgdGhlIG1pbmltdW1SZWxlYXNlQWdlIGNvbnN0cmFpbnQgd2l0aGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UuXG4gICAqIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNtaW5pbXVtcmVsZWFzZWFnZXN0cmljdFxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlU3RyaWN0XG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZVN0cmljdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJ5cGFzcyBzdGFsZW5lc3MgY2hlY2tzIGZvciBjYWNoZWQgZGF0YS4gTWlzc2luZyBkYXRhIHdpbGwgc3RpbGwgYmUgcmVxdWVzdGVkIGZyb20gdGhlIHNlcnZlci5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNwcmVmZXJPZmZsaW5lXG4gICAqL1xuICByZWFkb25seSBwcmVmZXJPZmZsaW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gbm8tZG93bmdyYWRlLCBwbnBtIHdpbGwgZmFpbCBpZiBhIHBhY2thZ2UncyB0cnVzdCBsZXZlbCBoYXMgZGVjcmVhc2VkIGNvbXBhcmVkIHRvIHByZXZpb3VzIHJlbGVhc2VzLiBGb3IgZXhhbXBsZSwgaWYgYSBwYWNrYWdlIHdhcyBwcmV2aW91c2x5IHB1Ymxpc2hlZCBieSBhIHRydXN0ZWQgcHVibGlzaGVyIGJ1dCBub3cgb25seSBoYXMgcHJvdmVuYW5jZSBvciBubyB0cnVzdCBldmlkZW5jZSwgaW5zdGFsbGF0aW9uIHdpbGwgZmFpbC4gVGhpcyBoZWxwcyBwcmV2ZW50IGluc3RhbGxpbmcgcG90ZW50aWFsbHkgY29tcHJvbWlzZWQgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjdHJ1c3RQb2xpY3lcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5PzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUcnVzdFBvbGljeTtcblxuICAvKipcbiAgICogWW91IGNhbiBub3cgbGlzdCBvbmUgb3IgbW9yZSBzcGVjaWZpYyBwYWNrYWdlcyBvciB2ZXJzaW9ucyB0aGF0IHBucG0gc2hvdWxkIGFsbG93IHRvIGluc3RhbGwsIGV2ZW4gaWYgdGhvc2UgcGFja2FnZXMgZG9uJ3Qgc2F0aXNmeSB0aGUgdHJ1c3QgcG9saWN5IHJlcXVpcmVtZW50LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5RXhjbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJ1c3RQb2xpY3lFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIHBhY2thZ2UgbWF0Y2hlcnMgdG8gZXhwbGljaXRseSBhbGxvdyAoYHRydWVgKSBvciBkaXNhbGxvdyAoYGZhbHNlYCkgc2NyaXB0IGV4ZWN1dGlvbi4gVGhpcyBmaWVsZCByZXBsYWNlcyBgb25seUJ1aWx0RGVwZW5kZW5jaWVzYCBhbmQgYGlnbm9yZWRCdWlsdERlcGVuZGVuY2llc2AgKHdoaWNoIGFyZSBhbHNvIGRlcHJlY2F0ZWQgYnkgdGhpcyBuZXcgc2V0dGluZyksIHByb3ZpZGluZyBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYWxsb3dCdWlsZHNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QnVpbGRzPzogYW55O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBpdCBwcmV2ZW50cyB0aGUgcmVzb2x1dGlvbiBvZiBleG90aWMgcHJvdG9jb2xzIChsaWtlIGdpdCtzc2g6IG9yIGRpcmVjdCBodHRwczogdGFyYmFsbHMpIGluIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzLiBPbmx5IGRpcmVjdCBkZXBlbmRlbmNpZXMgYXJlIGFsbG93ZWQgdG8gdXNlIGV4b3RpYyBzb3VyY2VzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI2Jsb2NrRXhvdGljU3ViZGVwc1xuICAgKi9cbiAgcmVhZG9ubHkgYmxvY2tFeG90aWNTdWJkZXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIGlnbm9yaW5nIHRoZSB0cnVzdCBwb2xpY3kgY2hlY2sgZm9yIHBhY2thZ2VzIHB1Ymxpc2hlZCBtb3JlIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyBhZ28uIFRoaXMgaXMgdXNlZnVsIHdoZW4gZW5hYmxpbmcgc3RyaWN0IHRydXN0IHBvbGljaWVzLCBhcyBpdCBhbGxvd3Mgb2xkZXIgdmVyc2lvbnMgb2YgcGFja2FnZXMgKHdoaWNoIG1heSBsYWNrIGEgcHJvY2VzcyBmb3IgcHVibGlzaGluZyB3aXRoIHNpZ25hdHVyZXMgb3IgcHJvdmVuYW5jZSkgdG8gYmUgaW5zdGFsbGVkIHdpdGhvdXQgbWFudWFsIGV4Y2x1c2lvbiwgYXNzdW1pbmcgdGhleSBhcmUgc2FmZSBkdWUgdG8gdGhlaXIgYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3RydXN0UG9saWN5SWdub3JlQWZ0ZXJcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5SWdub3JlQWZ0ZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBsZXZlbCBvZiBpc3N1ZXMgcmVwb3J0ZWQgYnkgYHBucG0gYXVkaXRgLiBXaGVuIHNldCB0byAnbG93JywgYWxsIHZ1bG5lcmFiaWxpdGllcyBhcmUgcmVwb3J0ZWQuIFdoZW4gc2V0IHRvICdtb2RlcmF0ZScsICdoaWdoJywgb3IgJ2NyaXRpY2FsJywgb25seSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB0aGF0IHNldmVyaXR5IG9yIGhpZ2hlciBhcmUgcmVwb3J0ZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjYXVkaXRMZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgYXVkaXRMZXZlbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRMZXZlbDtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBwZWVyIGRlcGVuZGVuY3kgc3VmZml4ZXMgdXNlIHZlcnNpb24tb25seSBpZGVudGlmaWVycyAoYG5hbWVAdmVyc2lvbmApIGluc3RlYWQgb2YgZnVsbCBkZXAgcGF0aHMsIGVsaW1pbmF0aW5nIG5lc3RlZCBzdWZmaXhlcyBsaWtlIGAoZm9vQDEuMC4wKGJhckAyLjAuMCkpYC4gVGhpcyBkcmFtYXRpY2FsbHkgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhY2thZ2UgaW5zdGFuY2VzIGluIHByb2plY3RzIHdpdGggbWFueSByZWN1cnNpdmUgcGVlciBkZXBlbmRlbmNpZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjZGVkdXBlUGVlcnNcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwZVBlZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgcmVnaXN0cnkgYXV0aGVudGljYXRpb24gdG9rZW5zLiBCeSBkZWZhdWx0LCBwbnBtIHJlYWRzIGF1dGggdG9rZW5zIGZyb20gfi8ubnBtcmMgYXMgYSBmYWxsYmFjayBmb3IgcmVnaXN0cnkgYXV0aGVudGljYXRpb24uIFVzZSB0aGlzIHNldHRpbmcgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgZmlsZSBpbnN0ZWFkLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI25wbXJjQXV0aEZpbGVcbiAgICovXG4gIHJlYWRvbmx5IG5wbXJjQXV0aEZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCBwbnBtIHNraXBzIHRoZSBgbWluaW11bVJlbGVhc2VBZ2VgIGNoZWNrIGZvciBhIHBhY2thZ2Ugd2hvc2UgcmVnaXN0cnkgbWV0YWRhdGEgZG9lcyBub3QgaW5jbHVkZSB0aGUgdGltZSBmaWVsZCAoc29tZSBwcml2YXRlIHJlZ2lzdHJpZXMgYW5kIG1pcnJvcnMgb21pdCBpdCkuIFNldCB0byBgZmFsc2VgIHRvIGZhaWwgcmVzb2x1dGlvbiBpbiB0aGF0IGNhc2UgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIHRoZSBwYWNrYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI21pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWVcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgcmVnaXN0cmllcyBmb3Igc2NvcGVkIHBhY2thZ2VzIGluIGBwbnBtLXdvcmtzcGFjZS55YW1sYC4gVGhlIGBkZWZhdWx0YCBrZXkgc2V0cyB0aGUgbWFpbiByZWdpc3RyeSAoZXF1aXZhbGVudCB0byB0aGUgYHJlZ2lzdHJ5YCBgLm5wbXJjYCBzZXR0aW5nKS4gU2NvcGVkIGtleXMgY29uZmlndXJlIHJlZ2lzdHJpZXMgZm9yIHNwZWNpZmljIHBhY2thZ2Ugc2NvcGVzLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3JlZ2lzdHJpZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJpZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCBwbnBtIHBvcHVsYXRlcyB0aGUgdmlydHVhbCBzdG9yZSB3aXRob3V0IGNyZWF0aW5nIGltcG9ydGVyIHN5bWxpbmtzLCBob2lzdGluZywgYmluIGxpbmtzLCBvciBydW5uaW5nIGxpZmVjeWNsZSBzY3JpcHRzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlLXBvcHVsYXRpbmcgYSBzdG9yZSAoZS5nLiwgaW4gTml4IGJ1aWxkcykgd2l0aG91dCBjcmVhdGluZyB1bm5lY2Vzc2FyeSBwcm9qZWN0LWxldmVsIGFydGlmYWN0cy4gcG5wbSBmZXRjaCB1c2VzIHRoaXMgbW9kZSBpbnRlcm5hbGx5LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3ZpcnR1YWxTdG9yZU9ubHlcbiAgICovXG4gIHJlYWRvbmx5IHZpcnR1YWxTdG9yZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGBvbkZhaWxgIGJlaGF2aW9yIG9mIGJvdGggdGhlIGBwYWNrYWdlTWFuYWdlcmAgZmllbGQgYW5kIGBkZXZFbmdpbmVzLnBhY2thZ2VNYW5hZ2VyYCB3aGVuIHRoZSBydW5uaW5nIHBucG0gdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgZGVjbGFyZWQgb25lLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hI3BtT25GYWlsXG4gICAqL1xuICByZWFkb25seSBwbU9uRmFpbD86IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWw7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgZmllbGQgb2YgYGRldkVuZ2luZXMucnVudGltZWAgKGFuZCBgZW5naW5lcy5ydW50aW1lYCkgaW4gdGhlIHJvb3QgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IGEgZGlmZmVyZW50IGxvY2FsIGJlaGF2aW9yIHRoYW4gd2hhdCBpcyB3cml0dGVuIGluIHRoZSBtYW5pZmVzdCDigJQgZm9yIGluc3RhbmNlLCBmb3JjaW5nIHBucG0gdG8gZG93bmxvYWQgdGhlIGRlY2xhcmVkIHJ1bnRpbWUgZXZlbiB3aGVuIHRoZSBtYW5pZmVzdCBzZXRzIGBvbkZhaWw6IFwid2FyblwiYC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNydW50aW1lT25GYWlsXG4gICAqL1xuICByZWFkb25seSBydW50aW1lT25GYWlsPzogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgY3VzdG9tIE5vZGUuanMgZG93bmxvYWQgbWlycm9ycyBpbiBgcG5wbS13b3Jrc3BhY2UueWFtbGAuIFRoZSBrZXlzIGFyZSByZWxlYXNlIGNoYW5uZWxzIChgcmVsZWFzZWAsIGByY2AsIGBuaWdodGx5YCwgYHY4LWNhbmFyeWAsIGV0Yy4pIGFuZCB0aGUgdmFsdWVzIGFyZSBiYXNlIFVSTHMuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEjbm9kZURvd25sb2FkTWlycm9yc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZURvd25sb2FkTWlycm9ycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEEgbmV3IHRydXN0TG9ja2ZpbGUgc2V0dGluZyBjb250cm9scyB3aGV0aGVyIHBucG0gaW5zdGFsbCByZS1hcHBsaWVzIHRoZSBgbWluaW11bVJlbGVhc2VBZ2VgIC8gYHRydXN0UG9saWN5OiAnbm8tZG93bmdyYWRlJ2AgY2hlY2tzIHRvIGV2ZXJ5IGVudHJ5IGluIHRoZSBsb2FkZWQgbG9ja2ZpbGUuIFdoZW4gdHJ1ZSwgdGhlIGluc3RhbGwgdHJlYXRzIHRoZSBsb2NrZmlsZSBhcyBhbHJlYWR5LXRydXN0ZWQgYW5kIHNraXBzIHRoZSB2ZXJpZmljYXRpb24gcGFzcyDigJQgdXNlZnVsIGZvciBjbG9zZWQtc291cmNlIHByb2plY3RzIHdoZXJlIGV2ZXJ5IGNvbW1pdCBjb21lcyBmcm9tIGEgdHJ1c3RlZCBhdXRob3IuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLCBzbyB2ZXJpZmljYXRpb24gc3RheXMgb24gYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSN0cnVzdExvY2tmaWxlXG4gICAqL1xuICByZWFkb25seSB0cnVzdExvY2tmaWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkZWQgYSBuZXcgaG9pc3RpbmdMaW1pdHMgc2V0dGluZyBmb3IgYG5vZGVMaW5rZXI6IGhvaXN0ZWRgIGluc3RhbGxzLCBtaXJyb3JpbmcgeWFybidzIGBubUhvaXN0aW5nTGltaXRzYC4gSXQgYWNjZXB0cyBgbm9uZWAgKHRoZSBkZWZhdWx0IOKAlCBob2lzdCBhcyBmYXIgYXMgcG9zc2libGUpLCB3b3Jrc3BhY2VzIChob2lzdCBvbmx5IGFzIGZhciBhcyBlYWNoIHdvcmtzcGFjZSBwYWNrYWdlKSwgb3IgZGVwZW5kZW5jaWVzIChob2lzdCBvbmx5IHVwIHRvIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UncyBkaXJlY3QgZGVwZW5kZW5jaWVzKS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYSNob2lzdGluZ0xpbWl0c1xuICAgKi9cbiAgcmVhZG9ubHkgaG9pc3RpbmdMaW1pdHM/OiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hKG9iajogUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdwYWNrYWdlcyc6IG9iai5wYWNrYWdlcz8ubWFwKHkgPT4geSksXG4gICAgJ2NhdGFsb2cnOiAoKG9iai5jYXRhbG9nKSA9PT0gdW5kZWZpbmVkKSA/IHVuZGVmaW5lZCA6IChPYmplY3QuZW50cmllcyhvYmouY2F0YWxvZykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSksXG4gICAgJ2NhdGFsb2dzJzogKChvYmouY2F0YWxvZ3MpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5jYXRhbG9ncykucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06ICgoaVsxXSkgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMoaVsxXSkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KSkgfSksIHt9KSksXG4gICAgJ2NhdGFsb2dNb2RlJzogb2JqLmNhdGFsb2dNb2RlLFxuICAgICdjbGVhbnVwVW51c2VkQ2F0YWxvZ3MnOiBvYmouY2xlYW51cFVudXNlZENhdGFsb2dzLFxuICAgICdvbmx5QnVpbHREZXBlbmRlbmNpZXMnOiBvYmoub25seUJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnb3ZlcnJpZGVzJzogb2JqLm92ZXJyaWRlcyxcbiAgICAncGFja2FnZUV4dGVuc2lvbnMnOiBvYmoucGFja2FnZUV4dGVuc2lvbnMsXG4gICAgJ3BlZXJEZXBlbmRlbmN5UnVsZXMnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFQZWVyRGVwZW5kZW5jeVJ1bGVzKG9iai5wZWVyRGVwZW5kZW5jeVJ1bGVzKSxcbiAgICAnbmV2ZXJCdWlsdERlcGVuZGVuY2llcyc6IG9iai5uZXZlckJ1aWx0RGVwZW5kZW5jaWVzPy5tYXAoeSA9PiB5KSxcbiAgICAnZGFuZ2Vyb3VzbHlBbGxvd0FsbEJ1aWxkcyc6IG9iai5kYW5nZXJvdXNseUFsbG93QWxsQnVpbGRzLFxuICAgICdvbmx5QnVpbHREZXBlbmRlbmNpZXNGaWxlJzogb2JqLm9ubHlCdWlsdERlcGVuZGVuY2llc0ZpbGUsXG4gICAgJ2lnbm9yZWRCdWlsdERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkQnVpbHREZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd2VkRGVwcmVjYXRlZFZlcnNpb25zJzogKChvYmouYWxsb3dlZERlcHJlY2F0ZWRWZXJzaW9ucykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLmFsbG93ZWREZXByZWNhdGVkVmVyc2lvbnMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdwYXRjaGVkRGVwZW5kZW5jaWVzJzogKChvYmoucGF0Y2hlZERlcGVuZGVuY2llcykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLnBhdGNoZWREZXBlbmRlbmNpZXMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICdhbGxvd1VudXNlZFBhdGNoZXMnOiBvYmouYWxsb3dVbnVzZWRQYXRjaGVzLFxuICAgICdhbGxvd05vbkFwcGxpZWRQYXRjaGVzJzogb2JqLmFsbG93Tm9uQXBwbGllZFBhdGNoZXMsXG4gICAgJ2lnbm9yZVBhdGNoRmFpbHVyZXMnOiBvYmouaWdub3JlUGF0Y2hGYWlsdXJlcyxcbiAgICAndXBkYXRlQ29uZmlnJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnKG9iai51cGRhdGVDb25maWcpLFxuICAgICdjb25maWdEZXBlbmRlbmNpZXMnOiBvYmouY29uZmlnRGVwZW5kZW5jaWVzLFxuICAgICdhdWRpdENvbmZpZyc6IHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnKG9iai5hdWRpdENvbmZpZyksXG4gICAgJ3JlcXVpcmVkU2NyaXB0cyc6IG9iai5yZXF1aXJlZFNjcmlwdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdzdXBwb3J0ZWRBcmNoaXRlY3R1cmVzJzogdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyhvYmouc3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyksXG4gICAgJ2lnbm9yZWRPcHRpb25hbERlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVkT3B0aW9uYWxEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdleGVjdXRpb25FbnYnOiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqLmV4ZWN1dGlvbkVudiksXG4gICAgJ2hvaXN0Jzogb2JqLmhvaXN0LFxuICAgICdob2lzdFdvcmtzcGFjZVBhY2thZ2VzJzogb2JqLmhvaXN0V29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ2hvaXN0UGF0dGVybic6IG9iai5ob2lzdFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwdWJsaWNIb2lzdFBhdHRlcm4nOiBvYmoucHVibGljSG9pc3RQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAnc2hhbWVmdWxseUhvaXN0Jzogb2JqLnNoYW1lZnVsbHlIb2lzdCxcbiAgICAnbW9kdWxlc0Rpcic6IG9iai5tb2R1bGVzRGlyLFxuICAgICdub2RlTGlua2VyJzogb2JqLm5vZGVMaW5rZXIsXG4gICAgJ3N5bWxpbmsnOiBvYmouc3ltbGluayxcbiAgICAnZW5hYmxlTW9kdWxlc0Rpcic6IG9iai5lbmFibGVNb2R1bGVzRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXInOiBvYmoudmlydHVhbFN0b3JlRGlyLFxuICAgICd2aXJ0dWFsU3RvcmVEaXJNYXhMZW5ndGgnOiBvYmoudmlydHVhbFN0b3JlRGlyTWF4TGVuZ3RoLFxuICAgICdwYWNrYWdlSW1wb3J0TWV0aG9kJzogb2JqLnBhY2thZ2VJbXBvcnRNZXRob2QsXG4gICAgJ21vZHVsZXNDYWNoZU1heEFnZSc6IG9iai5tb2R1bGVzQ2FjaGVNYXhBZ2UsXG4gICAgJ2RseENhY2hlTWF4QWdlJzogb2JqLmRseENhY2hlTWF4QWdlLFxuICAgICdzdG9yZURpcic6IG9iai5zdG9yZURpcixcbiAgICAndmVyaWZ5U3RvcmVJbnRlZ3JpdHknOiBvYmoudmVyaWZ5U3RvcmVJbnRlZ3JpdHksXG4gICAgJ3N0cmljdFN0b3JlUGtnQ29udGVudENoZWNrJzogb2JqLnN0cmljdFN0b3JlUGtnQ29udGVudENoZWNrLFxuICAgICdlbmFibGVHbG9iYWxWaXJ0dWFsU3RvcmUnOiBvYmouZW5hYmxlR2xvYmFsVmlydHVhbFN0b3JlLFxuICAgICdsb2NrZmlsZSc6IG9iai5sb2NrZmlsZSxcbiAgICAncHJlZmVyRnJvemVuTG9ja2ZpbGUnOiBvYmoucHJlZmVyRnJvemVuTG9ja2ZpbGUsXG4gICAgJ2xvY2tmaWxlSW5jbHVkZVRhcmJhbGxVcmwnOiBvYmoubG9ja2ZpbGVJbmNsdWRlVGFyYmFsbFVybCxcbiAgICAnZ2l0QnJhbmNoTG9ja2ZpbGUnOiBvYmouZ2l0QnJhbmNoTG9ja2ZpbGUsXG4gICAgJ21lcmdlR2l0QnJhbmNoTG9ja2ZpbGVzQnJhbmNoUGF0dGVybic6IG9iai5tZXJnZUdpdEJyYW5jaExvY2tmaWxlc0JyYW5jaFBhdHRlcm4/Lm1hcCh5ID0+IHkpLFxuICAgICdwZWVyc1N1ZmZpeE1heExlbmd0aCc6IG9iai5wZWVyc1N1ZmZpeE1heExlbmd0aCxcbiAgICAncmVnaXN0cnknOiBvYmoucmVnaXN0cnksXG4gICAgJ2NhJzogb2JqLmNhLFxuICAgICdjYWZpbGUnOiBvYmouY2FmaWxlLFxuICAgICdjZXJ0Jzogb2JqLmNlcnQsXG4gICAgJ2tleSc6IG9iai5rZXksXG4gICAgJ2dpdFNoYWxsb3dIb3N0cyc6IG9iai5naXRTaGFsbG93SG9zdHM/Lm1hcCh5ID0+IHkpLFxuICAgICdodHRwc1Byb3h5Jzogb2JqLmh0dHBzUHJveHksXG4gICAgJ3Byb3h5Jzogb2JqLnByb3h5LFxuICAgICdsb2NhbEFkZHJlc3MnOiBvYmoubG9jYWxBZGRyZXNzLFxuICAgICdtYXhzb2NrZXRzJzogb2JqLm1heHNvY2tldHMsXG4gICAgJ25vcHJveHknOiBvYmoubm9wcm94eSxcbiAgICAnc3RyaWN0U3NsJzogb2JqLnN0cmljdFNzbCxcbiAgICAnbmV0d29ya0NvbmN1cnJlbmN5Jzogb2JqLm5ldHdvcmtDb25jdXJyZW5jeSxcbiAgICAnZmV0Y2hSZXRyaWVzJzogb2JqLmZldGNoUmV0cmllcyxcbiAgICAnZmV0Y2hSZXRyeUZhY3Rvcic6IG9iai5mZXRjaFJldHJ5RmFjdG9yLFxuICAgICdmZXRjaFJldHJ5TWludGltZW91dCc6IG9iai5mZXRjaFJldHJ5TWludGltZW91dCxcbiAgICAnZmV0Y2hSZXRyeU1heHRpbWVvdXQnOiBvYmouZmV0Y2hSZXRyeU1heHRpbWVvdXQsXG4gICAgJ2ZldGNoVGltZW91dCc6IG9iai5mZXRjaFRpbWVvdXQsXG4gICAgJ2F1dG9JbnN0YWxsUGVlcnMnOiBvYmouYXV0b0luc3RhbGxQZWVycyxcbiAgICAnZGVkdXBlUGVlckRlcGVuZGVudHMnOiBvYmouZGVkdXBlUGVlckRlcGVuZGVudHMsXG4gICAgJ3N0cmljdFBlZXJEZXBlbmRlbmNpZXMnOiBvYmouc3RyaWN0UGVlckRlcGVuZGVuY2llcyxcbiAgICAncmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QnOiBvYmoucmVzb2x2ZVBlZXJzRnJvbVdvcmtzcGFjZVJvb3QsXG4gICAgJ2NvbG9yJzogb2JqLmNvbG9yLFxuICAgICdsb2dsZXZlbCc6IG9iai5sb2dsZXZlbCxcbiAgICAncmVwb3J0ZXInOiBvYmoucmVwb3J0ZXIsXG4gICAgJ3VzZUJldGFDbGknOiBvYmoudXNlQmV0YUNsaSxcbiAgICAncmVjdXJzaXZlSW5zdGFsbCc6IG9iai5yZWN1cnNpdmVJbnN0YWxsLFxuICAgICdlbmdpbmVTdHJpY3QnOiBvYmouZW5naW5lU3RyaWN0LFxuICAgICducG1QYXRoJzogb2JqLm5wbVBhdGgsXG4gICAgJ3BhY2thZ2VNYW5hZ2VyU3RyaWN0Jzogb2JqLnBhY2thZ2VNYW5hZ2VyU3RyaWN0LFxuICAgICdwYWNrYWdlTWFuYWdlclN0cmljdFZlcnNpb24nOiBvYmoucGFja2FnZU1hbmFnZXJTdHJpY3RWZXJzaW9uLFxuICAgICdtYW5hZ2VQYWNrYWdlTWFuYWdlclZlcnNpb25zJzogb2JqLm1hbmFnZVBhY2thZ2VNYW5hZ2VyVmVyc2lvbnMsXG4gICAgJ2lnbm9yZVNjcmlwdHMnOiBvYmouaWdub3JlU2NyaXB0cyxcbiAgICAnaWdub3JlRGVwU2NyaXB0cyc6IG9iai5pZ25vcmVEZXBTY3JpcHRzLFxuICAgICdjaGlsZENvbmN1cnJlbmN5Jzogb2JqLmNoaWxkQ29uY3VycmVuY3ksXG4gICAgJ3NpZGVFZmZlY3RzQ2FjaGUnOiBvYmouc2lkZUVmZmVjdHNDYWNoZSxcbiAgICAnc2lkZUVmZmVjdHNDYWNoZVJlYWRvbmx5Jzogb2JqLnNpZGVFZmZlY3RzQ2FjaGVSZWFkb25seSxcbiAgICAndW5zYWZlUGVybSc6IG9iai51bnNhZmVQZXJtLFxuICAgICdub2RlT3B0aW9ucyc6IG9iai5ub2RlT3B0aW9ucyxcbiAgICAndmVyaWZ5RGVwc0JlZm9yZVJ1bic6IG9iai52ZXJpZnlEZXBzQmVmb3JlUnVuLFxuICAgICdzdHJpY3REZXBCdWlsZHMnOiBvYmouc3RyaWN0RGVwQnVpbGRzLFxuICAgICd1c2VOb2RlVmVyc2lvbic6IG9iai51c2VOb2RlVmVyc2lvbixcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gICAgJ2xpbmtXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5saW5rV29ya3NwYWNlUGFja2FnZXM/LnZhbHVlLFxuICAgICdpbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyc6IG9iai5pbmplY3RXb3Jrc3BhY2VQYWNrYWdlcyxcbiAgICAnc3luY0luamVjdGVkRGVwc0FmdGVyU2NyaXB0cyc6IG9iai5zeW5jSW5qZWN0ZWREZXBzQWZ0ZXJTY3JpcHRzPy5tYXAoeSA9PiB5KSxcbiAgICAncHJlZmVyV29ya3NwYWNlUGFja2FnZXMnOiBvYmoucHJlZmVyV29ya3NwYWNlUGFja2FnZXMsXG4gICAgJ3NoYXJlZFdvcmtzcGFjZUxvY2tmaWxlJzogb2JqLnNoYXJlZFdvcmtzcGFjZUxvY2tmaWxlLFxuICAgICdzYXZlV29ya3NwYWNlUHJvdG9jb2wnOiBvYmouc2F2ZVdvcmtzcGFjZVByb3RvY29sPy52YWx1ZSxcbiAgICAnaW5jbHVkZVdvcmtzcGFjZVJvb3QnOiBvYmouaW5jbHVkZVdvcmtzcGFjZVJvb3QsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZUN5Y2xlcyc6IG9iai5pZ25vcmVXb3Jrc3BhY2VDeWNsZXMsXG4gICAgJ2lnbm9yZVdvcmtzcGFjZVJvb3RDaGVjayc6IG9iai5pZ25vcmVXb3Jrc3BhY2VSb290Q2hlY2ssXG4gICAgJ2Rpc2FsbG93V29ya3NwYWNlQ3ljbGVzJzogb2JqLmRpc2FsbG93V29ya3NwYWNlQ3ljbGVzLFxuICAgICd3b3Jrc3BhY2VDb25jdXJyZW5jeSc6IG9iai53b3Jrc3BhY2VDb25jdXJyZW5jeSxcbiAgICAnZmFpbElmTm9NYXRjaCc6IG9iai5mYWlsSWZOb01hdGNoLFxuICAgICdmb3JjZUxlZ2FjeURlcGxveSc6IG9iai5mb3JjZUxlZ2FjeURlcGxveSxcbiAgICAnc2F2ZVByZWZpeCc6IG9iai5zYXZlUHJlZml4LFxuICAgICd0YWcnOiBvYmoudGFnLFxuICAgICdnbG9iYWxEaXInOiBvYmouZ2xvYmFsRGlyLFxuICAgICdnbG9iYWxCaW5EaXInOiBvYmouZ2xvYmFsQmluRGlyLFxuICAgICdzdGF0ZURpcic6IG9iai5zdGF0ZURpcixcbiAgICAnY2FjaGVEaXInOiBvYmouY2FjaGVEaXIsXG4gICAgJ3VzZVN0ZGVycic6IG9iai51c2VTdGRlcnIsXG4gICAgJ3VwZGF0ZU5vdGlmaWVyJzogb2JqLnVwZGF0ZU5vdGlmaWVyLFxuICAgICdwcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlcyc6IG9iai5wcmVmZXJTeW1saW5rZWRFeGVjdXRhYmxlcyxcbiAgICAnaWdub3JlQ29tcGF0aWJpbGl0eURiJzogb2JqLmlnbm9yZUNvbXBhdGliaWxpdHlEYixcbiAgICAncmVzb2x1dGlvbk1vZGUnOiBvYmoucmVzb2x1dGlvbk1vZGUsXG4gICAgJ3JlZ2lzdHJ5U3VwcG9ydHNUaW1lRmllbGQnOiBvYmoucmVnaXN0cnlTdXBwb3J0c1RpbWVGaWVsZCxcbiAgICAnZXh0ZW5kTm9kZVBhdGgnOiBvYmouZXh0ZW5kTm9kZVBhdGgsXG4gICAgJ2RlcGxveUFsbEZpbGVzJzogb2JqLmRlcGxveUFsbEZpbGVzLFxuICAgICdkZWR1cGVEaXJlY3REZXBzJzogb2JqLmRlZHVwZURpcmVjdERlcHMsXG4gICAgJ2RlZHVwZUluamVjdGVkRGVwcyc6IG9iai5kZWR1cGVJbmplY3RlZERlcHMsXG4gICAgJ29wdGltaXN0aWNSZXBlYXRJbnN0YWxsJzogb2JqLm9wdGltaXN0aWNSZXBlYXRJbnN0YWxsLFxuICAgICdnaXRDaGVja3MnOiBvYmouZ2l0Q2hlY2tzLFxuICAgICdlbWJlZFJlYWRtZSc6IG9iai5lbWJlZFJlYWRtZSxcbiAgICAncHVibGlzaEJyYW5jaCc6IG9iai5wdWJsaXNoQnJhbmNoLFxuICAgICdwcm92ZW5hbmNlJzogb2JqLnByb3ZlbmFuY2UsXG4gICAgJ3BucG1maWxlJzogb2JqLnBucG1maWxlLFxuICAgICdnbG9iYWxQbnBtZmlsZSc6IG9iai5nbG9iYWxQbnBtZmlsZSxcbiAgICAnaWdub3JlUG5wbWZpbGUnOiBvYmouaWdub3JlUG5wbWZpbGUsXG4gICAgJ3BhdGNoZXNEaXInOiBvYmoucGF0Y2hlc0RpcixcbiAgICAnZW5hYmxlUHJlUG9zdFNjcmlwdHMnOiBvYmouZW5hYmxlUHJlUG9zdFNjcmlwdHMsXG4gICAgJ3NjcmlwdFNoZWxsJzogb2JqLnNjcmlwdFNoZWxsLFxuICAgICdzaGVsbEVtdWxhdG9yJzogb2JqLnNoZWxsRW11bGF0b3IsXG4gICAgJ3NhdmVFeGFjdCc6IG9iai5zYXZlRXhhY3QsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlJzogb2JqLm1pbmltdW1SZWxlYXNlQWdlLFxuICAgICdtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAnbWluaW11bVJlbGVhc2VBZ2VTdHJpY3QnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VTdHJpY3QsXG4gICAgJ3ByZWZlck9mZmxpbmUnOiBvYmoucHJlZmVyT2ZmbGluZSxcbiAgICAndHJ1c3RQb2xpY3knOiBvYmoudHJ1c3RQb2xpY3ksXG4gICAgJ3RydXN0UG9saWN5RXhjbHVkZSc6IG9iai50cnVzdFBvbGljeUV4Y2x1ZGU/Lm1hcCh5ID0+IHkpLFxuICAgICdhbGxvd0J1aWxkcyc6IG9iai5hbGxvd0J1aWxkcyxcbiAgICAnYmxvY2tFeG90aWNTdWJkZXBzJzogb2JqLmJsb2NrRXhvdGljU3ViZGVwcyxcbiAgICAndHJ1c3RQb2xpY3lJZ25vcmVBZnRlcic6IG9iai50cnVzdFBvbGljeUlnbm9yZUFmdGVyLFxuICAgICdhdWRpdExldmVsJzogb2JqLmF1ZGl0TGV2ZWwsXG4gICAgJ2RlZHVwZVBlZXJzJzogb2JqLmRlZHVwZVBlZXJzLFxuICAgICducG1yY0F1dGhGaWxlJzogb2JqLm5wbXJjQXV0aEZpbGUsXG4gICAgJ21pbmltdW1SZWxlYXNlQWdlSWdub3JlTWlzc2luZ1RpbWUnOiBvYmoubWluaW11bVJlbGVhc2VBZ2VJZ25vcmVNaXNzaW5nVGltZSxcbiAgICAncmVnaXN0cmllcyc6ICgob2JqLnJlZ2lzdHJpZXMpID09PSB1bmRlZmluZWQpID8gdW5kZWZpbmVkIDogKE9iamVjdC5lbnRyaWVzKG9iai5yZWdpc3RyaWVzKS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pKSxcbiAgICAndmlydHVhbFN0b3JlT25seSc6IG9iai52aXJ0dWFsU3RvcmVPbmx5LFxuICAgICdwbU9uRmFpbCc6IG9iai5wbU9uRmFpbCxcbiAgICAncnVudGltZU9uRmFpbCc6IG9iai5ydW50aW1lT25GYWlsLFxuICAgICdub2RlRG93bmxvYWRNaXJyb3JzJzogKChvYmoubm9kZURvd25sb2FkTWlycm9ycykgPT09IHVuZGVmaW5lZCkgPyB1bmRlZmluZWQgOiAoT2JqZWN0LmVudHJpZXMob2JqLm5vZGVEb3dubG9hZE1pcnJvcnMpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSkpLFxuICAgICd0cnVzdExvY2tmaWxlJzogb2JqLnRydXN0TG9ja2ZpbGUsXG4gICAgJ2hvaXN0aW5nTGltaXRzJzogb2JqLmhvaXN0aW5nTGltaXRzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQ29udHJvbGxpbmcgaWYgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGNhdGFsb2dcbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQ2F0YWxvZ01vZGVcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDYXRhbG9nTW9kZSB7XG4gIC8qKiBzdHJpY3QgKi9cbiAgU1RSSUNUID0gXCJzdHJpY3RcIixcbiAgLyoqIHByZWZlciAqL1xuICBQUkVGRVIgPSBcInByZWZlclwiLFxuICAvKiogbWFudWFsICovXG4gIE1BTlVBTCA9IFwibWFudWFsXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMge1xuICAvKipcbiAgICogcG5wbSB3aWxsIG5vdCBwcmludCB3YXJuaW5ncyBhYm91dCBtaXNzaW5nIHBlZXIgZGVwZW5kZW5jaWVzIGZyb20gdGhpcyBsaXN0LlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyNpZ25vcmVNaXNzaW5nXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVNaXNzaW5nPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFVubWV0IHBlZXIgZGVwZW5kZW5jeSB3YXJuaW5ncyB3aWxsIG5vdCBiZSBwcmludGVkIGZvciBwZWVyIGRlcGVuZGVuY2llcyBvZiB0aGUgc3BlY2lmaWVkIHJhbmdlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyNhbGxvd2VkVmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRWZXJzaW9ucz86IGFueTtcblxuICAvKipcbiAgICogQW55IHBlZXIgZGVwZW5kZW5jeSBtYXRjaGluZyB0aGUgcGF0dGVybiB3aWxsIGJlIHJlc29sdmVkIGZyb20gYW55IHZlcnNpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHJhbmdlIHNwZWNpZmllZCBpbiBcInBlZXJEZXBlbmRlbmNpZXNcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBlZXJEZXBlbmRlbmN5UnVsZXMjYWxsb3dBbnlcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QW55Pzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyhvYmo6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGVlckRlcGVuZGVuY3lSdWxlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZU1pc3NpbmcnOiBvYmouaWdub3JlTWlzc2luZz8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93ZWRWZXJzaW9ucyc6IG9iai5hbGxvd2VkVmVyc2lvbnMsXG4gICAgJ2FsbG93QW55Jzogb2JqLmFsbG93QW55Py5tYXAoeSA9PiB5KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgcGFja2FnZXMgdGhhdCBzaG91bGQgYmUgaWdub3JlZCB3aGVuIHJ1bm5pbmcgXCJwbnBtIG91dGRhdGVkXCIgb3IgXCJwbnBtIHVwZGF0ZSAtLWxhdGVzdFwiLlxuICAgKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnI2lnbm9yZURlcGVuZGVuY2llc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlRGVwZW5kZW5jaWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hVXBkYXRlQ29uZmlnJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFVcGRhdGVDb25maWcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVVwZGF0ZUNvbmZpZyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2lnbm9yZURlcGVuZGVuY2llcyc6IG9iai5pZ25vcmVEZXBlbmRlbmNpZXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgQ1ZFIElEcyB0aGF0IHdpbGwgYmUgaWdub3JlZCBieSBcInBucG0gYXVkaXRcIi5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnI2lnbm9yZUN2ZXNcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUN2ZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIEdIU0EgQ29kZXMgdGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkgXCJwbnBtIGF1ZGl0XCIuXG4gICAqXG4gICAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZyNpZ25vcmVHaHNhc1xuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlR2hzYXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdENvbmZpZycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hQXVkaXRDb25maWcob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0Q29uZmlnIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnaWdub3JlQ3Zlcyc6IG9iai5pZ25vcmVDdmVzPy5tYXAoeSA9PiB5KSxcbiAgICAnaWdub3JlR2hzYXMnOiBvYmouaWdub3JlR2hzYXM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogU3BlY2lmaWVzIGFyY2hpdGVjdHVyZXMgZm9yIHdoaWNoIHlvdSdkIGxpa2UgdG8gaW5zdGFsbCBvcHRpb25hbCBkZXBlbmRlbmNpZXMsIGV2ZW4gaWYgdGhleSBkb24ndCBtYXRjaCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBzeXN0ZW0gcnVubmluZyB0aGUgaW5zdGFsbC5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU3VwcG9ydGVkQXJjaGl0ZWN0dXJlcyNvc1xuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjY3B1XG4gICAqL1xuICByZWFkb25seSBjcHU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMjbGliY1xuICAgKi9cbiAgcmVhZG9ubHkgbGliYz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9QbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVN1cHBvcnRlZEFyY2hpdGVjdHVyZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdvcyc6IG9iai5vcz8ubWFwKHkgPT4geSksXG4gICAgJ2NwdSc6IG9iai5jcHU/Lm1hcCh5ID0+IHkpLFxuICAgICdsaWJjJzogb2JqLmxpYmM/Lm1hcCh5ID0+IHkpLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGljaCBleGFjdCBOb2RlLmpzIHZlcnNpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBwcm9qZWN0J3MgcnVudGltZS5cbiAgICpcbiAgICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hRXhlY3V0aW9uRW52JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFFeGVjdXRpb25FbnYob2JqOiBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUV4ZWN1dGlvbkVudiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25vZGVWZXJzaW9uJzogb2JqLm5vZGVWZXJzaW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogRGVmaW5lcyB3aGF0IGxpbmtlciBzaG91bGQgYmUgdXNlZCBmb3IgaW5zdGFsbGluZyBOb2RlIHBhY2thZ2VzLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFOb2RlTGlua2VyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTm9kZUxpbmtlciB7XG4gIC8qKiBpc29sYXRlZCAqL1xuICBJU09MQVRFRCA9IFwiaXNvbGF0ZWRcIixcbiAgLyoqIGhvaXN0ZWQgKi9cbiAgSE9JU1RFRCA9IFwiaG9pc3RlZFwiLFxuICAvKiogcG5wICovXG4gIFBOUCA9IFwicG5wXCIsXG59XG5cbi8qKlxuICogQ29udHJvbHMgdGhlIHdheSBwYWNrYWdlcyBhcmUgaW1wb3J0ZWQgZnJvbSB0aGUgc3RvcmUgKGlmIHlvdSB3YW50IHRvIGRpc2FibGUgc3ltbGlua3MgaW5zaWRlIG5vZGVfbW9kdWxlcywgdGhlbiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIG5vZGVMaW5rZXIgc2V0dGluZywgbm90IHRoaXMgb25lKS5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUGFja2FnZUltcG9ydE1ldGhvZFxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBhY2thZ2VJbXBvcnRNZXRob2Qge1xuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBoYXJkbGluayAqL1xuICBIQVJETElOSyA9IFwiaGFyZGxpbmtcIixcbiAgLyoqIGNvcHkgKi9cbiAgQ09QWSA9IFwiY29weVwiLFxuICAvKiogY2xvbmUgKi9cbiAgQ0xPTkUgPSBcImNsb25lXCIsXG4gIC8qKiBjbG9uZS1vci1jb3B5ICovXG4gIENMT05FX0hZUEhFTl9PUl9IWVBIRU5fQ09QWSA9IFwiY2xvbmUtb3ItY29weVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIGNvbG9ycyBpbiB0aGUgb3V0cHV0LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFDb2xvclxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUNvbG9yIHtcbiAgLyoqIGFsd2F5cyAqL1xuICBBTFdBWVMgPSBcImFsd2F5c1wiLFxuICAvKiogYXV0byAqL1xuICBBVVRPID0gXCJhdXRvXCIsXG4gIC8qKiBuZXZlciAqL1xuICBORVZFUiA9IFwibmV2ZXJcIixcbn1cblxuLyoqXG4gKiBBbnkgbG9ncyBhdCBvciBoaWdoZXIgdGhhbiB0aGUgZ2l2ZW4gbGV2ZWwgd2lsbCBiZSBzaG93bi5cbiAqXG4gKiBAc2NoZW1hIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTG9nbGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMb2dsZXZlbCB7XG4gIC8qKiBkZWJ1ZyAqL1xuICBERUJVRyA9IFwiZGVidWdcIixcbiAgLyoqIGluZm8gKi9cbiAgSU5GTyA9IFwiaW5mb1wiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IHN0eWxlIG9mIHRoZSBsb2dzLlxuICogaHR0cHM6Ly9wbnBtLmlvL2NsaS9pbnN0YWxsIy0tcmVwb3J0ZXJuYW1lXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlcG9ydGVyXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUmVwb3J0ZXIge1xuICAvKiogc2lsZW50ICovXG4gIFNJTEVOVCA9IFwic2lsZW50XCIsXG4gIC8qKiBkZWZhdWx0ICovXG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbiAgLyoqIGFwcGVuZC1vbmx5ICovXG4gIEFQUEVORF9IWVBIRU5fT05MWSA9IFwiYXBwZW5kLW9ubHlcIixcbiAgLyoqIG5kanNvbiAqL1xuICBOREpTT04gPSBcIm5kanNvblwiLFxufVxuXG4vKipcbiAqIElmIHRoaXMgaXMgZW5hYmxlZCwgbG9jYWxseSBhdmFpbGFibGUgcGFja2FnZXMgYXJlIGxpbmtlZCB0byBub2RlX21vZHVsZXMgaW5zdGVhZCBvZiBiZWluZyBkb3dubG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFMaW5rV29ya3NwYWNlUGFja2FnZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hTGlua1dvcmtzcGFjZVBhY2thZ2VzKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgbGlua2VkIGZyb20gdGhlIHdvcmtzcGFjZSBhcmUgYWRkZWQgdG8gcGFja2FnZS5qc29uLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlV29ya3NwYWNlUHJvdG9jb2xcbiAqL1xuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQm9vbGVhbih2YWx1ZTogYm9vbGVhbik6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sIHtcbiAgICByZXR1cm4gbmV3IFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hU2F2ZVdvcmtzcGFjZVByb3RvY29sKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xuICB9XG59XG5cbi8qKlxuICogQ29uZmlndXJlIGhvdyB2ZXJzaW9ucyBvZiBwYWNrYWdlcyBpbnN0YWxsZWQgdG8gYSBwYWNrYWdlLmpzb24gZmlsZSBnZXQgcHJlZml4ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVNhdmVQcmVmaXhcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFTYXZlUHJlZml4IHtcbiAgLyoqIF4gKi9cbiAgVkFMVUVfQ0FSQVQgPSBcIl5cIixcbiAgLyoqIH4gKi9cbiAgVkFMVUVfVElMREUgPSBcIn5cIixcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGhvdyBwbnBtIHJlc29sdmVzIGRlcGVuZGVuY2llcywgU2VlIGh0dHBzOi8vcG5wbS5pby9zZXR0aW5ncyNyZXNvbHV0aW9ubW9kZVxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSZXNvbHV0aW9uTW9kZVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVJlc29sdXRpb25Nb2RlIHtcbiAgLyoqIGhpZ2hlc3QgKi9cbiAgSElHSEVTVCA9IFwiaGlnaGVzdFwiLFxuICAvKiogdGltZS1iYXNlZCAqL1xuICBUSU1FX0hZUEhFTl9CQVNFRCA9IFwidGltZS1iYXNlZFwiLFxuICAvKiogbG93ZXN0LWRpcmVjdCAqL1xuICBMT1dFU1RfSFlQSEVOX0RJUkVDVCA9IFwibG93ZXN0LWRpcmVjdFwiLFxufVxuXG4vKipcbiAqIFdoZW4gc2V0IHRvIG5vLWRvd25ncmFkZSwgcG5wbSB3aWxsIGZhaWwgaWYgYSBwYWNrYWdlJ3MgdHJ1c3QgbGV2ZWwgaGFzIGRlY3JlYXNlZCBjb21wYXJlZCB0byBwcmV2aW91cyByZWxlYXNlcy4gRm9yIGV4YW1wbGUsIGlmIGEgcGFja2FnZSB3YXMgcHJldmlvdXNseSBwdWJsaXNoZWQgYnkgYSB0cnVzdGVkIHB1Ymxpc2hlciBidXQgbm93IG9ubHkgaGFzIHByb3ZlbmFuY2Ugb3Igbm8gdHJ1c3QgZXZpZGVuY2UsIGluc3RhbGxhdGlvbiB3aWxsIGZhaWwuIFRoaXMgaGVscHMgcHJldmVudCBpbnN0YWxsaW5nIHBvdGVudGlhbGx5IGNvbXByb21pc2VkIHZlcnNpb25zLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFUcnVzdFBvbGljeVxuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVRydXN0UG9saWN5IHtcbiAgLyoqIG9mZiAqL1xuICBPRkYgPSBcIm9mZlwiLFxuICAvKiogbm8tZG93bmdyYWRlICovXG4gIE5PX0hZUEhFTl9ET1dOR1JBREUgPSBcIm5vLWRvd25ncmFkZVwiLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSBsZXZlbCBvZiBpc3N1ZXMgcmVwb3J0ZWQgYnkgYHBucG0gYXVkaXRgLiBXaGVuIHNldCB0byAnbG93JywgYWxsIHZ1bG5lcmFiaWxpdGllcyBhcmUgcmVwb3J0ZWQuIFdoZW4gc2V0IHRvICdtb2RlcmF0ZScsICdoaWdoJywgb3IgJ2NyaXRpY2FsJywgb25seSB2dWxuZXJhYmlsaXRpZXMgd2l0aCB0aGF0IHNldmVyaXR5IG9yIGhpZ2hlciBhcmUgcmVwb3J0ZWQuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUF1ZGl0TGV2ZWxcbiAqL1xuZXhwb3J0IGVudW0gUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFBdWRpdExldmVsIHtcbiAgLyoqIGxvdyAqL1xuICBMT1cgPSBcImxvd1wiLFxuICAvKiogbW9kZXJhdGUgKi9cbiAgTU9ERVJBVEUgPSBcIm1vZGVyYXRlXCIsXG4gIC8qKiBoaWdoICovXG4gIEhJR0ggPSBcImhpZ2hcIixcbiAgLyoqIGNyaXRpY2FsICovXG4gIENSSVRJQ0FMID0gXCJjcml0aWNhbFwiLFxufVxuXG4vKipcbiAqIE92ZXJyaWRlcyB0aGUgYG9uRmFpbGAgYmVoYXZpb3Igb2YgYm90aCB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBhbmQgYGRldkVuZ2luZXMucGFja2FnZU1hbmFnZXJgIHdoZW4gdGhlIHJ1bm5pbmcgcG5wbSB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSBkZWNsYXJlZCBvbmUuXG4gKlxuICogQHNjaGVtYSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYVBtT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUG1PbkZhaWwge1xuICAvKiogZG93bmxvYWQgKi9cbiAgRE9XTkxPQUQgPSBcImRvd25sb2FkXCIsXG4gIC8qKiBlcnJvciAqL1xuICBFUlJPUiA9IFwiZXJyb3JcIixcbiAgLyoqIHdhcm4gKi9cbiAgV0FSTiA9IFwid2FyblwiLFxuICAvKiogaWdub3JlICovXG4gIElHTk9SRSA9IFwiaWdub3JlXCIsXG59XG5cbi8qKlxuICogT3ZlcnJpZGVzIHRoZSBgb25GYWlsYCBmaWVsZCBvZiBgZGV2RW5naW5lcy5ydW50aW1lYCAoYW5kIGBlbmdpbmVzLnJ1bnRpbWVgKSBpbiB0aGUgcm9vdCBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgYSBkaWZmZXJlbnQgbG9jYWwgYmVoYXZpb3IgdGhhbiB3aGF0IGlzIHdyaXR0ZW4gaW4gdGhlIG1hbmlmZXN0IOKAlCBmb3IgaW5zdGFuY2UsIGZvcmNpbmcgcG5wbSB0byBkb3dubG9hZCB0aGUgZGVjbGFyZWQgcnVudGltZSBldmVuIHdoZW4gdGhlIG1hbmlmZXN0IHNldHMgYG9uRmFpbDogXCJ3YXJuXCJgLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFSdW50aW1lT25GYWlsXG4gKi9cbmV4cG9ydCBlbnVtIFBucG1Xb3Jrc3BhY2VZYW1sU2NoZW1hUnVudGltZU9uRmFpbCB7XG4gIC8qKiBkb3dubG9hZCAqL1xuICBET1dOTE9BRCA9IFwiZG93bmxvYWRcIixcbiAgLyoqIGVycm9yICovXG4gIEVSUk9SID0gXCJlcnJvclwiLFxuICAvKiogd2FybiAqL1xuICBXQVJOID0gXCJ3YXJuXCIsXG4gIC8qKiBpZ25vcmUgKi9cbiAgSUdOT1JFID0gXCJpZ25vcmVcIixcbn1cblxuLyoqXG4gKiBBZGRlZCBhIG5ldyBob2lzdGluZ0xpbWl0cyBzZXR0aW5nIGZvciBgbm9kZUxpbmtlcjogaG9pc3RlZGAgaW5zdGFsbHMsIG1pcnJvcmluZyB5YXJuJ3MgYG5tSG9pc3RpbmdMaW1pdHNgLiBJdCBhY2NlcHRzIGBub25lYCAodGhlIGRlZmF1bHQg4oCUIGhvaXN0IGFzIGZhciBhcyBwb3NzaWJsZSksIHdvcmtzcGFjZXMgKGhvaXN0IG9ubHkgYXMgZmFyIGFzIGVhY2ggd29ya3NwYWNlIHBhY2thZ2UpLCBvciBkZXBlbmRlbmNpZXMgKGhvaXN0IG9ubHkgdXAgdG8gZWFjaCB3b3Jrc3BhY2UgcGFja2FnZSdzIGRpcmVjdCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIEBzY2hlbWEgUG5wbVdvcmtzcGFjZVlhbWxTY2hlbWFIb2lzdGluZ0xpbWl0c1xuICovXG5leHBvcnQgZW51bSBQbnBtV29ya3NwYWNlWWFtbFNjaGVtYUhvaXN0aW5nTGltaXRzIHtcbiAgLyoqIG5vZGUgKi9cbiAgTk9ERSA9IFwibm9kZVwiLFxuICAvKiogd29ya3NwYWNlcyAqL1xuICBXT1JLU1BBQ0VTID0gXCJ3b3Jrc3BhY2VzXCIsXG4gIC8qKiBkZXBlbmRlbmNpZXMgKi9cbiAgREVQRU5ERU5DSUVTID0gXCJkZXBlbmRlbmNpZXNcIixcbn1cbiJdfQ==
|