@cdklabs/cdk-appmod-catalog-blueprints 1.16.1 → 1.17.1
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 +963 -146
- package/lib/document-processing/adapter/queued-s3-adapter.js +39 -5
- package/lib/document-processing/agentic-document-processing.js +6 -4
- package/lib/document-processing/base-document-processing.js +16 -4
- package/lib/document-processing/bedrock-document-processing.d.ts +1 -0
- package/lib/document-processing/bedrock-document-processing.js +117 -70
- package/lib/document-processing/default-document-processing-config.js +3 -5
- package/lib/document-processing/index.d.ts +2 -0
- package/lib/document-processing/index.js +3 -1
- package/lib/document-processing/localstack-agentic-document-processing.d.ts +20 -0
- package/lib/document-processing/localstack-agentic-document-processing.js +99 -0
- package/lib/document-processing/localstack-bedrock-document-processing.d.ts +16 -0
- package/lib/document-processing/localstack-bedrock-document-processing.js +69 -0
- package/lib/document-processing/resources/cleanup/handler.py +16 -1
- package/lib/document-processing/resources/default-localstack-invoke/index.py +184 -0
- package/lib/document-processing/resources/default-localstack-invoke/provider_runtime.py +251 -0
- package/lib/document-processing/resources/default-localstack-invoke/requirements.txt +5 -0
- package/lib/document-processing/resources/default-sqs-consumer/index.py +17 -2
- package/lib/document-processing/resources/pdf-chunking/handler.py +16 -1
- package/lib/document-processing/tests/base-document-processing-nag.test.js +3 -1
- package/lib/document-processing/tests/base-document-processing-schema.test.js +6 -1
- package/lib/document-processing/tests/base-document-processing.test.js +12 -1
- package/lib/document-processing/tests/localstack-agentic-document-processing.test.d.ts +1 -0
- package/lib/document-processing/tests/localstack-agentic-document-processing.test.js +111 -0
- package/lib/document-processing/tests/localstack-document-processing.test.d.ts +1 -0
- package/lib/document-processing/tests/localstack-document-processing.test.js +149 -0
- package/lib/document-processing/tests/queued-s3-adapter-nag.test.js +3 -1
- package/lib/document-processing/tests/queued-s3-adapter.test.js +3 -1
- package/lib/framework/agents/base-agent.js +31 -4
- package/lib/framework/agents/batch-agent.d.ts +1 -0
- package/lib/framework/agents/batch-agent.js +42 -7
- package/lib/framework/agents/default-agent-config.js +3 -5
- package/lib/framework/agents/index.d.ts +1 -0
- package/lib/framework/agents/index.js +2 -1
- package/lib/framework/agents/interactive-agent.js +115 -23
- package/lib/framework/agents/knowledge-base/base-knowledge-base.js +30 -4
- package/lib/framework/agents/knowledge-base/bedrock-knowledge-base.js +81 -5
- package/lib/framework/agents/localstack-batch-agent.d.ts +15 -0
- package/lib/framework/agents/localstack-batch-agent.js +64 -0
- package/lib/framework/agents/resources/default-ollama-agent/batch.py +396 -0
- package/lib/framework/agents/resources/default-ollama-agent/models.py +7 -0
- package/lib/framework/agents/resources/default-ollama-agent/requirements.txt +9 -0
- package/lib/framework/agents/resources/default-ollama-agent/runtime_support.py +237 -0
- package/lib/framework/agents/resources/default-ollama-agent/utils.py +77 -0
- package/lib/framework/agents/tests/agent-knowledge-base-nag.test.js +35 -2
- package/lib/framework/bedrock/bedrock.d.ts +9 -0
- package/lib/framework/bedrock/bedrock.js +20 -12
- package/lib/framework/custom-resource/default-runtimes.js +20 -22
- package/lib/framework/foundation/access-log.js +50 -7
- package/lib/framework/foundation/eventbridge-broker.js +5 -4
- package/lib/framework/foundation/network.js +4 -4
- package/lib/framework/index.d.ts +1 -0
- package/lib/framework/index.js +2 -1
- package/lib/framework/localstack/index.d.ts +1 -0
- package/lib/framework/localstack/index.js +18 -0
- package/lib/framework/localstack/localstack-config.d.ts +79 -0
- package/lib/framework/localstack/localstack-config.js +47 -0
- package/lib/framework/tests/base-agent-knowledge-base.test.js +35 -2
- package/lib/framework/tests/batch-agent.test.js +35 -2
- package/lib/framework/tests/framework-nag.test.js +35 -2
- package/lib/framework/tests/interactive-agent-nag.test.js +35 -2
- package/lib/framework/tests/interactive-agent.test.js +35 -2
- package/lib/framework/tests/localstack-batch-agent.test.d.ts +1 -0
- package/lib/framework/tests/localstack-batch-agent.test.js +100 -0
- package/lib/utilities/data-loader.js +50 -5
- package/lib/utilities/lambda-iam-utils.js +38 -7
- package/lib/utilities/lambda_layers/data-masking/layer-construct.js +40 -3
- package/lib/utilities/observability/bedrock-observability.js +38 -2
- package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +3 -4
- package/lib/utilities/observability/cloudwatch-transaction-search.js +36 -5
- package/lib/utilities/observability/default-observability-config.js +6 -8
- package/lib/utilities/observability/lambda-observability-property-injector.js +4 -4
- package/lib/utilities/observability/log-group-data-protection-utils.js +2 -4
- package/lib/utilities/observability/observability.js +47 -6
- package/lib/utilities/observability/powertools-config.js +2 -4
- package/lib/utilities/observability/state-machine-observability-property-injector.js +4 -4
- package/lib/webapp/frontend-construct.js +46 -5
- package/lib/webapp/tests/frontend-construct-nag.test.js +36 -3
- package/lib/webapp/tests/frontend-construct.test.js +36 -3
- package/package.json +60 -61
- package/lib/tsconfig.tsbuildinfo +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.Network = void 0;
|
|
5
4
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
@@ -8,12 +7,15 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
8
7
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
9
8
|
const constructs_1 = require("constructs");
|
|
10
9
|
class Network extends constructs_1.Construct {
|
|
10
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.Network", version: "1.17.1" };
|
|
11
11
|
static useExistingVPCFromLookup(scope, id, options) {
|
|
12
12
|
const vpc = aws_ec2_1.Vpc.fromLookup(scope, `${id}-existingVpc`, options);
|
|
13
13
|
return new Network(scope, id, {
|
|
14
14
|
existingVpc: vpc,
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
|
+
vpc;
|
|
18
|
+
props;
|
|
17
19
|
constructor(scope, id, props = {}) {
|
|
18
20
|
super(scope, id);
|
|
19
21
|
this.props = props;
|
|
@@ -94,6 +96,4 @@ class Network extends constructs_1.Construct {
|
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
exports.Network = Network;
|
|
97
|
-
|
|
98
|
-
Network[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.Network", version: "1.16.1" };
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvZm91bmRhdGlvbi9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QyxpREFBK1M7QUFDL1MsMkNBQXVDO0FBY3ZDLE1BQWEsT0FBUSxTQUFRLHNCQUFTO0lBQzdCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUF5QjtRQUM1RixNQUFNLEdBQUcsR0FBRyxhQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM1QixXQUFXLEVBQUUsR0FBRztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBS0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFzQixFQUFFO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLGFBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUM5QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxxQkFBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ2pFLFdBQVcsRUFBRSxDQUFDO29CQUNkLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtvQkFDcEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUN0QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1C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OztBQTlGSCwwQkErRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBHYXRld2F5VnBjRW5kcG9pbnRBd3NTZXJ2aWNlLCBJSXBBZGRyZXNzZXMsIEludGVyZmFjZVZwY0VuZHBvaW50LCBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UsIEludGVyZmFjZVZwY0VuZHBvaW50U2VydmljZSwgSXBBZGRyZXNzZXMsIElQZWVyLCBJVnBjLCBOYXRQcm92aWRlciwgUGVlciwgUG9ydCwgU2VjdXJpdHlHcm91cCwgU3VibmV0Q29uZmlndXJhdGlvbiwgU3VibmV0U2VsZWN0aW9uLCBTdWJuZXRUeXBlLCBWcGMsIFZwY0xvb2t1cE9wdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtQcm9wcyB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nVnBjPzogSVZwYztcbiAgcmVhZG9ubHkgcHJpdmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlwQWRkcmVzc2VzPzogSUlwQWRkcmVzc2VzO1xuICByZWFkb25seSBuYXRHYXRld2F5UHJvdmlkZXI/OiBOYXRQcm92aWRlcjtcbiAgcmVhZG9ubHkgbmF0R2F0ZXdheVN1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG4gIHJlYWRvbmx5IG5hdEdhdGV3YXlzPzogbnVtYmVyO1xuICByZWFkb25seSBtYXhBenM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHZwY05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN1Ym5ldENvbmZpZ3VyYXRpb24/OiBTdWJuZXRDb25maWd1cmF0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHN0YXRpYyB1c2VFeGlzdGluZ1ZQQ0Zyb21Mb29rdXAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogVnBjTG9va3VwT3B0aW9ucyk6IE5ldHdvcmsge1xuICAgIGNvbnN0IHZwYyA9IFZwYy5mcm9tTG9va3VwKHNjb3BlLCBgJHtpZH0tZXhpc3RpbmdWcGNgLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBuZXcgTmV0d29yayhzY29wZSwgaWQsIHtcbiAgICAgIGV4aXN0aW5nVnBjOiB2cGMsXG4gICAgfSk7XG4gIH1cblxuICByZWFkb25seSB2cGM6IElWcGM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE5ldHdvcmtQcm9wcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV0d29ya1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIGlmICghcHJvcHMuZXhpc3RpbmdWcGMpIHtcbiAgICAgIGlmIChwcm9wcy5wcml2YXRlKSB7XG4gICAgICAgIHRoaXMudnBjID0gbmV3IFZwYyh0aGlzLCAnVlBDJywge1xuICAgICAgICAgIGlwQWRkcmVzc2VzOiBwcm9wcy5pcEFkZHJlc3NlcyB8fCBJcEFkZHJlc3Nlcy5jaWRyKCcxMC4wLjAuMC8xNicpLFxuICAgICAgICAgIG5hdEdhdGV3YXlzOiAwLFxuICAgICAgICAgIG1heEF6czogcHJvcHMubWF4QXpzLFxuICAgICAgICAgIHZwY05hbWU6IHByb3BzLnZwY05hbWUsXG4gICAgICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogcHJvcHMuc3VibmV0Q29uZmlndXJhdGlvbiB8fCBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdJc29sYXRlZCcsXG4gICAgICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCxcbiAgICAgICAgICAgICAgY2lkck1hc2s6IDI0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudnBjID0gbmV3IFZwYyh0aGlzLCAnVlBDJywge1xuICAgICAgICAgIGlwQWRkcmVzc2VzOiBwcm9wcy5pcEFkZHJlc3NlcyB8fCBJcEFkZHJlc3Nlcy5jaWRyKCcxMC4wLjAuMC8xNicpLFxuICAgICAgICAgIG5hdEdhdGV3YXlQcm92aWRlcjogcHJvcHMubmF0R2F0ZXdheVByb3ZpZGVyLFxuICAgICAgICAgIG5hdEdhdGV3YXlTdWJuZXRzOiBwcm9wcy5uYXRHYXRld2F5U3VibmV0cyxcbiAgICAgICAgICBuYXRHYXRld2F5czogcHJvcHMubmF0R2F0ZXdheXMgfHwgMSxcbiAgICAgICAgICBtYXhBenM6IHByb3BzLm1heEF6cyxcbiAgICAgICAgICB2cGNOYW1lOiBwcm9wcy52cGNOYW1lLFxuICAgICAgICAgIHN1Ym5ldENvbmZpZ3VyYXRpb246IHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb24gfHwgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnUHVibGljJyxcbiAgICAgICAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QVUJMSUMsXG4gICAgICAgICAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdQcml2YXRlJyxcbiAgICAgICAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTLFxuICAgICAgICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnSXNvbGF0ZWQnLFxuICAgICAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgICAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudnBjID0gcHJvcHMuZXhpc3RpbmdWcGM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNlcnZpY2VFbmRwb2ludChpZDogc3RyaW5nLCBzZXJ2aWNlOiBJbnRlcmZhY2VWcGNFbmRwb2ludFNlcnZpY2UsIHBlZXI/OiBJUGVlciwgcHJpdmF0ZURuc0VuYWJsZWQ/OiBib29sZWFuKTogSW50ZXJmYWNlVnBjRW5kcG9pbnQge1xuICAgIGlmIChzZXJ2aWNlID09PSBJbnRlcmZhY2VWcGNFbmRwb2ludEF3c1NlcnZpY2UuUzMpIHtcbiAgICAgIHRoaXMudnBjLmFkZEdhdGV3YXlFbmRwb2ludChgJHtpZH0tZ2F0ZXdheWAsIHtcbiAgICAgICAgc2VydmljZTogR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZS5TMyxcbiAgICAgICAgc3VibmV0czogW3RoaXMuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKV0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgYHNnLWZvci1pbnRlcmZhY2UtZW5kcG9pbnQtJHtpZH1gLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgIH0pO1xuXG4gICAgc2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShwZWVyIHx8IFBlZXIuYW55SXB2NCgpLCBQb3J0LkhUVFBTKTtcblxuICAgIC8vIERlZmF1bHQgdG8gdHJ1ZSBmb3IgcHJpdmF0ZSBWUENzIChpc29sYXRlZCBzdWJuZXRzIGhhdmUgbm8gaW50ZXJuZXRcbiAgICAvLyBhY2Nlc3MsIHNvIHByaXZhdGUgRE5TIGlzIHJlcXVpcmVkIGZvciBBV1MgU0RLIGNhbGxzIHRvIHJlc29sdmUgdG9cbiAgICAvLyB0aGUgVlBDIGVuZHBvaW50KSwgZmFsc2Ugb3RoZXJ3aXNlIHRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ci5cbiAgICBjb25zdCBlbmFibGVQcml2YXRlRG5zID0gcHJpdmF0ZURuc0VuYWJsZWQgPz8gISF0aGlzLnByb3BzLnByaXZhdGU7XG5cbiAgICByZXR1cm4gdGhpcy52cGMuYWRkSW50ZXJmYWNlRW5kcG9pbnQoYGludGVyZmFjZS1lbmRwb2ludC1mb3ItJHtpZH1gLCB7XG4gICAgICBzZXJ2aWNlLFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFtzZWN1cml0eUdyb3VwXSxcbiAgICAgIHN1Ym5ldHM6IHRoaXMuYXBwbGljYXRpb25TdWJuZXRTZWxlY3Rpb24oKSxcbiAgICAgIHByaXZhdGVEbnNFbmFibGVkOiBlbmFibGVQcml2YXRlRG5zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFwcGxpY2F0aW9uU3VibmV0U2VsZWN0aW9uKCk6IFN1Ym5ldFNlbGVjdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Ym5ldFR5cGU6IHRoaXMucHJvcHMucHJpdmF0ZSA/IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCA6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICB9O1xuICB9XG59Il19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3VzZS1jYXNlcy9mcmFtZXdvcmsvZm91bmRhdGlvbi9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLGlEQUErUztBQUMvUywyQ0FBdUM7QUFjdkMsTUFBYSxPQUFRLFNBQVEsc0JBQVM7O0lBQzdCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUF5QjtRQUM1RixNQUFNLEdBQUcsR0FBRyxhQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM1QixXQUFXLEVBQUUsR0FBRztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsR0FBRyxDQUFPO0lBQ0YsS0FBSyxDQUFlO0lBRXJDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBc0IsRUFBRTtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtvQkFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUkscUJBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUNqRSxXQUFXLEVBQUUsQ0FBQztvQkFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07b0JBQ3BCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztvQkFD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QUFDLG1CQUFtQjtTQUM5RixDQUFDO0lBQ0osQ0FBQzs7QUE5RkgsMEJBK0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgR2F0ZXdheVZwY0VuZHBvaW50QXdzU2VydmljZSwgSUlwQWRkcmVzc2VzLCBJbnRlcmZhY2VWcGNFbmRwb2ludCwgSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLCBJbnRlcmZhY2VWcGNFbmRwb2ludFNlcnZpY2UsIElwQWRkcmVzc2VzLCBJUGVlciwgSVZwYywgTmF0UHJvdmlkZXIsIFBlZXIsIFBvcnQsIFNlY3VyaXR5R3JvdXAsIFN1Ym5ldENvbmZpZ3VyYXRpb24sIFN1Ym5ldFNlbGVjdGlvbiwgU3VibmV0VHlwZSwgVnBjLCBWcGNMb29rdXBPcHRpb25zIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUHJvcHMge1xuICByZWFkb25seSBleGlzdGluZ1ZwYz86IElWcGM7XG4gIHJlYWRvbmx5IHByaXZhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBpcEFkZHJlc3Nlcz86IElJcEFkZHJlc3NlcztcbiAgcmVhZG9ubHkgbmF0R2F0ZXdheVByb3ZpZGVyPzogTmF0UHJvdmlkZXI7XG4gIHJlYWRvbmx5IG5hdEdhdGV3YXlTdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uO1xuICByZWFkb25seSBuYXRHYXRld2F5cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXpzPzogbnVtYmVyO1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBzdWJuZXRDb25maWd1cmF0aW9uPzogU3VibmV0Q29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgTmV0d29yayBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBzdGF0aWMgdXNlRXhpc3RpbmdWUENGcm9tTG9va3VwKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZwY0xvb2t1cE9wdGlvbnMpOiBOZXR3b3JrIHtcbiAgICBjb25zdCB2cGMgPSBWcGMuZnJvbUxvb2t1cChzY29wZSwgYCR7aWR9LWV4aXN0aW5nVnBjYCwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gbmV3IE5ldHdvcmsoc2NvcGUsIGlkLCB7XG4gICAgICBleGlzdGluZ1ZwYzogdnBjLFxuICAgIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBOZXR3b3JrUHJvcHM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldHdvcmtQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICBpZiAoIXByb3BzLmV4aXN0aW5nVnBjKSB7XG4gICAgICBpZiAocHJvcHMucHJpdmF0ZSkge1xuICAgICAgICB0aGlzLnZwYyA9IG5ldyBWcGModGhpcywgJ1ZQQycsIHtcbiAgICAgICAgICBpcEFkZHJlc3NlczogcHJvcHMuaXBBZGRyZXNzZXMgfHwgSXBBZGRyZXNzZXMuY2lkcignMTAuMC4wLjAvMTYnKSxcbiAgICAgICAgICBuYXRHYXRld2F5czogMCxcbiAgICAgICAgICBtYXhBenM6IHByb3BzLm1heEF6cyxcbiAgICAgICAgICB2cGNOYW1lOiBwcm9wcy52cGNOYW1lLFxuICAgICAgICAgIHN1Ym5ldENvbmZpZ3VyYXRpb246IHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb24gfHwgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnSXNvbGF0ZWQnLFxuICAgICAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgICAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZwYyA9IG5ldyBWcGModGhpcywgJ1ZQQycsIHtcbiAgICAgICAgICBpcEFkZHJlc3NlczogcHJvcHMuaXBBZGRyZXNzZXMgfHwgSXBBZGRyZXNzZXMuY2lkcignMTAuMC4wLjAvMTYnKSxcbiAgICAgICAgICBuYXRHYXRld2F5UHJvdmlkZXI6IHByb3BzLm5hdEdhdGV3YXlQcm92aWRlcixcbiAgICAgICAgICBuYXRHYXRld2F5U3VibmV0czogcHJvcHMubmF0R2F0ZXdheVN1Ym5ldHMsXG4gICAgICAgICAgbmF0R2F0ZXdheXM6IHByb3BzLm5hdEdhdGV3YXlzIHx8IDEsXG4gICAgICAgICAgbWF4QXpzOiBwcm9wcy5tYXhBenMsXG4gICAgICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZSxcbiAgICAgICAgICBzdWJuZXRDb25maWd1cmF0aW9uOiBwcm9wcy5zdWJuZXRDb25maWd1cmF0aW9uIHx8IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ1B1YmxpYycsXG4gICAgICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnUHJpdmF0ZScsXG4gICAgICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyxcbiAgICAgICAgICAgICAgY2lkck1hc2s6IDI0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ0lzb2xhdGVkJyxcbiAgICAgICAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgICAgICAgICBjaWRyTWFzazogMjQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZwYyA9IHByb3BzLmV4aXN0aW5nVnBjO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTZXJ2aWNlRW5kcG9pbnQoaWQ6IHN0cmluZywgc2VydmljZTogSW50ZXJmYWNlVnBjRW5kcG9pbnRTZXJ2aWNlLCBwZWVyPzogSVBlZXIsIHByaXZhdGVEbnNFbmFibGVkPzogYm9vbGVhbik6IEludGVyZmFjZVZwY0VuZHBvaW50IHtcbiAgICBpZiAoc2VydmljZSA9PT0gSW50ZXJmYWNlVnBjRW5kcG9pbnRBd3NTZXJ2aWNlLlMzKSB7XG4gICAgICB0aGlzLnZwYy5hZGRHYXRld2F5RW5kcG9pbnQoYCR7aWR9LWdhdGV3YXlgLCB7XG4gICAgICAgIHNlcnZpY2U6IEdhdGV3YXlWcGNFbmRwb2ludEF3c1NlcnZpY2UuUzMsXG4gICAgICAgIHN1Ym5ldHM6IFt0aGlzLmFwcGxpY2F0aW9uU3VibmV0U2VsZWN0aW9uKCldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsIGBzZy1mb3ItaW50ZXJmYWNlLWVuZHBvaW50LSR7aWR9YCwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICB9KTtcblxuICAgIHNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUocGVlciB8fCBQZWVyLmFueUlwdjQoKSwgUG9ydC5IVFRQUyk7XG5cbiAgICAvLyBEZWZhdWx0IHRvIHRydWUgZm9yIHByaXZhdGUgVlBDcyAoaXNvbGF0ZWQgc3VibmV0cyBoYXZlIG5vIGludGVybmV0XG4gICAgLy8gYWNjZXNzLCBzbyBwcml2YXRlIEROUyBpcyByZXF1aXJlZCBmb3IgQVdTIFNESyBjYWxscyB0byByZXNvbHZlIHRvXG4gICAgLy8gdGhlIFZQQyBlbmRwb2ludCksIGZhbHNlIG90aGVyd2lzZSB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIuXG4gICAgY29uc3QgZW5hYmxlUHJpdmF0ZURucyA9IHByaXZhdGVEbnNFbmFibGVkID8/ICEhdGhpcy5wcm9wcy5wcml2YXRlO1xuXG4gICAgcmV0dXJuIHRoaXMudnBjLmFkZEludGVyZmFjZUVuZHBvaW50KGBpbnRlcmZhY2UtZW5kcG9pbnQtZm9yLSR7aWR9YCwge1xuICAgICAgc2VydmljZSxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBbc2VjdXJpdHlHcm91cF0sXG4gICAgICBzdWJuZXRzOiB0aGlzLmFwcGxpY2F0aW9uU3VibmV0U2VsZWN0aW9uKCksXG4gICAgICBwcml2YXRlRG5zRW5hYmxlZDogZW5hYmxlUHJpdmF0ZURucyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBsaWNhdGlvblN1Ym5ldFNlbGVjdGlvbigpOiBTdWJuZXRTZWxlY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBzdWJuZXRUeXBlOiB0aGlzLnByb3BzLnByaXZhdGUgPyBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQgOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgfTtcbiAgfVxufSJdfQ==
|
package/lib/framework/index.d.ts
CHANGED
package/lib/framework/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./custom-resource"), exports);
|
|
|
18
18
|
__exportStar(require("./foundation"), exports);
|
|
19
19
|
__exportStar(require("./agents"), exports);
|
|
20
20
|
__exportStar(require("./bedrock"), exports);
|
|
21
|
-
|
|
21
|
+
__exportStar(require("./localstack"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBa0M7QUFDbEMsK0NBQTZCO0FBQzdCLDJDQUF5QjtBQUN6Qiw0Q0FBMEI7QUFDMUIsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jdXN0b20tcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3VuZGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYWdlbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vYmVkcm9jayc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2Fsc3RhY2snO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './localstack-config';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./localstack-config"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2xvY2Fsc3RhY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbG9jYWxzdGFjay1jb25maWcnO1xuXG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface LocalStackIntegrationConfig {
|
|
2
|
+
/**
|
|
3
|
+
* Enable LocalStack endpoint routing for runtime AWS SDK calls.
|
|
4
|
+
*
|
|
5
|
+
* @default false
|
|
6
|
+
*/
|
|
7
|
+
readonly enabled?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Default endpoint used when service-specific endpoints are not provided.
|
|
10
|
+
*
|
|
11
|
+
* @default http://localhost.localstack.cloud:4566
|
|
12
|
+
*/
|
|
13
|
+
readonly endpointUrl?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Optional service-specific S3 endpoint override.
|
|
16
|
+
*/
|
|
17
|
+
readonly s3EndpointUrl?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Optional service-specific Step Functions endpoint override.
|
|
20
|
+
*/
|
|
21
|
+
readonly stepFunctionsEndpointUrl?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Optional service-specific Bedrock Runtime endpoint override.
|
|
24
|
+
*/
|
|
25
|
+
readonly bedrockRuntimeEndpointUrl?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Optional service-specific Bedrock Agent Runtime endpoint override.
|
|
28
|
+
*/
|
|
29
|
+
readonly bedrockAgentRuntimeEndpointUrl?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface LocalStackEndpointOverrides {
|
|
32
|
+
/**
|
|
33
|
+
* Default endpoint used when service-specific endpoints are not provided.
|
|
34
|
+
*
|
|
35
|
+
* @default http://localhost.localstack.cloud:4566
|
|
36
|
+
*/
|
|
37
|
+
readonly endpointUrl?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Optional service-specific S3 endpoint override.
|
|
40
|
+
*/
|
|
41
|
+
readonly s3EndpointUrl?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Optional service-specific Step Functions endpoint override.
|
|
44
|
+
*/
|
|
45
|
+
readonly stepFunctionsEndpointUrl?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional service-specific Bedrock Runtime endpoint override.
|
|
48
|
+
*/
|
|
49
|
+
readonly bedrockRuntimeEndpointUrl?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Optional service-specific Bedrock Agent Runtime endpoint override.
|
|
52
|
+
*/
|
|
53
|
+
readonly bedrockAgentRuntimeEndpointUrl?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface ResolvedLocalStackIntegrationConfig {
|
|
56
|
+
readonly enabled: boolean;
|
|
57
|
+
readonly endpointUrl: string;
|
|
58
|
+
readonly s3EndpointUrl: string;
|
|
59
|
+
readonly stepFunctionsEndpointUrl: string;
|
|
60
|
+
readonly bedrockRuntimeEndpointUrl: string;
|
|
61
|
+
readonly bedrockAgentRuntimeEndpointUrl: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Default local model ID used for LocalStack/Ollama sandbox examples and tests.
|
|
65
|
+
*/
|
|
66
|
+
export declare const DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID = "ollama.qwen3.5:9b";
|
|
67
|
+
/**
|
|
68
|
+
* LocalStack edge endpoint commonly used by containerized local runtimes.
|
|
69
|
+
*/
|
|
70
|
+
export declare const DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL = "http://host.docker.internal:4566";
|
|
71
|
+
/**
|
|
72
|
+
* Ollama endpoint commonly used by containerized local runtimes.
|
|
73
|
+
*/
|
|
74
|
+
export declare const DEFAULT_LOCALSTACK_OLLAMA_BASE_URL = "http://host.docker.internal:11434";
|
|
75
|
+
export declare class LocalStackIntegrationUtils {
|
|
76
|
+
static readonly DEFAULT_ENDPOINT_URL = "http://localhost.localstack.cloud:4566";
|
|
77
|
+
static resolveConfig(config?: LocalStackIntegrationConfig): ResolvedLocalStackIntegrationConfig;
|
|
78
|
+
static toLambdaEnvironment(config?: LocalStackIntegrationConfig): Record<string, string>;
|
|
79
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalStackIntegrationUtils = exports.DEFAULT_LOCALSTACK_OLLAMA_BASE_URL = exports.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL = exports.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
/**
|
|
6
|
+
* Default local model ID used for LocalStack/Ollama sandbox examples and tests.
|
|
7
|
+
*/
|
|
8
|
+
exports.DEFAULT_LOCALSTACK_OLLAMA_MODEL_ID = 'ollama.qwen3.5:9b';
|
|
9
|
+
/**
|
|
10
|
+
* LocalStack edge endpoint commonly used by containerized local runtimes.
|
|
11
|
+
*/
|
|
12
|
+
exports.DEFAULT_LOCALSTACK_SANDBOX_ENDPOINT_URL = 'http://host.docker.internal:4566';
|
|
13
|
+
/**
|
|
14
|
+
* Ollama endpoint commonly used by containerized local runtimes.
|
|
15
|
+
*/
|
|
16
|
+
exports.DEFAULT_LOCALSTACK_OLLAMA_BASE_URL = 'http://host.docker.internal:11434';
|
|
17
|
+
class LocalStackIntegrationUtils {
|
|
18
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.LocalStackIntegrationUtils", version: "1.17.1" };
|
|
19
|
+
static DEFAULT_ENDPOINT_URL = 'http://localhost.localstack.cloud:4566';
|
|
20
|
+
static resolveConfig(config) {
|
|
21
|
+
const endpointUrl = config?.endpointUrl || LocalStackIntegrationUtils.DEFAULT_ENDPOINT_URL;
|
|
22
|
+
return {
|
|
23
|
+
enabled: config?.enabled ?? false,
|
|
24
|
+
endpointUrl,
|
|
25
|
+
s3EndpointUrl: config?.s3EndpointUrl || endpointUrl,
|
|
26
|
+
stepFunctionsEndpointUrl: config?.stepFunctionsEndpointUrl || endpointUrl,
|
|
27
|
+
bedrockRuntimeEndpointUrl: config?.bedrockRuntimeEndpointUrl || endpointUrl,
|
|
28
|
+
bedrockAgentRuntimeEndpointUrl: config?.bedrockAgentRuntimeEndpointUrl || endpointUrl,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static toLambdaEnvironment(config) {
|
|
32
|
+
const resolved = LocalStackIntegrationUtils.resolveConfig(config);
|
|
33
|
+
if (!resolved.enabled) {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
LOCALSTACK_ENABLED: 'true',
|
|
38
|
+
AWS_ENDPOINT_URL: resolved.endpointUrl,
|
|
39
|
+
AWS_ENDPOINT_URL_S3: resolved.s3EndpointUrl,
|
|
40
|
+
AWS_ENDPOINT_URL_STEPFUNCTIONS: resolved.stepFunctionsEndpointUrl,
|
|
41
|
+
AWS_ENDPOINT_URL_BEDROCK_RUNTIME: resolved.bedrockRuntimeEndpointUrl,
|
|
42
|
+
AWS_ENDPOINT_URL_BEDROCK_AGENT_RUNTIME: resolved.bedrockAgentRuntimeEndpointUrl,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.LocalStackIntegrationUtils = LocalStackIntegrationUtils;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdGFjay1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi91c2UtY2FzZXMvZnJhbWV3b3JrL2xvY2Fsc3RhY2svbG9jYWxzdGFjay1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQXNFQTs7R0FFRztBQUNVLFFBQUEsa0NBQWtDLEdBQUcsbUJBQW1CLENBQUM7QUFDdEU7O0dBRUc7QUFDVSxRQUFBLHVDQUF1QyxHQUFHLGtDQUFrQyxDQUFDO0FBQzFGOztHQUVHO0FBQ1UsUUFBQSxrQ0FBa0MsR0FBRyxtQ0FBbUMsQ0FBQztBQUV0RixNQUFhLDBCQUEwQjs7SUFDOUIsTUFBTSxDQUFVLG9CQUFvQixHQUFHLHdDQUF3QyxDQUFDO0lBRWhGLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBb0M7UUFDOUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLFdBQVcsSUFBSSwwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQztRQUUzRixPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksS0FBSztZQUNqQyxXQUFXO1lBQ1gsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLElBQUksV0FBVztZQUNuRCx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsd0JBQXdCLElBQUksV0FBVztZQUN6RSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUseUJBQXlCLElBQUksV0FBVztZQUMzRSw4QkFBOEIsRUFBRSxNQUFNLEVBQUUsOEJBQThCLElBQUksV0FBVztTQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFvQztRQUNwRSxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsTUFBTTtZQUMxQixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsV0FBVztZQUN0QyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsYUFBYTtZQUMzQyw4QkFBOEIsRUFBRSxRQUFRLENBQUMsd0JBQXdCO1lBQ2pFLGdDQUFnQyxFQUFFLFFBQVEsQ0FBQyx5QkFBeUI7WUFDcEUsc0NBQXNDLEVBQUUsUUFBUSxDQUFDLDhCQUE4QjtTQUNoRixDQUFDO0lBQ0osQ0FBQzs7QUE5QkgsZ0VBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMb2NhbFN0YWNrSW50ZWdyYXRpb25Db25maWcge1xuICAvKipcbiAgICogRW5hYmxlIExvY2FsU3RhY2sgZW5kcG9pbnQgcm91dGluZyBmb3IgcnVudGltZSBBV1MgU0RLIGNhbGxzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZW5kcG9pbnQgdXNlZCB3aGVuIHNlcnZpY2Utc3BlY2lmaWMgZW5kcG9pbnRzIGFyZSBub3QgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGh0dHA6Ly9sb2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZDo0NTY2XG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludFVybD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgc2VydmljZS1zcGVjaWZpYyBTMyBlbmRwb2ludCBvdmVycmlkZS5cbiAgICovXG4gIHJlYWRvbmx5IHMzRW5kcG9pbnRVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2Utc3BlY2lmaWMgU3RlcCBGdW5jdGlvbnMgZW5kcG9pbnQgb3ZlcnJpZGUuXG4gICAqL1xuICByZWFkb25seSBzdGVwRnVuY3Rpb25zRW5kcG9pbnRVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2Utc3BlY2lmaWMgQmVkcm9jayBSdW50aW1lIGVuZHBvaW50IG92ZXJyaWRlLlxuICAgKi9cbiAgcmVhZG9ubHkgYmVkcm9ja1J1bnRpbWVFbmRwb2ludFVybD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgc2VydmljZS1zcGVjaWZpYyBCZWRyb2NrIEFnZW50IFJ1bnRpbWUgZW5kcG9pbnQgb3ZlcnJpZGUuXG4gICAqL1xuICByZWFkb25seSBiZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnRVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxTdGFja0VuZHBvaW50T3ZlcnJpZGVzIHtcbiAgLyoqXG4gICAqIERlZmF1bHQgZW5kcG9pbnQgdXNlZCB3aGVuIHNlcnZpY2Utc3BlY2lmaWMgZW5kcG9pbnRzIGFyZSBub3QgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGh0dHA6Ly9sb2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZDo0NTY2XG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludFVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2Utc3BlY2lmaWMgUzMgZW5kcG9pbnQgb3ZlcnJpZGUuXG4gICAqL1xuICByZWFkb25seSBzM0VuZHBvaW50VXJsPzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgc2VydmljZS1zcGVjaWZpYyBTdGVwIEZ1bmN0aW9ucyBlbmRwb2ludCBvdmVycmlkZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZXBGdW5jdGlvbnNFbmRwb2ludFVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2Utc3BlY2lmaWMgQmVkcm9jayBSdW50aW1lIGVuZHBvaW50IG92ZXJyaWRlLlxuICAgKi9cbiAgcmVhZG9ubHkgYmVkcm9ja1J1bnRpbWVFbmRwb2ludFVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHNlcnZpY2Utc3BlY2lmaWMgQmVkcm9jayBBZ2VudCBSdW50aW1lIGVuZHBvaW50IG92ZXJyaWRlLlxuICAgKi9cbiAgcmVhZG9ubHkgYmVkcm9ja0FnZW50UnVudGltZUVuZHBvaW50VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkTG9jYWxTdGFja0ludGVncmF0aW9uQ29uZmlnIHtcbiAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW5kcG9pbnRVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgczNFbmRwb2ludFVybDogc3RyaW5nO1xuICByZWFkb25seSBzdGVwRnVuY3Rpb25zRW5kcG9pbnRVcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgYmVkcm9ja1J1bnRpbWVFbmRwb2ludFVybDogc3RyaW5nO1xuICByZWFkb25seSBiZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnRVcmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IGxvY2FsIG1vZGVsIElEIHVzZWQgZm9yIExvY2FsU3RhY2svT2xsYW1hIHNhbmRib3ggZXhhbXBsZXMgYW5kIHRlc3RzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0NBTFNUQUNLX09MTEFNQV9NT0RFTF9JRCA9ICdvbGxhbWEucXdlbjMuNTo5Yic7XG4vKipcbiAqIExvY2FsU3RhY2sgZWRnZSBlbmRwb2ludCBjb21tb25seSB1c2VkIGJ5IGNvbnRhaW5lcml6ZWQgbG9jYWwgcnVudGltZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPQ0FMU1RBQ0tfU0FOREJPWF9FTkRQT0lOVF9VUkwgPSAnaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjQ1NjYnO1xuLyoqXG4gKiBPbGxhbWEgZW5kcG9pbnQgY29tbW9ubHkgdXNlZCBieSBjb250YWluZXJpemVkIGxvY2FsIHJ1bnRpbWVzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0NBTFNUQUNLX09MTEFNQV9CQVNFX1VSTCA9ICdodHRwOi8vaG9zdC5kb2NrZXIuaW50ZXJuYWw6MTE0MzQnO1xuXG5leHBvcnQgY2xhc3MgTG9jYWxTdGFja0ludGVncmF0aW9uVXRpbHMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRU5EUE9JTlRfVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZDo0NTY2JztcblxuICBwdWJsaWMgc3RhdGljIHJlc29sdmVDb25maWcoY29uZmlnPzogTG9jYWxTdGFja0ludGVncmF0aW9uQ29uZmlnKTogUmVzb2x2ZWRMb2NhbFN0YWNrSW50ZWdyYXRpb25Db25maWcge1xuICAgIGNvbnN0IGVuZHBvaW50VXJsID0gY29uZmlnPy5lbmRwb2ludFVybCB8fCBMb2NhbFN0YWNrSW50ZWdyYXRpb25VdGlscy5ERUZBVUxUX0VORFBPSU5UX1VSTDtcblxuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiBjb25maWc/LmVuYWJsZWQgPz8gZmFsc2UsXG4gICAgICBlbmRwb2ludFVybCxcbiAgICAgIHMzRW5kcG9pbnRVcmw6IGNvbmZpZz8uczNFbmRwb2ludFVybCB8fCBlbmRwb2ludFVybCxcbiAgICAgIHN0ZXBGdW5jdGlvbnNFbmRwb2ludFVybDogY29uZmlnPy5zdGVwRnVuY3Rpb25zRW5kcG9pbnRVcmwgfHwgZW5kcG9pbnRVcmwsXG4gICAgICBiZWRyb2NrUnVudGltZUVuZHBvaW50VXJsOiBjb25maWc/LmJlZHJvY2tSdW50aW1lRW5kcG9pbnRVcmwgfHwgZW5kcG9pbnRVcmwsXG4gICAgICBiZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnRVcmw6IGNvbmZpZz8uYmVkcm9ja0FnZW50UnVudGltZUVuZHBvaW50VXJsIHx8IGVuZHBvaW50VXJsLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvTGFtYmRhRW52aXJvbm1lbnQoY29uZmlnPzogTG9jYWxTdGFja0ludGVncmF0aW9uQ29uZmlnKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBMb2NhbFN0YWNrSW50ZWdyYXRpb25VdGlscy5yZXNvbHZlQ29uZmlnKGNvbmZpZyk7XG4gICAgaWYgKCFyZXNvbHZlZC5lbmFibGVkKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIExPQ0FMU1RBQ0tfRU5BQkxFRDogJ3RydWUnLFxuICAgICAgQVdTX0VORFBPSU5UX1VSTDogcmVzb2x2ZWQuZW5kcG9pbnRVcmwsXG4gICAgICBBV1NfRU5EUE9JTlRfVVJMX1MzOiByZXNvbHZlZC5zM0VuZHBvaW50VXJsLFxuICAgICAgQVdTX0VORFBPSU5UX1VSTF9TVEVQRlVOQ1RJT05TOiByZXNvbHZlZC5zdGVwRnVuY3Rpb25zRW5kcG9pbnRVcmwsXG4gICAgICBBV1NfRU5EUE9JTlRfVVJMX0JFRFJPQ0tfUlVOVElNRTogcmVzb2x2ZWQuYmVkcm9ja1J1bnRpbWVFbmRwb2ludFVybCxcbiAgICAgIEFXU19FTkRQT0lOVF9VUkxfQkVEUk9DS19BR0VOVF9SVU5USU1FOiByZXNvbHZlZC5iZWRyb2NrQWdlbnRSdW50aW1lRW5kcG9pbnRVcmwsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
21
|
+
var ownKeys = function(o) {
|
|
22
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
23
|
+
var ar = [];
|
|
24
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
25
|
+
return ar;
|
|
26
|
+
};
|
|
27
|
+
return ownKeys(o);
|
|
28
|
+
};
|
|
29
|
+
return function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
4
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
const path = require("path");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
6
39
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
40
|
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
8
41
|
const aws_bedrock_1 = require("aws-cdk-lib/aws-bedrock");
|
|
@@ -282,4 +315,4 @@ describe('BaseAgent Knowledge Base Integration', () => {
|
|
|
282
315
|
});
|
|
283
316
|
});
|
|
284
317
|
});
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hZ2VudC1rbm93bGVkZ2UtYmFzZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdXNlLWNhc2VzL2ZyYW1ld29yay90ZXN0cy9iYXNlLWFnZW50LWtub3dsZWRnZS1iYXNlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7O0FBRXRDLDZCQUE2QjtBQUM3Qiw2Q0FBeUM7QUFDekMsdURBQXlEO0FBQ3pELHlEQUFvRTtBQUNwRSxpREFBOEQ7QUFDOUQsNkRBQWtEO0FBQ2xELDJEQUEyRDtBQUMzRCx1REFBbUQ7QUFDbkQsNkRBQWdFO0FBRWhFLFFBQVEsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7SUFDcEQsSUFBSSxHQUFRLENBQUM7SUFDYixJQUFJLEtBQVksQ0FBQztJQUNqQixJQUFJLFlBQW1CLENBQUM7SUFDeEIsTUFBTSxTQUFTLEdBQUcsdUNBQXlCLENBQUMsdUNBQXVDLENBQUM7SUFFcEYsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxJQUFBLDBCQUFhLEdBQUUsQ0FBQztRQUN0QixLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUU7WUFDbEMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO1NBQ3RELENBQUMsQ0FBQztRQUVILFlBQVksR0FBRyxJQUFJLHFCQUFLLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0RBQW9ELENBQUM7U0FDakYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLElBQUksQ0FBQywyREFBMkQsRUFBRSxHQUFHLEVBQUU7WUFDckUsSUFBSSx3QkFBVSxDQUFD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LEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO29CQUN0QyxZQUFZO29CQUNaLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDckI7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUzQywwREFBMEQ7WUFDMUQsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFO2dCQUMvQyxRQUFRLEVBQUUsa0JBQUssQ0FBQyxTQUFTLENBQUM7b0JBQ3hCLGtCQUFLLENBQUMsVUFBVSxDQUFDO3dCQUNmLFVBQVUsRUFBRSwwQkFBMEI7d0JBQ3RDLGNBQWMsRUFBRTs0QkFDZCxTQUFTLEVBQUUsa0JBQUssQ0FBQyxTQUFTLENBQUM7Z0NBQ3pCLGtCQUFLLENBQUMsVUFBVSxDQUFDO29DQUNmLE1BQU0sRUFBRSx3QkFBd0I7b0NBQ2hDLFFBQVEsRUFBRSwrREFBK0Q7aUNBQzFFLENBQUM7NkJBQ0gsQ0FBQzt5QkFDSDtxQkFDRixDQUFDO2lCQUNILENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgVGVtcGxhdGUsIE1hdGNoIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5pbXBvcnQgeyBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2snO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBjcmVhdGVUZXN0QXBwIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IHsgQmF0Y2hBZ2VudCB9IGZyb20gJy4uL2FnZW50cy9iYXRjaC1hZ2VudCc7XG5pbXBvcnQgeyBCZWRyb2NrS25vd2xlZGdlQmFzZSB9IGZyb20gJy4uL2FnZW50cy9rbm93bGVkZ2UtYmFzZSc7XG5cbmRlc2NyaWJlKCdCYXNlQWdlbnQgS25vd2xlZGdlIEJhc2UgSW50ZWdyYXRpb24nLCAoKSA9PiB7XG4gIGxldCBhcHA6IEFwcDtcbiAgbGV0IHN0YWNrOiBTdGFjaztcbiAgbGV0IHN5c3RlbVByb21wdDogQXNzZXQ7XG4gIGNvbnN0IHRlc3RNb2RlbCA9IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIuQU5USFJPUElDX0NMQVVERV8zX1NPTk5FVF8yMDI0MDIyOV9WMV8wO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IGNyZWF0ZVRlc3RBcHAoKTtcbiAgICBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdUZXN0U3RhY2snLCB7XG4gICAgICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAgICB9KTtcblxuICAgIHN5c3RlbVByb21wdCA9IG5ldyBBc3NldChzdGFjaywgJ1N5c3RlbVByb21wdCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9hZ2VudHMvcmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudC9iYXRjaC5weScpLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQmFja3dhcmQgQ29tcGF0aWJpbGl0eScsICgpID0+IHtcbiAgICB0ZXN0KCdjcmVhdGVzIGFnZW50IHdpdGhvdXQga25vd2xlZGdlIGJhc2VzIChubyBLQnMgY29uZmlndXJlZCknLCAoKSA9PiB7XG4gICAgICBuZXcgQmF0Y2hBZ2VudChzdGFjaywgJ0FnZW50Jywge1xuICAgICAgICBhZ2VudE5hbWU6ICdUZXN0QWdlbnQnLFxuICAgICAgICBwcm9tcHQ6ICdUZXN0IHByb21wdCcsXG4gICAgICAgIGFnZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgIGJlZHJvY2tNb2RlbDogeyBmbU1vZGVsSWQ6IHRlc3RNb2RlbCB9LFxuICAgICAgICAgIHN5c3RlbVByb21wdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgICAgIC8vIEFnZW50IHNob3VsZCBiZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseVxuICAgICAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCAxKTtcblxuICAgICAgLy8gTm8gS0IgcGVybWlzc2lvbnMgc2hvdWxkIGJlIGFkZGVkIC0gdmVyaWZ5IG5vIEtub3dsZWRnZUJhc2VQZXJtaXNzaW9ucyBpbmxpbmUgcG9saWN5XG4gICAgICBjb25zdCByb2xlcyA9IHRlbXBsYXRlLmZpbmRSZXNvdXJjZXMoJ0FXUzo6SUFNOjpSb2xlJyk7XG4gICAgICBjb25zdCBhZ2VudFJvbGUgPSBPYmplY3QudmFsdWVzKHJvbGVzKS5maW5kKChyb2xlOiBhbnkpID0+XG4gICAgICAgIHJvbGUuUHJvcGVydGllcz8uUm9sZU5hbWU/LmluY2x1ZGVzPy4oJ0FnZW50JykgfHxcbiAgICAgICAgcm9sZS5Qcm9wZXJ0aWVzPy5Bc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ/LlN0YXRlbWVudD8uc29tZT8uKChzOiBhbnkpID0+XG4gICAgICAgICAgcy5QcmluY2lwYWw/LlNlcnZpY2UgPT09ICdsYW1iZGEuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICksXG4gICAgICApIGFzIGFueTtcblxuICAgICAgLy8gQ2hlY2sgdGhhdCBLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMgcG9saWN5IGRvZXNuJ3QgZXhpc3RcbiAgICAgIGNvbnN0IHBvbGljaWVzID0gYWdlbnRSb2xlPy5Qcm9wZXJ0aWVzPy5Qb2xpY2llcyB8fCBbXTtcbiAgICAgIGNvbnN0IGhhc0tiUG9saWN5ID0gcG9saWNpZXMuc29tZSgocDogYW55KSA9PiBwLlBvbGljeU5hbWUgPT09ICdLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMnKTtcbiAgICAgIGV4cGVjdChoYXNLYlBvbGljeSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaW5nbGUgS25vd2xlZGdlIEJhc2UnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBhZ2VudCB3aXRoIHNpbmdsZSBLQiBhbmQgZ2VuZXJhdGVzIElBTSBwZXJtaXNzaW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGtiID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnUHJvZHVjdERvY3MnLCB7XG4gICAgICAgIG5hbWU6ICdwcm9kdWN0LWRvY3VtZW50YXRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Byb2R1Y3QgZG9jdW1lbnRhdGlvbiBhbmQgRkFRcycsXG4gICAgICAgIGtub3dsZWRnZUJhc2VJZDogJ0FCQ0QxMjM0JyxcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQmF0Y2hBZ2VudChzdGFjaywgJ0FnZW50Jywge1xuICAgICAgICBhZ2VudE5hbWU6ICdUZXN0QWdlbnQnLFxuICAgICAgICBwcm9tcHQ6ICdUZXN0IHByb21wdCcsXG4gICAgICAgIGFnZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgIGJlZHJvY2tNb2RlbDogeyBmbU1vZGVsSWQ6IHRlc3RNb2RlbCB9LFxuICAgICAgICAgIHN5c3RlbVByb21wdCxcbiAgICAgICAgICBrbm93bGVkZ2VCYXNlczogW2tiXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgICAgIC8vIFZlcmlmeSBLQiBwZXJtaXNzaW9ucyBhcmUgYWRkZWQgYXMgaW5saW5lIHBvbGljeSBvbiB0aGUgcm9sZVxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lOYW1lOiAnS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zJyxcbiAgICAgICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICdhcm46YXdzOmJlZHJvY2s6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjprbm93bGVkZ2UtYmFzZS9BQkNEMTIzNCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NyZWF0ZXMgcmV0cmlldmFsIHRvb2wgYXNzZXQgd2hlbiBLQiBpcyBjb25maWd1cmVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2IgPSBuZXcgQmVkcm9ja0tub3dsZWRnZUJhc2Uoc3RhY2ssICdQcm9kdWN0RG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3Byb2R1Y3QtZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBkb2N1bWVudGF0aW9uIGFuZCBGQVFzJyxcbiAgICAgICAga25vd2xlZGdlQmFzZUlkOiAnQUJDRDEyMzQnLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBCYXRjaEFnZW50KHN0YWNrLCAnQWdlbnQnLCB7XG4gICAgICAgIGFnZW50TmFtZTogJ1Rlc3RBZ2VudCcsXG4gICAgICAgIHByb21wdDogJ1Rlc3QgcHJvbXB0JyxcbiAgICAgICAgYWdlbnREZWZpbml0aW9uOiB7XG4gICAgICAgICAgYmVkcm9ja01vZGVsOiB7IGZtTW9kZWxJZDogdGVzdE1vZGVsIH0sXG4gICAgICAgICAgc3lzdGVtUHJvbXB0LFxuICAgICAgICAgIGtub3dsZWRnZUJhc2VzOiBba2JdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgLy8gVmVyaWZ5IExhbWJkYSBmdW5jdGlvbiBpcyBjcmVhdGVkIChhZ2VudCBmdW5jdGlvbilcbiAgICAgIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywgMSk7XG5cbiAgICAgIC8vIFZlcmlmeSBJQU0gcG9saWNpZXMgZ3JhbnQgUzMgcmVhZCBhY2Nlc3MgZm9yIGFzc2V0c1xuICAgICAgLy8gV2hlbiBLQiBpcyBjb25maWd1cmVkLCB0aGUgcmV0cmlldmFsIHRvb2wgYXNzZXQgc2hvdWxkIGJlIGdyYW50ZWQgcmVhZCBhY2Nlc3NcbiAgICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBNYXRjaC5hcnJheVdpdGgoWydzMzpHZXRPYmplY3QqJywgJ3MzOkdldEJ1Y2tldConLCAnczM6TGlzdConXSksXG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdNdWx0aXBsZSBLbm93bGVkZ2UgQmFzZXMnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBhZ2VudCB3aXRoIG11bHRpcGxlIEtCcyBhbmQgZ2VuZXJhdGVzIHBlcm1pc3Npb25zIGZvciBhbGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrYjEgPSBuZXcgQmVkcm9ja0tub3dsZWRnZUJhc2Uoc3RhY2ssICdQcm9kdWN0RG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3Byb2R1Y3QtZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAga25vd2xlZGdlQmFzZUlkOiAnS0ItUFJPRFVDVCcsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qga2IyID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnU3VwcG9ydERvY3MnLCB7XG4gICAgICAgIG5hbWU6ICdzdXBwb3J0LWRvY3VtZW50YXRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQgZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGtub3dsZWRnZUJhc2VJZDogJ0tCLVNVUFBPUlQnLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBCYXRjaEFnZW50KHN0YWNrLCAnQWdlbnQnLCB7XG4gICAgICAgIGFnZW50TmFtZTogJ1Rlc3RBZ2VudCcsXG4gICAgICAgIHByb21wdDogJ1Rlc3QgcHJvbXB0JyxcbiAgICAgICAgYWdlbnREZWZpbml0aW9uOiB7XG4gICAgICAgICAgYmVkcm9ja01vZGVsOiB7IGZtTW9kZWxJZDogdGVzdE1vZGVsIH0sXG4gICAgICAgICAgc3lzdGVtUHJvbXB0LFxuICAgICAgICAgIGtub3dsZWRnZUJhc2VzOiBba2IxLCBrYjJdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgLy8gVmVyaWZ5IHBlcm1pc3Npb25zIGZvciBib3RoIEtCcyBhcmUgYWRkZWQgYXMgaW5saW5lIHBvbGljeVxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lOYW1lOiAnS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zJyxcbiAgICAgICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICdhcm46YXdzOmJlZHJvY2s6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjprbm93bGVkZ2UtYmFzZS9LQi1QUk9EVUNUJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICdhcm46YXdzOmJlZHJvY2s6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjprbm93bGVkZ2UtYmFzZS9LQi1TVVBQT1JUJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkaXRpb25hbCBLQiBQb2xpY3kgU3RhdGVtZW50cycsICgpID0+IHtcbiAgICB0ZXN0KCdhZGRzIGFkZGl0aW9uYWwgS0IgcG9saWN5IHN0YXRlbWVudHMgd2hlbiBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGtiID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnUHJvZHVjdERvY3MnLCB7XG4gICAgICAgIG5hbWU6ICdwcm9kdWN0LWRvY3VtZW50YXRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Byb2R1Y3QgZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGtub3dsZWRnZUJhc2VJZDogJ0FCQ0QxMjM0JyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZGRpdGlvbmFsU3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCddLFxuICAgICAgICByZXNvdXJjZXM6IFsnYXJuOmF3czpzMzo6Om15LWN1c3RvbS1idWNrZXQvKiddLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBCYXRjaEFnZW50KHN0YWNrLCAnQWdlbnQnLCB7XG4gICAgICAgIGFnZW50TmFtZTogJ1Rlc3RBZ2VudCcsXG4gICAgICAgIHByb21wdDogJ1Rlc3QgcHJvbXB0JyxcbiAgICAgICAgYWdlbnREZWZpbml0aW9uOiB7XG4gICAgICAgICAgYmVkcm9ja01vZGVsOiB7IGZtTW9kZWxJZDogdGVzdE1vZGVsIH0sXG4gICAgICAgICAgc3lzdGVtUHJvbXB0LFxuICAgICAgICAgIGtub3dsZWRnZUJhc2VzOiBba2JdLFxuICAgICAgICAgIGFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXM6IFthZGRpdGlvbmFsU3RhdGVtZW50XSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgICAgIC8vIFZlcmlmeSBhZGRpdGlvbmFsIHN0YXRlbWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgS0IgcGVybWlzc2lvbnMgcG9saWN5XG4gICAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpSb2xlJywge1xuICAgICAgICBQb2xpY2llczogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgIFBvbGljeU5hbWU6ICdLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMnLFxuICAgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICAgICAgU3RhdGVtZW50OiBNYXRjaC5hcnJheVdpdGgoW1xuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnczM6R2V0T2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgICAgIFJlc291cmNlOiAnYXJuOmF3czpzMzo6Om15LWN1c3RvbS1idWNrZXQvKicsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NvbWJpbmVzIEtCIHBlcm1pc3Npb25zIHdpdGggYWRkaXRpb25hbCBzdGF0ZW1lbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2IgPSBuZXcgQmVkcm9ja0tub3dsZWRnZUJhc2Uoc3RhY2ssICdQcm9kdWN0RG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3Byb2R1Y3QtZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAga25vd2xlZGdlQmFzZUlkOiAnQUJDRDEyMzQnLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxTdGF0ZW1lbnQgPSBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnZHluYW1vZGI6R2V0SXRlbSddLFxuICAgICAgICByZXNvdXJjZXM6IFsnYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOnRhYmxlL215LXRhYmxlJ10sXG4gICAgICB9KTtcblxuICAgICAgbmV3IEJhdGNoQWdlbnQoc3RhY2ssICdBZ2VudCcsIHtcbiAgICAgICAgYWdlbnROYW1lOiAnVGVzdEFnZW50JyxcbiAgICAgICAgcHJvbXB0OiAnVGVzdCBwcm9tcHQnLFxuICAgICAgICBhZ2VudERlZmluaXRpb246IHtcbiAgICAgICAgICBiZWRyb2NrTW9kZWw6IHsgZm1Nb2RlbElkOiB0ZXN0TW9kZWwgfSxcbiAgICAgICAgICBzeXN0ZW1Qcm9tcHQsXG4gICAgICAgICAga25vd2xlZGdlQmFzZXM6IFtrYl0sXG4gICAgICAgICAgYWRkaXRpb25hbFBvbGljeVN0YXRlbWVudHNGb3JLbm93bGVkZ2VCYXNlczogW2FkZGl0aW9uYWxTdGF0ZW1lbnRdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgLy8gVmVyaWZ5IGJvdGggS0IgcGVybWlzc2lvbnMgYW5kIGFkZGl0aW9uYWwgc3RhdGVtZW50cyBhcmUgcHJlc2VudFxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lOYW1lOiAnS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zJyxcbiAgICAgICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnZHluYW1vZGI6R2V0SXRlbScsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0d1YXJkcmFpbCBQZXJtaXNzaW9ucycsICgpID0+IHtcbiAgICB0ZXN0KCdhZGRzIGd1YXJkcmFpbCBwZXJtaXNzaW9ucyB3aGVuIEtCIGhhcyBndWFyZHJhaWwgY29uZmlndXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGtiID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnU2VjdXJlRG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3NlY3VyZS1kb2N1bWVudGF0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTZWN1cmUgZG9jdW1lbnRhdGlvbiB3aXRoIGd1YXJkcmFpbHMnLFxuICAgICAgICBrbm93bGVkZ2VCYXNlSWQ6ICdBQkNEMTIzNCcsXG4gICAgICAgIGd1YXJkcmFpbDoge1xuICAgICAgICAgIGd1YXJkcmFpbElkOiAnbXktZ3VhcmRyYWlsJyxcbiAgICAgICAgICBndWFyZHJhaWxWZXJzaW9uOiAnMScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgbmV3IEJhdGNoQWdlbnQoc3RhY2ssICdBZ2VudCcsIHtcbiAgICAgICAgYWdlbnROYW1lOiAnVGVzdEFnZW50JyxcbiAgICAgICAgcHJvbXB0OiAnVGVzdCBwcm9tcHQnLFxuICAgICAgICBhZ2VudERlZmluaXRpb246IHtcbiAgICAgICAgICBiZWRyb2NrTW9kZWw6IHsgZm1Nb2RlbElkOiB0ZXN0TW9kZWwgfSxcbiAgICAgICAgICBzeXN0ZW1Qcm9tcHQsXG4gICAgICAgICAga25vd2xlZGdlQmFzZXM6IFtrYl0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuXG4gICAgICAvLyBWZXJpZnkgZ3VhcmRyYWlsIHBlcm1pc3Npb25zIGFyZSBhZGRlZCBhcyBpbmxpbmUgcG9saWN5XG4gICAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpSb2xlJywge1xuICAgICAgICBQb2xpY2llczogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgIFBvbGljeU5hbWU6ICdLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMnLFxuICAgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICAgICAgU3RhdGVtZW50OiBNYXRjaC5hcnJheVdpdGgoW1xuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnYmVkcm9jazpBcHBseUd1YXJkcmFpbCcsXG4gICAgICAgICAgICAgICAgICBSZXNvdXJjZTogJ2Fybjphd3M6YmVkcm9jazp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOmd1YXJkcmFpbC9teS1ndWFyZHJhaWwnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hZ2VudC1rbm93bGVkZ2UtYmFzZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdXNlLWNhc2VzL2ZyYW1ld29yay90ZXN0cy9iYXNlLWFnZW50LWtub3dsZWRnZS1iYXNlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDLDJDQUE2QjtBQUM3Qiw2Q0FBeUM7QUFDekMsdURBQXlEO0FBQ3pELHlEQUFvRTtBQUNwRSxpREFBOEQ7QUFDOUQsNkRBQWtEO0FBQ2xELDJEQUEyRDtBQUMzRCx1REFBbUQ7QUFDbkQsNkRBQWdFO0FBRWhFLFFBQVEsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7SUFDcEQsSUFBSSxHQUFRLENBQUM7SUFDYixJQUFJLEtBQVksQ0FBQztJQUNqQixJQUFJLFlBQW1CLENBQUM7SUFDeEIsTUFBTSxTQUFTLEdBQUcsdUNBQXlCLENBQUMsdUNBQXVDLENBQUM7SUFFcEYsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxJQUFBLDBCQUFhLEdBQUUsQ0FBQztRQUN0QixLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUU7WUFDbEMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO1NBQ3RELENBQUMsQ0FBQztRQUVILFlBQVksR0FBRyxJQUFJLHFCQUFLLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0RBQW9ELENBQUM7U0FDakYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLElBQUksQ0FBQywyREFBMkQsRUFB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LGFBQWE7Z0JBQ3JCLGVBQWUsRUFBRTtvQkFDZixZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFO29CQUN0QyxZQUFZO29CQUNaLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDckI7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLFFBQVEsR0FBRyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUzQywwREFBMEQ7WUFDMUQsUUFBUSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFO2dCQUMvQyxRQUFRLEVBQUUsa0JBQUssQ0FBQyxTQUFTLENBQUM7b0JBQ3hCLGtCQUFLLENBQUMsVUFBVSxDQUFDO3dCQUNmLFVBQVUsRUFBRSwwQkFBMEI7d0JBQ3RDLGNBQWMsRUFBRTs0QkFDZCxTQUFTLEVBQUUsa0JBQUssQ0FBQyxTQUFTLENBQUM7Z0NBQ3pCLGtCQUFLLENBQUMsVUFBVSxDQUFDO29DQUNmLE1BQU0sRUFBRSx3QkFBd0I7b0NBQ2hDLFFBQVEsRUFBRSwrREFBK0Q7aUNBQzFFLENBQUM7NkJBQ0gsQ0FBQzt5QkFDSDtxQkFDRixDQUFDO2lCQUNILENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgVGVtcGxhdGUsIE1hdGNoIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5pbXBvcnQgeyBGb3VuZGF0aW9uTW9kZWxJZGVudGlmaWVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2snO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBjcmVhdGVUZXN0QXBwIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IHsgQmF0Y2hBZ2VudCB9IGZyb20gJy4uL2FnZW50cy9iYXRjaC1hZ2VudCc7XG5pbXBvcnQgeyBCZWRyb2NrS25vd2xlZGdlQmFzZSB9IGZyb20gJy4uL2FnZW50cy9rbm93bGVkZ2UtYmFzZSc7XG5cbmRlc2NyaWJlKCdCYXNlQWdlbnQgS25vd2xlZGdlIEJhc2UgSW50ZWdyYXRpb24nLCAoKSA9PiB7XG4gIGxldCBhcHA6IEFwcDtcbiAgbGV0IHN0YWNrOiBTdGFjaztcbiAgbGV0IHN5c3RlbVByb21wdDogQXNzZXQ7XG4gIGNvbnN0IHRlc3RNb2RlbCA9IEZvdW5kYXRpb25Nb2RlbElkZW50aWZpZXIuQU5USFJPUElDX0NMQVVERV8zX1NPTk5FVF8yMDI0MDIyOV9WMV8wO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IGNyZWF0ZVRlc3RBcHAoKTtcbiAgICBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdUZXN0U3RhY2snLCB7XG4gICAgICBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4OTAxMicsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSxcbiAgICB9KTtcblxuICAgIHN5c3RlbVByb21wdCA9IG5ldyBBc3NldChzdGFjaywgJ1N5c3RlbVByb21wdCcsIHtcbiAgICAgIHBhdGg6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9hZ2VudHMvcmVzb3VyY2VzL2RlZmF1bHQtc3RyYW5kcy1hZ2VudC9iYXRjaC5weScpLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQmFja3dhcmQgQ29tcGF0aWJpbGl0eScsICgpID0+IHtcbiAgICB0ZXN0KCdjcmVhdGVzIGFnZW50IHdpdGhvdXQga25vd2xlZGdlIGJhc2VzIChubyBLQnMgY29uZmlndXJlZCknLCAoKSA9PiB7XG4gICAgICBuZXcgQmF0Y2hBZ2VudChzdGFjaywgJ0FnZW50Jywge1xuICAgICAgICBhZ2VudE5hbWU6ICdUZXN0QWdlbnQnLFxuICAgICAgICBwcm9tcHQ6ICdUZXN0IHByb21wdCcsXG4gICAgICAgIGFnZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgIGJlZHJvY2tNb2RlbDogeyBmbU1vZGVsSWQ6IHRlc3RNb2RlbCB9LFxuICAgICAgICAgIHN5c3RlbVByb21wdCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgICAgIC8vIEFnZW50IHNob3VsZCBiZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseVxuICAgICAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLCAxKTtcblxuICAgICAgLy8gTm8gS0IgcGVybWlzc2lvbnMgc2hvdWxkIGJlIGFkZGVkIC0gdmVyaWZ5IG5vIEtub3dsZWRnZUJhc2VQZXJtaXNzaW9ucyBpbmxpbmUgcG9saWN5XG4gICAgICBjb25zdCByb2xlcyA9IHRlbXBsYXRlLmZpbmRSZXNvdXJjZXMoJ0FXUzo6SUFNOjpSb2xlJyk7XG4gICAgICBjb25zdCBhZ2VudFJvbGUgPSBPYmplY3QudmFsdWVzKHJvbGVzKS5maW5kKChyb2xlOiBhbnkpID0+XG4gICAgICAgIHJvbGUuUHJvcGVydGllcz8uUm9sZU5hbWU/LmluY2x1ZGVzPy4oJ0FnZW50JykgfHxcbiAgICAgICAgcm9sZS5Qcm9wZXJ0aWVzPy5Bc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ/LlN0YXRlbWVudD8uc29tZT8uKChzOiBhbnkpID0+XG4gICAgICAgICAgcy5QcmluY2lwYWw/LlNlcnZpY2UgPT09ICdsYW1iZGEuYW1hem9uYXdzLmNvbScsXG4gICAgICAgICksXG4gICAgICApIGFzIGFueTtcblxuICAgICAgLy8gQ2hlY2sgdGhhdCBLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMgcG9saWN5IGRvZXNuJ3QgZXhpc3RcbiAgICAgIGNvbnN0IHBvbGljaWVzID0gYWdlbnRSb2xlPy5Qcm9wZXJ0aWVzPy5Qb2xpY2llcyB8fCBbXTtcbiAgICAgIGNvbnN0IGhhc0tiUG9saWN5ID0gcG9saWNpZXMuc29tZSgocDogYW55KSA9PiBwLlBvbGljeU5hbWUgPT09ICdLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMnKTtcbiAgICAgIGV4cGVjdChoYXNLYlBvbGljeSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaW5nbGUgS25vd2xlZGdlIEJhc2UnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBhZ2VudCB3aXRoIHNpbmdsZSBLQiBhbmQgZ2VuZXJhdGVzIElBTSBwZXJtaXNzaW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGtiID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnUHJvZHVjdERvY3MnLCB7XG4gICAgICAgIG5hbWU6ICdwcm9kdWN0LWRvY3VtZW50YXRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Byb2R1Y3QgZG9jdW1lbnRhdGlvbiBhbmQgRkFRcycsXG4gICAgICAgIGtub3dsZWRnZUJhc2VJZDogJ0FCQ0QxMjM0JyxcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQmF0Y2hBZ2VudChzdGFjaywgJ0FnZW50Jywge1xuICAgICAgICBhZ2VudE5hbWU6ICdUZXN0QWdlbnQnLFxuICAgICAgICBwcm9tcHQ6ICdUZXN0IHByb21wdCcsXG4gICAgICAgIGFnZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgIGJlZHJvY2tNb2RlbDogeyBmbU1vZGVsSWQ6IHRlc3RNb2RlbCB9LFxuICAgICAgICAgIHN5c3RlbVByb21wdCxcbiAgICAgICAgICBrbm93bGVkZ2VCYXNlczogW2tiXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgICAgIC8vIFZlcmlmeSBLQiBwZXJtaXNzaW9ucyBhcmUgYWRkZWQgYXMgaW5saW5lIHBvbGljeSBvbiB0aGUgcm9sZVxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lOYW1lOiAnS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zJyxcbiAgICAgICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICdhcm46YXdzOmJlZHJvY2s6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjprbm93bGVkZ2UtYmFzZS9BQkNEMTIzNCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NyZWF0ZXMgcmV0cmlldmFsIHRvb2wgYXNzZXQgd2hlbiBLQiBpcyBjb25maWd1cmVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2IgPSBuZXcgQmVkcm9ja0tub3dsZWRnZUJhc2Uoc3RhY2ssICdQcm9kdWN0RG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3Byb2R1Y3QtZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBkb2N1bWVudGF0aW9uIGFuZCBGQVFzJyxcbiAgICAgICAga25vd2xlZGdlQmFzZUlkOiAnQUJDRDEyMzQnLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBCYXRjaEFnZW50KHN0YWNrLCAnQWdlbnQnLCB7XG4gICAgICAgIGFnZW50TmFtZTogJ1Rlc3RBZ2VudCcsXG4gICAgICAgIHByb21wdDogJ1Rlc3QgcHJvbXB0JyxcbiAgICAgICAgYWdlbnREZWZpbml0aW9uOiB7XG4gICAgICAgICAgYmVkcm9ja01vZGVsOiB7IGZtTW9kZWxJZDogdGVzdE1vZGVsIH0sXG4gICAgICAgICAgc3lzdGVtUHJvbXB0LFxuICAgICAgICAgIGtub3dsZWRnZUJhc2VzOiBba2JdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgLy8gVmVyaWZ5IExhbWJkYSBmdW5jdGlvbiBpcyBjcmVhdGVkIChhZ2VudCBmdW5jdGlvbilcbiAgICAgIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJywgMSk7XG5cbiAgICAgIC8vIFZlcmlmeSBJQU0gcG9saWNpZXMgZ3JhbnQgUzMgcmVhZCBhY2Nlc3MgZm9yIGFzc2V0c1xuICAgICAgLy8gV2hlbiBLQiBpcyBjb25maWd1cmVkLCB0aGUgcmV0cmlldmFsIHRvb2wgYXNzZXQgc2hvdWxkIGJlIGdyYW50ZWQgcmVhZCBhY2Nlc3NcbiAgICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICBTdGF0ZW1lbnQ6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBNYXRjaC5hcnJheVdpdGgoWydzMzpHZXRPYmplY3QqJywgJ3MzOkdldEJ1Y2tldConLCAnczM6TGlzdConXSksXG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdNdWx0aXBsZSBLbm93bGVkZ2UgQmFzZXMnLCAoKSA9PiB7XG4gICAgdGVzdCgnY3JlYXRlcyBhZ2VudCB3aXRoIG11bHRpcGxlIEtCcyBhbmQgZ2VuZXJhdGVzIHBlcm1pc3Npb25zIGZvciBhbGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrYjEgPSBuZXcgQmVkcm9ja0tub3dsZWRnZUJhc2Uoc3RhY2ssICdQcm9kdWN0RG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3Byb2R1Y3QtZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAga25vd2xlZGdlQmFzZUlkOiAnS0ItUFJPRFVDVCcsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qga2IyID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnU3VwcG9ydERvY3MnLCB7XG4gICAgICAgIG5hbWU6ICdzdXBwb3J0LWRvY3VtZW50YXRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQgZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGtub3dsZWRnZUJhc2VJZDogJ0tCLVNVUFBPUlQnLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBCYXRjaEFnZW50KHN0YWNrLCAnQWdlbnQnLCB7XG4gICAgICAgIGFnZW50TmFtZTogJ1Rlc3RBZ2VudCcsXG4gICAgICAgIHByb21wdDogJ1Rlc3QgcHJvbXB0JyxcbiAgICAgICAgYWdlbnREZWZpbml0aW9uOiB7XG4gICAgICAgICAgYmVkcm9ja01vZGVsOiB7IGZtTW9kZWxJZDogdGVzdE1vZGVsIH0sXG4gICAgICAgICAgc3lzdGVtUHJvbXB0LFxuICAgICAgICAgIGtub3dsZWRnZUJhc2VzOiBba2IxLCBrYjJdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgLy8gVmVyaWZ5IHBlcm1pc3Npb25zIGZvciBib3RoIEtCcyBhcmUgYWRkZWQgYXMgaW5saW5lIHBvbGljeVxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lOYW1lOiAnS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zJyxcbiAgICAgICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICdhcm46YXdzOmJlZHJvY2s6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjprbm93bGVkZ2UtYmFzZS9LQi1QUk9EVUNUJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgICAgUmVzb3VyY2U6ICdhcm46YXdzOmJlZHJvY2s6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjprbm93bGVkZ2UtYmFzZS9LQi1TVVBQT1JUJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQWRkaXRpb25hbCBLQiBQb2xpY3kgU3RhdGVtZW50cycsICgpID0+IHtcbiAgICB0ZXN0KCdhZGRzIGFkZGl0aW9uYWwgS0IgcG9saWN5IHN0YXRlbWVudHMgd2hlbiBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGtiID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnUHJvZHVjdERvY3MnLCB7XG4gICAgICAgIG5hbWU6ICdwcm9kdWN0LWRvY3VtZW50YXRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Byb2R1Y3QgZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGtub3dsZWRnZUJhc2VJZDogJ0FCQ0QxMjM0JyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZGRpdGlvbmFsU3RhdGVtZW50ID0gbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCddLFxuICAgICAgICByZXNvdXJjZXM6IFsnYXJuOmF3czpzMzo6Om15LWN1c3RvbS1idWNrZXQvKiddLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBCYXRjaEFnZW50KHN0YWNrLCAnQWdlbnQnLCB7XG4gICAgICAgIGFnZW50TmFtZTogJ1Rlc3RBZ2VudCcsXG4gICAgICAgIHByb21wdDogJ1Rlc3QgcHJvbXB0JyxcbiAgICAgICAgYWdlbnREZWZpbml0aW9uOiB7XG4gICAgICAgICAgYmVkcm9ja01vZGVsOiB7IGZtTW9kZWxJZDogdGVzdE1vZGVsIH0sXG4gICAgICAgICAgc3lzdGVtUHJvbXB0LFxuICAgICAgICAgIGtub3dsZWRnZUJhc2VzOiBba2JdLFxuICAgICAgICAgIGFkZGl0aW9uYWxQb2xpY3lTdGF0ZW1lbnRzRm9yS25vd2xlZGdlQmFzZXM6IFthZGRpdGlvbmFsU3RhdGVtZW50XSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG5cbiAgICAgIC8vIFZlcmlmeSBhZGRpdGlvbmFsIHN0YXRlbWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgS0IgcGVybWlzc2lvbnMgcG9saWN5XG4gICAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpSb2xlJywge1xuICAgICAgICBQb2xpY2llczogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgIFBvbGljeU5hbWU6ICdLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMnLFxuICAgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICAgICAgU3RhdGVtZW50OiBNYXRjaC5hcnJheVdpdGgoW1xuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnczM6R2V0T2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgICAgIFJlc291cmNlOiAnYXJuOmF3czpzMzo6Om15LWN1c3RvbS1idWNrZXQvKicsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NvbWJpbmVzIEtCIHBlcm1pc3Npb25zIHdpdGggYWRkaXRpb25hbCBzdGF0ZW1lbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3Qga2IgPSBuZXcgQmVkcm9ja0tub3dsZWRnZUJhc2Uoc3RhY2ssICdQcm9kdWN0RG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3Byb2R1Y3QtZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBkb2N1bWVudGF0aW9uJyxcbiAgICAgICAga25vd2xlZGdlQmFzZUlkOiAnQUJDRDEyMzQnLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxTdGF0ZW1lbnQgPSBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnZHluYW1vZGI6R2V0SXRlbSddLFxuICAgICAgICByZXNvdXJjZXM6IFsnYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOnRhYmxlL215LXRhYmxlJ10sXG4gICAgICB9KTtcblxuICAgICAgbmV3IEJhdGNoQWdlbnQoc3RhY2ssICdBZ2VudCcsIHtcbiAgICAgICAgYWdlbnROYW1lOiAnVGVzdEFnZW50JyxcbiAgICAgICAgcHJvbXB0OiAnVGVzdCBwcm9tcHQnLFxuICAgICAgICBhZ2VudERlZmluaXRpb246IHtcbiAgICAgICAgICBiZWRyb2NrTW9kZWw6IHsgZm1Nb2RlbElkOiB0ZXN0TW9kZWwgfSxcbiAgICAgICAgICBzeXN0ZW1Qcm9tcHQsXG4gICAgICAgICAga25vd2xlZGdlQmFzZXM6IFtrYl0sXG4gICAgICAgICAgYWRkaXRpb25hbFBvbGljeVN0YXRlbWVudHNGb3JLbm93bGVkZ2VCYXNlczogW2FkZGl0aW9uYWxTdGF0ZW1lbnRdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxuICAgICAgLy8gVmVyaWZ5IGJvdGggS0IgcGVybWlzc2lvbnMgYW5kIGFkZGl0aW9uYWwgc3RhdGVtZW50cyBhcmUgcHJlc2VudFxuICAgICAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICAgICAgUG9saWNpZXM6IE1hdGNoLmFycmF5V2l0aChbXG4gICAgICAgICAgTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICAgICAgICBQb2xpY3lOYW1lOiAnS25vd2xlZGdlQmFzZVBlcm1pc3Npb25zJyxcbiAgICAgICAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgICAgICAgIFN0YXRlbWVudDogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgICAgICAgIEFjdGlvbjogWydiZWRyb2NrOlJldHJpZXZlJywgJ2JlZHJvY2s6UmV0cmlldmVBbmRHZW5lcmF0ZSddLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnZHluYW1vZGI6R2V0SXRlbScsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0d1YXJkcmFpbCBQZXJtaXNzaW9ucycsICgpID0+IHtcbiAgICB0ZXN0KCdhZGRzIGd1YXJkcmFpbCBwZXJtaXNzaW9ucyB3aGVuIEtCIGhhcyBndWFyZHJhaWwgY29uZmlndXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGtiID0gbmV3IEJlZHJvY2tLbm93bGVkZ2VCYXNlKHN0YWNrLCAnU2VjdXJlRG9jcycsIHtcbiAgICAgICAgbmFtZTogJ3NlY3VyZS1kb2N1bWVudGF0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTZWN1cmUgZG9jdW1lbnRhdGlvbiB3aXRoIGd1YXJkcmFpbHMnLFxuICAgICAgICBrbm93bGVkZ2VCYXNlSWQ6ICdBQkNEMTIzNCcsXG4gICAgICAgIGd1YXJkcmFpbDoge1xuICAgICAgICAgIGd1YXJkcmFpbElkOiAnbXktZ3VhcmRyYWlsJyxcbiAgICAgICAgICBndWFyZHJhaWxWZXJzaW9uOiAnMScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgbmV3IEJhdGNoQWdlbnQoc3RhY2ssICdBZ2VudCcsIHtcbiAgICAgICAgYWdlbnROYW1lOiAnVGVzdEFnZW50JyxcbiAgICAgICAgcHJvbXB0OiAnVGVzdCBwcm9tcHQnLFxuICAgICAgICBhZ2VudERlZmluaXRpb246IHtcbiAgICAgICAgICBiZWRyb2NrTW9kZWw6IHsgZm1Nb2RlbElkOiB0ZXN0TW9kZWwgfSxcbiAgICAgICAgICBzeXN0ZW1Qcm9tcHQsXG4gICAgICAgICAga25vd2xlZGdlQmFzZXM6IFtrYl0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuXG4gICAgICAvLyBWZXJpZnkgZ3VhcmRyYWlsIHBlcm1pc3Npb25zIGFyZSBhZGRlZCBhcyBpbmxpbmUgcG9saWN5XG4gICAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6SUFNOjpSb2xlJywge1xuICAgICAgICBQb2xpY2llczogTWF0Y2guYXJyYXlXaXRoKFtcbiAgICAgICAgICBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICAgIFBvbGljeU5hbWU6ICdLbm93bGVkZ2VCYXNlUGVybWlzc2lvbnMnLFxuICAgICAgICAgICAgUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgICAgICAgICAgU3RhdGVtZW50OiBNYXRjaC5hcnJheVdpdGgoW1xuICAgICAgICAgICAgICAgIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnYmVkcm9jazpBcHBseUd1YXJkcmFpbCcsXG4gICAgICAgICAgICAgICAgICBSZXNvdXJjZTogJ2Fybjphd3M6YmVkcm9jazp1cy1lYXN0LTE6MTIzNDU2Nzg5MDEyOmd1YXJkcmFpbC9teS1ndWFyZHJhaWwnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|