@aws-cdk/toolkit-lib 1.1.1 → 1.2.0
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/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/bootstrap/index.d.ts +1 -0
- package/lib/actions/bootstrap/private/helpers.d.ts +1 -0
- package/lib/actions/bootstrap/private/index.d.ts +1 -0
- package/lib/actions/deploy/index.d.ts +1 -0
- package/lib/actions/deploy/private/deploy-options.d.ts +1 -0
- package/lib/actions/deploy/private/helpers.d.ts +1 -0
- package/lib/actions/deploy/private/index.d.ts +1 -0
- package/lib/actions/destroy/index.d.ts +1 -0
- package/lib/actions/diff/index.d.ts +1 -0
- package/lib/actions/diff/private/helpers.d.ts +1 -0
- package/lib/actions/diff/private/index.d.ts +1 -0
- package/lib/actions/drift/index.d.ts +1 -0
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/list/index.d.ts +1 -0
- package/lib/actions/refactor/index.d.ts +1 -0
- package/lib/actions/rollback/index.d.ts +1 -0
- package/lib/actions/synth/index.d.ts +1 -0
- package/lib/actions/watch/index.d.ts +1 -0
- package/lib/actions/watch/private/helpers.d.ts +1 -0
- package/lib/actions/watch/private/index.d.ts +1 -0
- package/lib/api/aws-auth/account-cache.d.ts +1 -0
- package/lib/api/aws-auth/awscli-compatible.d.ts +1 -0
- package/lib/api/aws-auth/base-credentials.d.ts +1 -0
- package/lib/api/aws-auth/cached.d.ts +1 -0
- package/lib/api/aws-auth/credential-plugins.d.ts +1 -0
- package/lib/api/aws-auth/index.d.ts +1 -0
- package/lib/api/aws-auth/private/index.d.ts +1 -0
- package/lib/api/aws-auth/provider-caching.d.ts +1 -0
- package/lib/api/aws-auth/sdk-logger.d.ts +1 -0
- package/lib/api/aws-auth/sdk-provider.d.ts +1 -0
- package/lib/api/aws-auth/sdk.d.ts +1 -0
- package/lib/api/aws-auth/tracing.d.ts +1 -0
- package/lib/api/aws-auth/types.d.ts +1 -0
- package/lib/api/aws-auth/user-agent.d.ts +1 -0
- package/lib/api/aws-auth/util.d.ts +1 -0
- package/lib/api/bootstrap/bootstrap-environment.d.ts +1 -0
- package/lib/api/bootstrap/bootstrap-props.d.ts +1 -0
- package/lib/api/bootstrap/deploy-bootstrap.d.ts +1 -0
- package/lib/api/bootstrap/index.d.ts +1 -0
- package/lib/api/bootstrap/legacy-template.d.ts +1 -0
- package/lib/api/cloud-assembly/cached-source.d.ts +1 -0
- package/lib/api/cloud-assembly/context-store.d.ts +1 -0
- package/lib/api/cloud-assembly/environment.d.ts +1 -0
- package/lib/api/cloud-assembly/index.d.ts +1 -0
- package/lib/api/cloud-assembly/private/borrowed-assembly.d.ts +1 -0
- package/lib/api/cloud-assembly/private/context-aware-source.d.ts +1 -0
- package/lib/api/cloud-assembly/private/context-aware-source.js +3 -8
- package/lib/api/cloud-assembly/private/exec.d.ts +1 -0
- package/lib/api/cloud-assembly/private/helpers.d.ts +6 -0
- package/lib/api/cloud-assembly/private/helpers.js +8 -1
- package/lib/api/cloud-assembly/private/index.d.ts +1 -0
- package/lib/api/cloud-assembly/private/prepare-source.d.ts +1 -0
- package/lib/api/cloud-assembly/private/readable-assembly.d.ts +1 -0
- package/lib/api/cloud-assembly/private/stack-assembly.d.ts +1 -0
- package/lib/api/cloud-assembly/private/stack-selectors.d.ts +1 -0
- package/lib/api/cloud-assembly/source-builder.d.ts +8 -0
- package/lib/api/cloud-assembly/source-builder.js +16 -11
- package/lib/api/cloud-assembly/stack-assembly.d.ts +1 -0
- package/lib/api/cloud-assembly/stack-collection.d.ts +1 -0
- package/lib/api/cloud-assembly/stack-selector.d.ts +1 -0
- package/lib/api/cloud-assembly/types.d.ts +1 -0
- package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +1 -0
- package/lib/api/cloudformation/index.d.ts +1 -0
- package/lib/api/cloudformation/nested-stack-helpers.d.ts +1 -0
- package/lib/api/cloudformation/stack-helpers.d.ts +1 -0
- package/lib/api/cloudformation/template-body-parameter.d.ts +1 -0
- package/lib/api/context.d.ts +1 -0
- package/lib/api/deployments/asset-manifest-builder.d.ts +1 -0
- package/lib/api/deployments/asset-publishing.d.ts +1 -0
- package/lib/api/deployments/assets.d.ts +1 -0
- package/lib/api/deployments/cfn-api.d.ts +1 -0
- package/lib/api/deployments/checks.d.ts +1 -0
- package/lib/api/deployments/deploy-stack.d.ts +1 -0
- package/lib/api/deployments/deployment-result.d.ts +1 -0
- package/lib/api/deployments/deployments.d.ts +1 -0
- package/lib/api/deployments/index.d.ts +1 -0
- package/lib/api/diff/diff-formatter.d.ts +1 -0
- package/lib/api/diff/index.d.ts +1 -0
- package/lib/api/drift/drift-formatter.d.ts +1 -0
- package/lib/api/drift/drift.d.ts +1 -0
- package/lib/api/drift/index.d.ts +1 -0
- package/lib/api/environment/environment-access.d.ts +1 -0
- package/lib/api/environment/environment-resources.d.ts +1 -0
- package/lib/api/environment/index.d.ts +1 -0
- package/lib/api/environment/placeholders.d.ts +1 -0
- package/lib/api/garbage-collection/garbage-collector.d.ts +1 -0
- package/lib/api/garbage-collection/index.d.ts +1 -0
- package/lib/api/garbage-collection/progress-printer.d.ts +1 -0
- package/lib/api/garbage-collection/stack-refresh.d.ts +1 -0
- package/lib/api/hotswap/appsync-mapping-templates.d.ts +1 -0
- package/lib/api/hotswap/code-build-projects.d.ts +1 -0
- package/lib/api/hotswap/common.d.ts +1 -0
- package/lib/api/hotswap/ecs-services.d.ts +1 -0
- package/lib/api/hotswap/hotswap-deployments.d.ts +1 -0
- package/lib/api/hotswap/index.d.ts +1 -0
- package/lib/api/hotswap/lambda-functions.d.ts +1 -0
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +1 -0
- package/lib/api/hotswap/stepfunctions-state-machines.d.ts +1 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/io/index.d.ts +1 -0
- package/lib/api/io/io-host.d.ts +1 -0
- package/lib/api/io/io-message.d.ts +1 -0
- package/lib/api/io/private/index.d.ts +1 -0
- package/lib/api/io/private/io-default-messages.d.ts +1 -0
- package/lib/api/io/private/io-helper.d.ts +1 -0
- package/lib/api/io/private/io-host-wrappers.d.ts +1 -0
- package/lib/api/io/private/level-priority.d.ts +1 -0
- package/lib/api/io/private/message-maker.d.ts +1 -0
- package/lib/api/io/private/messages.d.ts +1 -0
- package/lib/api/io/private/span.d.ts +1 -0
- package/lib/api/io/private/types.d.ts +1 -0
- package/lib/api/io/toolkit-action.d.ts +1 -0
- package/lib/api/logs-monitor/find-cloudwatch-logs.d.ts +1 -0
- package/lib/api/logs-monitor/index.d.ts +1 -0
- package/lib/api/logs-monitor/logs-monitor.d.ts +1 -0
- package/lib/api/notices/cached-data-source.d.ts +1 -0
- package/lib/api/notices/filter.d.ts +1 -0
- package/lib/api/notices/index.d.ts +1 -0
- package/lib/api/notices/notices.d.ts +1 -0
- package/lib/api/notices/types.d.ts +1 -0
- package/lib/api/notices/web-data-source.d.ts +1 -0
- package/lib/api/plugin/context-provider-plugin.d.ts +1 -0
- package/lib/api/plugin/index.d.ts +1 -0
- package/lib/api/plugin/mode.d.ts +1 -0
- package/lib/api/plugin/plugin.d.ts +1 -0
- package/lib/api/refactoring/cloudformation.d.ts +1 -0
- package/lib/api/refactoring/context.d.ts +1 -0
- package/lib/api/refactoring/digest.d.ts +1 -0
- package/lib/api/refactoring/exclude.d.ts +1 -0
- package/lib/api/refactoring/graph.d.ts +1 -0
- package/lib/api/refactoring/index.d.ts +1 -0
- package/lib/api/refactoring/stack-definitions.d.ts +1 -0
- package/lib/api/resource-import/importer.d.ts +1 -0
- package/lib/api/resource-import/index.d.ts +1 -0
- package/lib/api/resource-import/migrator.d.ts +1 -0
- package/lib/api/resource-metadata/index.d.ts +1 -0
- package/lib/api/resource-metadata/resource-metadata.d.ts +1 -0
- package/lib/api/rwlock.d.ts +1 -0
- package/lib/api/settings.d.ts +1 -0
- package/lib/api/stack-events/index.d.ts +1 -0
- package/lib/api/stack-events/stack-activity-monitor.d.ts +1 -0
- package/lib/api/stack-events/stack-event-poller.d.ts +1 -0
- package/lib/api/stack-events/stack-progress-monitor.d.ts +1 -0
- package/lib/api/stack-events/stack-status.d.ts +1 -0
- package/lib/api/streams.d.ts +1 -0
- package/lib/api/tags/index.d.ts +1 -0
- package/lib/api/tags/private/index.d.ts +1 -0
- package/lib/api/tags/private/util.d.ts +1 -0
- package/lib/api/tags/tags.d.ts +1 -0
- package/lib/api/toolkit-info.d.ts +1 -0
- package/lib/api/tree.d.ts +1 -0
- package/lib/api/work-graph/index.d.ts +1 -0
- package/lib/api/work-graph/work-graph-builder.d.ts +1 -0
- package/lib/api/work-graph/work-graph-types.d.ts +1 -0
- package/lib/api/work-graph/work-graph.d.ts +1 -0
- package/lib/context-providers/ami.d.ts +1 -0
- package/lib/context-providers/availability-zones.d.ts +1 -0
- package/lib/context-providers/cc-api-provider.d.ts +1 -0
- package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -0
- package/lib/context-providers/hosted-zones.d.ts +1 -0
- package/lib/context-providers/index.d.ts +1 -0
- package/lib/context-providers/keys.d.ts +1 -0
- package/lib/context-providers/load-balancers.d.ts +1 -0
- package/lib/context-providers/security-groups.d.ts +1 -0
- package/lib/context-providers/ssm-parameters.d.ts +1 -0
- package/lib/context-providers/vpcs.d.ts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/bootstrap-environment-progress.d.ts +1 -0
- package/lib/payloads/context.d.ts +1 -0
- package/lib/payloads/deploy.d.ts +1 -0
- package/lib/payloads/destroy.d.ts +1 -0
- package/lib/payloads/diff.d.ts +1 -0
- package/lib/payloads/drift.d.ts +1 -0
- package/lib/payloads/gc.d.ts +1 -0
- package/lib/payloads/hotswap.d.ts +1 -0
- package/lib/payloads/import.d.ts +1 -0
- package/lib/payloads/index.d.ts +1 -0
- package/lib/payloads/list.d.ts +1 -0
- package/lib/payloads/logs-monitor.d.ts +1 -0
- package/lib/payloads/progress.d.ts +1 -0
- package/lib/payloads/refactor.d.ts +1 -0
- package/lib/payloads/rollback.d.ts +1 -0
- package/lib/payloads/sdk.d.ts +1 -0
- package/lib/payloads/stack-activity.d.ts +1 -0
- package/lib/payloads/stack-details.d.ts +1 -0
- package/lib/payloads/synth.d.ts +1 -0
- package/lib/payloads/types.d.ts +1 -0
- package/lib/payloads/watch.d.ts +1 -0
- package/lib/private/activity-printer/base.d.ts +1 -0
- package/lib/private/activity-printer/current.d.ts +1 -0
- package/lib/private/activity-printer/display.d.ts +1 -0
- package/lib/private/activity-printer/history.d.ts +1 -0
- package/lib/private/activity-printer/index.d.ts +1 -0
- package/lib/private/dispose-polyfill.d.ts +1 -0
- package/lib/private/index.d.ts +1 -0
- package/lib/toolkit/index.d.ts +1 -0
- package/lib/toolkit/non-interactive-io-host.d.ts +1 -0
- package/lib/toolkit/private/index.d.ts +1 -0
- package/lib/toolkit/toolkit-error.d.ts +1 -0
- package/lib/toolkit/toolkit.d.ts +1 -0
- package/lib/toolkit/types.d.ts +1 -0
- package/lib/util/archive.d.ts +1 -0
- package/lib/util/arrays.d.ts +1 -0
- package/lib/util/bool.d.ts +1 -0
- package/lib/util/bytes.d.ts +1 -0
- package/lib/util/cloudformation.d.ts +1 -0
- package/lib/util/concurrency.d.ts +1 -0
- package/lib/util/content-hash.d.ts +1 -0
- package/lib/util/directories.d.ts +1 -0
- package/lib/util/format-error.d.ts +1 -0
- package/lib/util/index.d.ts +1 -0
- package/lib/util/json.d.ts +1 -0
- package/lib/util/net.d.ts +1 -0
- package/lib/util/objects.d.ts +1 -0
- package/lib/util/package-info.d.ts +1 -0
- package/lib/util/parallel.d.ts +1 -0
- package/lib/util/promises.d.ts +1 -0
- package/lib/util/serialize.d.ts +1 -0
- package/lib/util/shell-env.d.ts +1 -0
- package/lib/util/string-manipulation.d.ts +1 -0
- package/lib/util/type-brands.d.ts +1 -0
- package/lib/util/types.d.ts +1 -0
- package/lib/util/version-range.d.ts +1 -0
- package/lib/util/yaml-cfn.d.ts +1 -0
- package/package.json +10 -10
- package/tsconfig.dts.json +0 -9
|
@@ -59,6 +59,7 @@ const cxapi = require("@aws-cdk/cx-api");
|
|
|
59
59
|
const fs = require("fs-extra");
|
|
60
60
|
const context_store_1 = require("./context-store");
|
|
61
61
|
const rwlock_1 = require("../rwlock");
|
|
62
|
+
const cached_source_1 = require("./cached-source");
|
|
62
63
|
const context_aware_source_1 = require("./private/context-aware-source");
|
|
63
64
|
const exec_1 = require("./private/exec");
|
|
64
65
|
const prepare_source_1 = require("./private/prepare-source");
|
|
@@ -172,26 +173,30 @@ class CloudAssemblySourceBuilder {
|
|
|
172
173
|
*/
|
|
173
174
|
async fromAssemblyDirectory(directory, props = {}) {
|
|
174
175
|
const services = await this.sourceBuilderServices();
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
contextStore: new context_store_1.MemoryContext(), // @todo We shouldn't be using a `ContextAwareCloudAssemblySource` at all.
|
|
178
|
-
lookups: false,
|
|
179
|
-
};
|
|
180
|
-
return new context_aware_source_1.ContextAwareCloudAssemblySource({
|
|
181
|
-
produce: async () => {
|
|
182
|
-
// @todo build
|
|
176
|
+
return {
|
|
177
|
+
async produce() {
|
|
183
178
|
await services.ioHelper.notify(private_1.IO.CDK_ASSEMBLY_I0150.msg('--app points to a cloud assembly, so we bypass synth'));
|
|
184
179
|
const readLock = await new rwlock_1.RWLock(directory).acquireRead();
|
|
185
180
|
try {
|
|
186
181
|
const asm = await (0, prepare_source_1.assemblyFromDirectory)(directory, services.ioHelper, props.loadAssemblyOptions);
|
|
187
|
-
|
|
182
|
+
const assembly = new readable_assembly_1.ReadableCloudAssembly(asm, readLock, { deleteOnDispose: false });
|
|
183
|
+
if (assembly.cloudAssembly.manifest.missing && assembly.cloudAssembly.manifest.missing.length > 0) {
|
|
184
|
+
if (props.failOnMissingContext ?? true) {
|
|
185
|
+
const missingKeysSet = (0, helpers_1.missingContextKeys)(assembly.cloudAssembly.manifest.missing);
|
|
186
|
+
const missingKeys = Array.from(missingKeysSet);
|
|
187
|
+
throw toolkit_error_1.AssemblyError.withCause('Assembly contains missing context. ' +
|
|
188
|
+
"Make sure all necessary context is already in 'cdk.context.json' by running 'cdk synth' on a machine with sufficient AWS credentials and committing the result. " +
|
|
189
|
+
`Missing context keys: '${missingKeys.join(', ')}'`, 'Error producing assembly');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return new cached_source_1.CachedCloudAssembly(assembly);
|
|
188
193
|
}
|
|
189
194
|
catch (e) {
|
|
190
195
|
await readLock.release();
|
|
191
196
|
throw e;
|
|
192
197
|
}
|
|
193
198
|
},
|
|
194
|
-
}
|
|
199
|
+
};
|
|
195
200
|
}
|
|
196
201
|
/**
|
|
197
202
|
* Use a directory containing an AWS CDK app as source.
|
|
@@ -306,4 +311,4 @@ class CloudAssemblySourceBuilder {
|
|
|
306
311
|
}
|
|
307
312
|
}
|
|
308
313
|
exports.CloudAssemblySourceBuilder = CloudAssemblySourceBuilder;
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUE4QjtBQUU5Qix5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLG1EQUF3RjtBQUN4RixzQ0FBbUM7QUFFbkMseUVBQWlGO0FBQ2pGLHlDQUFvRDtBQUNwRCw2REFBc0k7QUFDdEksbUVBQW9FO0FBR3BFLCtEQUEwRTtBQUMxRSxxQ0FBeUM7QUFDekMsMkNBQW1DO0FBQ25DLCtDQUF3RDtBQTJQeEQsTUFBc0IsMEJBQTBCO0lBTzlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQzlCLE9BQXdCLEVBQ3hCLFFBQW9DLEVBQUU7UUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksNkJBQWEsRUFBRSxDQUFDO1FBQy9ELE1BQU0sb0JBQW9CLEdBQW1DO1lBQzNELFFBQVE7WUFDUixZQUFZO1lBQ1osT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3ZCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXJFLE9BQU8sSUFBSSxzREFBK0IsQ0FDeEM7WUFDRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUU7OztvQkFDbEIsTUFBWSxTQUFTLGtDQUFHLE1BQU0scUNBQW9CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0s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QkFFOUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDO29CQUMzRSxPQUFPLElBQUkseUNBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7Ozs7OzthQUM5RTtTQUNGLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExUEQsZ0VBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeHNjaGVtYSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IENka0FwcE11bHRpQ29udGV4dCwgTWVtb3J5Q29udGV4dCwgdHlwZSBJQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uL3J3bG9jayc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcyB9IGZyb20gJy4vcHJpdmF0ZS9jb250ZXh0LWF3YXJlLXNvdXJjZSc7XG5pbXBvcnQgeyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlIH0gZnJvbSAnLi9wcml2YXRlL2NvbnRleHQtYXdhcmUtc291cmNlJztcbmltcG9ydCB7IGV4ZWNJbkNoaWxkUHJvY2VzcyB9IGZyb20gJy4vcHJpdmF0ZS9leGVjJztcbmltcG9ydCB7IEV4ZWN1dGlvbkVudmlyb25tZW50LCBhc3NlbWJseUZyb21EaXJlY3RvcnksIHBhcmFtZXRlcnNGcm9tU3ludGhPcHRpb25zLCB3cml0ZUNvbnRleHRUb0VudiB9IGZyb20gJy4vcHJpdmF0ZS9wcmVwYXJlLXNvdXJjZSc7XG5pbXBvcnQgeyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkgfSBmcm9tICcuL3ByaXZhdGUvcmVhZGFibGUtYXNzZW1ibHknO1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRBc3NlbWJseVNvdXJjZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBUb29sa2l0U2VydmljZXMgfSBmcm9tICcuLi8uLi90b29sa2l0L3ByaXZhdGUnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yLCBBc3NlbWJseUVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IG5vVW5kZWZpbmVkIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBJTyB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgdGVtcG9yYXJpbHlXcml0ZUVudiB9IGZyb20gJy4vcHJpdmF0ZS9oZWxwZXJzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRoZSBidWlsZGVyIGZ1bmN0aW9uIHJlY2VpdmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VtYmx5QnVpbGRlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgZGlyZWN0b3J5IGludG8gd2hpY2ggdG8gdGhlIGJ1aWxkZXIgYXBwIHdpbGwgZW1pdCBzeW50aGVzaXplZCBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IHByb3ZpZGVkIHRwIHRoZSBidWlsZGVyIGFwcCB0byBzeW50aGVzaXplIHRoZSBDbG91ZCBBc3NlbWJseSwgaW5jbHVkaW5nIGxvb2tlZC11cCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHBhc3NlZCB0byBhIENESyBhcHAgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqXG4gICAqIFRoaXMgY29udGFpbnMgdmFyaWFibGVzIGludGVuZGVkIGZvciB0aGUgdXNlciBwb3J0aW9uIG9mIGEgQ0RLIGFwcCAobm90YWJseVxuICAgKiBgQ0RLX0RFRkFVTFRfQUNDT1VOVGAgYW5kIGBDREtfREVGQVVMVF9SRUdJT05gKSwgd2hpY2ggeW91IGNhbiBmcmVlbHkgcmVhZC5cbiAgICpcbiAgICogSXQgYWxzbyBjb250YWlucyB2YXJpYWJsZXMgaW50ZW5kZWQgZm9yIHRoZSBDREsgVG9vbGtpdCB0byBjb21tdW5pY2F0ZSB3aXRoXG4gICAqIHRoZSBpbnRlcm5hbHMgb2YgdGhlIGNvbnN0cnVjdCBsaWJyYXJ5LCBsaWtlIGBDREtfREVCVUdgIGFuZFxuICAgKiBgQ0RLX0NMSV9BU01fVkVSU0lPTmAuIFJlYWRpbmcgdGhlc2UgbGF0dGVyIHZhcmlhYmxlcyBpcyBwb3NzaWJsZSBidXQgbm90XG4gICAqIHJlY29tbWVuZGVkLCBhcyB0aGVpciBtZWFuaW5nIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuXG4gICAqL1xuICByZWFkb25seSBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIHN5bnRoZXNpcyBwYXJhbWV0ZXJzIGFuZCBwcm9kdWNlcyBhIENsb3VkIEFzc2VtYmx5XG4gKlxuICogTW9zdCB0eXBpY2FsbHksIHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBoZXJlIHdpbGwgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYVxuICogYGNkay5BcHBgLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBhcHAuc3ludGgoKWAuXG4gKi9cbmV4cG9ydCB0eXBlIEFzc2VtYmx5QnVpbGRlciA9IChwcm9wczogQXNzZW1ibHlCdWlsZGVyUHJvcHMpID0+IFByb21pc2U8Y3hzY2hlbWEuSUNsb3VkQXNzZW1ibHk+O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIGEgQ0xJIGZyb20gYW4gQVdTIENESyBBcHAgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibHlEaXJlY3RvcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSBsb2FkaW5nIG9mIHRoZSBhc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEFzc2VtYmx5T3B0aW9ucz86IExvYWRBc3NlbWJseU9wdGlvbnM7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgY3JlYXRpbmcgYSBDTEkgZnJvbSBhbiBBV1MgQ0RLIEFwcCBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseVNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBpbnRvIHRoZSBnaXZlbiBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgXCJjZGsub3V0XCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogUGVyZm9ybSBjb250ZXh0IGxvb2t1cHMuXG4gICAqXG4gICAqIFN5bnRoZXNpcyBmYWlscyBpZiB0aGlzIGlzIGRpc2FibGVkIGFuZCBjb250ZXh0IGxvb2t1cHMgbmVlZCB0byBiZSBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQgc3RvcmUgZm9yIHRoaXMgb3BlcmF0aW9uXG4gICAqXG4gICAqIFRoZSBjb250ZXh0IHN0b3JlIHdpbGwgYmUgdXNlZCB0byBzb3VyY2UgaW5pdGlhbCBjb250ZXh0IHZhbHVlcyxcbiAgICogYW5kIHVwZGF0ZWQgdmFsdWVzIHdpbGwgYmUgc3RvcmVkIGhlcmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVwZW5kcyBvbiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0U3RvcmU/OiBJQ29udGV4dFN0b3JlO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZSBjb250ZXh0IHRvIGEgQ0RLIGFwcCBvbiBzeW50aFxuICAgKi9cbiAgcmVhZG9ubHkgc3ludGhPcHRpb25zPzogQXBwU3ludGhPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSBsb2FkaW5nIG9mIHRoZSBhc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEFzc2VtYmx5T3B0aW9ucz86IExvYWRBc3NlbWJseU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgYG91dGRpcmAgd2hlbiB0aGUgYXNzZW1ibHkgaXMgZGlzcG9zZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBgdHJ1ZWAgaWYgYG91dGRpcmAgaXMgbm90IGdpdmVuLCBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcG9zZU91dGRpcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGBmcm9tQXNzZW1ibHlCdWlsZGVyYCBBc3NlbWJseSBTb3VyY2UgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9tQXNzZW1ibHlCdWlsZGVyT3B0aW9ucyBleHRlbmRzIEFzc2VtYmx5U291cmNlUHJvcHMge1xuICAvKipcbiAgICogTXV0YXRlIGN1cnJlbnQgcHJvY2VzcycgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNvbW11bmljYXRlIHdpdGggQ0RLIGFwcFxuICAgKlxuICAgKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoZSBUb29sa2l0IHVzZXMgdG8gcGFzc1xuICAgKiBpbmZvcm1hdGlvbiB0byB0aGUgQ0RLIGFwcC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgY3VycmVudFxuICAgKiBwcm9jZXNzJyBnbG9iYWwgc2hhcmVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBiZWZvcmUgdGhlIGJ1aWxkZXIgaXMgaW52b2tlZCxcbiAgICogYW5kIHlvdSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGVsc2UuIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBtdXRhdGVzXG4gICAqIHNoYXJlZCBzdGF0ZSBpdCBpcyBub3Qgc2FmZSB0byBydW4gbXVsdGlwbGUgYnVpbGRlcnMgY29uY3VycmVudGx5LlxuICAgKlxuICAgKiBTZXQgdGhpcyB0byBgZmFsc2VgIHRvIGF2b2lkIG11dGF0aW5nIHRoZSBzaGFyZWQgZW52aXJvbm1lbnQuIEluc3RlYWQsXG4gICAqIHlvdSB3aWxsIG5lZWQgdG8gcGFzcyB0aGUgYG91dGRpcmAgYW5kIGBjb250ZXh0YCB0byB0aGUgYEFwcGAgY29uc3RydWN0b3JcbiAgICogZGlyZWN0bHkgaW4geW91ciBidWlsZGVyLCBhbmQgaW5zcGVjdCB0aGUgYGVudmAgbWFwIGRpcmVjdGx5XG4gICAqIGZvciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBgQ0RLX0RFRkFVTFRfQUNDT1VOVGAgYW5kIGBDREtfREVGQVVMVF9SRUdJT05gLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBjeCA9IGF3YWl0IHRvb2xraXQuZnJvbUFzc2VtYmx5QnVpbGRlcihhc3luYyAocHJvcHMpID0+IHtcbiAgICogICAvLyBJbXBvcnRhbnQ6IHBhc3Mgb24gc3ludGhlc2lzIHBhcmFtZXRlcnNcbiAgICogICBjb25zdCBhcHAgPSBuZXcgY29yZS5BcHAoe1xuICAgKiAgICAgb3V0ZGlyOiBwcm9wcy5vdXRkaXIsXG4gICAqICAgICBjb250ZXh0OiBwcm9wcy5jb250ZXh0LFxuICAgKiAgIH0pO1xuICAgKlxuICAgKiAgIG5ldyBNeVN0YWNrKGFwcCwgJ015U3RhY2snLCB7XG4gICAqICAgICBlbnY6IHtcbiAgICogICAgICAgYWNjb3VudDogcHJvcHMuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXG4gICAqICAgICAgIHJlZ2lvbjogcHJvcHMuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbiAgICogICAgIH0sXG4gICAqICAgfSk7XG4gICAqXG4gICAqICAgLy8gLi4uXG4gICAqIH0sIHtcbiAgICogICBjbG9iYmVyRW52OiBmYWxzZSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjbG9iYmVyRW52PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgYGZyb21DZGtBcHBgIEFzc2VtYmx5IFNvdXJjZSBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb21DZGtBcHBPcHRpb25zIGV4dGVuZHMgQXNzZW1ibHlTb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhcHBsaWNhdGlvbiBpbiB0aGlzIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqXG4gICAqIFRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGJlIHNldCBpbiBhZGRpdGlvbiB0byB0aGUgZW52aXJvbm1lbnRcbiAgICogdmFyaWFibGVzIGN1cnJlbnRseSBzZXQgaW4gdGhlIHByb2Nlc3MuIEEgdmFsdWUgb2YgYHVuZGVmaW5lZGAgd2lsbFxuICAgKiB1bnNldCBhIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xufVxuXG4vKipcbiAqIFNldHRpbmdzIHRoYXQgYXJlIHBhc3NlZCB0byBhIENESyBhcHAgdmlhIHRoZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwU3ludGhPcHRpb25zIHtcbiAgLyoqXG4gICAqIERlYnVnIHRoZSBDREsgYXBwLlxuICAgKiBMb2dzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZHVyaW5nIHN5bnRoZXNpcywgc3VjaCBhcyBjcmVhdGlvbiBzdGFjayB0cmFjZXMgb2YgdG9rZW5zLlxuICAgKiBUaGlzIGFsc28gc2V0cyB0aGUgYENES19ERUJVR2AgZW52IHZhcmlhYmxlIGFuZCB3aWxsIHNsb3cgZG93biBzeW50aGVzaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGVtYmVkZGluZyBvZiB0aGUgXCJhd3M6Y2RrOnBhdGhcIiBpbiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBtZXRhZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE1ldGFkYXRhPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIHRoZSBjb2xsZWN0aW9uIGFuZCByZXBvcnRpbmcgb2YgdmVyc2lvbiBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvblJlcG9ydGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZSBlbmFibGVkLCBgYXdzOmFzc2V0Onh4eGAgbWV0YWRhdGEgZW50cmllcyBhcmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBEaXNhYmxpbmcgdGhpcyBjYW4gYmUgdXNlZnVsIGluIGNlcnRhaW4gY2FzZXMgbGlrZSBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhc3NldCBzdGFnaW5nLlxuICAgKlxuICAgKiBEaXNhYmxpbmcgYXNzZXQgc3RhZ2luZyBtZWFucyB0aGF0IGNvcHlhYmxlIGFzc2V0cyB3aWxsIG5vdCBiZSBjb3BpZWQgdG8gdGhlXG4gICAqIG91dHB1dCBkaXJlY3RvcnkgYW5kIHdpbGwgYmUgcmVmZXJlbmNlZCB3aXRoIGFic29sdXRlIHBhdGhzLlxuICAgKlxuICAgKiBOb3QgY29waWVkIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5OiB0aGlzIGlzIHNvIHVzZXJzIGNhbiBpdGVyYXRlIG9uIHRoZVxuICAgKiBMYW1iZGEgc291cmNlIGFuZCBydW4gU0FNIENMSSB3aXRob3V0IGhhdmluZyB0byByZS1ydW4gQ0RLIChub3RlOiB3ZVxuICAgKiBjYW5ub3QgYWNoaWV2ZSB0aGlzIGZvciBidW5kbGVkIGFzc2V0cywgaWYgYXNzZXRzIGFyZSBidW5kbGVkIHRoZXlcbiAgICogd2lsbCBoYXZlIHRvIHJlLXJ1biBDREsgQ0xJIHRvIHJlLWJ1bmRsZSB1cGRhdGVkIHZlcnNpb25zKS5cbiAgICpcbiAgICogQWJzb2x1dGUgcGF0aDogU0FNIENMSSBleHBlY3RzIGBjd2RgLXJlbGF0aXZlIHBhdGhzIGluIGEgcmVzb3VyY2Unc1xuICAgKiBgYXdzOmFzc2V0OnBhdGhgIG1ldGFkYXRhLiBJbiBvcmRlciB0byBiZSBwcmVkaWN0YWJsZSwgd2Ugd2lsbCBhbHdheXMgb3V0cHV0XG4gICAqIGFic29sdXRlIHBhdGhzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhc3NldFN0YWdpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWxlY3Qgd2hpY2ggc3RhY2tzIHNob3VsZCBoYXZlIGFzc2V0IGJ1bmRsaW5nIGVuYWJsZWRcbiAgICpcbiAgICogQGRlZmF1bHQgW1wiKipcIl0gLSBhbGwgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZ0ZvclN0YWNrcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSBsb2FkaW5nIG9mIHRoZSBhc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRBc3NlbWJseU9wdGlvbnMge1xuICAvKipcbiAgICogQ2hlY2sgdGhlIFRvb2xraXQgc3VwcG9ydHMgdGhlIENsb3VkIEFzc2VtYmx5IFNjaGVtYSB2ZXJzaW9uXG4gICAqXG4gICAqIFdoZW4gZGlzYWJsZWQsIGFsbG93cyB0byBUb29sa2l0IHRvIHJlYWQgYSBuZXdlciBjbG91ZCBhc3NlbWJseSB0aGFuIHRoZSBDWCBBUEkgaXMgZGVzaWduZWRcbiAgICogdG8gc3VwcG9ydC4gWW91ciBhcHBsaWNhdGlvbiBtYXkgbm90IGJlIGF3YXJlIG9mIGFsbCBmZWF0dXJlcyB0aGF0IGluIHVzZSBpbiB0aGUgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrVmVyc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGVudW1zIHRvIG9ubHkgaGF2ZSBrbm93biB2YWx1ZXNcbiAgICpcbiAgICogV2hlbiBkaXNhYmxlZCwgdGhlIFRvb2xraXQgbWF5IHJlYWQgZW51bSB2YWx1ZXMgaXQgZG9lc24ndCBrbm93IGFib3V0IHlldC5cbiAgICogWW91IHdpbGwgaGF2ZSB0byBtYWtlIHN1cmUgdG8gYWx3YXlzIGNoZWNrIHRoZSB2YWx1ZXMgb2YgZW51bXMgeW91IGVuY291bnRlciBpbiB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrRW51bXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xvdWRBc3NlbWJseVNvdXJjZUJ1aWxkZXIge1xuICAvKipcbiAgICogSGVscGVyIHRvIHByb3ZpZGUgdGhlIENsb3VkQXNzZW1ibHlTb3VyY2VCdWlsZGVyIHdpdGggcmVxdWlyZWQgdG9vbGtpdCBzZXJ2aWNlc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzb3VyY2VCdWlsZGVyU2VydmljZXMoKTogUHJvbWlzZTxUb29sa2l0U2VydmljZXM+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGEgQ2xvdWQgQXNzZW1ibHkgYnVpbGRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogIyMgT3V0ZGlyXG4gICAqXG4gICAqIElmIG5vIG91dHB1dCBkaXJlY3RvcnkgaXMgZ2l2ZW4sIGl0IHdpbGwgc3ludGhlc2l6ZSBpbnRvIGEgdGVtcG9yYXJ5IHN5c3RlbVxuICAgKiBkaXJlY3RvcnkuIFRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpbGwgYmUgY2xlYW5lZCB1cCwgdW5sZXNzXG4gICAqIGBkaXNwb3NlT3V0ZGlyOiBmYWxzZWAuXG4gICAqXG4gICAqIEEgd3JpdGUgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgZHVyYXRpb24gb2ZcbiAgICogdGhlIENESyBhcHAgc3ludGhlc2lzICh3aGljaCBtZWFucyB0aGF0IG5vIHR3byBhcHBzIGNhbiBzeW50aGVzaXplIGF0IHRoZVxuICAgKiBzYW1lIHRpbWUpLCBhbmQgYWZ0ZXIgc3ludGhlc2lzIGEgcmVhZCBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgb24gdGhlXG4gICAqIGRpcmVjdG9yeS4gVGhpcyBtZWFucyB0aGF0IHdoaWxlIHRoZSBDbG91ZEFzc2VtYmx5IGlzIGJlaW5nIHVzZWQsIG5vIENES1xuICAgKiBhcHAgc3ludGhlc2lzIGNhbiB0YWtlIHBsYWNlIGludG8gdGhhdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqICMjIENvbnRleHRcbiAgICpcbiAgICogSWYgbm8gYGNvbnRleHRTdG9yZWAgaXMgZ2l2ZW4sIGEgYE1lbW9yeUNvbnRleHRgIHdpbGwgYmUgdXNlZC4gVGhpcyBtZWFuc1xuICAgKiBubyBwcm92aWRlciBsb29rdXBzIHdpbGwgYmUgcGVyc2lzdGVkIGFueXdoZXJlIGJ5IGRlZmF1bHQuIFVzZSBhIGRpZmZlcmVudFxuICAgKiB0eXBlIG9mIGNvbnRleHQgc3RvcmUgaWYgeW91IHdhbnQgcGVyc2lzdGVuY2UgYmV0d2VlbiBzeW50aCBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gYnVpbGRlciAtIHRoZSBidWlsZGVyIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBwcm9wcyAtIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21Bc3NlbWJseUJ1aWxkZXIoXG4gICAgYnVpbGRlcjogQXNzZW1ibHlCdWlsZGVyLFxuICAgIHByb3BzOiBGcm9tQXNzZW1ibHlCdWlsZGVyT3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPElDbG91ZEFzc2VtYmx5U291cmNlPiB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBhd2FpdCB0aGlzLnNvdXJjZUJ1aWxkZXJTZXJ2aWNlcygpO1xuICAgIGNvbnN0IGNvbnRleHRTdG9yZSA9IHByb3BzLmNvbnRleHRTdG9yZSA/PyBuZXcgTWVtb3J5Q29udGV4dCgpO1xuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHRTdG9yZSxcbiAgICAgIGxvb2t1cHM6IHByb3BzLmxvb2t1cHMsXG4gICAgfTtcblxuICAgIGNvbnN0IG91dGRpciA9IHByb3BzLm91dGRpciA/IHBhdGgucmVzb2x2ZShwcm9wcy5vdXRkaXIpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIG5ldyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlKFxuICAgICAge1xuICAgICAgICBwcm9kdWNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IHN5bnRoUGFyYW1zID0gcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMocHJvcHMuc3ludGhPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IGZ1bGxDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4uYXdhaXQgY29udGV4dFN0b3JlLnJlYWQoKSxcbiAgICAgICAgICAgIC4uLnN5bnRoUGFyYW1zLmNvbnRleHQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGZvcm1hdCgnY29udGV4dDonLCBmdWxsQ29udGV4dCkpO1xuXG4gICAgICAgICAgY29uc3QgZW52ID0gbm9VbmRlZmluZWQoe1xuICAgICAgICAgICAgLy8gVmVyc2lvbmluZywgb3V0ZGlyLCBkZWZhdWx0IGFjY291bnQgYW5kIHJlZ2lvblxuICAgICAgICAgICAgLi4uYXdhaXQgZXhlY3V0aW9uLmRlZmF1bHRFbnZWYXJzKCksXG4gICAgICAgICAgICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgZGVyaXZlZCBmcm9tIHNldHRpbmdzXG4gICAgICAgICAgICAuLi5zeW50aFBhcmFtcy5lbnYsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBjbGVhbnVwQ29udGV4dFRlbXAgPSB3cml0ZUNvbnRleHRUb0VudihlbnYsIGZ1bGxDb250ZXh0KTtcbiAgICAgICAgICB1c2luZyBfY2xlYW51cEVudiA9IChwcm9wcy5jbG9iYmVyRW52ID8/IHRydWUpID8gdGVtcG9yYXJpbHlXcml0ZUVudihlbnYpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBhc3NlbWJseTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXNzZW1ibHkgPSBhd2FpdCBidWlsZGVyKHtcbiAgICAgICAgICAgICAgb3V0ZGlyOiBleGVjdXRpb24ub3V0ZGlyLFxuICAgICAgICAgICAgICBjb250ZXh0OiBmdWxsQ29udGV4dCxcbiAgICAgICAgICAgICAgZW52LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIC8vIHJlLXRocm93IHRvb2xraXQgZXJyb3JzIHVuY2hhbmdlZFxuICAgICAgICAgICAgaWYgKFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdyYXAgaW50byBhbiBhc3NlbWJseSBlcnJvclxuICAgICAgICAgICAgdGhyb3cgQXNzZW1ibHlFcnJvci53aXRoQ2F1c2UoJ0Fzc2VtYmx5IGJ1aWxkZXIgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhbnVwQ29udGV4dFRlbXAoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb252ZXJ0IHdoYXQgd2UgZ290IHRvIHRoZSBkZWZpbml0ZWx5IGNvcnJlY3QgdHlwZSB3ZSdyZSBleHBlY3RpbmcsIGEgY3hhcGkuQ2xvdWRBc3NlbWJseVxuICAgICAgICAgIGNvbnN0IGFzbSA9IGN4YXBpLkNsb3VkQXNzZW1ibHkuaXNDbG91ZEFzc2VtYmx5KGFzc2VtYmx5KVxuICAgICAgICAgICAgPyBhc3NlbWJseVxuICAgICAgICAgICAgOiBhd2FpdCBhc3NlbWJseUZyb21EaXJlY3RvcnkoYXNzZW1ibHkuZGlyZWN0b3J5LCBzZXJ2aWNlcy5pb0hlbHBlciwgcHJvcHMubG9hZEFzc2VtYmx5T3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZXhlY3V0aW9uLm1hcmtTdWNjZXNzZnVsKCk7XG4gICAgICAgICAgY29uc3QgZGVsZXRlT25EaXNwb3NlID0gcHJvcHMuZGlzcG9zZU91dGRpciA/PyBleGVjdXRpb24ub3V0RGlySXNUZW1wb3Jhcnk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkoYXNtLCBzdWNjZXNzLnJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZSB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGFuIGV4aXN0aW5nIGFzc2VtYmx5IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQSByZWFkIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBmb3IgdGhlIGRpcmVjdG9yeS4gVGhpcyBtZWFucyB0aGF0IHdoaWxlXG4gICAqIHRoZSBDbG91ZEFzc2VtYmx5IGlzIGJlaW5nIHVzZWQsIG5vIENESyBhcHAgc3ludGhlc2lzIGNhbiB0YWtlIHBsYWNlIGludG9cbiAgICogdGhhdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBkaXJlY3RvcnkgdGhlIGRpcmVjdG9yeSBvZiBhIGFscmVhZHkgcHJvZHVjZWQgQ2xvdWQgQXNzZW1ibHkuXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21Bc3NlbWJseURpcmVjdG9yeShkaXJlY3Rvcnk6IHN0cmluZywgcHJvcHM6IEFzc2VtYmx5RGlyZWN0b3J5UHJvcHMgPSB7fSk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0U3RvcmU6IG5ldyBNZW1vcnlDb250ZXh0KCksIC8vIEB0b2RvIFdlIHNob3VsZG4ndCBiZSB1c2luZyBhIGBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlYCBhdCBhbGwuXG4gICAgICBsb29rdXBzOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlKFxuICAgICAge1xuICAgICAgICBwcm9kdWNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgLy8gQHRvZG8gYnVpbGRcbiAgICAgICAgICBhd2FpdCBzZXJ2aWNlcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX0kwMTUwLm1zZygnLS1hcHAgcG9pbnRzIHRvIGEgY2xvdWQgYXNzZW1ibHksIHNvIHdlIGJ5cGFzcyBzeW50aCcpKTtcblxuICAgICAgICAgIGNvbnN0IHJlYWRMb2NrID0gYXdhaXQgbmV3IFJXTG9jayhkaXJlY3RvcnkpLmFjcXVpcmVSZWFkKCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShkaXJlY3RvcnksIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVDbG91ZEFzc2VtYmx5KGFzbSwgcmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlOiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBhd2FpdCByZWFkTG9jay5yZWxlYXNlKCk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBVc2UgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbiBBV1MgQ0RLIGFwcCBhcyBzb3VyY2UuXG4gICAqXG4gICAqIFRoZSBzdWJwcm9jZXNzIHdpbGwgZXhlY3V0ZSBpbiBgd29ya2luZ0RpcmVjdG9yeWAsIHdoaWNoIGRlZmF1bHRzIHRvXG4gICAqIHRoZSBjdXJyZW50IHByb2Nlc3MnIHdvcmtpbmcgZGlyZWN0b3J5IGlmIG5vdCBnaXZlbi5cbiAgICpcbiAgICogIyMgT3V0ZGlyXG4gICAqXG4gICAqIElmIGFuIG91dHB1dCBkaXJlY3RvcnkgaXMgc3VwcGxpZWQsIHJlbGF0aXZlIHBhdGhzIGFyZSBldmFsdWF0ZWQgd2l0aFxuICAgKiByZXNwZWN0IHRvIHRoZSBjdXJyZW50IHByb2Nlc3MnIHdvcmtpbmcgZGlyZWN0b3J5LiBJZiBhbiBvdXRwdXQgZGlyZWN0b3J5XG4gICAqIGlzIG5vdCBzdXBwbGllZCwgdGhlIGRlZmF1bHQgaXMgYSBgY2RrLm91dGAgZGlyZWN0b3J5IHVuZGVybmVhdGhcbiAgICogYHdvcmtpbmdEaXJlY3RvcnlgLiBUaGUgb3V0cHV0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogdHJ1ZWAuXG4gICAqXG4gICAqIEEgd3JpdGUgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgZHVyYXRpb24gb2ZcbiAgICogdGhlIENESyBhcHAgc3ludGhlc2lzICh3aGljaCBtZWFucyB0aGF0IG5vIHR3byBhcHBzIGNhbiBzeW50aGVzaXplIGF0IHRoZVxuICAgKiBzYW1lIHRpbWUpLCBhbmQgYWZ0ZXIgc3ludGhlc2lzIGEgcmVhZCBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgb24gdGhlXG4gICAqIGRpcmVjdG9yeS4gIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiAjIyBDb250ZXh0XG4gICAqXG4gICAqIElmIG5vIGBjb250ZXh0U3RvcmVgIGlzIGdpdmVuLCBhIGBDZGtBcHBNdWx0aUNvbnRleHRgIHdpbGwgYmUgdXNlZCwgaW5pdGlhbGl6ZWRcbiAgICogdG8gdGhlIGFwcCdzIGB3b3JraW5nRGlyZWN0b3J5YC4gVGhpcyBtZWFucyB0aGF0IGNvbnRleHQgd2lsbCBiZSBsb2FkZWQgZnJvbVxuICAgKiBhbGwgdGhlIENESydzIGRlZmF1bHQgY29udGV4dCBzb3VyY2VzLCBhbmQgdXBkYXRlcyB3aWxsIGJlIHdyaXR0ZW4gdG9cbiAgICogYGNkay5jb250ZXh0Lmpzb25gLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgLSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB0aGUgQ2xvdWRBc3NlbWJseSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmcm9tQ2RrQXBwKGFwcDogc3RyaW5nLCBwcm9wczogRnJvbUNka0FwcE9wdGlvbnMgPSB7fSk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCB3b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG91dGRpciA9IHByb3BzLm91dGRpciA/IHBhdGgucmVzb2x2ZShwcm9wcy5vdXRkaXIpIDogcGF0aC5yZXNvbHZlKHdvcmtpbmdEaXJlY3RvcnksICdjZGsub3V0Jyk7XG5cbiAgICBjb25zdCBjb250ZXh0U3RvcmUgPSBwcm9wcy5jb250ZXh0U3RvcmUgPz8gbmV3IENka0FwcE11bHRpQ29udGV4dCh3b3JraW5nRGlyZWN0b3J5KTtcblxuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHRTdG9yZSxcbiAgICAgIGxvb2t1cHM6IHByb3BzLmxvb2t1cHMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIGJ1aWxkXG4gICAgICAgICAgLy8gY29uc3QgYnVpbGQgPSB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSk7XG4gICAgICAgICAgLy8gaWYgKGJ1aWxkKSB7XG4gICAgICAgICAgLy8gICBhd2FpdCBleGVjSW5DaGlsZFByb2Nlc3MoYnVpbGQsIHsgY3dkOiBwcm9wcy53b3JraW5nRGlyZWN0b3J5IH0pO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5ta2RpcnBTeW5jKG91dGRpcik7XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkgYXQgJyR7b3V0ZGlyfScgKCR7ZS5tZXNzYWdlfSkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gYXdhaXQgZXhlY3V0aW9uLmd1ZXNzRXhlY3V0YWJsZShhcHApO1xuXG4gICAgICAgICAgY29uc3Qgc3ludGhQYXJhbXMgPSBwYXJhbWV0ZXJzRnJvbVN5bnRoT3B0aW9ucyhwcm9wcy5zeW50aE9wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3QgZnVsbENvbnRleHQgPSB7XG4gICAgICAgICAgICAuLi5hd2FpdCBjb250ZXh0U3RvcmUucmVhZCgpLFxuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuY29udGV4dCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoZm9ybWF0KCdjb250ZXh0OicsIGZ1bGxDb250ZXh0KSk7XG5cbiAgICAgICAgICBjb25zdCBlbnYgPSBub1VuZGVmaW5lZCh7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHN0YXJ0IHdpdGggZnVsbCBlbnYgb2YgYHdyaXRlQ29udGV4dFRvRW52YCB3aWxsIG5vdCBiZSBhYmxlIHRvIGRvIHRoZSBzaXplXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgICAgIC8vIFVzZXIgZ2F2ZSB1cyBzb21ldGhpbmdcbiAgICAgICAgICAgIC4uLnByb3BzLmVudixcbiAgICAgICAgICAgIC8vIFZlcnNpb25pbmcsIG91dGRpciwgZGVmYXVsdCBhY2NvdW50IGFuZCByZWdpb25cbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGRlcml2ZWQgZnJvbSBzZXR0aW5nc1xuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuZW52LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGNsZWFudXBUZW1wID0gd3JpdGVDb250ZXh0VG9FbnYoZW52LCBmdWxsQ29udGV4dCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGV4ZWNJbkNoaWxkUHJvY2Vzcyhjb21tYW5kTGluZS5qb2luKCcgJyksIHtcbiAgICAgICAgICAgICAgZXZlbnRQdWJsaXNoZXI6IGFzeW5jICh0eXBlLCBsaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZG91dCc6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTEwMDEubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZGVycic6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTEwMDIubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhbnVwVGVtcCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShvdXRkaXIsIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVPbkRpc3Bvc2UgPSBwcm9wcy5kaXNwb3NlT3V0ZGlyID8/IGV4ZWN1dGlvbi5vdXREaXJJc1RlbXBvcmFyeTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHN1Y2Nlc3MucmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbnRleHRBc3NlbWJseVByb3BzLFxuICAgICk7XG4gIH1cbn1cblxuIl19
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUE4QjtBQUU5Qix5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLG1EQUF3RjtBQUN4RixzQ0FBbUM7QUFDbkMsbURBQXNEO0FBRXRELHlFQUFpRjtBQUNqRix5Q0FBb0Q7QUFDcEQsNkRBQXNJO0FBQ3RJLG1FQUFvRTtBQUdwRSwrREFBMEU7QUFDMUUscUNBQXlDO0FBQ3pDLDJDQUFtQztBQUNuQywrQ0FBNEU7QUFtUTVFLE1BQXNCLDBCQUEwQjtJQU85Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0JHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQixDQUM5QixPQUF3QixFQUN4QixRQUFvQyxFQUFFO1FBRXRDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLDZCQUFhLEVBQUUsQ0FBQztRQUMvRCxNQUFNLG9CQUFvQixHQUFtQztZQUMzRCxRQUFRO1lBQ1IsWUFBWTtZQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVyRSxPQUFPLElBQUksc0RBQStCLENBQ3hDO1lBQ0UsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFOzs7b0JBQ2xCLE1BQVksU0FBUyxrQ0FBRyxNQUFNLHFDQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVB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O29DQUNSLEtBQUssYUFBYTt3Q0FDaEIsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0NBQ2hFLE1BQU07Z0NBQ1YsQ0FBQzs0QkFDSCxDQUFDOzRCQUNELEdBQUc7NEJBQ0gsR0FBRyxFQUFFLGdCQUFnQjt5QkFDdEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7NEJBQVMsQ0FBQzt3QkFDVCxNQUFNLFdBQVcsRUFBRSxDQUFDO29CQUN0QixDQUFDO29CQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFFOUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDO29CQUMzRSxPQUFPLElBQUkseUNBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7Ozs7OzthQUM5RTtTQUNGLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE3UEQsZ0VBNlBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeHNjaGVtYSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IENka0FwcE11bHRpQ29udGV4dCwgTWVtb3J5Q29udGV4dCwgdHlwZSBJQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uL3J3bG9jayc7XG5pbXBvcnQgeyBDYWNoZWRDbG91ZEFzc2VtYmx5IH0gZnJvbSAnLi9jYWNoZWQtc291cmNlJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzIH0gZnJvbSAnLi9wcml2YXRlL2NvbnRleHQtYXdhcmUtc291cmNlJztcbmltcG9ydCB7IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlTb3VyY2UgfSBmcm9tICcuL3ByaXZhdGUvY29udGV4dC1hd2FyZS1zb3VyY2UnO1xuaW1wb3J0IHsgZXhlY0luQ2hpbGRQcm9jZXNzIH0gZnJvbSAnLi9wcml2YXRlL2V4ZWMnO1xuaW1wb3J0IHsgRXhlY3V0aW9uRW52aXJvbm1lbnQsIGFzc2VtYmx5RnJvbURpcmVjdG9yeSwgcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMsIHdyaXRlQ29udGV4dFRvRW52IH0gZnJvbSAnLi9wcml2YXRlL3ByZXBhcmUtc291cmNlJztcbmltcG9ydCB7IFJlYWRhYmxlQ2xvdWRBc3NlbWJseSB9IGZyb20gJy4vcHJpdmF0ZS9yZWFkYWJsZS1hc3NlbWJseSc7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEFzc2VtYmx5U291cmNlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xraXRTZXJ2aWNlcyB9IGZyb20gJy4uLy4uL3Rvb2xraXQvcHJpdmF0ZSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IsIEFzc2VtYmx5RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHsgbm9VbmRlZmluZWQgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBtaXNzaW5nQ29udGV4dEtleXMsIHRlbXBvcmFyaWx5V3JpdGVFbnYgfSBmcm9tICcuL3ByaXZhdGUvaGVscGVycyc7XG5cbi8qKlxuICogUHJvcGVydGllcyB0aGUgYnVpbGRlciBmdW5jdGlvbiByZWNlaXZlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseUJ1aWxkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRvIHRoZSBidWlsZGVyIGFwcCB3aWxsIGVtaXQgc3ludGhlc2l6ZWQgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBwcm92aWRlZCB0cCB0aGUgYnVpbGRlciBhcHAgdG8gc3ludGhlc2l6ZSB0aGUgQ2xvdWQgQXNzZW1ibHksIGluY2x1ZGluZyBsb29rZWQtdXAgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCBub3JtYWxseSBiZSBwYXNzZWQgdG8gYSBDREsgYXBwIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKlxuICAgKiBUaGlzIGNvbnRhaW5zIHZhcmlhYmxlcyBpbnRlbmRlZCBmb3IgdGhlIHVzZXIgcG9ydGlvbiBvZiBhIENESyBhcHAgKG5vdGFibHlcbiAgICogYENES19ERUZBVUxUX0FDQ09VTlRgIGFuZCBgQ0RLX0RFRkFVTFRfUkVHSU9OYCksIHdoaWNoIHlvdSBjYW4gZnJlZWx5IHJlYWQuXG4gICAqXG4gICAqIEl0IGFsc28gY29udGFpbnMgdmFyaWFibGVzIGludGVuZGVkIGZvciB0aGUgQ0RLIFRvb2xraXQgdG8gY29tbXVuaWNhdGUgd2l0aFxuICAgKiB0aGUgaW50ZXJuYWxzIG9mIHRoZSBjb25zdHJ1Y3QgbGlicmFyeSwgbGlrZSBgQ0RLX0RFQlVHYCBhbmRcbiAgICogYENES19DTElfQVNNX1ZFUlNJT05gLiBSZWFkaW5nIHRoZXNlIGxhdHRlciB2YXJpYWJsZXMgaXMgcG9zc2libGUgYnV0IG5vdFxuICAgKiByZWNvbW1lbmRlZCwgYXMgdGhlaXIgbWVhbmluZyBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBzeW50aGVzaXMgcGFyYW1ldGVycyBhbmQgcHJvZHVjZXMgYSBDbG91ZCBBc3NlbWJseVxuICpcbiAqIE1vc3QgdHlwaWNhbGx5LCB0aGUgcHJvcGVydGllcyBwYXNzZWQgaGVyZSB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IGFcbiAqIGBjZGsuQXBwYCwgYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgYXBwLnN5bnRoKClgLlxuICovXG5leHBvcnQgdHlwZSBBc3NlbWJseUJ1aWxkZXIgPSAocHJvcHM6IEFzc2VtYmx5QnVpbGRlclByb3BzKSA9PiBQcm9taXNlPGN4c2NoZW1hLklDbG91ZEFzc2VtYmx5PjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBjcmVhdGluZyBhIENMSSBmcm9tIGFuIEFXUyBDREsgQXBwIGRpcmVjdG9yeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VtYmx5RGlyZWN0b3J5UHJvcHMge1xuICAvKipcbiAgICogT3B0aW9ucyB0byBjb25maWd1cmUgbG9hZGluZyBvZiB0aGUgYXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gc3ludGhlc2l6ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRBc3NlbWJseU9wdGlvbnM/OiBMb2FkQXNzZW1ibHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBmYWlsIGlmIHRoZSBzeW50aGVzaXplZCBhc3NlbWJseSBjb250YWluc1xuICAgKiBtaXNzaW5nIGNvbnRleHRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbE9uTWlzc2luZ0NvbnRleHQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIGEgQ0xJIGZyb20gYW4gQVdTIENESyBBcHAgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibHlTb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc3ludGhlc2l6ZWQgY2xvdWQgYXNzZW1ibHkgaW50byB0aGUgZ2l2ZW4gZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2RrLm91dFwiXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gY29udGV4dCBsb29rdXBzLlxuICAgKlxuICAgKiBTeW50aGVzaXMgZmFpbHMgaWYgdGhpcyBpcyBkaXNhYmxlZCBhbmQgY29udGV4dCBsb29rdXBzIG5lZWQgdG8gYmUgcGVyZm9ybWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsb29rdXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb250ZXh0IHN0b3JlIGZvciB0aGlzIG9wZXJhdGlvblxuICAgKlxuICAgKiBUaGUgY29udGV4dCBzdG9yZSB3aWxsIGJlIHVzZWQgdG8gc291cmNlIGluaXRpYWwgY29udGV4dCB2YWx1ZXMsXG4gICAqIGFuZCB1cGRhdGVkIHZhbHVlcyB3aWxsIGJlIHN0b3JlZCBoZXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlcGVuZHMgb24gdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dFN0b3JlPzogSUNvbnRleHRTdG9yZTtcblxuICAvKipcbiAgICogT3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdGhyb3VnaCB0aGUgY29udGV4dCB0byBhIENESyBhcHAgb24gc3ludGhcbiAgICovXG4gIHJlYWRvbmx5IHN5bnRoT3B0aW9ucz86IEFwcFN5bnRoT3B0aW9ucztcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBjb25maWd1cmUgbG9hZGluZyBvZiB0aGUgYXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gc3ludGhlc2l6ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRBc3NlbWJseU9wdGlvbnM/OiBMb2FkQXNzZW1ibHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGBvdXRkaXJgIHdoZW4gdGhlIGFzc2VtYmx5IGlzIGRpc3Bvc2VkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYHRydWVgIGlmIGBvdXRkaXJgIGlzIG5vdCBnaXZlbiwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc3Bvc2VPdXRkaXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgZnJvbUFzc2VtYmx5QnVpbGRlcmAgQXNzZW1ibHkgU291cmNlIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbUFzc2VtYmx5QnVpbGRlck9wdGlvbnMgZXh0ZW5kcyBBc3NlbWJseVNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIE11dGF0ZSBjdXJyZW50IHByb2Nlc3MnIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjb21tdW5pY2F0ZSB3aXRoIENESyBhcHBcbiAgICpcbiAgICogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGUgVG9vbGtpdCB1c2VzIHRvIHBhc3NcbiAgICogaW5mb3JtYXRpb24gdG8gdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGN1cnJlbnRcbiAgICogcHJvY2VzcycgZ2xvYmFsIHNoYXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYmVmb3JlIHRoZSBidWlsZGVyIGlzIGludm9rZWQsXG4gICAqIGFuZCB5b3UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBlbHNlLiBIb3dldmVyLCBiZWNhdXNlIHRoaXMgbXV0YXRlc1xuICAgKiBzaGFyZWQgc3RhdGUgaXQgaXMgbm90IHNhZmUgdG8gcnVuIG11bHRpcGxlIGJ1aWxkZXJzIGNvbmN1cnJlbnRseS5cbiAgICpcbiAgICogU2V0IHRoaXMgdG8gYGZhbHNlYCB0byBhdm9pZCBtdXRhdGluZyB0aGUgc2hhcmVkIGVudmlyb25tZW50LiBJbnN0ZWFkLFxuICAgKiB5b3Ugd2lsbCBuZWVkIHRvIHBhc3MgdGhlIGBvdXRkaXJgIGFuZCBgY29udGV4dGAgdG8gdGhlIGBBcHBgIGNvbnN0cnVjdG9yXG4gICAqIGRpcmVjdGx5IGluIHlvdXIgYnVpbGRlciwgYW5kIGluc3BlY3QgdGhlIGBlbnZgIG1hcCBkaXJlY3RseVxuICAgKiBmb3IgaW5mb3JtYXRpb24gbGlrZSB0aGUgYENES19ERUZBVUxUX0FDQ09VTlRgIGFuZCBgQ0RLX0RFRkFVTFRfUkVHSU9OYC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogY29uc3QgY3ggPSBhd2FpdCB0b29sa2l0LmZyb21Bc3NlbWJseUJ1aWxkZXIoYXN5bmMgKHByb3BzKSA9PiB7XG4gICAqICAgLy8gSW1wb3J0YW50OiBwYXNzIG9uIHN5bnRoZXNpcyBwYXJhbWV0ZXJzXG4gICAqICAgY29uc3QgYXBwID0gbmV3IGNvcmUuQXBwKHtcbiAgICogICAgIG91dGRpcjogcHJvcHMub3V0ZGlyLFxuICAgKiAgICAgY29udGV4dDogcHJvcHMuY29udGV4dCxcbiAgICogICB9KTtcbiAgICpcbiAgICogICBuZXcgTXlTdGFjayhhcHAsICdNeVN0YWNrJywge1xuICAgKiAgICAgZW52OiB7XG4gICAqICAgICAgIGFjY291bnQ6IHByb3BzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICAgKiAgICAgICByZWdpb246IHByb3BzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG4gICAqICAgICB9LFxuICAgKiAgIH0pO1xuICAgKlxuICAgKiAgIC8vIC4uLlxuICAgKiB9LCB7XG4gICAqICAgY2xvYmJlckVudjogZmFsc2UsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvYmJlckVudj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGBmcm9tQ2RrQXBwYCBBc3NlbWJseSBTb3VyY2UgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9tQ2RrQXBwT3B0aW9ucyBleHRlbmRzIEFzc2VtYmx5U291cmNlUHJvcHMge1xuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgYXBwbGljYXRpb24gaW4gdGhpcyB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKlxuICAgKiBUaGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2lsbCBiZSBzZXQgaW4gYWRkaXRpb24gdG8gdGhlIGVudmlyb25tZW50XG4gICAqIHZhcmlhYmxlcyBjdXJyZW50bHkgc2V0IGluIHRoZSBwcm9jZXNzLiBBIHZhbHVlIG9mIGB1bmRlZmluZWRgIHdpbGxcbiAgICogdW5zZXQgYSBwYXJ0aWN1bGFyIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cblxuLyoqXG4gKiBTZXR0aW5ncyB0aGF0IGFyZSBwYXNzZWQgdG8gYSBDREsgYXBwIHZpYSB0aGUgY29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN5bnRoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZWJ1ZyB0aGUgQ0RLIGFwcC5cbiAgICogTG9ncyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGR1cmluZyBzeW50aGVzaXMsIHN1Y2ggYXMgY3JlYXRpb24gc3RhY2sgdHJhY2VzIG9mIHRva2Vucy5cbiAgICogVGhpcyBhbHNvIHNldHMgdGhlIGBDREtfREVCVUdgIGVudiB2YXJpYWJsZSBhbmQgd2lsbCBzbG93IGRvd24gc3ludGhlc2lzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIHRoZSBlbWJlZGRpbmcgb2YgdGhlIFwiYXdzOmNkazpwYXRoXCIgaW4gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHBhdGhNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgY29sbGVjdGlvbiBhbmQgcmVwb3J0aW5nIG9mIHZlcnNpb24gaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25SZXBvcnRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGUgZW5hYmxlZCwgYGF3czphc3NldDp4eHhgIG1ldGFkYXRhIGVudHJpZXMgYXJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogRGlzYWJsaW5nIHRoaXMgY2FuIGJlIHVzZWZ1bCBpbiBjZXJ0YWluIGNhc2VzIGxpa2UgaW50ZWdyYXRpb24gdGVzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgYXNzZXQgc3RhZ2luZy5cbiAgICpcbiAgICogRGlzYWJsaW5nIGFzc2V0IHN0YWdpbmcgbWVhbnMgdGhhdCBjb3B5YWJsZSBhc3NldHMgd2lsbCBub3QgYmUgY29waWVkIHRvIHRoZVxuICAgKiBvdXRwdXQgZGlyZWN0b3J5IGFuZCB3aWxsIGJlIHJlZmVyZW5jZWQgd2l0aCBhYnNvbHV0ZSBwYXRocy5cbiAgICpcbiAgICogTm90IGNvcGllZCB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeTogdGhpcyBpcyBzbyB1c2VycyBjYW4gaXRlcmF0ZSBvbiB0aGVcbiAgICogTGFtYmRhIHNvdXJjZSBhbmQgcnVuIFNBTSBDTEkgd2l0aG91dCBoYXZpbmcgdG8gcmUtcnVuIENESyAobm90ZTogd2VcbiAgICogY2Fubm90IGFjaGlldmUgdGhpcyBmb3IgYnVuZGxlZCBhc3NldHMsIGlmIGFzc2V0cyBhcmUgYnVuZGxlZCB0aGV5XG4gICAqIHdpbGwgaGF2ZSB0byByZS1ydW4gQ0RLIENMSSB0byByZS1idW5kbGUgdXBkYXRlZCB2ZXJzaW9ucykuXG4gICAqXG4gICAqIEFic29sdXRlIHBhdGg6IFNBTSBDTEkgZXhwZWN0cyBgY3dkYC1yZWxhdGl2ZSBwYXRocyBpbiBhIHJlc291cmNlJ3NcbiAgICogYGF3czphc3NldDpwYXRoYCBtZXRhZGF0YS4gSW4gb3JkZXIgdG8gYmUgcHJlZGljdGFibGUsIHdlIHdpbGwgYWx3YXlzIG91dHB1dFxuICAgKiBhYnNvbHV0ZSBwYXRocy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRTdGFnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2VsZWN0IHdoaWNoIHN0YWNrcyBzaG91bGQgaGF2ZSBhc3NldCBidW5kbGluZyBlbmFibGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFtcIioqXCJdIC0gYWxsIHN0YWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgYnVuZGxpbmdGb3JTdGFja3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBjb25maWd1cmUgbG9hZGluZyBvZiB0aGUgYXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gc3ludGhlc2l6ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQXNzZW1ibHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIENoZWNrIHRoZSBUb29sa2l0IHN1cHBvcnRzIHRoZSBDbG91ZCBBc3NlbWJseSBTY2hlbWEgdmVyc2lvblxuICAgKlxuICAgKiBXaGVuIGRpc2FibGVkLCBhbGxvd3MgdG8gVG9vbGtpdCB0byByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQuIFlvdXIgYXBwbGljYXRpb24gbWF5IG5vdCBiZSBhd2FyZSBvZiBhbGwgZmVhdHVyZXMgdGhhdCBpbiB1c2UgaW4gdGhlIENsb3VkIEFzc2VtYmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjaGVja1ZlcnNpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBlbnVtcyB0byBvbmx5IGhhdmUga25vd24gdmFsdWVzXG4gICAqXG4gICAqIFdoZW4gZGlzYWJsZWQsIHRoZSBUb29sa2l0IG1heSByZWFkIGVudW0gdmFsdWVzIGl0IGRvZXNuJ3Qga25vdyBhYm91dCB5ZXQuXG4gICAqIFlvdSB3aWxsIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFsd2F5cyBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjaGVja0VudW1zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsb3VkQXNzZW1ibHlTb3VyY2VCdWlsZGVyIHtcbiAgLyoqXG4gICAqIEhlbHBlciB0byBwcm92aWRlIHRoZSBDbG91ZEFzc2VtYmx5U291cmNlQnVpbGRlciB3aXRoIHJlcXVpcmVkIHRvb2xraXQgc2VydmljZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc291cmNlQnVpbGRlclNlcnZpY2VzKCk6IFByb21pc2U8VG9vbGtpdFNlcnZpY2VzPjtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgQ2xvdWQgQXNzZW1ibHkgZnJvbSBhIENsb3VkIEFzc2VtYmx5IGJ1aWxkZXIgZnVuY3Rpb24uXG4gICAqXG4gICAqICMjIE91dGRpclxuICAgKlxuICAgKiBJZiBubyBvdXRwdXQgZGlyZWN0b3J5IGlzIGdpdmVuLCBpdCB3aWxsIHN5bnRoZXNpemUgaW50byBhIHRlbXBvcmFyeSBzeXN0ZW1cbiAgICogZGlyZWN0b3J5LiBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aWxsIGJlIGNsZWFuZWQgdXAsIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogZmFsc2VgLlxuICAgKlxuICAgKiBBIHdyaXRlIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAqIHRoZSBDREsgYXBwIHN5bnRoZXNpcyAod2hpY2ggbWVhbnMgdGhhdCBubyB0d28gYXBwcyBjYW4gc3ludGhlc2l6ZSBhdCB0aGVcbiAgICogc2FtZSB0aW1lKSwgYW5kIGFmdGVyIHN5bnRoZXNpcyBhIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZVxuICAgKiBkaXJlY3RvcnkuIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiAjIyBDb250ZXh0XG4gICAqXG4gICAqIElmIG5vIGBjb250ZXh0U3RvcmVgIGlzIGdpdmVuLCBhIGBNZW1vcnlDb250ZXh0YCB3aWxsIGJlIHVzZWQuIFRoaXMgbWVhbnNcbiAgICogbm8gcHJvdmlkZXIgbG9va3VwcyB3aWxsIGJlIHBlcnNpc3RlZCBhbnl3aGVyZSBieSBkZWZhdWx0LiBVc2UgYSBkaWZmZXJlbnRcbiAgICogdHlwZSBvZiBjb250ZXh0IHN0b3JlIGlmIHlvdSB3YW50IHBlcnNpc3RlbmNlIGJldHdlZW4gc3ludGggb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGJ1aWxkZXIgLSB0aGUgYnVpbGRlciBmdW5jdGlvblxuICAgKiBAcGFyYW0gcHJvcHMgLSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB0aGUgQ2xvdWRBc3NlbWJseSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmcm9tQXNzZW1ibHlCdWlsZGVyKFxuICAgIGJ1aWxkZXI6IEFzc2VtYmx5QnVpbGRlcixcbiAgICBwcm9wczogRnJvbUFzc2VtYmx5QnVpbGRlck9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCBjb250ZXh0U3RvcmUgPSBwcm9wcy5jb250ZXh0U3RvcmUgPz8gbmV3IE1lbW9yeUNvbnRleHQoKTtcbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0U3RvcmUsXG4gICAgICBsb29rdXBzOiBwcm9wcy5sb29rdXBzLFxuICAgIH07XG5cbiAgICBjb25zdCBvdXRkaXIgPSBwcm9wcy5vdXRkaXIgPyBwYXRoLnJlc29sdmUocHJvcHMub3V0ZGlyKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHVzaW5nIGV4ZWN1dGlvbiA9IGF3YWl0IEV4ZWN1dGlvbkVudmlyb25tZW50LmNyZWF0ZShzZXJ2aWNlcywgeyBvdXRkaXIgfSk7XG5cbiAgICAgICAgICBjb25zdCBzeW50aFBhcmFtcyA9IHBhcmFtZXRlcnNGcm9tU3ludGhPcHRpb25zKHByb3BzLnN5bnRoT3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBmdWxsQ29udGV4dCA9IHtcbiAgICAgICAgICAgIC4uLmF3YWl0IGNvbnRleHRTdG9yZS5yZWFkKCksXG4gICAgICAgICAgICAuLi5zeW50aFBhcmFtcy5jb250ZXh0LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBhd2FpdCBzZXJ2aWNlcy5pb0hlbHBlci5kZWZhdWx0cy5kZWJ1Zyhmb3JtYXQoJ2NvbnRleHQ6JywgZnVsbENvbnRleHQpKTtcblxuICAgICAgICAgIGNvbnN0IGVudiA9IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgICAgIC8vIFZlcnNpb25pbmcsIG91dGRpciwgZGVmYXVsdCBhY2NvdW50IGFuZCByZWdpb25cbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGRlcml2ZWQgZnJvbSBzZXR0aW5nc1xuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuZW52LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgY2xlYW51cENvbnRleHRUZW1wID0gd3JpdGVDb250ZXh0VG9FbnYoZW52LCBmdWxsQ29udGV4dCk7XG4gICAgICAgICAgdXNpbmcgX2NsZWFudXBFbnYgPSAocHJvcHMuY2xvYmJlckVudiA/PyB0cnVlKSA/IHRlbXBvcmFyaWx5V3JpdGVFbnYoZW52KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgYXNzZW1ibHk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFzc2VtYmx5ID0gYXdhaXQgYnVpbGRlcih7XG4gICAgICAgICAgICAgIG91dGRpcjogZXhlY3V0aW9uLm91dGRpcixcbiAgICAgICAgICAgICAgY29udGV4dDogZnVsbENvbnRleHQsXG4gICAgICAgICAgICAgIGVudixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgICAvLyByZS10aHJvdyB0b29sa2l0IGVycm9ycyB1bmNoYW5nZWRcbiAgICAgICAgICAgIGlmIChUb29sa2l0RXJyb3IuaXNUb29sa2l0RXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB3cmFwIGludG8gYW4gYXNzZW1ibHkgZXJyb3JcbiAgICAgICAgICAgIHRocm93IEFzc2VtYmx5RXJyb3Iud2l0aENhdXNlKCdBc3NlbWJseSBidWlsZGVyIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW51cENvbnRleHRUZW1wKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ29udmVydCB3aGF0IHdlIGdvdCB0byB0aGUgZGVmaW5pdGVseSBjb3JyZWN0IHR5cGUgd2UncmUgZXhwZWN0aW5nLCBhIGN4YXBpLkNsb3VkQXNzZW1ibHlcbiAgICAgICAgICBjb25zdCBhc20gPSBjeGFwaS5DbG91ZEFzc2VtYmx5LmlzQ2xvdWRBc3NlbWJseShhc3NlbWJseSlcbiAgICAgICAgICAgID8gYXNzZW1ibHlcbiAgICAgICAgICAgIDogYXdhaXQgYXNzZW1ibHlGcm9tRGlyZWN0b3J5KGFzc2VtYmx5LmRpcmVjdG9yeSwgc2VydmljZXMuaW9IZWxwZXIsIHByb3BzLmxvYWRBc3NlbWJseU9wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGV4ZWN1dGlvbi5tYXJrU3VjY2Vzc2Z1bCgpO1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZU9uRGlzcG9zZSA9IHByb3BzLmRpc3Bvc2VPdXRkaXIgPz8gZXhlY3V0aW9uLm91dERpcklzVGVtcG9yYXJ5O1xuICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVDbG91ZEFzc2VtYmx5KGFzbSwgc3VjY2Vzcy5yZWFkTG9jaywgeyBkZWxldGVPbkRpc3Bvc2UgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29udGV4dEFzc2VtYmx5UHJvcHMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ2xvdWQgQXNzZW1ibHkgZnJvbSBhbiBleGlzdGluZyBhc3NlbWJseSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEEgcmVhZCBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgZm9yIHRoZSBkaXJlY3RvcnkuIFRoaXMgbWVhbnMgdGhhdCB3aGlsZVxuICAgKiB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREsgYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvXG4gICAqIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0b3J5IC0gZGlyZWN0b3J5IHRoZSBkaXJlY3Rvcnkgb2YgYSBhbHJlYWR5IHByb2R1Y2VkIENsb3VkIEFzc2VtYmx5LlxuICAgKiBAcmV0dXJucyB0aGUgQ2xvdWRBc3NlbWJseSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmcm9tQXNzZW1ibHlEaXJlY3RvcnkoZGlyZWN0b3J5OiBzdHJpbmcsIHByb3BzOiBBc3NlbWJseURpcmVjdG9yeVByb3BzID0ge30pOiBQcm9taXNlPElDbG91ZEFzc2VtYmx5U291cmNlPiB7XG4gICAgY29uc3Qgc2VydmljZXM6IFRvb2xraXRTZXJ2aWNlcyA9IGF3YWl0IHRoaXMuc291cmNlQnVpbGRlclNlcnZpY2VzKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXN5bmMgcHJvZHVjZSgpIHtcbiAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMDE1MC5tc2coJy0tYXBwIHBvaW50cyB0byBhIGNsb3VkIGFzc2VtYmx5LCBzbyB3ZSBieXBhc3Mgc3ludGgnKSk7XG4gICAgICAgIGNvbnN0IHJlYWRMb2NrID0gYXdhaXQgbmV3IFJXTG9jayhkaXJlY3RvcnkpLmFjcXVpcmVSZWFkKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXNtID0gYXdhaXQgYXNzZW1ibHlGcm9tRGlyZWN0b3J5KGRpcmVjdG9yeSwgc2VydmljZXMuaW9IZWxwZXIsIHByb3BzLmxvYWRBc3NlbWJseU9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGFzc2VtYmx5ID0gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZTogZmFsc2UgfSk7XG4gICAgICAgICAgaWYgKGFzc2VtYmx5LmNsb3VkQXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyAmJiBhc3NlbWJseS5jbG91ZEFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmZhaWxPbk1pc3NpbmdDb250ZXh0ID8/IHRydWUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbWlzc2luZ0tleXNTZXQgPSBtaXNzaW5nQ29udGV4dEtleXMoYXNzZW1ibHkuY2xvdWRBc3NlbWJseS5tYW5pZmVzdC5taXNzaW5nKTtcbiAgICAgICAgICAgICAgY29uc3QgbWlzc2luZ0tleXMgPSBBcnJheS5mcm9tKG1pc3NpbmdLZXlzU2V0KTtcbiAgICAgICAgICAgICAgdGhyb3cgQXNzZW1ibHlFcnJvci53aXRoQ2F1c2UoXG4gICAgICAgICAgICAgICAgJ0Fzc2VtYmx5IGNvbnRhaW5zIG1pc3NpbmcgY29udGV4dC4gJyArXG4gICAgICAgICAgICAgICAgICBcIk1ha2Ugc3VyZSBhbGwgbmVjZXNzYXJ5IGNvbnRleHQgaXMgYWxyZWFkeSBpbiAnY2RrLmNvbnRleHQuanNvbicgYnkgcnVubmluZyAnY2RrIHN5bnRoJyBvbiBhIG1hY2hpbmUgd2l0aCBzdWZmaWNpZW50IEFXUyBjcmVkZW50aWFscyBhbmQgY29tbWl0dGluZyB0aGUgcmVzdWx0LiBcIiArXG4gICAgICAgICAgICAgICAgICBgTWlzc2luZyBjb250ZXh0IGtleXM6ICcke21pc3NpbmdLZXlzLmpvaW4oJywgJyl9J2AsXG4gICAgICAgICAgICAgICAgJ0Vycm9yIHByb2R1Y2luZyBhc3NlbWJseScsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ2xvdWRBc3NlbWJseShhc3NlbWJseSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBhd2FpdCByZWFkTG9jay5yZWxlYXNlKCk7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBVc2UgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbiBBV1MgQ0RLIGFwcCBhcyBzb3VyY2UuXG4gICAqXG4gICAqIFRoZSBzdWJwcm9jZXNzIHdpbGwgZXhlY3V0ZSBpbiBgd29ya2luZ0RpcmVjdG9yeWAsIHdoaWNoIGRlZmF1bHRzIHRvXG4gICAqIHRoZSBjdXJyZW50IHByb2Nlc3MnIHdvcmtpbmcgZGlyZWN0b3J5IGlmIG5vdCBnaXZlbi5cbiAgICpcbiAgICogIyMgT3V0ZGlyXG4gICAqXG4gICAqIElmIGFuIG91dHB1dCBkaXJlY3RvcnkgaXMgc3VwcGxpZWQsIHJlbGF0aXZlIHBhdGhzIGFyZSBldmFsdWF0ZWQgd2l0aFxuICAgKiByZXNwZWN0IHRvIHRoZSBjdXJyZW50IHByb2Nlc3MnIHdvcmtpbmcgZGlyZWN0b3J5LiBJZiBhbiBvdXRwdXQgZGlyZWN0b3J5XG4gICAqIGlzIG5vdCBzdXBwbGllZCwgdGhlIGRlZmF1bHQgaXMgYSBgY2RrLm91dGAgZGlyZWN0b3J5IHVuZGVybmVhdGhcbiAgICogYHdvcmtpbmdEaXJlY3RvcnlgLiBUaGUgb3V0cHV0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogdHJ1ZWAuXG4gICAqXG4gICAqIEEgd3JpdGUgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgZHVyYXRpb24gb2ZcbiAgICogdGhlIENESyBhcHAgc3ludGhlc2lzICh3aGljaCBtZWFucyB0aGF0IG5vIHR3byBhcHBzIGNhbiBzeW50aGVzaXplIGF0IHRoZVxuICAgKiBzYW1lIHRpbWUpLCBhbmQgYWZ0ZXIgc3ludGhlc2lzIGEgcmVhZCBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgb24gdGhlXG4gICAqIGRpcmVjdG9yeS4gIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiAjIyBDb250ZXh0XG4gICAqXG4gICAqIElmIG5vIGBjb250ZXh0U3RvcmVgIGlzIGdpdmVuLCBhIGBDZGtBcHBNdWx0aUNvbnRleHRgIHdpbGwgYmUgdXNlZCwgaW5pdGlhbGl6ZWRcbiAgICogdG8gdGhlIGFwcCdzIGB3b3JraW5nRGlyZWN0b3J5YC4gVGhpcyBtZWFucyB0aGF0IGNvbnRleHQgd2lsbCBiZSBsb2FkZWQgZnJvbVxuICAgKiBhbGwgdGhlIENESydzIGRlZmF1bHQgY29udGV4dCBzb3VyY2VzLCBhbmQgdXBkYXRlcyB3aWxsIGJlIHdyaXR0ZW4gdG9cbiAgICogYGNkay5jb250ZXh0Lmpzb25gLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgLSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB0aGUgQ2xvdWRBc3NlbWJseSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmcm9tQ2RrQXBwKGFwcDogc3RyaW5nLCBwcm9wczogRnJvbUNka0FwcE9wdGlvbnMgPSB7fSk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCB3b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG91dGRpciA9IHByb3BzLm91dGRpciA/IHBhdGgucmVzb2x2ZShwcm9wcy5vdXRkaXIpIDogcGF0aC5yZXNvbHZlKHdvcmtpbmdEaXJlY3RvcnksICdjZGsub3V0Jyk7XG5cbiAgICBjb25zdCBjb250ZXh0U3RvcmUgPSBwcm9wcy5jb250ZXh0U3RvcmUgPz8gbmV3IENka0FwcE11bHRpQ29udGV4dCh3b3JraW5nRGlyZWN0b3J5KTtcblxuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHRTdG9yZSxcbiAgICAgIGxvb2t1cHM6IHByb3BzLmxvb2t1cHMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIGJ1aWxkXG4gICAgICAgICAgLy8gY29uc3QgYnVpbGQgPSB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSk7XG4gICAgICAgICAgLy8gaWYgKGJ1aWxkKSB7XG4gICAgICAgICAgLy8gICBhd2FpdCBleGVjSW5DaGlsZFByb2Nlc3MoYnVpbGQsIHsgY3dkOiBwcm9wcy53b3JraW5nRGlyZWN0b3J5IH0pO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5ta2RpcnBTeW5jKG91dGRpcik7XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkgYXQgJyR7b3V0ZGlyfScgKCR7ZS5tZXNzYWdlfSkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gYXdhaXQgZXhlY3V0aW9uLmd1ZXNzRXhlY3V0YWJsZShhcHApO1xuXG4gICAgICAgICAgY29uc3Qgc3ludGhQYXJhbXMgPSBwYXJhbWV0ZXJzRnJvbVN5bnRoT3B0aW9ucyhwcm9wcy5zeW50aE9wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3QgZnVsbENvbnRleHQgPSB7XG4gICAgICAgICAgICAuLi5hd2FpdCBjb250ZXh0U3RvcmUucmVhZCgpLFxuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuY29udGV4dCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoZm9ybWF0KCdjb250ZXh0OicsIGZ1bGxDb250ZXh0KSk7XG5cbiAgICAgICAgICBjb25zdCBlbnYgPSBub1VuZGVmaW5lZCh7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHN0YXJ0IHdpdGggZnVsbCBlbnYgb2YgYHdyaXRlQ29udGV4dFRvRW52YCB3aWxsIG5vdCBiZSBhYmxlIHRvIGRvIHRoZSBzaXplXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgICAgIC8vIFVzZXIgZ2F2ZSB1cyBzb21ldGhpbmdcbiAgICAgICAgICAgIC4uLnByb3BzLmVudixcbiAgICAgICAgICAgIC8vIFZlcnNpb25pbmcsIG91dGRpciwgZGVmYXVsdCBhY2NvdW50IGFuZCByZWdpb25cbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGRlcml2ZWQgZnJvbSBzZXR0aW5nc1xuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuZW52LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGNsZWFudXBUZW1wID0gd3JpdGVDb250ZXh0VG9FbnYoZW52LCBmdWxsQ29udGV4dCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGV4ZWNJbkNoaWxkUHJvY2Vzcyhjb21tYW5kTGluZS5qb2luKCcgJyksIHtcbiAgICAgICAgICAgICAgZXZlbnRQdWJsaXNoZXI6IGFzeW5jICh0eXBlLCBsaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZG91dCc6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTEwMDEubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZGVycic6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTEwMDIubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhbnVwVGVtcCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShvdXRkaXIsIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVPbkRpc3Bvc2UgPSBwcm9wcy5kaXNwb3NlT3V0ZGlyID8/IGV4ZWN1dGlvbi5vdXREaXJJc1RlbXBvcmFyeTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHN1Y2Nlc3MucmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbnRleHRBc3NlbWJseVByb3BzLFxuICAgICk7XG4gIH1cbn1cblxuIl19
|
|
@@ -53,3 +53,4 @@ export declare abstract class BaseStackAssembly implements IStackAssembly {
|
|
|
53
53
|
protected selectMatchingStacks(stacks: cxapi.CloudFormationStackArtifact[], patterns: string[], extend?: ExtendedStackSelection): Promise<StackCollection>;
|
|
54
54
|
protected extendStacks(matched: cxapi.CloudFormationStackArtifact[], all: cxapi.CloudFormationStackArtifact[], extend?: ExtendedStackSelection): Promise<StackCollection>;
|
|
55
55
|
}
|
|
56
|
+
//# sourceMappingURL=stack-assembly.d.ts.map
|
|
@@ -20,3 +20,4 @@ export type TemplateBodyParameter = {
|
|
|
20
20
|
* @param toolkitInfo - information about the toolkit stack
|
|
21
21
|
*/
|
|
22
22
|
export declare function makeBodyParameter(ioHelper: IoHelper, stack: CloudFormationStackArtifact, resolvedEnvironment: Environment, assetManifest: AssetManifestBuilder, resources: EnvironmentResources, overrideTemplate?: any): Promise<TemplateBodyParameter>;
|
|
23
|
+
//# sourceMappingURL=template-body-parameter.d.ts.map
|
package/lib/api/context.d.ts
CHANGED
|
@@ -9,3 +9,4 @@ import type { IoHelper } from '../io/private';
|
|
|
9
9
|
* pass Asset coordinates.
|
|
10
10
|
*/
|
|
11
11
|
export declare function addMetadataAssetsToManifest(ioHelper: IoHelper, stack: cxapi.CloudFormationStackArtifact, assetManifest: AssetManifestBuilder, envResources: EnvironmentResources, reuse?: string[]): Promise<Record<string, string>>;
|
|
12
|
+
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -19,3 +19,4 @@ export interface ReplacementRequiresRollbackStackResult {
|
|
|
19
19
|
readonly type: 'replacement-requires-rollback';
|
|
20
20
|
}
|
|
21
21
|
export declare function assertIsSuccessfulDeployStackResult(x: DeployStackResult): asserts x is SuccessfulDeployStackResult;
|
|
22
|
+
//# sourceMappingURL=deployment-result.d.ts.map
|
package/lib/api/diff/index.d.ts
CHANGED
package/lib/api/drift/drift.d.ts
CHANGED
|
@@ -10,3 +10,4 @@ import type { IoHelper } from '../io/private';
|
|
|
10
10
|
* @returns the CloudFormation description of the drift detection results
|
|
11
11
|
*/
|
|
12
12
|
export declare function detectStackDrift(cfn: ICloudFormationClient, ioHelper: IoHelper, stackName: string): Promise<DescribeStackResourceDriftsCommandOutput>;
|
|
13
|
+
//# sourceMappingURL=drift.d.ts.map
|
package/lib/api/drift/index.d.ts
CHANGED
|
@@ -2,3 +2,4 @@ import { type HotswapChange } from './common';
|
|
|
2
2
|
import type { ResourceChange } from '../../payloads/hotswap';
|
|
3
3
|
import type { EvaluateCloudFormationTemplate } from '../cloudformation';
|
|
4
4
|
export declare function isHotswappableAppSyncChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
|
|
5
|
+
//# sourceMappingURL=appsync-mapping-templates.d.ts.map
|
|
@@ -2,3 +2,4 @@ import { type HotswapChange } from './common';
|
|
|
2
2
|
import type { ResourceChange } from '../../payloads/hotswap';
|
|
3
3
|
import type { EvaluateCloudFormationTemplate } from '../cloudformation';
|
|
4
4
|
export declare function isHotswappableCodeBuildProjectChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
|
|
5
|
+
//# sourceMappingURL=code-build-projects.d.ts.map
|
|
@@ -93,3 +93,4 @@ export declare function classifyChanges(xs: ResourceChange, hotswappablePropName
|
|
|
93
93
|
export declare function nonHotswappableChange(change: ResourceChange, reason: NonHotswappableReason, description: string, nonHotswappableProps?: PropDiffs, hotswapOnlyVisible?: boolean): RejectedChange;
|
|
94
94
|
export declare function nonHotswappableResource(change: ResourceChange): RejectedChange;
|
|
95
95
|
export {};
|
|
96
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -2,3 +2,4 @@ import type { HotswapPropertyOverrides, HotswapChange } from './common';
|
|
|
2
2
|
import { type ResourceChange } from '../../payloads/hotswap';
|
|
3
3
|
import type { EvaluateCloudFormationTemplate } from '../cloudformation';
|
|
4
4
|
export declare function isHotswappableEcsServiceChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate, hotswapPropertyOverrides: HotswapPropertyOverrides): Promise<HotswapChange[]>;
|
|
5
|
+
//# sourceMappingURL=ecs-services.d.ts.map
|
|
@@ -15,3 +15,4 @@ export declare function tryHotswapDeployment(sdkProvider: SdkProvider, ioHelper:
|
|
|
15
15
|
[key: string]: string;
|
|
16
16
|
}, cloudFormationStack: CloudFormationStack, stackArtifact: cxapi.CloudFormationStackArtifact, hotswapMode: HotswapMode, hotswapPropertyOverrides: HotswapPropertyOverrides): Promise<SuccessfulDeployStackResult | undefined>;
|
|
17
17
|
export {};
|
|
18
|
+
//# sourceMappingURL=hotswap-deployments.d.ts.map
|
|
@@ -2,3 +2,4 @@ import type { HotswapChange } from './common';
|
|
|
2
2
|
import type { ResourceChange } from '../../payloads/hotswap';
|
|
3
3
|
import { type EvaluateCloudFormationTemplate } from '../cloudformation';
|
|
4
4
|
export declare function isHotswappableLambdaFunctionChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
|
|
5
|
+
//# sourceMappingURL=lambda-functions.d.ts.map
|
|
@@ -3,3 +3,4 @@ import type { ResourceChange } from '../../payloads/hotswap';
|
|
|
3
3
|
import type { EvaluateCloudFormationTemplate } from '../cloudformation';
|
|
4
4
|
export declare function isHotswappableS3BucketDeploymentChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
|
|
5
5
|
export declare function skipChangeForS3DeployCustomResourcePolicy(iamPolicyLogicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<boolean>;
|
|
6
|
+
//# sourceMappingURL=s3-bucket-deployments.d.ts.map
|
|
@@ -2,3 +2,4 @@ import { type HotswapChange } from './common';
|
|
|
2
2
|
import type { ResourceChange } from '../../payloads/hotswap';
|
|
3
3
|
import type { EvaluateCloudFormationTemplate } from '../cloudformation';
|
|
4
4
|
export declare function isHotswappableStateMachineChange(logicalId: string, change: ResourceChange, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise<HotswapChange[]>;
|
|
5
|
+
//# sourceMappingURL=stepfunctions-state-machines.d.ts.map
|
package/lib/api/index.d.ts
CHANGED
package/lib/api/io/index.d.ts
CHANGED
package/lib/api/io/io-host.d.ts
CHANGED
|
@@ -2,3 +2,4 @@
|
|
|
2
2
|
* The current action being performed by the Toolkit.
|
|
3
3
|
*/
|
|
4
4
|
export type ToolkitAction = 'assembly' | 'bootstrap' | 'synth' | 'list' | 'diff' | 'deploy' | 'drift' | 'rollback' | 'watch' | 'destroy' | 'doctor' | 'gc' | 'import' | 'metadata' | 'init' | 'migrate' | 'refactor';
|
|
5
|
+
//# sourceMappingURL=toolkit-action.d.ts.map
|
|
@@ -23,3 +23,4 @@ export interface FoundLogGroupsResult {
|
|
|
23
23
|
readonly logGroupNames: string[];
|
|
24
24
|
}
|
|
25
25
|
export declare function findCloudWatchLogGroups(sdkProvider: SdkProvider, ioHelper: IoHelper, stackArtifact: CloudFormationStackArtifact): Promise<FoundLogGroupsResult>;
|
|
26
|
+
//# sourceMappingURL=find-cloudwatch-logs.d.ts.map
|