@fjall/components-infrastructure 0.88.3 → 0.89.2
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/LICENSE +21 -0
- package/dist/lib/app.d.ts +33 -10
- package/dist/lib/app.js +79 -36
- package/dist/lib/aspects/index.d.ts +1 -0
- package/dist/lib/aspects/index.js +6 -0
- package/dist/lib/config/aws/accountAuditRole.d.ts +20 -0
- package/dist/lib/config/aws/accountAuditRole.js +38 -0
- package/dist/lib/config/aws/accountMonitoringRole.d.ts +22 -0
- package/dist/lib/config/aws/accountMonitoringRole.js +133 -0
- package/dist/lib/config/aws/cloudTrail.d.ts +0 -3
- package/dist/lib/config/aws/cloudTrail.js +2 -2
- package/dist/lib/config/aws/disasterRecovery.js +53 -20
- package/dist/lib/config/aws/ecrDefaultImage.js +4 -3
- package/dist/lib/config/aws/index.d.ts +4 -0
- package/dist/lib/config/aws/index.js +5 -1
- package/dist/lib/config/aws/oidcConnector.d.ts +8 -0
- package/dist/lib/config/aws/oidcConnector.js +46 -0
- package/dist/lib/config/aws/platform.d.ts +2 -0
- package/dist/lib/config/aws/platform.js +6 -0
- package/dist/lib/config/index.d.ts +2 -0
- package/dist/lib/config/index.js +21 -0
- package/dist/lib/patterns/aws/account.js +22 -10
- package/dist/lib/patterns/aws/cdn.d.ts +19 -40
- package/dist/lib/patterns/aws/cdn.js +21 -17
- package/dist/lib/patterns/aws/compute.d.ts +9 -720
- package/dist/lib/patterns/aws/compute.js +27 -432
- package/dist/lib/patterns/aws/computeEc2.d.ts +67 -0
- package/dist/lib/patterns/aws/computeEc2.js +46 -0
- package/dist/lib/patterns/aws/computeEcs.d.ts +446 -0
- package/dist/lib/patterns/aws/computeEcs.js +246 -0
- package/dist/lib/patterns/aws/computeLambda.d.ts +220 -0
- package/dist/lib/patterns/aws/computeLambda.js +147 -0
- package/dist/lib/patterns/aws/database.d.ts +7 -87
- package/dist/lib/patterns/aws/database.js +15 -38
- package/dist/lib/patterns/aws/domainDelegation.d.ts +8 -0
- package/dist/lib/patterns/aws/domainDelegation.js +54 -0
- package/dist/lib/patterns/aws/domainFactory.d.ts +8 -0
- package/dist/lib/patterns/aws/domainFactory.js +23 -0
- package/dist/lib/patterns/aws/index.d.ts +4 -1
- package/dist/lib/patterns/aws/index.js +6 -2
- package/dist/lib/patterns/aws/interfaces/cdn.d.ts +26 -0
- package/dist/lib/patterns/aws/interfaces/cdn.js +14 -0
- package/dist/lib/patterns/aws/interfaces/connector.d.ts +4 -181
- package/dist/lib/patterns/aws/interfaces/connector.js +16 -113
- package/dist/lib/patterns/aws/interfaces/domain.d.ts +2 -0
- package/dist/lib/patterns/aws/interfaces/domain.js +6 -0
- package/dist/lib/patterns/aws/interfaces/index.d.ts +2 -0
- package/dist/lib/patterns/aws/interfaces/index.js +5 -2
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +9 -6
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/network.js +6 -9
- package/dist/lib/patterns/aws/organisation.d.ts +4 -2
- package/dist/lib/patterns/aws/organisation.js +21 -8
- package/dist/lib/patterns/aws/payload.js +21 -12
- package/dist/lib/patterns/aws/storage.d.ts +3 -2
- package/dist/lib/patterns/aws/storage.js +1 -1
- package/dist/lib/resources/aws/audit/auditRole.js +4 -4
- package/dist/lib/resources/aws/audit/index.d.ts +1 -0
- package/dist/lib/resources/aws/audit/index.js +6 -0
- package/dist/lib/resources/aws/backup/backupPlan.js +3 -2
- package/dist/lib/resources/aws/backup/backupVault.js +5 -3
- package/dist/lib/resources/aws/base/awsStack.d.ts +4 -2
- package/dist/lib/resources/aws/base/awsStack.js +8 -2
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +14 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +52 -18
- package/dist/lib/resources/aws/compute/ec2.js +18 -22
- package/dist/lib/resources/aws/compute/ecs.d.ts +23 -10
- package/dist/lib/resources/aws/compute/ecs.js +121 -64
- package/dist/lib/resources/aws/compute/index.d.ts +1 -0
- package/dist/lib/resources/aws/compute/index.js +2 -1
- package/dist/lib/resources/aws/compute/lambda.d.ts +0 -2
- package/dist/lib/resources/aws/compute/lambda.js +12 -27
- package/dist/lib/resources/aws/database/dynamodb.js +3 -13
- package/dist/lib/resources/aws/database/index.d.ts +8 -2
- package/dist/lib/resources/aws/database/index.js +19 -3
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +2 -3
- package/dist/lib/resources/aws/database/rdsAurora.js +32 -68
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +6 -6
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +25 -29
- package/dist/lib/resources/aws/database/rdsDefaults.d.ts +11 -0
- package/dist/lib/resources/aws/database/rdsDefaults.js +15 -0
- package/dist/lib/resources/aws/database/rdsHelpers.d.ts +39 -0
- package/dist/lib/resources/aws/database/rdsHelpers.js +75 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +7 -8
- package/dist/lib/resources/aws/database/rdsInstance.js +40 -84
- package/dist/lib/resources/aws/database/rdsProxyOutput.d.ts +7 -0
- package/dist/lib/resources/aws/database/rdsProxyOutput.js +18 -0
- package/dist/lib/resources/aws/iam/index.d.ts +0 -1
- package/dist/lib/resources/aws/iam/index.js +1 -2
- package/dist/lib/resources/aws/index.d.ts +0 -1
- package/dist/lib/resources/aws/index.js +1 -2
- package/dist/lib/resources/aws/logging/cloudTrail.js +13 -3
- package/dist/lib/resources/aws/logging/index.d.ts +2 -0
- package/dist/lib/resources/aws/logging/index.js +19 -0
- package/dist/lib/resources/aws/messaging/index.d.ts +3 -2
- package/dist/lib/resources/aws/messaging/index.js +4 -3
- package/dist/lib/resources/aws/messaging/sqs.js +14 -11
- package/dist/lib/resources/aws/messaging/utils.d.ts +1 -2
- package/dist/lib/resources/aws/messaging/utils.js +3 -4
- package/dist/lib/resources/aws/monitoring/index.d.ts +0 -1
- package/dist/lib/resources/aws/monitoring/index.js +4 -17
- package/dist/lib/resources/aws/networking/domain.d.ts +13 -0
- package/dist/lib/resources/aws/networking/domain.js +102 -0
- package/dist/lib/resources/aws/networking/domainCertificate.d.ts +13 -0
- package/dist/lib/resources/aws/networking/domainCertificate.js +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.js +150 -0
- package/dist/lib/resources/aws/networking/index.d.ts +4 -0
- package/dist/lib/resources/aws/networking/index.js +5 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +57 -31
- package/dist/lib/resources/aws/networking/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/networking/securityGroup.js +14 -0
- package/dist/lib/resources/aws/networking/vpc.js +9 -4
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +17 -0
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +66 -0
- package/dist/lib/resources/aws/organisation/index.d.ts +1 -0
- package/dist/lib/resources/aws/organisation/index.js +4 -2
- package/dist/lib/resources/aws/secrets/index.d.ts +0 -1
- package/dist/lib/resources/aws/secrets/index.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +0 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -5
- package/dist/lib/resources/aws/storage/s3.d.ts +3 -3
- package/dist/lib/resources/aws/storage/s3.js +1 -1
- package/dist/lib/resources/aws/utilities/index.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/index.js +22 -0
- package/dist/lib/utils/backupTierMapping.d.ts +11 -0
- package/dist/lib/utils/backupTierMapping.js +17 -0
- package/dist/lib/utils/capitaliseString.d.ts +1 -12
- package/dist/lib/utils/capitaliseString.js +8 -28
- package/dist/lib/utils/connections.d.ts +46 -0
- package/dist/lib/utils/connections.js +159 -0
- package/dist/lib/utils/connector.d.ts +183 -0
- package/dist/lib/utils/connector.js +117 -0
- package/dist/lib/utils/databaseTypes.d.ts +85 -0
- package/dist/lib/utils/databaseTypes.js +34 -0
- package/dist/lib/utils/dnsRecords.d.ts +4 -0
- package/dist/lib/utils/dnsRecords.js +108 -0
- package/dist/lib/utils/domainTypes.d.ts +37 -0
- package/dist/lib/utils/domainTypes.js +10 -0
- package/dist/lib/utils/env.d.ts +42 -0
- package/dist/lib/utils/env.js +122 -0
- package/dist/lib/utils/getConfig.d.ts +0 -5
- package/dist/lib/utils/getConfig.js +42 -19
- package/dist/lib/utils/index.d.ts +7 -0
- package/dist/lib/utils/index.js +8 -1
- package/dist/lib/utils/removalPolicy.d.ts +2 -0
- package/dist/lib/utils/removalPolicy.js +16 -0
- package/dist/lib/utils/standardTagsAspect.d.ts +4 -0
- package/dist/lib/utils/standardTagsAspect.js +8 -8
- package/dist/lib/utils/vpcUtils.d.ts +14 -0
- package/dist/lib/utils/vpcUtils.js +28 -0
- package/package.json +7 -6
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Network = exports.NetworkFactory = void 0;
|
|
4
4
|
const constructs_1 = require("constructs");
|
|
5
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
5
|
const vpc_1 = require("../../resources/aws/networking/vpc");
|
|
7
6
|
const validationLogger_js_1 = require("../../utils/validationLogger.js");
|
|
8
7
|
function validateNetworkProps(props) {
|
|
@@ -36,14 +35,12 @@ class Network extends constructs_1.Construct {
|
|
|
36
35
|
this.vpc = this.createVpc(id, props, app);
|
|
37
36
|
}
|
|
38
37
|
createVpc(id, props, app) {
|
|
39
|
-
const
|
|
38
|
+
const rawAccountId = app.node.tryGetContext("accountId");
|
|
39
|
+
const accountId = (typeof rawAccountId === "string" ? rawAccountId : undefined) ||
|
|
40
|
+
process.env.CDK_DEFAULT_ACCOUNT;
|
|
40
41
|
const region = process.env.CDK_DEFAULT_REGION;
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
if (isManagedAccount && accountId && region) {
|
|
44
|
-
const regionSuffix = region.replace(/-/g, "");
|
|
45
|
-
ipv4IpamPoolId = aws_cdk_lib_1.Fn.importValue(`IpamPoolId${accountId}${regionSuffix}`);
|
|
46
|
-
}
|
|
42
|
+
const rawIpamPoolId = app.node.tryGetContext("ipamPoolId");
|
|
43
|
+
const ipv4IpamPoolId = typeof rawIpamPoolId === "string" ? rawIpamPoolId : undefined;
|
|
47
44
|
const vpcProps = {
|
|
48
45
|
vpcName: props.vpcName,
|
|
49
46
|
accountId,
|
|
@@ -97,4 +94,4 @@ class Network extends constructs_1.Construct {
|
|
|
97
94
|
}
|
|
98
95
|
}
|
|
99
96
|
exports.Network = Network;
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQWlDO0FBSWpDLDREQUF3RTtBQUN4RSx5RUFBOEQ7QUF1RTlELFNBQVMsb0JBQW9CLENBQUMsS0FBb0I7SUFDaEQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxpQ0FBVyxDQUFDLElBQUksQ0FDZCw0Q0FBNEMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQ0UsT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVE7UUFDckMsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJO1FBQzFCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFDckMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7WUFDckMsaUNBQVcsQ0FBQyxJQUFJLENBQ2Qsd0JBQXdCLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxxQkFBcUIsTUFBTSxJQUFJLENBQy9FLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBYSxjQUFjO0lBQ3pCLE1BQU0sQ0FB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QixNQUE4QztRQWlCOUMsSUFBSSxNQUFNLEtBQUssS0FBSztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRW5DLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUNMLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSztnQkFDdEIsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDO29CQUNFLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJO29CQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSTtpQkFDM0M7WUFDUCxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7U0FDakUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQXJHRCwwQkFxR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRm4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgSVZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBWcGMsIHR5cGUgVnBjUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY1wiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdmFsaWRhdGlvbkxvZ2dlci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdENvbmZpZyB7XG4gIGNvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMb2dDb25maWcge1xuICBkZXN0aW5hdGlvbj86IFwiY2xvdWR3YXRjaFwiIHwgXCJzM1wiO1xuICByZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICB0cmFmZmljVHlwZT86IFwiQUxMXCIgfCBcIkFDQ0VQVFwiIHwgXCJSRUpFQ1RcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5RW5kcG9pbnRzQ29uZmlnIHtcbiAgczM/OiBib29sZWFuO1xuICBkeW5hbW9kYj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlRW5kcG9pbnRzQ29uZmlnIHtcbiAgZWNyPzogYm9vbGVhbjtcbiAgc2VjcmV0c01hbmFnZXI/OiBib29sZWFuO1xuICBrbXM/OiBib29sZWFuO1xuICBjbG91ZHdhdGNoTG9ncz86IGJvb2xlYW47XG4gIHNzbT86IGJvb2xlYW47XG4gIHN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjRW5kcG9pbnRzQ29uZmlnIHtcbiAgZ2F0ZXdheT86IEdhdGV3YXlFbmRwb2ludHNDb25maWcgfCBmYWxzZTtcbiAgaW50ZXJmYWNlPzogSW50ZXJmYWNlRW5kcG9pbnRzQ29uZmlnIHwgZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0Q29uZmlnIHtcbiAgY2lkck1hc2s/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0c0NvbmZpZyB7XG4gIHB1YmxpYz86IFN1Ym5ldENvbmZpZztcbiAgcHJpdmF0ZT86IFN1Ym5ldENvbmZpZztcbiAgaXNvbGF0ZWQ/OiBTdWJuZXRDb25maWcgfCBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0R2F0ZXdheUNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayAoVlBDKSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIGNvc3QgVlBDIChubyBOQVQsIGdhdGV3YXkgZW5kcG9pbnRzIG9ubHkpXG4gKiB7IG5hdEdhdGV3YXlzOiBmYWxzZSB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFByb2R1Y3Rpb24gVlBDIHdpdGggMSBOQVQgZ2F0ZXdheVxuICogeyBuYXRHYXRld2F5czogeyBjb3VudDogMSB9LCBmbG93TG9nczoge30gfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIaWdoLWF2YWlsYWJpbGl0eSBWUEMgd2l0aCBpbnRlcmZhY2UgZW5kcG9pbnRzXG4gKiB7IG1heEF6czogMywgbmF0R2F0ZXdheXM6IHsgY291bnQ6IDMgfSwgdnBjRW5kcG9pbnRzOiB7IGludGVyZmFjZTogeyBlY3I6IHRydWUgfSB9IH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmV0d29ya1Byb3BzIHtcbiAgdnBjTmFtZT86IHN0cmluZztcbiAgbWF4QXpzPzogbnVtYmVyO1xuICBjaWRyTWFzaz86IG51bWJlcjtcbiAgbmF0R2F0ZXdheXM/OiBOYXRDb25maWcgfCBmYWxzZTtcbiAgZmxvd0xvZ3M/OiBGbG93TG9nQ29uZmlnIHwgZmFsc2U7XG4gIHZwY0VuZHBvaW50cz86IFZwY0VuZHBvaW50c0NvbmZpZyB8IGZhbHNlO1xuICBzdWJuZXRzPzogU3VibmV0c0NvbmZpZztcbiAgdHJhbnNpdEdhdGV3YXk/OiBUcmFuc2l0R2F0ZXdheUNvbmZpZztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOZXR3b3JrUHJvcHMocHJvcHM6IElOZXR3b3JrUHJvcHMpOiB2b2lkIHtcbiAgaWYgKHByb3BzLm1heEF6cyAhPT0gdW5kZWZpbmVkICYmIChwcm9wcy5tYXhBenMgPCAxIHx8IHByb3BzLm1heEF6cyA+IDMpKSB7XG4gICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgIGAnbWF4QXpzJyBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzLiBHb3Q6ICR7cHJvcHMubWF4QXpzfS5gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgcHJvcHMubmF0R2F0ZXdheXMgPT09IFwib2JqZWN0XCIgJiZcbiAgICBwcm9wcy5uYXRHYXRld2F5cyAhPT0gbnVsbCAmJlxuICAgIHByb3BzLm5hdEdhdGV3YXlzLmNvdW50ICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgY29uc3QgbWF4QXpzID0gcHJvcHMubWF4QXpzID8/IDM7XG4gICAgaWYgKHByb3BzLm5hdEdhdGV3YXlzLmNvdW50ID4gbWF4QXpzKSB7XG4gICAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgICBgJ25hdEdhdGV3YXlzLmNvdW50JyAoJHtwcm9wcy5uYXRHYXRld2F5cy5jb3VudH0pIGV4Y2VlZHMgbWF4QXpzICgke21heEF6c30pLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb3BzLnRyYW5zaXRHYXRld2F5ICYmICFwcm9wcy50cmFuc2l0R2F0ZXdheS5pZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRyYW5zaXQgR2F0ZXdheSBjb25maWd1cmF0aW9uIHJlcXVpcmVzICdpZCcuXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSU5ldHdvcmtQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIHZhbGlkYXRlTmV0d29ya1Byb3BzKHByb3BzKTtcbiAgICAgIHJldHVybiBuZXcgTmV0d29yayhzY29wZSwgaWQsIHByb3BzLCBhcHApO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5ldHdvcmsgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjOiBWcGM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElOZXR3b3JrUHJvcHMsIGFwcDogQXBwKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnZwYyA9IHRoaXMuY3JlYXRlVnBjKGlkLCBwcm9wcywgYXBwKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVnBjKGlkOiBzdHJpbmcsIHByb3BzOiBJTmV0d29ya1Byb3BzLCBhcHA6IEFwcCk6IFZwYyB7XG4gICAgY29uc3QgYWNjb3VudElkID1cbiAgICAgIGFwcC5ub2RlLnRyeUdldENvbnRleHQoXCJhY2NvdW50SWRcIikgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVDtcbiAgICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT047XG4gICAgY29uc3QgaXNNYW5hZ2VkQWNjb3VudCA9XG4gICAgICBhcHAubm9kZS50cnlHZXRDb250ZXh0KFwibWFuYWdlZEFjY291bnRcIikgPT09IFwidHJ1ZVwiO1xuXG4gICAgbGV0IGlwdjRJcGFtUG9vbElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGlzTWFuYWdlZEFjY291bnQgJiYgYWNjb3VudElkICYmIHJlZ2lvbikge1xuICAgICAgY29uc3QgcmVnaW9uU3VmZml4ID0gcmVnaW9uLnJlcGxhY2UoLy0vZywgXCJcIik7XG4gICAgICBpcHY0SXBhbVBvb2xJZCA9IEZuLmltcG9ydFZhbHVlKGBJcGFtUG9vbElkJHthY2NvdW50SWR9JHtyZWdpb25TdWZmaXh9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBjUHJvcHM6IFZwY1Byb3BzID0ge1xuICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZSxcbiAgICAgIGFjY291bnRJZCxcbiAgICAgIHJlZ2lvbixcbiAgICAgIGlwdjRJcGFtUG9vbElkLFxuICAgICAgbWF4QXpzOiBwcm9wcy5tYXhBenMsXG4gICAgICB2cGNDaWRyTWFzazogcHJvcHMuY2lkck1hc2ssXG4gICAgICBzdWJuZXRDaWRyTWFzazogcHJvcHMuc3VibmV0cz8ucHJpdmF0ZT8uY2lkck1hc2ssXG4gICAgICBuYXRHYXRld2F5Q29uZmlnOiB0aGlzLnJlc29sdmVOYXRDb25maWcocHJvcHMubmF0R2F0ZXdheXMpLFxuICAgICAgZmxvd0xvZ0NvbmZpZzogdGhpcy5yZXNvbHZlRmxvd0xvZ0NvbmZpZyhwcm9wcy5mbG93TG9ncyksXG4gICAgICBlbmRwb2ludHNDb25maWc6IHRoaXMucmVzb2x2ZUVuZHBvaW50c0NvbmZpZyhwcm9wcy52cGNFbmRwb2ludHMpXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgVnBjKHRoaXMsIGlkLCB2cGNQcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVOYXRDb25maWcoXG4gICAgY29uZmlnOiBOYXRDb25maWcgfCBmYWxzZSB8IHVuZGVmaW5lZFxuICApOiB7IGNvdW50PzogbnVtYmVyIH0gfCBmYWxzZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGNvbmZpZyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChjb25maWcgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHsgY291bnQ6IGNvbmZpZy5jb3VudCB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRmxvd0xvZ0NvbmZpZyhjb25maWc6IEZsb3dMb2dDb25maWcgfCBmYWxzZSB8IHVuZGVmaW5lZCk6XG4gICAgfCB7XG4gICAgICAgIGRlc3RpbmF0aW9uPzogXCJjbG91ZHdhdGNoXCIgfCBcInMzXCI7XG4gICAgICAgIHJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gICAgICAgIHRyYWZmaWNUeXBlPzogXCJBTExcIiB8IFwiQUNDRVBUXCIgfCBcIlJFSkVDVFwiO1xuICAgICAgfVxuICAgIHwgZmFsc2VcbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGNvbmZpZyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChjb25maWcgPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25maWcuZGVzdGluYXRpb24sXG4gICAgICByZXRlbnRpb25EYXlzOiBjb25maWcucmV0ZW50aW9uRGF5cyxcbiAgICAgIHRyYWZmaWNUeXBlOiBjb25maWcudHJhZmZpY1R5cGVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRW5kcG9pbnRzQ29uZmlnKFxuICAgIGNvbmZpZzogVnBjRW5kcG9pbnRzQ29uZmlnIHwgZmFsc2UgfCB1bmRlZmluZWRcbiAgKTpcbiAgICB8IHtcbiAgICAgICAgZ2F0ZXdheT86IHsgczM/OiBib29sZWFuOyBkeW5hbW9kYj86IGJvb2xlYW4gfSB8IGZhbHNlO1xuICAgICAgICBpbnRlcmZhY2U/OlxuICAgICAgICAgIHwge1xuICAgICAgICAgICAgICBlY3I/OiBib29sZWFuO1xuICAgICAgICAgICAgICBzZWNyZXRzTWFuYWdlcj86IGJvb2xlYW47XG4gICAgICAgICAgICAgIGttcz86IGJvb2xlYW47XG4gICAgICAgICAgICAgIGNsb3Vkd2F0Y2hMb2dzPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgc3NtPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgc3RzPzogYm9vbGVhbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB8IGZhbHNlO1xuICAgICAgfVxuICAgIHwgZmFsc2VcbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGNvbmZpZyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChjb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgZ2F0ZXdheTogeyBzMzogdHJ1ZSwgZHluYW1vZGI6IHRydWUgfSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBnYXRld2F5OlxuICAgICAgICBjb25maWcuZ2F0ZXdheSA9PT0gZmFsc2VcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHMzOiBjb25maWcuZ2F0ZXdheT8uczMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgZHluYW1vZGI6IGNvbmZpZy5nYXRld2F5Py5keW5hbW9kYiA/PyB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgaW50ZXJmYWNlOiBjb25maWcuaW50ZXJmYWNlID09PSBmYWxzZSA/IGZhbHNlIDogY29uZmlnLmludGVyZmFjZVxuICAgIH07XG4gIH1cblxuICBnZXRWcGMoKTogSVZwYyB7XG4gICAgcmV0dXJuIHRoaXMudnBjO1xuICB9XG59XG4iXX0=
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFJdkMsNERBQXdFO0FBQ3hFLHlFQUE4RDtBQXVFOUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFvQjtJQUNoRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLGlDQUFXLENBQUMsSUFBSSxDQUNkLDRDQUE0QyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsSUFDRSxPQUFPLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUTtRQUNyQyxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUk7UUFDMUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUNyQyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxpQ0FBVyxDQUFDLElBQUksQ0FDZCx3QkFBd0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLHFCQUFxQixNQUFNLElBQUksQ0FDL0UsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFhLGNBQWM7SUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxF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QUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFDTCxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUs7Z0JBQ3RCLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQztvQkFDRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSTtvQkFDOUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUk7aUJBQzNDO1lBQ1AsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFuR0QsMEJBbUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgSVZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBWcGMsIHR5cGUgVnBjUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY1wiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdmFsaWRhdGlvbkxvZ2dlci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdENvbmZpZyB7XG4gIGNvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMb2dDb25maWcge1xuICBkZXN0aW5hdGlvbj86IFwiY2xvdWR3YXRjaFwiIHwgXCJzM1wiO1xuICByZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICB0cmFmZmljVHlwZT86IFwiQUxMXCIgfCBcIkFDQ0VQVFwiIHwgXCJSRUpFQ1RcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5RW5kcG9pbnRzQ29uZmlnIHtcbiAgczM/OiBib29sZWFuO1xuICBkeW5hbW9kYj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlRW5kcG9pbnRzQ29uZmlnIHtcbiAgZWNyPzogYm9vbGVhbjtcbiAgc2VjcmV0c01hbmFnZXI/OiBib29sZWFuO1xuICBrbXM/OiBib29sZWFuO1xuICBjbG91ZHdhdGNoTG9ncz86IGJvb2xlYW47XG4gIHNzbT86IGJvb2xlYW47XG4gIHN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjRW5kcG9pbnRzQ29uZmlnIHtcbiAgZ2F0ZXdheT86IEdhdGV3YXlFbmRwb2ludHNDb25maWcgfCBmYWxzZTtcbiAgaW50ZXJmYWNlPzogSW50ZXJmYWNlRW5kcG9pbnRzQ29uZmlnIHwgZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0Q29uZmlnIHtcbiAgY2lkck1hc2s/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0c0NvbmZpZyB7XG4gIHB1YmxpYz86IFN1Ym5ldENvbmZpZztcbiAgcHJpdmF0ZT86IFN1Ym5ldENvbmZpZztcbiAgaXNvbGF0ZWQ/OiBTdWJuZXRDb25maWcgfCBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0R2F0ZXdheUNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayAoVlBDKSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIGNvc3QgVlBDIChubyBOQVQsIGdhdGV3YXkgZW5kcG9pbnRzIG9ubHkpXG4gKiB7IG5hdEdhdGV3YXlzOiBmYWxzZSB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFByb2R1Y3Rpb24gVlBDIHdpdGggMSBOQVQgZ2F0ZXdheVxuICogeyBuYXRHYXRld2F5czogeyBjb3VudDogMSB9LCBmbG93TG9nczoge30gfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIaWdoLWF2YWlsYWJpbGl0eSBWUEMgd2l0aCBpbnRlcmZhY2UgZW5kcG9pbnRzXG4gKiB7IG1heEF6czogMywgbmF0R2F0ZXdheXM6IHsgY291bnQ6IDMgfSwgdnBjRW5kcG9pbnRzOiB7IGludGVyZmFjZTogeyBlY3I6IHRydWUgfSB9IH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmV0d29ya1Byb3BzIHtcbiAgdnBjTmFtZT86IHN0cmluZztcbiAgbWF4QXpzPzogbnVtYmVyO1xuICBjaWRyTWFzaz86IG51bWJlcjtcbiAgbmF0R2F0ZXdheXM/OiBOYXRDb25maWcgfCBmYWxzZTtcbiAgZmxvd0xvZ3M/OiBGbG93TG9nQ29uZmlnIHwgZmFsc2U7XG4gIHZwY0VuZHBvaW50cz86IFZwY0VuZHBvaW50c0NvbmZpZyB8IGZhbHNlO1xuICBzdWJuZXRzPzogU3VibmV0c0NvbmZpZztcbiAgdHJhbnNpdEdhdGV3YXk/OiBUcmFuc2l0R2F0ZXdheUNvbmZpZztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOZXR3b3JrUHJvcHMocHJvcHM6IElOZXR3b3JrUHJvcHMpOiB2b2lkIHtcbiAgaWYgKHByb3BzLm1heEF6cyAhPT0gdW5kZWZpbmVkICYmIChwcm9wcy5tYXhBenMgPCAxIHx8IHByb3BzLm1heEF6cyA+IDMpKSB7XG4gICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgIGAnbWF4QXpzJyBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzLiBHb3Q6ICR7cHJvcHMubWF4QXpzfS5gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgcHJvcHMubmF0R2F0ZXdheXMgPT09IFwib2JqZWN0XCIgJiZcbiAgICBwcm9wcy5uYXRHYXRld2F5cyAhPT0gbnVsbCAmJlxuICAgIHByb3BzLm5hdEdhdGV3YXlzLmNvdW50ICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgY29uc3QgbWF4QXpzID0gcHJvcHMubWF4QXpzID8/IDM7XG4gICAgaWYgKHByb3BzLm5hdEdhdGV3YXlzLmNvdW50ID4gbWF4QXpzKSB7XG4gICAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgICBgJ25hdEdhdGV3YXlzLmNvdW50JyAoJHtwcm9wcy5uYXRHYXRld2F5cy5jb3VudH0pIGV4Y2VlZHMgbWF4QXpzICgke21heEF6c30pLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb3BzLnRyYW5zaXRHYXRld2F5ICYmICFwcm9wcy50cmFuc2l0R2F0ZXdheS5pZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRyYW5zaXQgR2F0ZXdheSBjb25maWd1cmF0aW9uIHJlcXVpcmVzICdpZCcuXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSU5ldHdvcmtQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIHZhbGlkYXRlTmV0d29ya1Byb3BzKHByb3BzKTtcbiAgICAgIHJldHVybiBuZXcgTmV0d29yayhzY29wZSwgaWQsIHByb3BzLCBhcHApO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5ldHdvcmsgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjOiBWcGM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElOZXR3b3JrUHJvcHMsIGFwcDogQXBwKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnZwYyA9IHRoaXMuY3JlYXRlVnBjKGlkLCBwcm9wcywgYXBwKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVnBjKGlkOiBzdHJpbmcsIHByb3BzOiBJTmV0d29ya1Byb3BzLCBhcHA6IEFwcCk6IFZwYyB7XG4gICAgY29uc3QgcmF3QWNjb3VudElkOiB1bmtub3duID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dChcImFjY291bnRJZFwiKTtcbiAgICBjb25zdCBhY2NvdW50SWQgPVxuICAgICAgKHR5cGVvZiByYXdBY2NvdW50SWQgPT09IFwic3RyaW5nXCIgPyByYXdBY2NvdW50SWQgOiB1bmRlZmluZWQpIHx8XG4gICAgICBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5UO1xuICAgIGNvbnN0IHJlZ2lvbiA9IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTjtcblxuICAgIGNvbnN0IHJhd0lwYW1Qb29sSWQ6IHVua25vd24gPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KFwiaXBhbVBvb2xJZFwiKTtcbiAgICBjb25zdCBpcHY0SXBhbVBvb2xJZCA9XG4gICAgICB0eXBlb2YgcmF3SXBhbVBvb2xJZCA9PT0gXCJzdHJpbmdcIiA/IHJhd0lwYW1Qb29sSWQgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB2cGNQcm9wczogVnBjUHJvcHMgPSB7XG4gICAgICB2cGNOYW1lOiBwcm9wcy52cGNOYW1lLFxuICAgICAgYWNjb3VudElkLFxuICAgICAgcmVnaW9uLFxuICAgICAgaXB2NElwYW1Qb29sSWQsXG4gICAgICBtYXhBenM6IHByb3BzLm1heEF6cyxcbiAgICAgIHZwY0NpZHJNYXNrOiBwcm9wcy5jaWRyTWFzayxcbiAgICAgIHN1Ym5ldENpZHJNYXNrOiBwcm9wcy5zdWJuZXRzPy5wcml2YXRlPy5jaWRyTWFzayxcbiAgICAgIG5hdEdhdGV3YXlDb25maWc6IHRoaXMucmVzb2x2ZU5hdENvbmZpZyhwcm9wcy5uYXRHYXRld2F5cyksXG4gICAgICBmbG93TG9nQ29uZmlnOiB0aGlzLnJlc29sdmVGbG93TG9nQ29uZmlnKHByb3BzLmZsb3dMb2dzKSxcbiAgICAgIGVuZHBvaW50c0NvbmZpZzogdGhpcy5yZXNvbHZlRW5kcG9pbnRzQ29uZmlnKHByb3BzLnZwY0VuZHBvaW50cylcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBWcGModGhpcywgaWQsIHZwY1Byb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU5hdENvbmZpZyhcbiAgICBjb25maWc6IE5hdENvbmZpZyB8IGZhbHNlIHwgdW5kZWZpbmVkXG4gICk6IHsgY291bnQ/OiBudW1iZXIgfSB8IGZhbHNlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29uZmlnID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4geyBjb3VudDogY29uZmlnLmNvdW50IH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVGbG93TG9nQ29uZmlnKGNvbmZpZzogRmxvd0xvZ0NvbmZpZyB8IGZhbHNlIHwgdW5kZWZpbmVkKTpcbiAgICB8IHtcbiAgICAgICAgZGVzdGluYXRpb24/OiBcImNsb3Vkd2F0Y2hcIiB8IFwiczNcIjtcbiAgICAgICAgcmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgICAgICAgdHJhZmZpY1R5cGU/OiBcIkFMTFwiIHwgXCJBQ0NFUFRcIiB8IFwiUkVKRUNUXCI7XG4gICAgICB9XG4gICAgfCBmYWxzZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29uZmlnID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzdGluYXRpb246IGNvbmZpZy5kZXN0aW5hdGlvbixcbiAgICAgIHJldGVudGlvbkRheXM6IGNvbmZpZy5yZXRlbnRpb25EYXlzLFxuICAgICAgdHJhZmZpY1R5cGU6IGNvbmZpZy50cmFmZmljVHlwZVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFbmRwb2ludHNDb25maWcoXG4gICAgY29uZmlnOiBWcGNFbmRwb2ludHNDb25maWcgfCBmYWxzZSB8IHVuZGVmaW5lZFxuICApOlxuICAgIHwge1xuICAgICAgICBnYXRld2F5PzogeyBzMz86IGJvb2xlYW47IGR5bmFtb2RiPzogYm9vbGVhbiB9IHwgZmFsc2U7XG4gICAgICAgIGludGVyZmFjZT86XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGVjcj86IGJvb2xlYW47XG4gICAgICAgICAgICAgIHNlY3JldHNNYW5hZ2VyPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAga21zPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgY2xvdWR3YXRjaExvZ3M/OiBib29sZWFuO1xuICAgICAgICAgICAgICBzc20/OiBib29sZWFuO1xuICAgICAgICAgICAgICBzdHM/OiBib29sZWFuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgZmFsc2U7XG4gICAgICB9XG4gICAgfCBmYWxzZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29uZmlnID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKGNvbmZpZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyBnYXRld2F5OiB7IHMzOiB0cnVlLCBkeW5hbW9kYjogdHJ1ZSB9IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdhdGV3YXk6XG4gICAgICAgIGNvbmZpZy5nYXRld2F5ID09PSBmYWxzZVxuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgczM6IGNvbmZpZy5nYXRld2F5Py5zMyA/PyB0cnVlLFxuICAgICAgICAgICAgICBkeW5hbW9kYjogY29uZmlnLmdhdGV3YXk/LmR5bmFtb2RiID8/IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICBpbnRlcmZhY2U6IGNvbmZpZy5pbnRlcmZhY2UgPT09IGZhbHNlID8gZmFsc2UgOiBjb25maWcuaW50ZXJmYWNlXG4gICAgfTtcbiAgfVxuXG4gIGdldFZwYygpOiBJVnBjIHtcbiAgICByZXR1cm4gdGhpcy52cGM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -17,10 +17,11 @@ export interface OrganisationProps extends ExtendedStackProps {
|
|
|
17
17
|
* Organisation CDK stack.
|
|
18
18
|
*
|
|
19
19
|
* OU creation, account-to-OU placement, IPAM delegation, RAM sharing, trusted
|
|
20
|
-
* access, cost allocation
|
|
21
|
-
* steps (AwsAccountService). This stack focuses on:
|
|
20
|
+
* access, cost allocation tag activation, and backup settings are handled by CLI
|
|
21
|
+
* pre-deploy steps (AwsAccountService). This stack focuses on:
|
|
22
22
|
* - Account CfnOutput references (for cross-stack consumption)
|
|
23
23
|
* - Identity Centre configuration
|
|
24
|
+
* - Cost allocation tag auto-activation (daily Lambda)
|
|
24
25
|
*/
|
|
25
26
|
export declare class Organisation extends Stack {
|
|
26
27
|
readonly organisationType: "organisation";
|
|
@@ -31,6 +32,7 @@ export declare class Organisation extends Stack {
|
|
|
31
32
|
constructor(id: string, props: OrganisationProps);
|
|
32
33
|
private createAccountReferences;
|
|
33
34
|
private setupOrganisationFeatures;
|
|
35
|
+
private setupCostAllocationTagActivator;
|
|
34
36
|
private setupIdentityCenter;
|
|
35
37
|
getOrganisation(): OrganisationResource;
|
|
36
38
|
getAccounts(): Record<string, string>;
|
|
@@ -11,10 +11,11 @@ const getConfig_1 = require("../../utils/getConfig");
|
|
|
11
11
|
* Organisation CDK stack.
|
|
12
12
|
*
|
|
13
13
|
* OU creation, account-to-OU placement, IPAM delegation, RAM sharing, trusted
|
|
14
|
-
* access, cost allocation
|
|
15
|
-
* steps (AwsAccountService). This stack focuses on:
|
|
14
|
+
* access, cost allocation tag activation, and backup settings are handled by CLI
|
|
15
|
+
* pre-deploy steps (AwsAccountService). This stack focuses on:
|
|
16
16
|
* - Account CfnOutput references (for cross-stack consumption)
|
|
17
17
|
* - Identity Centre configuration
|
|
18
|
+
* - Cost allocation tag auto-activation (daily Lambda)
|
|
18
19
|
*/
|
|
19
20
|
class Organisation extends aws_cdk_lib_1.Stack {
|
|
20
21
|
constructor(id, props) {
|
|
@@ -49,7 +50,7 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
49
50
|
managementAccountId
|
|
50
51
|
});
|
|
51
52
|
this.createAccountReferences(props);
|
|
52
|
-
this.setupOrganisationFeatures(props.identityCenter ?? true);
|
|
53
|
+
this.setupOrganisationFeatures(props.identityCenter ?? true, managementAccountId);
|
|
53
54
|
}
|
|
54
55
|
createAccountReferences(props) {
|
|
55
56
|
for (const [, accountList] of Object.entries(props.accounts)) {
|
|
@@ -71,13 +72,25 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
|
-
setupOrganisationFeatures(identityCenter) {
|
|
75
|
-
this.setupIdentityCenter(identityCenter);
|
|
75
|
+
setupOrganisationFeatures(identityCenter, managementAccountId) {
|
|
76
|
+
this.setupIdentityCenter(identityCenter, managementAccountId);
|
|
77
|
+
this.setupCostAllocationTagActivator();
|
|
76
78
|
}
|
|
77
|
-
|
|
79
|
+
setupCostAllocationTagActivator() {
|
|
80
|
+
new organisation_1.CostAllocationTagActivator(this, "CostAllocationTagActivator");
|
|
81
|
+
}
|
|
82
|
+
setupIdentityCenter(identityCenter, managementAccountId) {
|
|
78
83
|
if (identityCenter) {
|
|
84
|
+
// Exclude the management account from SSO assignments — only root
|
|
85
|
+
// IAM users should have direct access to the organisation account.
|
|
86
|
+
const ssoAccounts = {};
|
|
87
|
+
for (const [name, id] of Object.entries(this.accountMap)) {
|
|
88
|
+
if (id !== managementAccountId) {
|
|
89
|
+
ssoAccounts[name] = id;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
79
92
|
new identityCenter_1.IdentityCenter(this, "IdentityCenter", {
|
|
80
|
-
accounts:
|
|
93
|
+
accounts: ssoAccounts
|
|
81
94
|
});
|
|
82
95
|
}
|
|
83
96
|
}
|
|
@@ -89,4 +102,4 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
89
102
|
}
|
|
90
103
|
}
|
|
91
104
|
exports.Organisation = Organisation;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9vcmdhbmlzYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVFO0FBRXZFLG1DQUE0QjtBQUU1QixvRUFBaUU7QUFDakUsbUVBRzBDO0FBQzFDLHFFQUFrRTtBQUNsRSxxREFBa0Q7QUFtQmxEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsbUJBQUs7SUFPckMsWUFBWSxFQUFVLEVBQUUsS0FBd0I7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBUyxHQUFFLENBQUM7UUFFM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSTtZQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRTtTQUNoQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLDJHQUEyRyxDQUM1RyxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQXBCbEMscUJBQWdCLEdBQUcsY0FBdUIsQ0FBQztRQUVuRCxnQkFBVyxHQUEwQixFQUFFLENBQUM7UUFvQjlDLHdFQUF3RTtRQUN4RSwrRUFBK0U7UUFDL0UsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsTUFBTSxtQkFBbUIsR0FDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRWpFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUNiLDBGQUEwRixDQUMzRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxtQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3hELEtBQUs7WUFDTCxNQUFNO1lBQ04sbUJBQW1CO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBd0I7UUFDdEQsS0FBSyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2dCQUM5QyxDQUFDLENBQUMsV0FBVztnQkFDYixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUVsQixLQUFLLE1BQU0sV0FBVyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLGFBQWEsR0FBRyxJQUFBLHFDQUFpQixFQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUU3RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2YsU0FBUztnQkFDWCxDQUFDO2dCQUVELE1BQU0sR0FBRyxHQUFHLElBQUksa0NBQW1CLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxTQUFTLEVBQUU7b0JBQ25FLFNBQVM7b0JBQ1QsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUs7aUJBQ3RCLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxjQUF1QjtRQUN2RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLG1CQUFtQixDQUFDLGNBQXVCO1FBQ2pELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQzFCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQWhHRCxvQ0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEVudmlyb25tZW50LCBTdGFjaywgdHlwZSBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuXG5pbXBvcnQgeyBJZGVudGl0eUNlbnRlciB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2lkZW50aXR5Q2VudGVyXCI7XG5pbXBvcnQge1xuICBPcmdhbmlzYXRpb25SZXNvdXJjZSxcbiAgT3JnYW5pc2F0aW9uQWNjb3VudFxufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25cIjtcbmltcG9ydCB7IHN0cmlwQW5kQ2FtZWxDYXNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmlwQW5kQ2FtZWxDYXNlXCI7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5cbnR5cGUgRXh0ZW5kZWRTdGFja1Byb3BzID0gT21pdDxTdGFja1Byb3BzLCBcImVudlwiPiAmIHtcbiAgZW52PzogUmVxdWlyZWQ8UGljazxFbnZpcm9ubWVudCwgXCJyZWdpb25cIiB8IFwiYWNjb3VudFwiPj4gJlxuICAgIFBhcnRpYWw8T21pdDxFbnZpcm9ubWVudCwgXCJyZWdpb25cIiB8IFwiYWNjb3VudFwiPj47XG59O1xuXG5leHBvcnQgdHlwZSBBY2NvdW50c0NvbmZpZyA9IHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogcmVhZG9ubHkgc3RyaW5nW10gfCBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXNhdGlvblByb3BzIGV4dGVuZHMgRXh0ZW5kZWRTdGFja1Byb3BzIHtcbiAgb3JnYW5pc2F0aW9uTmFtZTogc3RyaW5nO1xuICBhY2NvdW50czogQWNjb3VudHNDb25maWc7XG4gIG9yZ0VtYWlsOiBzdHJpbmc7XG4gIGFjY291bnRJZHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBpZGVudGl0eUNlbnRlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3JnYW5pc2F0aW9uIENESyBzdGFjay5cbiAqXG4gKiBPVSBjcmVhdGlvbiwgYWNjb3VudC10by1PVSBwbGFjZW1lbnQsIElQQU0gZGVsZWdhdGlvbiwgUkFNIHNoYXJpbmcsIHRydXN0ZWRcbiAqIGFjY2VzcywgY29zdCBhbGxvY2F0aW9uIHRhZ3MsIGFuZCBiYWNrdXAgc2V0dGluZ3MgYXJlIGhhbmRsZWQgYnkgQ0xJIHByZS1kZXBsb3lcbiAqIHN0ZXBzIChBd3NBY2NvdW50U2VydmljZSkuIFRoaXMgc3RhY2sgZm9jdXNlcyBvbjpcbiAqIC0gQWNjb3VudCBDZm5PdXRwdXQgcmVmZXJlbmNlcyAoZm9yIGNyb3NzLXN0YWNrIGNvbnN1bXB0aW9uKVxuICogLSBJZGVudGl0eSBDZW50cmUgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY2xhc3MgT3JnYW5pc2F0aW9uIGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgb3JnYW5pc2F0aW9uVHlwZSA9IFwib3JnYW5pc2F0aW9uXCIgYXMgY29uc3Q7XG4gIHByaXZhdGUgb3JnOiBPcmdhbmlzYXRpb25SZXNvdXJjZTtcbiAgcHJpdmF0ZSBhY2NvdW50UmVmczogT3JnYW5pc2F0aW9uQWNjb3VudFtdID0gW107XG4gIHByaXZhdGUgYWNjb3VudE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHJpdmF0ZSBhY2NvdW50c0NvbmZpZzogQWNjb3VudHNDb25maWc7XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcHJvcHM6IE9yZ2FuaXNhdGlvblByb3BzKSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG5cbiAgICBjb25zdCBlbnYgPSBwcm9wcy5lbnYgPz8ge1xuICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgYWNjb3VudDogY29uZmlnLmFjY291bnRJZCA/PyBcIlwiXG4gICAgfTtcblxuICAgIGlmICghZW52LmFjY291bnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJPcmdhbmlzYXRpb24gcmVxdWlyZXMgYW4gYWNjb3VudCBJRC4gUHJvdmlkZSBpdCB2aWEgZW52LmFjY291bnQgb3IgZW5zdXJlIENESyBjb250ZXh0IGluY2x1ZGVzIGFjY291bnRJZC5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzdXBlcihBcHAuZ2V0SW5zdGFuY2UoKSwgaWQsIHsgLi4ucHJvcHMsIGVudiB9KTtcblxuICAgIC8vIE5vcm1hbGlzZSBhY2NvdW50IG1hcCBrZXlzIHRvIGxvd2VyY2FzZSBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXBzLlxuICAgIC8vIHByb3ZpZGVyQWNjb3VudHMgc3RvcmVzIG5hbWVzIGFzIGxvd2VyY2FzZTsgQUNDT1VOVFMgY29uZmlnIHVzZXMgUGFzY2FsQ2FzZS5cbiAgICBjb25zdCByYXdNYXAgPSBwcm9wcy5hY2NvdW50SWRzID8/IGNvbmZpZy5hY2NvdW50SWRzID8/IHt9O1xuICAgIHRoaXMuYWNjb3VudE1hcCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJhd01hcCkpIHtcbiAgICAgIHRoaXMuYWNjb3VudE1hcFtrZXkudG9Mb3dlckNhc2UoKV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5hY2NvdW50c0NvbmZpZyA9IHByb3BzLmFjY291bnRzO1xuXG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcIm9yZ0lkXCIpO1xuICAgIGNvbnN0IHJvb3RJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwicm9vdElkXCIpO1xuICAgIGNvbnN0IG1hbmFnZW1lbnRBY2NvdW50SWQgPVxuICAgICAgdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJtYW5hZ2VtZW50QWNjb3VudElkXCIpID8/IHRoaXMuYWNjb3VudDtcblxuICAgIGlmICghb3JnSWQgfHwgIXJvb3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIm9yZ0lkIGFuZCByb290SWQgbXVzdCBiZSBwcm92aWRlZCB2aWEgQ0RLIGNvbnRleHQuIFJ1biBkZXBsb3ltZW50IHRocm91Z2ggdGhlIEZqYWxsIENMSS5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm9yZyA9IG5ldyBPcmdhbmlzYXRpb25SZXNvdXJjZSh0aGlzLCBcIk9yZ2FuaXNhdGlvblwiLCB7XG4gICAgICBvcmdJZCxcbiAgICAgIHJvb3RJZCxcbiAgICAgIG1hbmFnZW1lbnRBY2NvdW50SWRcbiAgICB9KTtcbiAgICB0aGlzLmNyZWF0ZUFjY291bnRSZWZlcmVuY2VzKHByb3BzKTtcbiAgICB0aGlzLnNldHVwT3JnYW5pc2F0aW9uRmVhdHVyZXMocHJvcHMuaWRlbnRpdHlDZW50ZXIgPz8gdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFjY291bnRSZWZlcmVuY2VzKHByb3BzOiBPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGZvciAoY29uc3QgWywgYWNjb3VudExpc3RdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzLmFjY291bnRzKSkge1xuICAgICAgY29uc3QgYWNjb3VudHNBcnJheSA9IEFycmF5LmlzQXJyYXkoYWNjb3VudExpc3QpXG4gICAgICAgID8gYWNjb3VudExpc3RcbiAgICAgICAgOiBbYWNjb3VudExpc3RdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnROYW1lIG9mIGFjY291bnRzQXJyYXkpIHtcbiAgICAgICAgY29uc3QgYWNjb3VudE5hbWVJZCA9IHN0cmlwQW5kQ2FtZWxDYXNlKGFjY291bnROYW1lKTtcbiAgICAgICAgY29uc3QgYWNjb3VudElkID0gdGhpcy5hY2NvdW50TWFwW2FjY291bnROYW1lLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgIGlmICghYWNjb3VudElkKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWYgPSBuZXcgT3JnYW5pc2F0aW9uQWNjb3VudCh0aGlzLCBgJHthY2NvdW50TmFtZUlkfUFjY291bnRgLCB7XG4gICAgICAgICAgYWNjb3VudElkLFxuICAgICAgICAgIG1hbmFnZW1lbnRBY2NvdW50SWQ6IHRoaXMuYWNjb3VudCxcbiAgICAgICAgICBvcmdJZDogdGhpcy5vcmcub3JnSWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hY2NvdW50UmVmcy5wdXNoKHJlZik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cE9yZ2FuaXNhdGlvbkZlYXR1cmVzKGlkZW50aXR5Q2VudGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXR1cElkZW50aXR5Q2VudGVyKGlkZW50aXR5Q2VudGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZGVudGl0eUNlbnRlcihpZGVudGl0eUNlbnRlcjogYm9vbGVhbikge1xuICAgIGlmIChpZGVudGl0eUNlbnRlcikge1xuICAgICAgbmV3IElkZW50aXR5Q2VudGVyKHRoaXMsIFwiSWRlbnRpdHlDZW50ZXJcIiwge1xuICAgICAgICBhY2NvdW50czogdGhpcy5hY2NvdW50TWFwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0T3JnYW5pc2F0aW9uKCk6IE9yZ2FuaXNhdGlvblJlc291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5vcmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjb3VudHMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudE1hcDtcbiAgfVxufVxuIl19
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9vcmdhbmlzYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVFO0FBRXZFLG1DQUE0QjtBQUU1QixvRUFBaUU7QUFDakUsbUVBSTBDO0FBQzFDLHFFQUFrRTtBQUNsRSxxREFBa0Q7QUFtQmxEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsWUFBYSxTQUFRLG1CQUFLO0lBT3JDLFlBQVksRUFBVSxFQUFFLEtBQXdCO1FBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVMsR0FBRSxDQUFDO1FBRTNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUk7WUFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUU7U0FDaEMsQ0FBQztRQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FDYiwyR0FBMkcsQ0FDNUcsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLENBQUMsYUFBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFwQmxDLHFCQUFnQixHQUFHLGNBQXVCLENBQUM7UUFFbkQsZ0JBQVcsR0FBMEIsRUFBRSxDQUFDO1FBb0I5Qyx3RUFBd0U7UUFDeEUsK0VBQStFO1FBQy9FLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFB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SSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksRUFBRSxLQUFLLG1CQUFtQixFQUFFLENBQUM7b0JBQy9CLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDekMsUUFBUSxFQUFFLFdBQVc7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBdkhELG9DQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRW52aXJvbm1lbnQsIFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7IElkZW50aXR5Q2VudGVyIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJcIjtcbmltcG9ydCB7XG4gIE9yZ2FuaXNhdGlvblJlc291cmNlLFxuICBPcmdhbmlzYXRpb25BY2NvdW50LFxuICBDb3N0QWxsb2NhdGlvblRhZ0FjdGl2YXRvclxufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25cIjtcbmltcG9ydCB7IHN0cmlwQW5kQ2FtZWxDYXNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmlwQW5kQ2FtZWxDYXNlXCI7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5cbnR5cGUgRXh0ZW5kZWRTdGFja1Byb3BzID0gT21pdDxTdGFja1Byb3BzLCBcImVudlwiPiAmIHtcbiAgZW52PzogUmVxdWlyZWQ8UGljazxFbnZpcm9ubWVudCwgXCJyZWdpb25cIiB8IFwiYWNjb3VudFwiPj4gJlxuICAgIFBhcnRpYWw8T21pdDxFbnZpcm9ubWVudCwgXCJyZWdpb25cIiB8IFwiYWNjb3VudFwiPj47XG59O1xuXG5leHBvcnQgdHlwZSBBY2NvdW50c0NvbmZpZyA9IHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogcmVhZG9ubHkgc3RyaW5nW10gfCBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXNhdGlvblByb3BzIGV4dGVuZHMgRXh0ZW5kZWRTdGFja1Byb3BzIHtcbiAgb3JnYW5pc2F0aW9uTmFtZTogc3RyaW5nO1xuICBhY2NvdW50czogQWNjb3VudHNDb25maWc7XG4gIG9yZ0VtYWlsOiBzdHJpbmc7XG4gIGFjY291bnRJZHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBpZGVudGl0eUNlbnRlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3JnYW5pc2F0aW9uIENESyBzdGFjay5cbiAqXG4gKiBPVSBjcmVhdGlvbiwgYWNjb3VudC10by1PVSBwbGFjZW1lbnQsIElQQU0gZGVsZWdhdGlvbiwgUkFNIHNoYXJpbmcsIHRydXN0ZWRcbiAqIGFjY2VzcywgY29zdCBhbGxvY2F0aW9uIHRhZyBhY3RpdmF0aW9uLCBhbmQgYmFja3VwIHNldHRpbmdzIGFyZSBoYW5kbGVkIGJ5IENMSVxuICogcHJlLWRlcGxveSBzdGVwcyAoQXdzQWNjb3VudFNlcnZpY2UpLiBUaGlzIHN0YWNrIGZvY3VzZXMgb246XG4gKiAtIEFjY291bnQgQ2ZuT3V0cHV0IHJlZmVyZW5jZXMgKGZvciBjcm9zcy1zdGFjayBjb25zdW1wdGlvbilcbiAqIC0gSWRlbnRpdHkgQ2VudHJlIGNvbmZpZ3VyYXRpb25cbiAqIC0gQ29zdCBhbGxvY2F0aW9uIHRhZyBhdXRvLWFjdGl2YXRpb24gKGRhaWx5IExhbWJkYSlcbiAqL1xuZXhwb3J0IGNsYXNzIE9yZ2FuaXNhdGlvbiBleHRlbmRzIFN0YWNrIHtcbiAgcHVibGljIHJlYWRvbmx5IG9yZ2FuaXNhdGlvblR5cGUgPSBcIm9yZ2FuaXNhdGlvblwiIGFzIGNvbnN0O1xuICBwcml2YXRlIG9yZzogT3JnYW5pc2F0aW9uUmVzb3VyY2U7XG4gIHByaXZhdGUgYWNjb3VudFJlZnM6IE9yZ2FuaXNhdGlvbkFjY291bnRbXSA9IFtdO1xuICBwcml2YXRlIGFjY291bnRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgYWNjb3VudHNDb25maWc6IEFjY291bnRzQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHByb3BzOiBPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuXG4gICAgY29uc3QgZW52ID0gcHJvcHMuZW52ID8/IHtcbiAgICAgIHJlZ2lvbjogY29uZmlnLnJlZ2lvbixcbiAgICAgIGFjY291bnQ6IGNvbmZpZy5hY2NvdW50SWQgPz8gXCJcIlxuICAgIH07XG5cbiAgICBpZiAoIWVudi5hY2NvdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiT3JnYW5pc2F0aW9uIHJlcXVpcmVzIGFuIGFjY291bnQgSUQuIFByb3ZpZGUgaXQgdmlhIGVudi5hY2NvdW50IG9yIGVuc3VyZSBDREsgY29udGV4dCBpbmNsdWRlcyBhY2NvdW50SWQuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIoQXBwLmdldEluc3RhbmNlKCksIGlkLCB7IC4uLnByb3BzLCBlbnYgfSk7XG5cbiAgICAvLyBOb3JtYWxpc2UgYWNjb3VudCBtYXAga2V5cyB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgbG9va3Vwcy5cbiAgICAvLyBwcm92aWRlckFjY291bnRzIHN0b3JlcyBuYW1lcyBhcyBsb3dlcmNhc2U7IEFDQ09VTlRTIGNvbmZpZyB1c2VzIFBhc2NhbENhc2UuXG4gICAgY29uc3QgcmF3TWFwID0gcHJvcHMuYWNjb3VudElkcyA/PyBjb25maWcuYWNjb3VudElkcyA/PyB7fTtcbiAgICB0aGlzLmFjY291bnRNYXAgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyYXdNYXApKSB7XG4gICAgICB0aGlzLmFjY291bnRNYXBba2V5LnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuYWNjb3VudHNDb25maWcgPSBwcm9wcy5hY2NvdW50cztcblxuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJvcmdJZFwiKTtcbiAgICBjb25zdCByb290SWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcInJvb3RJZFwiKTtcbiAgICBjb25zdCBtYW5hZ2VtZW50QWNjb3VudElkID1cbiAgICAgIHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwibWFuYWdlbWVudEFjY291bnRJZFwiKSA/PyB0aGlzLmFjY291bnQ7XG5cbiAgICBpZiAoIW9yZ0lkIHx8ICFyb290SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJvcmdJZCBhbmQgcm9vdElkIG11c3QgYmUgcHJvdmlkZWQgdmlhIENESyBjb250ZXh0LiBSdW4gZGVwbG95bWVudCB0aHJvdWdoIHRoZSBGamFsbCBDTEkuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5vcmcgPSBuZXcgT3JnYW5pc2F0aW9uUmVzb3VyY2UodGhpcywgXCJPcmdhbmlzYXRpb25cIiwge1xuICAgICAgb3JnSWQsXG4gICAgICByb290SWQsXG4gICAgICBtYW5hZ2VtZW50QWNjb3VudElkXG4gICAgfSk7XG4gICAgdGhpcy5jcmVhdGVBY2NvdW50UmVmZXJlbmNlcyhwcm9wcyk7XG4gICAgdGhpcy5zZXR1cE9yZ2FuaXNhdGlvbkZlYXR1cmVzKFxuICAgICAgcHJvcHMuaWRlbnRpdHlDZW50ZXIgPz8gdHJ1ZSxcbiAgICAgIG1hbmFnZW1lbnRBY2NvdW50SWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBY2NvdW50UmVmZXJlbmNlcyhwcm9wczogT3JnYW5pc2F0aW9uUHJvcHMpIHtcbiAgICBmb3IgKGNvbnN0IFssIGFjY291bnRMaXN0XSBvZiBPYmplY3QuZW50cmllcyhwcm9wcy5hY2NvdW50cykpIHtcbiAgICAgIGNvbnN0IGFjY291bnRzQXJyYXkgPSBBcnJheS5pc0FycmF5KGFjY291bnRMaXN0KVxuICAgICAgICA/IGFjY291bnRMaXN0XG4gICAgICAgIDogW2FjY291bnRMaXN0XTtcblxuICAgICAgZm9yIChjb25zdCBhY2NvdW50TmFtZSBvZiBhY2NvdW50c0FycmF5KSB7XG4gICAgICAgIGNvbnN0IGFjY291bnROYW1lSWQgPSBzdHJpcEFuZENhbWVsQ2FzZShhY2NvdW50TmFtZSk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IHRoaXMuYWNjb3VudE1hcFthY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVmID0gbmV3IE9yZ2FuaXNhdGlvbkFjY291bnQodGhpcywgYCR7YWNjb3VudE5hbWVJZH1BY2NvdW50YCwge1xuICAgICAgICAgIGFjY291bnRJZCxcbiAgICAgICAgICBtYW5hZ2VtZW50QWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICAgICAgb3JnSWQ6IHRoaXMub3JnLm9yZ0lkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWNjb3VudFJlZnMucHVzaChyZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBPcmdhbmlzYXRpb25GZWF0dXJlcyhcbiAgICBpZGVudGl0eUNlbnRlcjogYm9vbGVhbixcbiAgICBtYW5hZ2VtZW50QWNjb3VudElkOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5zZXR1cElkZW50aXR5Q2VudGVyKGlkZW50aXR5Q2VudGVyLCBtYW5hZ2VtZW50QWNjb3VudElkKTtcbiAgICB0aGlzLnNldHVwQ29zdEFsbG9jYXRpb25UYWdBY3RpdmF0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDb3N0QWxsb2NhdGlvblRhZ0FjdGl2YXRvcigpIHtcbiAgICBuZXcgQ29zdEFsbG9jYXRpb25UYWdBY3RpdmF0b3IodGhpcywgXCJDb3N0QWxsb2NhdGlvblRhZ0FjdGl2YXRvclwiKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZGVudGl0eUNlbnRlcihcbiAgICBpZGVudGl0eUNlbnRlcjogYm9vbGVhbixcbiAgICBtYW5hZ2VtZW50QWNjb3VudElkOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYgKGlkZW50aXR5Q2VudGVyKSB7XG4gICAgICAvLyBFeGNsdWRlIHRoZSBtYW5hZ2VtZW50IGFjY291bnQgZnJvbSBTU08gYXNzaWdubWVudHMg4oCUIG9ubHkgcm9vdFxuICAgICAgLy8gSUFNIHVzZXJzIHNob3VsZCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG9yZ2FuaXNhdGlvbiBhY2NvdW50LlxuICAgICAgY29uc3Qgc3NvQWNjb3VudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIGlkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFjY291bnRNYXApKSB7XG4gICAgICAgIGlmIChpZCAhPT0gbWFuYWdlbWVudEFjY291bnRJZCkge1xuICAgICAgICAgIHNzb0FjY291bnRzW25hbWVdID0gaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3IElkZW50aXR5Q2VudGVyKHRoaXMsIFwiSWRlbnRpdHlDZW50ZXJcIiwge1xuICAgICAgICBhY2NvdW50czogc3NvQWNjb3VudHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRPcmdhbmlzYXRpb24oKTogT3JnYW5pc2F0aW9uUmVzb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLm9yZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY2NvdW50cygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50TWFwO1xuICB9XG59XG4iXX0=
|
|
@@ -64,7 +64,8 @@ const PAYLOAD_DEFAULTS = {
|
|
|
64
64
|
REVALIDATION_TIMEOUT: 300
|
|
65
65
|
},
|
|
66
66
|
CACHE: {
|
|
67
|
-
|
|
67
|
+
/** 1 year — static assets are content-hashed so long caching is safe; maximises CDN hit rate */
|
|
68
|
+
MAX_AGE_SECONDS: 31536000
|
|
68
69
|
},
|
|
69
70
|
OPENNEXT: {
|
|
70
71
|
ASSETS: ".open-next/assets",
|
|
@@ -80,14 +81,6 @@ const PAYLOAD_DEFAULTS = {
|
|
|
80
81
|
ADMIN: "/admin/*"
|
|
81
82
|
}
|
|
82
83
|
};
|
|
83
|
-
/**
|
|
84
|
-
* Convert a name to a valid RDS database name (snake_case).
|
|
85
|
-
* RDS API allows letters, numbers, and underscores for PostgreSQL/MySQL DatabaseName.
|
|
86
|
-
* Hyphens are rejected, so convert them to underscores.
|
|
87
|
-
*/
|
|
88
|
-
function toValidDatabaseName(name) {
|
|
89
|
-
return (0, capitaliseString_js_1.toKebab)(name).replace(/-/g, "_");
|
|
90
|
-
}
|
|
91
84
|
/**
|
|
92
85
|
* Extract root domain from a full domain name.
|
|
93
86
|
* e.g., "cms.example.com" -> "example.com"
|
|
@@ -174,14 +167,14 @@ class Payload extends constructs_1.Construct {
|
|
|
174
167
|
}
|
|
175
168
|
buildBaseDatabaseProps(dbConfig) {
|
|
176
169
|
return {
|
|
177
|
-
databaseName: dbConfig.databaseName ?? toValidDatabaseName(this.props.name),
|
|
170
|
+
databaseName: dbConfig.databaseName ?? (0, capitaliseString_js_1.toValidDatabaseName)(this.props.name),
|
|
178
171
|
databaseEngine: dbConfig.databaseEngine ?? "postgresql",
|
|
179
172
|
backupRetention: dbConfig.backupRetention ?? PAYLOAD_DEFAULTS.DATABASE.BACKUP_RETENTION,
|
|
180
173
|
deletionProtection: dbConfig.deletionProtection ??
|
|
181
174
|
PAYLOAD_DEFAULTS.DATABASE.DELETION_PROTECTION,
|
|
182
175
|
publiclyAccessible: dbConfig.publiclyAccessible,
|
|
183
176
|
port: dbConfig.port,
|
|
184
|
-
|
|
177
|
+
databaseInsights: dbConfig.databaseInsights,
|
|
185
178
|
proxy: dbConfig.proxy,
|
|
186
179
|
credentials: dbConfig.credentials,
|
|
187
180
|
snapshotIdentifier: dbConfig.snapshotIdentifier,
|
|
@@ -480,6 +473,19 @@ class Payload extends constructs_1.Construct {
|
|
|
480
473
|
}
|
|
481
474
|
resolveSimpleDomain() {
|
|
482
475
|
const domain = this.props.domain;
|
|
476
|
+
if (!domain) {
|
|
477
|
+
throw new Error("Domain is required for simple domain resolution");
|
|
478
|
+
}
|
|
479
|
+
// Managed domain: import zone and cert from domain stack
|
|
480
|
+
if (this.props.managedDomain) {
|
|
481
|
+
const managed = this.props.managedDomain;
|
|
482
|
+
const hostedZone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, `${this.pascalName}ManagedHostedZone`, {
|
|
483
|
+
hostedZoneId: aws_cdk_lib_1.Fn.importValue(managed.hostedZoneIdExport),
|
|
484
|
+
zoneName: managed.zoneName
|
|
485
|
+
});
|
|
486
|
+
const certificate = aws_certificatemanager_1.Certificate.fromCertificateArn(this, `${this.pascalName}ManagedCertificate`, aws_cdk_lib_1.Fn.importValue(managed.certificateArnExport));
|
|
487
|
+
return { domainNames: [domain], certificate, hostedZone };
|
|
488
|
+
}
|
|
483
489
|
const rootDomain = extractRootDomain(domain);
|
|
484
490
|
const hostedZone = aws_route53_1.HostedZone.fromLookup(this, `${this.pascalName}HostedZone`, { domainName: rootDomain });
|
|
485
491
|
const certificate = new aws_certificatemanager_1.Certificate(this, `${this.pascalName}Certificate`, {
|
|
@@ -490,6 +496,9 @@ class Payload extends constructs_1.Construct {
|
|
|
490
496
|
}
|
|
491
497
|
resolveAdvancedDomain() {
|
|
492
498
|
const cdnConfig = this.props.cdn;
|
|
499
|
+
if (!cdnConfig?.domainNames?.length) {
|
|
500
|
+
throw new Error("CDN domain names are required for advanced domain resolution");
|
|
501
|
+
}
|
|
493
502
|
const certificate = cdnConfig.certificate ??
|
|
494
503
|
(cdnConfig.certificateArn
|
|
495
504
|
? aws_certificatemanager_1.Certificate.fromCertificateArn(this, `${this.pascalName}Certificate`, cdnConfig.certificateArn)
|
|
@@ -582,4 +591,4 @@ class Payload extends constructs_1.Construct {
|
|
|
582
591
|
}
|
|
583
592
|
}
|
|
584
593
|
exports.Payload = Payload;
|
|
585
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvcGF5bG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7OztBQUVILDJDQUF1QztBQUN2Qyw2Q0FBK0M7QUFDL0MseURBQXFEO0FBQ3JELHVEQU1nQztBQUNoQywrRUFJNEM7QUFDNUMseURBQTRFO0FBQzVFLHlFQUFtRTtBQUtuRSwrQ0FPdUI7QUFDdkIsNkNBS3NCO0FBQ3RCLDZDQUEwRTtBQUMxRSxpREFJd0I7QUFDeEIscUNBQW9FO0FBQ3BFLHlFQUE4RDtBQUM5RCx5RUFBd0U7QUFFeEUsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixxRkFBcUY7SUFDckYsTUFBTSxFQUFFLE9BQU87SUFDZixtRkFBbUY7SUFDbkYsZUFBZSxFQUFFLFdBQVc7SUFDNUIsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLFVBQW1CO1FBQ3pCLDhFQUE4RTtRQUM5RSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLG1CQUFtQixFQUFFLElBQUk7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDUCw2RkFBNkY7UUFDN0YsYUFBYSxFQUFFLElBQUk7UUFDbkIsK0RBQStEO1FBQy9ELGNBQWMsRUFBRSxFQUFFO1FBQ2xCLDJFQUEyRTtRQUMzRSxZQUFZLEVBQUUsSUFBSTtRQUNsQix3RUFBd0U7UUFDeEUsYUFBYSxFQUFFLEVBQUU7UUFDakIsNEZBQTRGO1FBQzVGLG1CQUFtQixFQUFFLEdBQUc7UUFDeEIsK0VBQStFO1FBQy9FLG9CQUFvQixFQUFFLEdBQUc7S0FDMUI7SUFDRCxLQUFLLEVBQUU7UUFDTCxlQUFlLEVBQUUsUUFBUSxDQUFDLFNBQVM7S0FDcEM7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsbUJBQW1CO1FBQzNCLEtBQUssRUFBRSxrQkFBa0I7UUFDekIsTUFBTSxFQUFFLHFDQUFxQztRQUM3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LElBQUksUUFBUTtvQkFDMUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUTtpQkFDM0I7Z0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTthQUNyQixDQUFDO1lBQ0YsV0FBVyxFQUFFLHNDQUFzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNyRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBbm1CRCwwQkFtbUJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYXlsb2FkIENNUyBQYXR0ZXJuLlxuICpcbiAqIEEgaGlnaC1sZXZlbCBwYXR0ZXJuIHRoYXQgY3JlYXRlcyBhbGwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9yIGFcbiAqIFBheWxvYWQgQ01TIGRlcGxveW1lbnQgdXNpbmcgT3Blbk5leHQuXG4gKlxuICogUmVzb3VyY2VzIGNyZWF0ZWQ6XG4gKiAtIFJEUyBQb3N0Z3JlU1FMIGRhdGFiYXNlIChBdXJvcmEgb3IgSW5zdGFuY2UpXG4gKiAtIDMgUzMgYnVja2V0cyAoYXNzZXRzLCBjYWNoZSwgbWVkaWEpXG4gKiAtIER5bmFtb0RCIHRhYmxlICh0YWcgY2FjaGUgd2l0aCBHU0kpXG4gKiAtIFNRUyBGSUZPIHF1ZXVlIChyZXZhbGlkYXRpb24pXG4gKiAtIDMgTGFtYmRhIGZ1bmN0aW9ucyAoc2VydmVyLCBpbWFnZSBvcHRpbWlzYXRpb24sIHJldmFsaWRhdGlvbilcbiAqIC0gQ2xvdWRGcm9udCBkaXN0cmlidXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGF5bG9hZCA9IGFwcC5hZGRQYXR0ZXJuKFBhdHRlcm5GYWN0b3J5LmJ1aWxkKFwiUGF5bG9hZEFwcFwiLCB7XG4gKiAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICogICBuYW1lOiBcIm15LWNtc1wiXG4gKiB9KSk7XG4gKlxuICogLy8gRXNjYXBlIGhhdGNoZXNcbiAqIHBheWxvYWQuZ2V0RGF0YWJhc2UoKS5ncmFudENvbm5lY3Qob3RoZXJMYW1iZGEpO1xuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG5pbXBvcnQge1xuICBDb2RlLFxuICBSdW50aW1lLFxuICBBcmNoaXRlY3R1cmUsXG4gIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIHR5cGUgSUZ1bmN0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZSxcbiAgQ2VydGlmaWNhdGVWYWxpZGF0aW9uLFxuICB0eXBlIElDZXJ0aWZpY2F0ZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgSG9zdGVkWm9uZSwgQVJlY29yZCwgUmVjb3JkVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBDbG91ZEZyb250VGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcblxuaW1wb3J0IHR5cGUgQXBwIGZyb20gXCIuLi8uLi9hcHAuanNcIjtcbmltcG9ydCB7IHR5cGUgSVBheWxvYWRQcm9wcywgdHlwZSBJUGF5bG9hZCB9IGZyb20gXCIuL2ludGVyZmFjZXMvcGF0dGVybi5qc1wiO1xuaW1wb3J0IHsgdHlwZSBNYW5pZmVzdFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWFuaWZlc3RXcml0ZXIuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgUmVsYXRpb25hbERhdGFiYXNlLFxuICB0eXBlIER5bmFtb0RCRGF0YWJhc2UsXG4gIERhdGFiYXNlRmFjdG9yeSxcbiAgdHlwZSBBdXJvcmFEYXRhYmFzZVByb3BzLFxuICB0eXBlIEluc3RhbmNlRGF0YWJhc2VQcm9wcyxcbiAgdHlwZSBEeW5hbW9EQkRhdGFiYXNlUHJvcHNcbn0gZnJvbSBcIi4vZGF0YWJhc2UuanNcIjtcbmltcG9ydCB7XG4gIENvbXB1dGVGYWN0b3J5LFxuICB0eXBlIExhbWJkYUNvbXB1dGUsXG4gIEludm9rZU1vZGUsXG4gIHR5cGUgQ29kZUxhbWJkYVByb3BzXG59IGZyb20gXCIuL2NvbXB1dGUuanNcIjtcbmltcG9ydCB7IFN0b3JhZ2VGYWN0b3J5LCB0eXBlIFN0b3JhZ2UsIHR5cGUgUzNQcm9wcyB9IGZyb20gXCIuL3N0b3JhZ2UuanNcIjtcbmltcG9ydCB7XG4gIE1lc3NhZ2luZ0ZhY3RvcnksXG4gIHR5cGUgUXVldWVNZXNzYWdpbmcsXG4gIHR5cGUgSVF1ZXVlUHJvcHNcbn0gZnJvbSBcIi4vbWVzc2FnaW5nLmpzXCI7XG5pbXBvcnQgeyBDZG5GYWN0b3J5LCB0eXBlIENkbiwgdHlwZSBTbWFydENkblByb3BzIH0gZnJvbSBcIi4vY2RuLmpzXCI7XG5pbXBvcnQgeyBGamFsbExvZ2dlciB9IGZyb20gXCIuLi8uLi91dGlscy92YWxpZGF0aW9uTG9nZ2VyLmpzXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UsIHRvS2ViYWIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZy5qc1wiO1xuXG5jb25zdCBQQVlMT0FEX0RFRkFVTFRTID0ge1xuICAvKiogUGF0aCB0byBPcGVuTmV4dCBvdXRwdXQgcmVsYXRpdmUgdG8gYXBwIGZvbGRlciAoQ0RLIHJ1bnMgZnJvbSBmamFsbC88YXBwbmFtZT4pICovXG4gIFNPVVJDRTogXCIuLi8uLlwiLFxuICAvKiogQ2xvdWRGcm9udCByZXF1aXJlcyB1cy1lYXN0LTEgZm9yIGNlcnRhaW4gcmVzb3VyY2VzOyB1c2VkIGFzIHJlZ2lvbiBmYWxsYmFjayAqL1xuICBGQUxMQkFDS19SRUdJT046IFwidXMtZWFzdC0xXCIsXG4gIERBVEFCQVNFOiB7XG4gICAgVFlQRTogXCJJbnN0YW5jZVwiIGFzIGNvbnN0LFxuICAgIC8qKiBBV1MgZGVmYXVsdDsgNyBkYXlzIGNvdmVycyBtb3N0IGFjY2lkZW50YWwgZGF0YSBsb3NzIHJlY292ZXJ5IHNjZW5hcmlvcyAqL1xuICAgIEJBQ0tVUF9SRVRFTlRJT046IDcsXG4gICAgREVMRVRJT05fUFJPVEVDVElPTjogdHJ1ZVxuICB9LFxuICBDT01QVVRFOiB7XG4gICAgLyoqIDEuNSBHQiBiYWxhbmNlcyBOZXh0LmpzIFNTUiBwZXJmb3JtYW5jZSB2cyBjb3N0OyBiZWxvdyB0aGlzIHJpc2tzIE9PTSBvbiBjb21wbGV4IHBhZ2VzICovXG4gICAgU0VSVkVSX01FTU9SWTogMTUzNixcbiAgICAvKiogQVBJIEdhdGV3YXkgZGVmYXVsdCBtYXg7IHN1ZmZpY2llbnQgZm9yIG1vc3QgU1NSIHJlbmRlcnMgKi9cbiAgICBTRVJWRVJfVElNRU9VVDogMzAsXG4gICAgLyoqIFNoYXJwIGltYWdlIHByb2Nlc3NpbmcgbmVlZHMgbWVtb3J5IHByb3BvcnRpb25hbCB0byBpbWFnZSBkaW1lbnNpb25zICovXG4gICAgSU1BR0VfTUVNT1JZOiAxNTM2LFxuICAgIC8qKiBJbWFnZSBwcm9jZXNzaW5nIHR5cGljYWxseSBjb21wbGV0ZXMgaW4gPDEwczsgMzBzIHByb3ZpZGVzIG1hcmdpbiAqL1xuICAgIElNQUdFX1RJTUVPVVQ6IDMwLFxuICAgIC8qKiBSZXZhbGlkYXRpb24gaXMgbGlnaHR3ZWlnaHQgKEhUVFAgY2FsbCArIGNhY2hlIHdyaXRlKTsgaGFsZiBvZiBzZXJ2ZXIgbWVtb3J5IHN1ZmZpY2VzICovXG4gICAgUkVWQUxJREFUSU9OX01FTU9SWTogNzY4LFxuICAgIC8qKiA1IG1pbnV0ZXMgYWxsb3dzIGJhdGNoIHJldmFsaWRhdGlvbiBvZiBtYW55IHBhZ2VzIGluIGEgc2luZ2xlIGludm9jYXRpb24gKi9cbiAgICBSRVZBTElEQVRJT05fVElNRU9VVDogMzAwXG4gIH0sXG4gIENBQ0hFOiB7XG4gICAgTUFYX0FHRV9TRUNPTkRTOiAzMTUzNjAwMCAvLyAxIHllYXJcbiAgfSxcbiAgT1BFTk5FWFQ6IHtcbiAgICBBU1NFVFM6IFwiLm9wZW4tbmV4dC9hc3NldHNcIixcbiAgICBDQUNIRTogXCIub3Blbi1uZXh0L2NhY2hlXCIsXG4gICAgU0VSVkVSOiBcIi5vcGVuLW5leHQvc2VydmVyLWZ1bmN0aW9ucy9kZWZhdWx0XCIsXG4gICAgSU1BR0U6IFwiLm9wZW4tbmV4dC9pbWFnZS1vcHRpbWl6YXRpb24tZnVuY3Rpb25cIixcbiAgICBSRVZBTElEQVRJT046IFwiLm9wZW4tbmV4dC9yZXZhbGlkYXRpb24tZnVuY3Rpb25cIlxuICB9LFxuICBQQVRIUzoge1xuICAgIFNUQVRJQzogXCIvX25leHQvc3RhdGljLypcIixcbiAgICBJTUFHRTogXCIvX25leHQvaW1hZ2UqXCIsXG4gICAgQVBJOiBcIi9hcGkvKlwiLFxuICAgIEFETUlOOiBcIi9hZG1pbi8qXCJcbiAgfVxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBDb252ZXJ0IGEgbmFtZSB0byBhIHZhbGlkIFJEUyBkYXRhYmFzZSBuYW1lIChzbmFrZV9jYXNlKS5cbiAqIFJEUyBBUEkgYWxsb3dzIGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcyBmb3IgUG9zdGdyZVNRTC9NeVNRTCBEYXRhYmFzZU5hbWUuXG4gKiBIeXBoZW5zIGFyZSByZWplY3RlZCwgc28gY29udmVydCB0aGVtIHRvIHVuZGVyc2NvcmVzLlxuICovXG5mdW5jdGlvbiB0b1ZhbGlkRGF0YWJhc2VOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0b0tlYmFiKG5hbWUpLnJlcGxhY2UoLy0vZywgXCJfXCIpO1xufVxuXG4vKipcbiAqIEV4dHJhY3Qgcm9vdCBkb21haW4gZnJvbSBhIGZ1bGwgZG9tYWluIG5hbWUuXG4gKiBlLmcuLCBcImNtcy5leGFtcGxlLmNvbVwiIC0+IFwiZXhhbXBsZS5jb21cIlxuICovXG5mdW5jdGlvbiBleHRyYWN0Um9vdERvbWFpbihkb21haW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gZG9tYWluLnNwbGl0KFwiLlwiKTtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDIgPyBwYXJ0cy5zbGljZSgtMikuam9pbihcIi5cIikgOiBkb21haW47XG59XG5cbi8qKlxuICogU2FmZWx5IGdldCB0aGUgdW5kZXJseWluZyBMYW1iZGEgZnVuY3Rpb24gZnJvbSBhIGNvbXB1dGUgcmVzb3VyY2UuXG4gKiBUaHJvd3MgYSBjbGVhciBlcnJvciBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZnVuY3Rpb24gcmVxdWlyZUZ1bmN0aW9uKGNvbXB1dGU6IExhbWJkYUNvbXB1dGUsIG5hbWU6IHN0cmluZyk6IElGdW5jdGlvbiB7XG4gIGNvbnN0IGZuID0gY29tcHV0ZS5nZXRGdW5jdGlvbigpO1xuICBpZiAoIWZuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7bmFtZX0gTGFtYmRhIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuIGAgK1xuICAgICAgICBcIlRoaXMgaW5kaWNhdGVzIGFuIGludGVybmFsIGVycm9yIGluIGNvbXB1dGUgcmVzb3VyY2UgY3JlYXRpb24uXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBmbjtcbn1cblxuLyoqXG4gKiBCYXNlIGRhdGFiYXNlIHByb3BlcnRpZXMgc2hhcmVkIGJldHdlZW4gQXVyb3JhIGFuZCBJbnN0YW5jZS5cbiAqIFVzZXMgUGljayB0byBleHRyYWN0IGNvbW1vbiBwcm9wZXJ0aWVzIGZyb20gdGhlIGRhdGFiYXNlIGNvbmZpZy5cbiAqL1xudHlwZSBCYXNlRGF0YWJhc2VQcm9wcyA9IFBpY2s8XG4gIEluc3RhbmNlRGF0YWJhc2VQcm9wcyxcbiAgfCBcImRhdGFiYXNlTmFtZVwiXG4gIHwgXCJkYXRhYmFzZUVuZ2luZVwiXG4gIHwgXCJiYWNrdXBSZXRlbnRpb25cIlxuICB8IFwiZGVsZXRpb25Qcm90ZWN0aW9uXCJcbiAgfCBcInB1YmxpY2x5QWNjZXNzaWJsZVwiXG4gIHwgXCJwb3J0XCJcbiAgfCBcInBlcmZvcm1hbmNlSW5zaWdodHNcIlxuICB8IFwicHJveHlcIlxuICB8IFwiY3JlZGVudGlhbHNcIlxuICB8IFwic25hcHNob3RJZGVudGlmaWVyXCJcbiAgfCBcInNuYXBzaG90VXNlcm5hbWVcIlxuPjtcblxuLyoqXG4gKiBMYW1iZGEgY29uZmlndXJhdGlvbiB3aXRoIHJlc29sdmVkIGRlZmF1bHRzLlxuICovXG5pbnRlcmZhY2UgUmVzb2x2ZWRMYW1iZGFDb25maWcge1xuICBtZW1vcnlTaXplOiBudW1iZXI7XG4gIHRpbWVvdXQ6IG51bWJlcjtcbiAgZXBoZW1lcmFsU3RvcmFnZVNpemU/OiBudW1iZXI7XG59XG5cbi8qKlxuICogRXh0cmFjdCBMYW1iZGEgY29uZmlnIGZyb20gcHJvcHMgd2l0aCBkZWZhdWx0cy5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUxhbWJkYUNvbmZpZyhcbiAgY29uZmlnOlxuICAgIHwgeyBtZW1vcnlTaXplPzogbnVtYmVyOyB0aW1lb3V0PzogbnVtYmVyOyBlcGhlbWVyYWxTdG9yYWdlU2l6ZT86IG51bWJlciB9XG4gICAgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRzOiB7IG1lbW9yeTogbnVtYmVyOyB0aW1lb3V0OiBudW1iZXIgfVxuKTogUmVzb2x2ZWRMYW1iZGFDb25maWcge1xuICByZXR1cm4ge1xuICAgIG1lbW9yeVNpemU6IGNvbmZpZz8ubWVtb3J5U2l6ZSA/PyBkZWZhdWx0cy5tZW1vcnksXG4gICAgdGltZW91dDogY29uZmlnPy50aW1lb3V0ID8/IGRlZmF1bHRzLnRpbWVvdXQsXG4gICAgZXBoZW1lcmFsU3RvcmFnZVNpemU6IGNvbmZpZz8uZXBoZW1lcmFsU3RvcmFnZVNpemVcbiAgfTtcbn1cblxuLyoqXG4gKiBQYXlsb2FkIENNUyBwYXR0ZXJuIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIENvbXBvc2VzIGFsbCByZXF1aXJlZCBBV1MgcmVzb3VyY2VzIGZvciBhIFBheWxvYWQgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBheWxvYWQgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUGF5bG9hZCB7XG4gIHB1YmxpYyByZWFkb25seSBwYXR0ZXJuVHlwZSA9IFwicGF5bG9hZFwiIGFzIGNvbnN0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IElQYXlsb2FkUHJvcHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFzY2FsTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9wYXlsb2FkU2VjcmV0OiBTZWNyZXQ7XG5cbiAgcHJpdmF0ZSBfZGF0YWJhc2UhOiBSZWxhdGlvbmFsRGF0YWJhc2U7XG4gIHByaXZhdGUgX3NlcnZlciE6IExhbWJkYUNvbXB1dGU7XG4gIHByaXZhdGUgX2ltYWdlT3B0aW1pc2F0aW9uITogTGFtYmRhQ29tcHV0ZTtcbiAgcHJpdmF0ZSBfcmV2YWxpZGF0aW9uITogTGFtYmRhQ29tcHV0ZTtcbiAgcHJpdmF0ZSBfYXNzZXRzQnVja2V0ITogU3RvcmFnZTtcbiAgcHJpdmF0ZSBfY2FjaGVCdWNrZXQhOiBTdG9yYWdlO1xuICBwcml2YXRlIF9tZWRpYUJ1Y2tldCE6IFN0b3JhZ2U7XG4gIHByaXZhdGUgX3RhZ0NhY2hlITogRHluYW1vREJEYXRhYmFzZTtcbiAgcHJpdmF0ZSBfcmV2YWxpZGF0aW9uUXVldWUhOiBRdWV1ZU1lc3NhZ2luZztcbiAgcHJpdmF0ZSBfY2RuITogQ2RuO1xuICBwcml2YXRlIF9yZXNvbHZlZERvbWFpbjpcbiAgICB8IHtcbiAgICAgICAgZG9tYWluTmFtZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgICAgICBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICBob3N0ZWRab25lOiBSZXR1cm5UeXBlPHR5cGVvZiBIb3N0ZWRab25lLmZyb21Mb29rdXA+IHwgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGFwcDogQXBwLCBwcm9wczogSVBheWxvYWRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5wYXNjYWxOYW1lID0gdG9QYXNjYWxDYXNlKHByb3BzLm5hbWUpO1xuICAgIHRoaXMuX3BheWxvYWRTZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIGAke3RoaXMucGFzY2FsTmFtZX1QYXlsb2FkU2VjcmV0YCwge1xuICAgICAgc2VjcmV0TmFtZTogYCR7cHJvcHMubmFtZX0vcGF5bG9hZC1zZWNyZXRgLFxuICAgICAgZGVzY3JpcHRpb246IGBQYXlsb2FkIENNUyBzZWNyZXQgZm9yICR7cHJvcHMubmFtZX1gLFxuICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICBwYXNzd29yZExlbmd0aDogNjRcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXJNYW5pZmVzdCgpO1xuICAgIHRoaXMudmFsaWRhdGVQcm9wcygpO1xuXG4gICAgdGhpcy5jcmVhdGVEYXRhYmFzZSgpO1xuICAgIHRoaXMuY3JlYXRlU3RvcmFnZUJ1Y2tldHMoKTtcbiAgICB0aGlzLmNyZWF0ZVRhZ0NhY2hlKCk7XG4gICAgdGhpcy5jcmVhdGVSZXZhbGlkYXRpb25RdWV1ZSgpO1xuICAgIHRoaXMuY3JlYXRlTGFtYmRhRnVuY3Rpb25zKCk7XG4gICAgdGhpcy5jcmVhdGVDZG4oKTtcbiAgICB0aGlzLmNyZWF0ZURuc1JlY29yZCgpO1xuICAgIHRoaXMuZXhwb3J0UGF0dGVybk91dHB1dHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJNYW5pZmVzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYW5pZmVzdFBhdHRlcm46IE1hbmlmZXN0UGF0dGVybiA9IHtcbiAgICAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICAgICAgbmFtZTogdGhpcy5wcm9wcy5uYW1lLFxuICAgICAgc291cmNlOiBQQVlMT0FEX0RFRkFVTFRTLlNPVVJDRVxuICAgIH07XG4gICAgdGhpcy5hcHAuZ2V0TWFuaWZlc3RDb2xsZWN0b3IoKS5zZXRQYXR0ZXJuKG1hbmlmZXN0UGF0dGVybik7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgZGJDb25maWcgPSB0aGlzLnByb3BzLmRhdGFiYXNlID8/IHt9O1xuICAgIGlmIChkYkNvbmZpZy5wdWJsaWNseUFjY2Vzc2libGUpIHtcbiAgICAgIEZqYWxsTG9nZ2VyLndhcm4oXG4gICAgICAgIGBQYXlsb2FkIGRhdGFiYXNlICcke3RoaXMucHJvcHMubmFtZX0nIGlzIGNvbmZpZ3VyZWQgd2l0aCBwdWJsaWMgYWNjZXNzaWJpbGl0eS4gYCArXG4gICAgICAgICAgXCJUaGlzIGlzIGEgc2VjdXJpdHkgcmlzayBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgZGV2ZWxvcG1lbnQuXCJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEYXRhYmFzZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IHRoaXMucHJvcHMuZGF0YWJhc2UgPz8ge307XG4gICAgY29uc3QgZGF0YWJhc2VUeXBlID0gZGJDb25maWcudHlwZSA/PyBQQVlMT0FEX0RFRkFVTFRTLkRBVEFCQVNFLlRZUEU7XG5cbiAgICB0aGlzLl9kYXRhYmFzZSA9XG4gICAgICBkYXRhYmFzZVR5cGUgPT09IFwiQXVyb3JhXCJcbiAgICAgICAgPyB0aGlzLmNyZWF0ZUF1cm9yYURhdGFiYXNlKGRiQ29uZmlnKVxuICAgICAgICA6IHRoaXMuY3JlYXRlSW5zdGFuY2VEYXRhYmFzZShkYkNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQmFzZURhdGFiYXNlUHJvcHMoXG4gICAgZGJDb25maWc6IE5vbk51bGxhYmxlPElQYXlsb2FkUHJvcHNbXCJkYXRhYmFzZVwiXT5cbiAgKTogQmFzZURhdGFiYXNlUHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhYmFzZU5hbWU6XG4gICAgICAgIGRiQ29uZmlnLmRhdGFiYXNlTmFtZSA/PyB0b1ZhbGlkRGF0YWJhc2VOYW1lKHRoaXMucHJvcHMubmFtZSksXG4gICAgICBkYXRhYmFzZUVuZ2luZTogZGJDb25maWcuZGF0YWJhc2VFbmdpbmUgPz8gXCJwb3N0Z3Jlc3FsXCIsXG4gICAgICBiYWNrdXBSZXRlbnRpb246XG4gICAgICAgIGRiQ29uZmlnLmJhY2t1cFJldGVudGlvbiA/PyBQQVlMT0FEX0RFRkFVTFRTLkRBVEFCQVNFLkJBQ0tVUF9SRVRFTlRJT04sXG4gICAgICBkZWxldGlvblByb3RlY3Rpb246XG4gICAgICAgIGRiQ29uZmlnLmRlbGV0aW9uUHJvdGVjdGlvbiA/P1xuICAgICAgICBQQVlMT0FEX0RFRkFVTFRTLkRBVEFCQVNFLkRFTEVUSU9OX1BST1RFQ1RJT04sXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IGRiQ29uZmlnLnB1YmxpY2x5QWNjZXNzaWJsZSxcbiAgICAgIHBvcnQ6IGRiQ29uZmlnLnBvcnQsXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRzOiBkYkNvbmZpZy5wZXJmb3JtYW5jZUluc2lnaHRzLFxuICAgICAgcHJveHk6IGRiQ29uZmlnLnByb3h5LFxuICAgICAgY3JlZGVudGlhbHM6IGRiQ29uZmlnLmNyZWRlbnRpYWxzLFxuICAgICAgc25hcHNob3RJZGVudGlmaWVyOiBkYkNvbmZpZy5zbmFwc2hvdElkZW50aWZpZXIsXG4gICAgICBzbmFwc2hvdFVzZXJuYW1lOiBkYkNvbmZpZy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXVyb3JhRGF0YWJhc2UoXG4gICAgZGJDb25maWc6IE5vbk51bGxhYmxlPElQYXlsb2FkUHJvcHNbXCJkYXRhYmFzZVwiXT5cbiAgKTogUmVsYXRpb25hbERhdGFiYXNlIHtcbiAgICBjb25zdCBhdXJvcmFQcm9wczogQXVyb3JhRGF0YWJhc2VQcm9wcyA9IHtcbiAgICAgIHR5cGU6IFwiQXVyb3JhXCIsXG4gICAgICAuLi50aGlzLmJ1aWxkQmFzZURhdGFiYXNlUHJvcHMoZGJDb25maWcpLFxuICAgICAgYWxsb3dlZElwQ2lkcjogZGJDb25maWcuYWxsb3dlZElwQ2lkcixcbiAgICAgIGVuY3J5cHRpb246IGRiQ29uZmlnLmVuY3J5cHRpb24gYXMgQXVyb3JhRGF0YWJhc2VQcm9wc1tcImVuY3J5cHRpb25cIl0sXG4gICAgICB3cml0ZXI6IGRiQ29uZmlnLndyaXRlcixcbiAgICAgIHJlYWRlcnM6IGRiQ29uZmlnLnJlYWRlcnMsXG4gICAgICBhbGxvd1ZwY0FjY2VzczogZGJDb25maWcuYWxsb3dWcGNBY2Nlc3MsXG4gICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IGRiQ29uZmlnLm1vbml0b3JpbmdJbnRlcnZhbCxcbiAgICAgIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93OiBkYkNvbmZpZy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvd1xuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYXBwLmFkZERhdGFiYXNlKFxuICAgICAgRGF0YWJhc2VGYWN0b3J5LmJ1aWxkKHRoaXMucHJvcHMubmFtZSwgYXVyb3JhUHJvcHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW5zdGFuY2VEYXRhYmFzZShcbiAgICBkYkNvbmZpZzogTm9uTnVsbGFibGU8SVBheWxvYWRQcm9wc1tcImRhdGFiYXNlXCJdPlxuICApOiBSZWxhdGlvbmFsRGF0YWJhc2Uge1xuICAgIGNvbnN0IGluc3RhbmNlUHJvcHM6IEluc3RhbmNlRGF0YWJhc2VQcm9wcyA9IHtcbiAgICAgIHR5cGU6IFwiSW5zdGFuY2VcIixcbiAgICAgIC4uLnRoaXMuYnVpbGRCYXNlRGF0YWJhc2VQcm9wcyhkYkNvbmZpZyksXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IGRiQ29uZmlnLnB1YmxpY2x5QWNjZXNzaWJsZSA/PyBmYWxzZSxcbiAgICAgIGluc3RhbmNlVHlwZTogZGJDb25maWcuaW5zdGFuY2VUeXBlLFxuICAgICAgYWxsb2NhdGVkU3RvcmFnZTogZGJDb25maWcuYWxsb2NhdGVkU3RvcmFnZSxcbiAgICAgIG11bHRpQXo6IGRiQ29uZmlnLm11bHRpQXosXG4gICAgICByZWFkUmVwbGljYTogZGJDb25maWcucmVhZFJlcGxpY2EsXG4gICAgICBlbmNyeXB0aW9uOiBkYkNvbmZpZy5lbmNyeXB0aW9uIGFzIEluc3RhbmNlRGF0YWJhc2VQcm9wc1tcImVuY3J5cHRpb25cIl1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwcC5hZGREYXRhYmFzZShcbiAgICAgIERhdGFiYXNlRmFjdG9yeS5idWlsZCh0aGlzLnByb3BzLm5hbWUsIGluc3RhbmNlUHJvcHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3RvcmFnZUJ1Y2tldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fYXNzZXRzQnVja2V0ID0gdGhpcy5jcmVhdGVBc3NldHNCdWNrZXQoKTtcbiAgICB0aGlzLl9jYWNoZUJ1Y2tldCA9IHRoaXMuY3JlYXRlQ2FjaGVCdWNrZXQoKTtcbiAgICB0aGlzLl9tZWRpYUJ1Y2tldCA9IHRoaXMuY3JlYXRlTWVkaWFCdWNrZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQXNzZXRzQnVja2V0KCk6IFN0b3JhZ2Uge1xuICAgIGNvbnN0IGFzc2V0c0NvbmZpZyA9IHRoaXMucHJvcHMuc3RvcmFnZT8uYXNzZXRzID8/IHt9O1xuICAgIGNvbnN0IGFzc2V0c1Byb3BzOiBTM1Byb3BzID0ge1xuICAgICAgdmVyc2lvbmVkOiBhc3NldHNDb25maWcudmVyc2lvbmVkID8/IGZhbHNlLFxuICAgICAgZGVwbG95bWVudDoge1xuICAgICAgICBzb3VyY2U6IGAke1BBWUxPQURfREVGQVVMVFMuU09VUkNFfS8ke1BBWUxPQURfREVGQVVMVFMuT1BFTk5FWFQuQVNTRVRTfWAsXG4gICAgICAgIHBydW5lOiB0cnVlLFxuICAgICAgICBjYWNoZUNvbnRyb2w6IHtcbiAgICAgICAgICBtYXhBZ2U6IFBBWUxPQURfREVGQVVMVFMuQ0FDSEUuTUFYX0FHRV9TRUNPTkRTLFxuICAgICAgICAgIGltbXV0YWJsZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5hcHAuYWRkU3RvcmFnZShcbiAgICAgIFN0b3JhZ2VGYWN0b3J5LmJ1aWxkKGAke3RoaXMucHJvcHMubmFtZX0tYXNzZXRzYCwgYXNzZXRzUHJvcHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVCdWNrZXQoKTogU3RvcmFnZSB7XG4gICAgY29uc3QgY2FjaGVDb25maWcgPSB0aGlzLnByb3BzLnN0b3JhZ2U/LmNhY2hlID8/IHt9O1xuICAgIGNvbnN0IGNhY2hlUHJvcHM6IFMzUHJvcHMgPSB7XG4gICAgICB2ZXJzaW9uZWQ6IGNhY2hlQ29uZmlnLnZlcnNpb25lZCA/PyBmYWxzZSxcbiAgICAgIGRlcGxveW1lbnQ6IHtcbiAgICAgICAgc291cmNlOiBgJHtQQVlMT0FEX0RFRkFVTFRTLlNPVVJDRX0vJHtQQVlMT0FEX0RFRkFVTFRTLk9QRU5ORVhULkNBQ0hFfWAsXG4gICAgICAgIHBydW5lOiBmYWxzZSAvLyBJU1IgYWRkcyBmaWxlcyBhdCBydW50aW1lXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5hcHAuYWRkU3RvcmFnZShcbiAgICAgIFN0b3JhZ2VGYWN0b3J5LmJ1aWxkKGAke3RoaXMucHJvcHMubmFtZX0tY2FjaGVgLCBjYWNoZVByb3BzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1lZGlhQnVja2V0KCk6IFN0b3JhZ2Uge1xuICAgIGNvbnN0IG1lZGlhQ29uZmlnID0gdGhpcy5wcm9wcy5zdG9yYWdlPy5tZWRpYSA/PyB7fTtcbiAgICBjb25zdCBtZWRpYVByb3BzOiBTM1Byb3BzID0ge1xuICAgICAgdmVyc2lvbmVkOiBtZWRpYUNvbmZpZy52ZXJzaW9uZWQgPz8gZmFsc2VcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwcC5hZGRTdG9yYWdlKFxuICAgICAgU3RvcmFnZUZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS1tZWRpYWAsIG1lZGlhUHJvcHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGFnQ2FjaGUoKTogdm9pZCB7XG4gICAgY29uc3QgdGFnQ2FjaGVQcm9wczogRHluYW1vREJEYXRhYmFzZVByb3BzID0ge1xuICAgICAgdHlwZTogXCJEeW5hbW9EQlwiLFxuICAgICAgcGFydGl0aW9uS2V5OiB7IG5hbWU6IFwidGFnXCIsIHR5cGU6IFwiU1wiIH0sXG4gICAgICBzb3J0S2V5OiB7IG5hbWU6IFwicGF0aFwiLCB0eXBlOiBcIlNcIiB9LFxuICAgICAgZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlczogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5kZXhOYW1lOiBcInJldmFsaWRhdGVcIixcbiAgICAgICAgICBwYXJ0aXRpb25LZXk6IHsgbmFtZTogXCJwYXRoXCIsIHR5cGU6IFwiU1wiIH0sXG4gICAgICAgICAgc29ydEtleTogeyBuYW1lOiBcInJldmFsaWRhdGVkQXRcIiwgdHlwZTogXCJOXCIgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICB0aGlzLl90YWdDYWNoZSA9IHRoaXMuYXBwLmFkZERhdGFiYXNlKFxuICAgICAgRGF0YWJhc2VGYWN0b3J5LmJ1aWxkKGAke3RoaXMucHJvcHMubmFtZX0tdGFnLWNhY2hlYCwgdGFnQ2FjaGVQcm9wcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSZXZhbGlkYXRpb25RdWV1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBxdWV1ZUNvbmZpZyA9IHRoaXMucHJvcHMubWVzc2FnaW5nPy5yZXZhbGlkYXRpb25RdWV1ZSA/PyB7fTtcbiAgICBjb25zdCByZXZhbGlkYXRpb25UaW1lb3V0ID1cbiAgICAgIHRoaXMucHJvcHMuY29tcHV0ZT8ucmV2YWxpZGF0aW9uPy50aW1lb3V0ID8/XG4gICAgICBQQVlMT0FEX0RFRkFVTFRTLkNPTVBVVEUuUkVWQUxJREFUSU9OX1RJTUVPVVQ7XG5cbiAgICAvLyBSZXNvbHZlIGRlYWQgbGV0dGVyIHF1ZXVlIGNvbmZpZ1xuICAgIGxldCBkbHFDb25maWc6IElRdWV1ZVByb3BzW1wiZGVhZExldHRlclF1ZXVlXCJdO1xuICAgIGlmIChxdWV1ZUNvbmZpZy5kZWFkTGV0dGVyUXVldWUgPT09IGZhbHNlKSB7XG4gICAgICBkbHFDb25maWcgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChxdWV1ZUNvbmZpZy5kZWFkTGV0dGVyUXVldWUpIHtcbiAgICAgIGRscUNvbmZpZyA9IHtcbiAgICAgICAgZW5hYmxlZDogcXVldWVDb25maWcuZGVhZExldHRlclF1ZXVlLmVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgICAgbWF4UmVjZWl2ZUNvdW50OiBxdWV1ZUNvbmZpZy5kZWFkTGV0dGVyUXVldWUubWF4UmVjZWl2ZUNvdW50ID8/IDNcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRscUNvbmZpZyA9IHsgZW5hYmxlZDogdHJ1ZSwgbWF4UmVjZWl2ZUNvdW50OiAzIH07XG4gICAgfVxuXG4gICAgY29uc3QgcXVldWVQcm9wczogSVF1ZXVlUHJvcHMgPSB7XG4gICAgICB0eXBlOiBcInF1ZXVlXCIsXG4gICAgICBxdWV1ZVR5cGU6IFwiZmlmb1wiLFxuICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IHF1ZXVlQ29uZmlnLnZpc2liaWxpdHlUaW1lb3V0ID8/IHJldmFsaWRhdGlvblRpbWVvdXQsXG4gICAgICBtZXNzYWdlUmV0ZW50aW9uUGVyaW9kOiBxdWV1ZUNvbmZpZy5tZXNzYWdlUmV0ZW50aW9uUGVyaW9kLFxuICAgICAgbWF4TWVzc2FnZVNpemU6IHF1ZXVlQ29uZmlnLm1heE1lc3NhZ2VTaXplLFxuICAgICAgY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbjogdHJ1ZSxcbiAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogZGxxQ29uZmlnXG4gICAgfTtcbiAgICB0aGlzLl9yZXZhbGlkYXRpb25RdWV1ZSA9IHRoaXMuYXBwLmFkZE1lc3NhZ2luZyhcbiAgICAgIE1lc3NhZ2luZ0ZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS1yZXZhbGlkYXRpb25gLCBxdWV1ZVByb3BzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxhbWJkYUZ1bmN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2ZXIgPSB0aGlzLmNyZWF0ZVNlcnZlckxhbWJkYSgpO1xuICAgIHRoaXMuX2ltYWdlT3B0aW1pc2F0aW9uID0gdGhpcy5jcmVhdGVJbWFnZUxhbWJkYSgpO1xuICAgIHRoaXMuX3JldmFsaWRhdGlvbiA9IHRoaXMuY3JlYXRlUmV2YWxpZGF0aW9uTGFtYmRhKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVNlcnZlckxhbWJkYSgpOiBMYW1iZGFDb21wdXRlIHtcbiAgICBjb25zdCB7IG1lbW9yeVNpemUsIHRpbWVvdXQsIGVwaGVtZXJhbFN0b3JhZ2VTaXplIH0gPSByZXNvbHZlTGFtYmRhQ29uZmlnKFxuICAgICAgdGhpcy5wcm9wcy5jb21wdXRlPy5zZXJ2ZXIsXG4gICAgICB7XG4gICAgICAgIG1lbW9yeTogUEFZTE9BRF9ERUZBVUxUUy5DT01QVVRFLlNFUlZFUl9NRU1PUlksXG4gICAgICAgIHRpbWVvdXQ6IFBBWUxPQURfREVGQVVMVFMuQ09NUFVURS5TRVJWRVJfVElNRU9VVFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzZXJ2ZXJQcm9wczogQ29kZUxhbWJkYVByb3BzID0ge1xuICAgICAgdHlwZTogXCJsYW1iZGFcIixcbiAgICAgIGRlcGxveW1lbnQ6IFwiY29kZVwiLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIGAke1BBWUxPQURfREVGQVVMVFMuU09VUkNFfS8ke1BBWUxPQURfREVGQVVMVFMuT1BFTk5FWFQuU0VSVkVSfWBcbiAgICAgICksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBtZW1vcnlTaXplLFxuICAgICAgdGltZW91dCxcbiAgICAgIGVwaGVtZXJhbFN0b3JhZ2VTaXplLFxuICAgICAgZnVuY3Rpb25Vcmw6IHtcbiAgICAgICAgYXV0aFR5cGU6IEZ1bmN0aW9uVXJsQXV0aFR5cGUuTk9ORSxcbiAgICAgICAgaW52b2tlTW9kZTogSW52b2tlTW9kZS5SRVNQT05TRV9TVFJFQU1cbiAgICAgIH0sXG4gICAgICBjb25uZWN0aW9uczogW3RoaXMuX2RhdGFiYXNlXSxcbiAgICAgIHNlY3JldHNJbXBvcnQ6IHtcbiAgICAgICAgREFUQUJBU0VfVVNFUk5BTUU6IHRoaXMuX2RhdGFiYXNlXG4gICAgICAgICAgLmdldENyZWRlbnRpYWxzKClcbiAgICAgICAgICAuZ2V0SW1wb3J0KFwidXNlcm5hbWVcIiksXG4gICAgICAgIERBVEFCQVNFX1BBU1NXT1JEOiB0aGlzLl9kYXRhYmFzZVxuICAgICAgICAgIC5nZXRDcmVkZW50aWFscygpXG4gICAgICAgICAgLmdldEltcG9ydChcInBhc3N3b3JkXCIpLFxuICAgICAgICBQQVlMT0FEX1NFQ1JFVDogdGhpcy5fcGF5bG9hZFNlY3JldC5nZXRJbXBvcnQoKVxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmJ1aWxkU2VydmVyRW52aXJvbm1lbnQoKVxuICAgIH07XG5cbiAgICBjb25zdCBzZXJ2ZXIgPSB0aGlzLmFwcC5hZGRDb21wdXRlKFxuICAgICAgQ29tcHV0ZUZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS1zZXJ2ZXJgLCBzZXJ2ZXJQcm9wcylcbiAgICApO1xuXG4gICAgdGhpcy5ncmFudFNlcnZlclBlcm1pc3Npb25zKHNlcnZlcik7XG4gICAgcmV0dXJuIHNlcnZlcjtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTZXJ2ZXJFbnZpcm9ubWVudCgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBiYXNlRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgREFUQUJBU0VfSE9TVDogdGhpcy5fZGF0YWJhc2UuZ2V0SG9zdEVuZHBvaW50KCksXG4gICAgICBEQVRBQkFTRV9QT1JUOiB0aGlzLl9kYXRhYmFzZS5nZXRIb3N0UG9ydCgpLFxuICAgICAgREFUQUJBU0VfTkFNRTogdGhpcy5fZGF0YWJhc2UuZ2V0RGF0YWJhc2VOYW1lKCksXG4gICAgICBEQVRBQkFTRV9TU0w6IFwidHJ1ZVwiLFxuICAgICAgQ0FDSEVfQlVDS0VUX05BTUU6IHRoaXMuX2NhY2hlQnVja2V0LmdldEJ1Y2tldE5hbWUoKSxcbiAgICAgIENBQ0hFX0JVQ0tFVF9SRUdJT046IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbixcbiAgICAgIENBQ0hFX0RZTkFNT19UQUJMRTogdGhpcy5fdGFnQ2FjaGUuZ2V0VGFibGVOYW1lKCksXG4gICAgICBSRVZBTElEQVRJT05fUVVFVUVfVVJMOiB0aGlzLl9yZXZhbGlkYXRpb25RdWV1ZS5nZXRRdWV1ZVVybCgpLFxuICAgICAgUkVWQUxJREFUSU9OX1FVRVVFX1JFR0lPTjogU3RhY2sub2YodGhpcykucmVnaW9uLFxuICAgICAgTUVESUFfQlVDS0VUX05BTUU6IHRoaXMuX21lZGlhQnVja2V0LmdldEJ1Y2tldE5hbWUoKVxuICAgIH07XG5cbiAgICAvLyBMb2NrIGRvd24gQ09SUyB0byBjdXN0b20gZG9tYWluIHdoZW4gcHJvdmlkZWRcbiAgICBjb25zdCBjdXN0b21Eb21haW4gPSB0aGlzLnByb3BzLmRvbWFpbiA/PyB0aGlzLnByb3BzLmNkbj8uZG9tYWluTmFtZXM/LlswXTtcbiAgICBpZiAoY3VzdG9tRG9tYWluKSB7XG4gICAgICBiYXNlRW52Lk5FWFRfUFVCTElDX1NFUlZFUl9VUkwgPSBgaHR0cHM6Ly8ke2N1c3RvbURvbWFpbn1gO1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmJhc2VFbnYsIC4uLnRoaXMucHJvcHMuZW52aXJvbm1lbnQgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ3JhbnRTZXJ2ZXJQZXJtaXNzaW9ucyhzZXJ2ZXI6IExhbWJkYUNvbXB1dGUpOiB2b2lkIHtcbiAgICBjb25zdCBzZXJ2ZXJGdW5jdGlvbiA9IHJlcXVpcmVGdW5jdGlvbihzZXJ2ZXIsIFwiU2VydmVyXCIpO1xuICAgIHRoaXMuX2NhY2hlQnVja2V0LmdyYW50UmVhZFdyaXRlKHNlcnZlckZ1bmN0aW9uKTtcbiAgICB0aGlzLl9tZWRpYUJ1Y2tldC5ncmFudFJlYWRXcml0ZShzZXJ2ZXJGdW5jdGlvbik7XG4gICAgdGhpcy5fdGFnQ2FjaGUuZ3JhbnRSZWFkV3JpdGVEYXRhKHNlcnZlckZ1bmN0aW9uKTtcbiAgICB0aGlzLl9yZXZhbGlkYXRpb25RdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhzZXJ2ZXJGdW5jdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUltYWdlTGFtYmRhKCk6IExhbWJkYUNvbXB1dGUge1xuICAgIGNvbnN0IHsgbWVtb3J5U2l6ZSwgdGltZW91dCwgZXBoZW1lcmFsU3RvcmFnZVNpemUgfSA9IHJlc29sdmVMYW1iZGFDb25maWcoXG4gICAgICB0aGlzLnByb3BzLmNvbXB1dGU/LmltYWdlT3B0aW1pc2F0aW9uLFxuICAgICAge1xuICAgICAgICBtZW1vcnk6IFBBWUxPQURfREVGQVVMVFMuQ09NUFVURS5JTUFHRV9NRU1PUlksXG4gICAgICAgIHRpbWVvdXQ6IFBBWUxPQURfREVGQVVMVFMuQ09NUFVURS5JTUFHRV9USU1FT1VUXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGltYWdlUHJvcHM6IENvZGVMYW1iZGFQcm9wcyA9IHtcbiAgICAgIHR5cGU6IFwibGFtYmRhXCIsXG4gICAgICBkZXBsb3ltZW50OiBcImNvZGVcIixcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KFxuICAgICAgICBgJHtQQVlMT0FEX0RFRkFVTFRTLlNPVVJDRX0vJHtQQVlMT0FEX0RFRkFVTFRTLk9QRU5ORVhULklNQUdFfWBcbiAgICAgICksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBtZW1vcnlTaXplLFxuICAgICAgdGltZW91dCxcbiAgICAgIGVwaGVtZXJhbFN0b3JhZ2VTaXplLFxuICAgICAgZnVuY3Rpb25Vcmw6IHsgYXV0aFR5cGU6IEZ1bmN0aW9uVXJsQXV0aFR5cGUuTk9ORSB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQlVDS0VUX05BTUU6IHRoaXMuX2Fzc2V0c0J1Y2tldC5nZXRCdWNrZXROYW1lKCksXG4gICAgICAgIEJVQ0tFVF9LRVlfUFJFRklYOiBcIl9hc3NldHNcIlxuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBpbWFnZSA9IHRoaXMuYXBwLmFkZENvbXB1dGUoXG4gICAgICBDb21wdXRlRmFjdG9yeS5idWlsZChgJHt0aGlzLnByb3BzLm5hbWV9LWltYWdlYCwgaW1hZ2VQcm9wcylcbiAgICApO1xuXG4gICAgY29uc3QgaW1hZ2VGdW5jdGlvbiA9IHJlcXVpcmVGdW5jdGlvbihpbWFnZSwgXCJJbWFnZU9wdGltaXNhdGlvblwiKTtcbiAgICB0aGlzLl9hc3NldHNCdWNrZXQuZ3JhbnRSZWFkKGltYWdlRnVuY3Rpb24pO1xuXG4gICAgcmV0dXJuIGltYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVSZXZhbGlkYXRpb25MYW1iZGEoKTogTGFtYmRhQ29tcHV0ZSB7XG4gICAgY29uc3QgeyBtZW1vcnlTaXplLCB0aW1lb3V0LCBlcGhlbWVyYWxTdG9yYWdlU2l6ZSB9ID0gcmVzb2x2ZUxhbWJkYUNvbmZpZyhcbiAgICAgIHRoaXMucHJvcHMuY29tcHV0ZT8ucmV2YWxpZGF0aW9uLFxuICAgICAge1xuICAgICAgICBtZW1vcnk6IFBBWUxPQURfREVGQVVMVFMuQ09NUFVURS5SRVZBTElEQVRJT05fTUVNT1JZLFxuICAgICAgICB0aW1lb3V0OiBQQVlMT0FEX0RFRkFVTFRTLkNPTVBVVEUuUkVWQUxJREFUSU9OX1RJTUVPVVRcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcmV2YWxpZGF0aW9uUHJvcHM6IENvZGVMYW1iZGFQcm9wcyA9IHtcbiAgICAgIHR5cGU6IFwibGFtYmRhXCIsXG4gICAgICBkZXBsb3ltZW50OiBcImNvZGVcIixcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KFxuICAgICAgICBgJHtQQVlMT0FEX0RFRkFVTFRTLlNPVVJDRX0vJHtQQVlMT0FEX0RFRkFVTFRTLk9QRU5ORVhULlJFVkFMSURBVElPTn1gXG4gICAgICApLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMl9YLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgbWVtb3J5U2l6ZSxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBlcGhlbWVyYWxTdG9yYWdlU2l6ZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIENBQ0hFX0RZTkFNT19UQUJMRTogdGhpcy5fdGFnQ2FjaGUuZ2V0VGFibGVOYW1lKCksXG4gICAgICAgIENBQ0hFX0JVQ0tFVF9OQU1FOiB0aGlzLl9jYWNoZUJ1Y2tldC5nZXRCdWNrZXROYW1lKClcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmV2YWxpZGF0aW9uID0gdGhpcy5hcHAuYWRkQ29tcHV0ZShcbiAgICAgIENvbXB1dGVGYWN0b3J5LmJ1aWxkKGAke3RoaXMucHJvcHMubmFtZX0tcmV2YWxpZGF0aW9uYCwgcmV2YWxpZGF0aW9uUHJvcHMpXG4gICAgKTtcblxuICAgIGNvbnN0IHJldmFsaWRhdGlvbkxhbWJkYSA9IHJldmFsaWRhdGlvbi5nZXRMYW1iZGFGdW5jdGlvbigpO1xuICAgIHJldmFsaWRhdGlvbkxhbWJkYS5hZGRTcXNFdmVudFNvdXJjZSh0aGlzLl9yZXZhbGlkYXRpb25RdWV1ZS5nZXRRdWV1ZSgpLCB7XG4gICAgICBiYXRjaFNpemU6IDVcbiAgICB9KTtcblxuICAgIGNvbnN0IHJldmFsaWRhdGlvbkZ1bmN0aW9uID0gcmVxdWlyZUZ1bmN0aW9uKHJldmFsaWRhdGlvbiwgXCJSZXZhbGlkYXRpb25cIik7XG4gICAgdGhpcy5fdGFnQ2FjaGUuZ3JhbnRSZWFkV3JpdGVEYXRhKHJldmFsaWRhdGlvbkZ1bmN0aW9uKTtcbiAgICB0aGlzLl9jYWNoZUJ1Y2tldC5ncmFudFJlYWRXcml0ZShyZXZhbGlkYXRpb25GdW5jdGlvbik7XG4gICAgdGhpcy5fcmV2YWxpZGF0aW9uUXVldWUuZ3JhbnRDb25zdW1lTWVzc2FnZXMocmV2YWxpZGF0aW9uRnVuY3Rpb24pO1xuXG4gICAgcmV0dXJuIHJldmFsaWRhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2RuKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZG9tYWluTmFtZXMsIGNlcnRpZmljYXRlIH0gPSB0aGlzLnJlc29sdmVEb21haW5Db25maWcoKTtcblxuICAgIGNvbnN0IGNkblByb3BzOiBTbWFydENkblByb3BzID0ge1xuICAgICAgb3JpZ2luVHlwZTogXCJhdXRvXCIsXG4gICAgICBvcmlnaW46IHRoaXMuX3NlcnZlcixcbiAgICAgIGNhY2hlUG9saWN5OiBcIkNBQ0hJTkdfRElTQUJMRURcIixcbiAgICAgIGRlZmF1bHRBbGxvd2VkTWV0aG9kczogXCJBTExcIixcbiAgICAgIGZvcndhcmRIb3N0SGVhZGVyOiB0cnVlLFxuICAgICAgcHJpY2VDbGFzczogXCJQcmljZUNsYXNzXzEwMFwiLFxuICAgICAgZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIGJlaGF2aW91cnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdGhQYXR0ZXJuOiBQQVlMT0FEX0RFRkFVTFRTLlBBVEhTLlNUQVRJQyxcbiAgICAgICAgICBvcmlnaW46IHRoaXMuX2Fzc2V0c0J1Y2tldCxcbiAgICAgICAgICBjYWNoZVBvbGljeTogXCJDQUNISU5HX09QVElNSVpFRFwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoUGF0dGVybjogUEFZTE9BRF9ERUZBVUxUUy5QQVRIUy5JTUFHRSxcbiAgICAgICAgICBvcmlnaW46IHRoaXMuX2ltYWdlT3B0aW1pc2F0aW9uLFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBcIkNBQ0hJTkdfT1BUSU1JWkVEXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhdGhQYXR0ZXJuOiBQQVlMT0FEX0RFRkFVTFRTLlBBVEhTLkFQSSxcbiAgICAgICAgICBvcmlnaW46IHRoaXMuX3NlcnZlcixcbiAgICAgICAgICBjYWNoZVBvbGljeTogXCJDQUNISU5HX0RJU0FCTEVEXCIsXG4gICAgICAgICAgYWxsb3dlZE1ldGhvZHM6IFwiQUxMXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhdGhQYXR0ZXJuOiBQQVlMT0FEX0RFRkFVTFRTLlBBVEhTLkFETUlOLFxuICAgICAgICAgIG9yaWdpbjogdGhpcy5fc2VydmVyLFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBcIkNBQ0hJTkdfRElTQUJMRURcIixcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogXCJBTExcIlxuICAgICAgICB9LFxuICAgICAgICAuLi4odGhpcy5wcm9wcy5jZG4/LmJlaGF2aW91cnMgPz8gW10pXG4gICAgICBdXG4gICAgfTtcblxuICAgIHRoaXMuX2NkbiA9IHRoaXMuYXBwLmFkZENkbihDZG5GYWN0b3J5LmJ1aWxkKHRoaXMucHJvcHMubmFtZSwgY2RuUHJvcHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZURvbWFpbkNvbmZpZygpOiB7XG4gICAgZG9tYWluTmFtZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNlcnRpZmljYXRlOiBJQ2VydGlmaWNhdGUgfCB1bmRlZmluZWQ7XG4gICAgaG9zdGVkWm9uZTogUmV0dXJuVHlwZTx0eXBlb2YgSG9zdGVkWm9uZS5mcm9tTG9va3VwPiB8IHVuZGVmaW5lZDtcbiAgfSB7XG4gICAgaWYgKHRoaXMuX3Jlc29sdmVkRG9tYWluKSByZXR1cm4gdGhpcy5fcmVzb2x2ZWREb21haW47XG5cbiAgICBpZiAodGhpcy5wcm9wcy5kb21haW4pIHtcbiAgICAgIHRoaXMuX3Jlc29sdmVkRG9tYWluID0gdGhpcy5yZXNvbHZlU2ltcGxlRG9tYWluKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmNkbj8uZG9tYWluTmFtZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5fcmVzb2x2ZWREb21haW4gPSB0aGlzLnJlc29sdmVBZHZhbmNlZERvbWFpbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZXNvbHZlZERvbWFpbiA9IHtcbiAgICAgICAgZG9tYWluTmFtZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgY2VydGlmaWNhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgaG9zdGVkWm9uZTogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlZERvbWFpbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNpbXBsZURvbWFpbigpOiB7XG4gICAgZG9tYWluTmFtZXM6IHN0cmluZ1tdO1xuICAgIGNlcnRpZmljYXRlOiBJQ2VydGlmaWNhdGU7XG4gICAgaG9zdGVkWm9uZTogUmV0dXJuVHlwZTx0eXBlb2YgSG9zdGVkWm9uZS5mcm9tTG9va3VwPjtcbiAgfSB7XG4gICAgY29uc3QgZG9tYWluID0gdGhpcy5wcm9wcy5kb21haW4hO1xuICAgIGNvbnN0IHJvb3REb21haW4gPSBleHRyYWN0Um9vdERvbWFpbihkb21haW4pO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUxvb2t1cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHt0aGlzLnBhc2NhbE5hbWV9SG9zdGVkWm9uZWAsXG4gICAgICB7IGRvbWFpbk5hbWU6IHJvb3REb21haW4gfVxuICAgICk7XG5cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9Q2VydGlmaWNhdGVgLCB7XG4gICAgICBkb21haW5OYW1lOiBkb21haW4sXG4gICAgICB2YWxpZGF0aW9uOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhob3N0ZWRab25lKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgZG9tYWluTmFtZXM6IFtkb21haW5dLCBjZXJ0aWZpY2F0ZSwgaG9zdGVkWm9uZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQWR2YW5jZWREb21haW4oKToge1xuICAgIGRvbWFpbk5hbWVzOiBzdHJpbmdbXTtcbiAgICBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlIHwgdW5kZWZpbmVkO1xuICAgIGhvc3RlZFpvbmU6IHVuZGVmaW5lZDtcbiAgfSB7XG4gICAgY29uc3QgY2RuQ29uZmlnID0gdGhpcy5wcm9wcy5jZG4hO1xuICAgIGNvbnN0IGNlcnRpZmljYXRlID1cbiAgICAgIGNkbkNvbmZpZy5jZXJ0aWZpY2F0ZSA/P1xuICAgICAgKGNkbkNvbmZpZy5jZXJ0aWZpY2F0ZUFyblxuICAgICAgICA/IENlcnRpZmljYXRlLmZyb21DZXJ0aWZpY2F0ZUFybihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBgJHt0aGlzLnBhc2NhbE5hbWV9Q2VydGlmaWNhdGVgLFxuICAgICAgICAgICAgY2RuQ29uZmlnLmNlcnRpZmljYXRlQXJuXG4gICAgICAgICAgKVxuICAgICAgICA6IHVuZGVmaW5lZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG9tYWluTmFtZXM6IGNkbkNvbmZpZy5kb21haW5OYW1lcyEsXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIGhvc3RlZFpvbmU6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURuc1JlY29yZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuZG9tYWluKSByZXR1cm47XG5cbiAgICBjb25zdCB7IGhvc3RlZFpvbmUgfSA9IHRoaXMucmVzb2x2ZURvbWFpbkNvbmZpZygpO1xuICAgIGlmICghaG9zdGVkWm9uZSkgcmV0dXJuO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBETlMgcmVjb3JkIGluIHRoZSBDRE4gc3RhY2sgKG5vdCB0aGUgQ29tcHV0ZSBzdGFjayB3aGVyZSB0aGlzXG4gICAgLy8gUGF5bG9hZCBjb25zdHJ1Y3QgbGl2ZXMpIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3k6IENETiByZWZlcmVuY2VzIHRoZVxuICAgIC8vIHNlcnZlciBMYW1iZGEgRnVuY3Rpb25VcmwsIHNvIENvbXB1dGUgY2Fubm90IGFsc28gZGVwZW5kIG9uIENETi5cbiAgICBjb25zdCBjZG5TdGFjayA9IHRoaXMuYXBwLmdldERlZmF1bHRDZG5TdGFjaygpLmdldFN0YWNrKCk7XG4gICAgbmV3IEFSZWNvcmQoY2RuU3RhY2ssIGAke3RoaXMucGFzY2FsTmFtZX1BbGlhc1JlY29yZGAsIHtcbiAgICAgIHpvbmU6IGhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiB0aGlzLnByb3BzLmRvbWFpbixcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IENsb3VkRnJvbnRUYXJnZXQodGhpcy5fY2RuLmdldERpc3RyaWJ1dGlvbigpKVxuICAgICAgKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBvcnRQYXR0ZXJuT3V0cHV0cygpOiB2b2lkIHtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3RoaXMucGFzY2FsTmFtZX1QYXR0ZXJuVHlwZWAsIHtcbiAgICAgIGtleTogYCR7dGhpcy5wYXNjYWxOYW1lfVBhdHRlcm5UeXBlYCxcbiAgICAgIHZhbHVlOiBcInBheWxvYWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBgUGF0dGVybiB0eXBlIGZvciAke3RoaXMucHJvcHMubmFtZX1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3RoaXMucGFzY2FsTmFtZX1QYXR0ZXJuTmFtZWAsIHtcbiAgICAgIGtleTogYCR7dGhpcy5wYXNjYWxOYW1lfVBhdHRlcm5OYW1lYCxcbiAgICAgIHZhbHVlOiB0aGlzLnByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYFBhdHRlcm4gbmFtZSBmb3IgJHt0aGlzLnByb3BzLm5hbWV9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9UGF0dGVybkxhbWJkYXNgLCB7XG4gICAgICBrZXk6IGAke3RoaXMucGFzY2FsTmFtZX1QYXR0ZXJuTGFtYmRhc2AsXG4gICAgICB2YWx1ZTogW1xuICAgICAgICBgJHt0aGlzLnByb3BzLm5hbWV9LXNlcnZlcmAsXG4gICAgICAgIGAke3RoaXMucHJvcHMubmFtZX0taW1hZ2VgLFxuICAgICAgICBgJHt0aGlzLnByb3BzLm5hbWV9LXJldmFsaWRhdGlvbmBcbiAgICAgIF0uam9pbihcIixcIiksXG4gICAgICBkZXNjcmlwdGlvbjogYExhbWJkYSBjb25zdHJ1Y3QgcHJlZml4ZXMgZm9yIHBhdHRlcm4gJHt0aGlzLnByb3BzLm5hbWV9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9UGF0dGVyblJlc291cmNlc2AsIHtcbiAgICAgIGtleTogYCR7dGhpcy5wYXNjYWxOYW1lfVBhdHRlcm5SZXNvdXJjZXNgLFxuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZGF0YWJhc2VzOiBbdGhpcy5wcm9wcy5uYW1lLCBgJHt0aGlzLnByb3BzLm5hbWV9LXRhZy1jYWNoZWBdLFxuICAgICAgICBzdG9yYWdlOiBbXG4gICAgICAgICAgYCR7dGhpcy5wcm9wcy5uYW1lfS1hc3NldHNgLFxuICAgICAgICAgIGAke3RoaXMucHJvcHMubmFtZX0tY2FjaGVgLFxuICAgICAgICAgIGAke3RoaXMucHJvcHMubmFtZX0tbWVkaWFgXG4gICAgICAgIF0sXG4gICAgICAgIGNkbjogdGhpcy5wcm9wcy5uYW1lXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUmVsYXRlZCByZXNvdXJjZSBuYW1lcyBmb3IgcGF0dGVybiAke3RoaXMucHJvcHMubmFtZX1gXG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRhYmFzZSgpOiBSZWxhdGlvbmFsRGF0YWJhc2Uge1xuICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZTtcbiAgfVxuXG4gIGdldFNlcnZlcigpOiBMYW1iZGFDb21wdXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VydmVyO1xuICB9XG5cbiAgZ2V0SW1hZ2VPcHRpbWlzYXRpb24oKTogTGFtYmRhQ29tcHV0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlT3B0aW1pc2F0aW9uO1xuICB9XG5cbiAgZ2V0UmV2YWxpZGF0aW9uKCk6IExhbWJkYUNvbXB1dGUge1xuICAgIHJldHVybiB0aGlzLl9yZXZhbGlkYXRpb247XG4gIH1cblxuICBnZXRBc3NldHNCdWNrZXQoKTogU3RvcmFnZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fzc2V0c0J1Y2tldDtcbiAgfVxuXG4gIGdldENhY2hlQnVja2V0KCk6IFN0b3JhZ2Uge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZUJ1Y2tldDtcbiAgfVxuXG4gIGdldE1lZGlhQnVja2V0KCk6IFN0b3JhZ2Uge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYUJ1Y2tldDtcbiAgfVxuXG4gIGdldFRhZ0NhY2hlKCk6IER5bmFtb0RCRGF0YWJhc2Uge1xuICAgIHJldHVybiB0aGlzLl90YWdDYWNoZTtcbiAgfVxuXG4gIGdldFJldmFsaWRhdGlvblF1ZXVlKCk6IFF1ZXVlTWVzc2FnaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmV2YWxpZGF0aW9uUXVldWU7XG4gIH1cblxuICBnZXRDZG4oKTogQ2RuIHtcbiAgICByZXR1cm4gdGhpcy5fY2RuO1xuICB9XG59XG4iXX0=
|
|
594
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvcGF5bG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7OztBQUVILDJDQUF1QztBQUN2Qyw2Q0FBbUQ7QUFDbkQseURBQXFEO0FBQ3JELHVEQU1nQztBQUNoQywrRUFJNEM7QUFDNUMseURBQTRFO0FBQzVFLHlFQUFtRTtBQUtuRSwrQ0FPdUI7QUFDdkIsNkNBS3NCO0FBQ3RCLDZDQUEwRTtBQUMxRSxpREFJd0I7QUFDeEIscUNBQW9FO0FBQ3BFLHlFQUE4RDtBQUM5RCx5RUFHeUM7QUFFekMsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixxRkFBcUY7SUFDckYsTUFBTSxFQUFFLE9BQU87SUFDZixtRkFBbUY7SUFDbkYsZUFBZSxFQUFFLFdBQVc7SUFDNUIsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLFVBQW1CO1FBQ3pCLDhFQUE4RTtRQUM5RSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLG1CQUFtQixFQUFFLElBQUk7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDUCw2RkFBNkY7UUFDN0YsYUFBYSxFQUFFLElBQUk7UUFDbkIsK0RBQStEO1FBQy9ELGNBQWMsRUFBRSxFQUFFO1FBQ2xCLDJFQUEyRTtRQUMzRSxZQUFZLEVBQUUsSUFBSTtRQUNsQix3RUFBd0U7UUFDeEUsYUFBYSxFQUFFLEVBQUU7UUFDakIsNEZBQTRGO1FBQzVGLG1CQUFtQixFQUFFLEdBQUc7UUFDeEIsK0VBQStFO1FBQy9FLG9CQUFvQixFQUFFLEdBQUc7S0FDMUI7SUFDRCxLQUFLLEVBQUU7UUFDTCxnR0FBZ0c7UUFDaEcsZUFBZSxFQUFFLFFBQVE7S0FDMUI7SUFDRCxRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUsbUJBQW1CO1FBQzNCLEtBQUssRUFBRSxrQkFBa0I7UUFDekIsTUFBTSxFQUFFLHFDQUFxQztR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LE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBaG9CRCwwQkFnb0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYXlsb2FkIENNUyBQYXR0ZXJuLlxuICpcbiAqIEEgaGlnaC1sZXZlbCBwYXR0ZXJuIHRoYXQgY3JlYXRlcyBhbGwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQgZm9yIGFcbiAqIFBheWxvYWQgQ01TIGRlcGxveW1lbnQgdXNpbmcgT3Blbk5leHQuXG4gKlxuICogUmVzb3VyY2VzIGNyZWF0ZWQ6XG4gKiAtIFJEUyBQb3N0Z3JlU1FMIGRhdGFiYXNlIChBdXJvcmEgb3IgSW5zdGFuY2UpXG4gKiAtIDMgUzMgYnVja2V0cyAoYXNzZXRzLCBjYWNoZSwgbWVkaWEpXG4gKiAtIER5bmFtb0RCIHRhYmxlICh0YWcgY2FjaGUgd2l0aCBHU0kpXG4gKiAtIFNRUyBGSUZPIHF1ZXVlIChyZXZhbGlkYXRpb24pXG4gKiAtIDMgTGFtYmRhIGZ1bmN0aW9ucyAoc2VydmVyLCBpbWFnZSBvcHRpbWlzYXRpb24sIHJldmFsaWRhdGlvbilcbiAqIC0gQ2xvdWRGcm9udCBkaXN0cmlidXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGF5bG9hZCA9IGFwcC5hZGRQYXR0ZXJuKFBhdHRlcm5GYWN0b3J5LmJ1aWxkKFwiUGF5bG9hZEFwcFwiLCB7XG4gKiAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICogICBuYW1lOiBcIm15LWNtc1wiXG4gKiB9KSk7XG4gKlxuICogLy8gRXNjYXBlIGhhdGNoZXNcbiAqIHBheWxvYWQuZ2V0RGF0YWJhc2UoKS5ncmFudENvbm5lY3Qob3RoZXJMYW1iZGEpO1xuICovXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIEZuLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuaW1wb3J0IHtcbiAgQ29kZSxcbiAgUnVudGltZSxcbiAgQXJjaGl0ZWN0dXJlLFxuICBGdW5jdGlvblVybEF1dGhUeXBlLFxuICB0eXBlIElGdW5jdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGUsXG4gIENlcnRpZmljYXRlVmFsaWRhdGlvbixcbiAgdHlwZSBJQ2VydGlmaWNhdGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IEhvc3RlZFpvbmUsIEFSZWNvcmQsIFJlY29yZFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwLmpzXCI7XG5pbXBvcnQgeyB0eXBlIElQYXlsb2FkUHJvcHMsIHR5cGUgSVBheWxvYWQgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL3BhdHRlcm4uanNcIjtcbmltcG9ydCB7IHR5cGUgTWFuaWZlc3RQYXR0ZXJuIH0gZnJvbSBcIi4uLy4uL3V0aWxzL21hbmlmZXN0V3JpdGVyLmpzXCI7XG5pbXBvcnQge1xuICB0eXBlIFJlbGF0aW9uYWxEYXRhYmFzZSxcbiAgdHlwZSBEeW5hbW9EQkRhdGFiYXNlLFxuICBEYXRhYmFzZUZhY3RvcnksXG4gIHR5cGUgQXVyb3JhRGF0YWJhc2VQcm9wcyxcbiAgdHlwZSBJbnN0YW5jZURhdGFiYXNlUHJvcHMsXG4gIHR5cGUgRHluYW1vREJEYXRhYmFzZVByb3BzXG59IGZyb20gXCIuL2RhdGFiYXNlLmpzXCI7XG5pbXBvcnQge1xuICBDb21wdXRlRmFjdG9yeSxcbiAgdHlwZSBMYW1iZGFDb21wdXRlLFxuICBJbnZva2VNb2RlLFxuICB0eXBlIENvZGVMYW1iZGFQcm9wc1xufSBmcm9tIFwiLi9jb21wdXRlLmpzXCI7XG5pbXBvcnQgeyBTdG9yYWdlRmFjdG9yeSwgdHlwZSBTdG9yYWdlLCB0eXBlIFMzUHJvcHMgfSBmcm9tIFwiLi9zdG9yYWdlLmpzXCI7XG5pbXBvcnQge1xuICBNZXNzYWdpbmdGYWN0b3J5LFxuICB0eXBlIFF1ZXVlTWVzc2FnaW5nLFxuICB0eXBlIElRdWV1ZVByb3BzXG59IGZyb20gXCIuL21lc3NhZ2luZy5qc1wiO1xuaW1wb3J0IHsgQ2RuRmFjdG9yeSwgdHlwZSBDZG4sIHR5cGUgU21hcnRDZG5Qcm9wcyB9IGZyb20gXCIuL2Nkbi5qc1wiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdmFsaWRhdGlvbkxvZ2dlci5qc1wiO1xuaW1wb3J0IHtcbiAgdG9QYXNjYWxDYXNlLFxuICB0b1ZhbGlkRGF0YWJhc2VOYW1lXG59IGZyb20gXCIuLi8uLi91dGlscy9jYXBpdGFsaXNlU3RyaW5nLmpzXCI7XG5cbmNvbnN0IFBBWUxPQURfREVGQVVMVFMgPSB7XG4gIC8qKiBQYXRoIHRvIE9wZW5OZXh0IG91dHB1dCByZWxhdGl2ZSB0byBhcHAgZm9sZGVyIChDREsgcnVucyBmcm9tIGZqYWxsLzxhcHBuYW1lPikgKi9cbiAgU09VUkNFOiBcIi4uLy4uXCIsXG4gIC8qKiBDbG91ZEZyb250IHJlcXVpcmVzIHVzLWVhc3QtMSBmb3IgY2VydGFpbiByZXNvdXJjZXM7IHVzZWQgYXMgcmVnaW9uIGZhbGxiYWNrICovXG4gIEZBTExCQUNLX1JFR0lPTjogXCJ1cy1lYXN0LTFcIixcbiAgREFUQUJBU0U6IHtcbiAgICBUWVBFOiBcIkluc3RhbmNlXCIgYXMgY29uc3QsXG4gICAgLyoqIEFXUyBkZWZhdWx0OyA3IGRheXMgY292ZXJzIG1vc3QgYWNjaWRlbnRhbCBkYXRhIGxvc3MgcmVjb3Zlcnkgc2NlbmFyaW9zICovXG4gICAgQkFDS1VQX1JFVEVOVElPTjogNyxcbiAgICBERUxFVElPTl9QUk9URUNUSU9OOiB0cnVlXG4gIH0sXG4gIENPTVBVVEU6IHtcbiAgICAvKiogMS41IEdCIGJhbGFuY2VzIE5leHQuanMgU1NSIHBlcmZvcm1hbmNlIHZzIGNvc3Q7IGJlbG93IHRoaXMgcmlza3MgT09NIG9uIGNvbXBsZXggcGFnZXMgKi9cbiAgICBTRVJWRVJfTUVNT1JZOiAxNTM2LFxuICAgIC8qKiBBUEkgR2F0ZXdheSBkZWZhdWx0IG1heDsgc3VmZmljaWVudCBmb3IgbW9zdCBTU1IgcmVuZGVycyAqL1xuICAgIFNFUlZFUl9USU1FT1VUOiAzMCxcbiAgICAvKiogU2hhcnAgaW1hZ2UgcHJvY2Vzc2luZyBuZWVkcyBtZW1vcnkgcHJvcG9ydGlvbmFsIHRvIGltYWdlIGRpbWVuc2lvbnMgKi9cbiAgICBJTUFHRV9NRU1PUlk6IDE1MzYsXG4gICAgLyoqIEltYWdlIHByb2Nlc3NpbmcgdHlwaWNhbGx5IGNvbXBsZXRlcyBpbiA8MTBzOyAzMHMgcHJvdmlkZXMgbWFyZ2luICovXG4gICAgSU1BR0VfVElNRU9VVDogMzAsXG4gICAgLyoqIFJldmFsaWRhdGlvbiBpcyBsaWdodHdlaWdodCAoSFRUUCBjYWxsICsgY2FjaGUgd3JpdGUpOyBoYWxmIG9mIHNlcnZlciBtZW1vcnkgc3VmZmljZXMgKi9cbiAgICBSRVZBTElEQVRJT05fTUVNT1JZOiA3NjgsXG4gICAgLyoqIDUgbWludXRlcyBhbGxvd3MgYmF0Y2ggcmV2YWxpZGF0aW9uIG9mIG1hbnkgcGFnZXMgaW4gYSBzaW5nbGUgaW52b2NhdGlvbiAqL1xuICAgIFJFVkFMSURBVElPTl9USU1FT1VUOiAzMDBcbiAgfSxcbiAgQ0FDSEU6IHtcbiAgICAvKiogMSB5ZWFyIOKAlCBzdGF0aWMgYXNzZXRzIGFyZSBjb250ZW50LWhhc2hlZCBzbyBsb25nIGNhY2hpbmcgaXMgc2FmZTsgbWF4aW1pc2VzIENETiBoaXQgcmF0ZSAqL1xuICAgIE1BWF9BR0VfU0VDT05EUzogMzE1MzYwMDBcbiAgfSxcbiAgT1BFTk5FWFQ6IHtcbiAgICBBU1NFVFM6IFwiLm9wZW4tbmV4dC9hc3NldHNcIixcbiAgICBDQUNIRTogXCIub3Blbi1uZXh0L2NhY2hlXCIsXG4gICAgU0VSVkVSOiBcIi5vcGVuLW5leHQvc2VydmVyLWZ1bmN0aW9ucy9kZWZhdWx0XCIsXG4gICAgSU1BR0U6IFwiLm9wZW4tbmV4dC9pbWFnZS1vcHRpbWl6YXRpb24tZnVuY3Rpb25cIixcbiAgICBSRVZBTElEQVRJT046IFwiLm9wZW4tbmV4dC9yZXZhbGlkYXRpb24tZnVuY3Rpb25cIlxuICB9LFxuICBQQVRIUzoge1xuICAgIFNUQVRJQzogXCIvX25leHQvc3RhdGljLypcIixcbiAgICBJTUFHRTogXCIvX25leHQvaW1hZ2UqXCIsXG4gICAgQVBJOiBcIi9hcGkvKlwiLFxuICAgIEFETUlOOiBcIi9hZG1pbi8qXCJcbiAgfVxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBFeHRyYWN0IHJvb3QgZG9tYWluIGZyb20gYSBmdWxsIGRvbWFpbiBuYW1lLlxuICogZS5nLiwgXCJjbXMuZXhhbXBsZS5jb21cIiAtPiBcImV4YW1wbGUuY29tXCJcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdFJvb3REb21haW4oZG9tYWluOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IGRvbWFpbi5zcGxpdChcIi5cIik7XG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPiAyID8gcGFydHMuc2xpY2UoLTIpLmpvaW4oXCIuXCIpIDogZG9tYWluO1xufVxuXG4vKipcbiAqIFNhZmVseSBnZXQgdGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uIGZyb20gYSBjb21wdXRlIHJlc291cmNlLlxuICogVGhyb3dzIGEgY2xlYXIgZXJyb3IgaWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuXG4gKi9cbmZ1bmN0aW9uIHJlcXVpcmVGdW5jdGlvbihjb21wdXRlOiBMYW1iZGFDb21wdXRlLCBuYW1lOiBzdHJpbmcpOiBJRnVuY3Rpb24ge1xuICBjb25zdCBmbiA9IGNvbXB1dGUuZ2V0RnVuY3Rpb24oKTtcbiAgaWYgKCFmbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke25hbWV9IExhbWJkYSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLiBgICtcbiAgICAgICAgXCJUaGlzIGluZGljYXRlcyBhbiBpbnRlcm5hbCBlcnJvciBpbiBjb21wdXRlIHJlc291cmNlIGNyZWF0aW9uLlwiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZm47XG59XG5cbi8qKlxuICogQmFzZSBkYXRhYmFzZSBwcm9wZXJ0aWVzIHNoYXJlZCBiZXR3ZWVuIEF1cm9yYSBhbmQgSW5zdGFuY2UuXG4gKiBVc2VzIFBpY2sgdG8gZXh0cmFjdCBjb21tb24gcHJvcGVydGllcyBmcm9tIHRoZSBkYXRhYmFzZSBjb25maWcuXG4gKi9cbnR5cGUgQmFzZURhdGFiYXNlUHJvcHMgPSBQaWNrPFxuICBJbnN0YW5jZURhdGFiYXNlUHJvcHMsXG4gIHwgXCJkYXRhYmFzZU5hbWVcIlxuICB8IFwiZGF0YWJhc2VFbmdpbmVcIlxuICB8IFwiYmFja3VwUmV0ZW50aW9uXCJcbiAgfCBcImRlbGV0aW9uUHJvdGVjdGlvblwiXG4gIHwgXCJwdWJsaWNseUFjY2Vzc2libGVcIlxuICB8IFwicG9ydFwiXG4gIHwgXCJkYXRhYmFzZUluc2lnaHRzXCJcbiAgfCBcInByb3h5XCJcbiAgfCBcImNyZWRlbnRpYWxzXCJcbiAgfCBcInNuYXBzaG90SWRlbnRpZmllclwiXG4gIHwgXCJzbmFwc2hvdFVzZXJuYW1lXCJcbj47XG5cbi8qKlxuICogTGFtYmRhIGNvbmZpZ3VyYXRpb24gd2l0aCByZXNvbHZlZCBkZWZhdWx0cy5cbiAqL1xuaW50ZXJmYWNlIFJlc29sdmVkTGFtYmRhQ29uZmlnIHtcbiAgbWVtb3J5U2l6ZTogbnVtYmVyO1xuICB0aW1lb3V0OiBudW1iZXI7XG4gIGVwaGVtZXJhbFN0b3JhZ2VTaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgTGFtYmRhIGNvbmZpZyBmcm9tIHByb3BzIHdpdGggZGVmYXVsdHMuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVMYW1iZGFDb25maWcoXG4gIGNvbmZpZzpcbiAgICB8IHsgbWVtb3J5U2l6ZT86IG51bWJlcjsgdGltZW91dD86IG51bWJlcjsgZXBoZW1lcmFsU3RvcmFnZVNpemU/OiBudW1iZXIgfVxuICAgIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0czogeyBtZW1vcnk6IG51bWJlcjsgdGltZW91dDogbnVtYmVyIH1cbik6IFJlc29sdmVkTGFtYmRhQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBtZW1vcnlTaXplOiBjb25maWc/Lm1lbW9yeVNpemUgPz8gZGVmYXVsdHMubWVtb3J5LFxuICAgIHRpbWVvdXQ6IGNvbmZpZz8udGltZW91dCA/PyBkZWZhdWx0cy50aW1lb3V0LFxuICAgIGVwaGVtZXJhbFN0b3JhZ2VTaXplOiBjb25maWc/LmVwaGVtZXJhbFN0b3JhZ2VTaXplXG4gIH07XG59XG5cbi8qKlxuICogUGF5bG9hZCBDTVMgcGF0dGVybiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBDb21wb3NlcyBhbGwgcmVxdWlyZWQgQVdTIHJlc291cmNlcyBmb3IgYSBQYXlsb2FkIGRlcGxveW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXlsb2FkIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVBheWxvYWQge1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0dGVyblR5cGUgPSBcInBheWxvYWRcIiBhcyBjb25zdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJUGF5bG9hZFByb3BzO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhc2NhbE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGF5bG9hZFNlY3JldDogU2VjcmV0O1xuXG4gIHByaXZhdGUgX2RhdGFiYXNlITogUmVsYXRpb25hbERhdGFiYXNlO1xuICBwcml2YXRlIF9zZXJ2ZXIhOiBMYW1iZGFDb21wdXRlO1xuICBwcml2YXRlIF9pbWFnZU9wdGltaXNhdGlvbiE6IExhbWJkYUNvbXB1dGU7XG4gIHByaXZhdGUgX3JldmFsaWRhdGlvbiE6IExhbWJkYUNvbXB1dGU7XG4gIHByaXZhdGUgX2Fzc2V0c0J1Y2tldCE6IFN0b3JhZ2U7XG4gIHByaXZhdGUgX2NhY2hlQnVja2V0ITogU3RvcmFnZTtcbiAgcHJpdmF0ZSBfbWVkaWFCdWNrZXQhOiBTdG9yYWdlO1xuICBwcml2YXRlIF90YWdDYWNoZSE6IER5bmFtb0RCRGF0YWJhc2U7XG4gIHByaXZhdGUgX3JldmFsaWRhdGlvblF1ZXVlITogUXVldWVNZXNzYWdpbmc7XG4gIHByaXZhdGUgX2NkbiE6IENkbjtcbiAgcHJpdmF0ZSBfcmVzb2x2ZWREb21haW46XG4gICAgfCB7XG4gICAgICAgIGRvbWFpbk5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2VydGlmaWNhdGU6IElDZXJ0aWZpY2F0ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaG9zdGVkWm9uZTogUmV0dXJuVHlwZTx0eXBlb2YgSG9zdGVkWm9uZS5mcm9tTG9va3VwPiB8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhcHA6IEFwcCwgcHJvcHM6IElQYXlsb2FkUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMucGFzY2FsTmFtZSA9IHRvUGFzY2FsQ2FzZShwcm9wcy5uYW1lKTtcbiAgICB0aGlzLl9wYXlsb2FkU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9UGF5bG9hZFNlY3JldGAsIHtcbiAgICAgIHNlY3JldE5hbWU6IGAke3Byb3BzLm5hbWV9L3BheWxvYWQtc2VjcmV0YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUGF5bG9hZCBDTVMgc2VjcmV0IGZvciAke3Byb3BzLm5hbWV9YCxcbiAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgIGV4Y2x1ZGVQdW5jdHVhdGlvbjogdHJ1ZSxcbiAgICAgICAgcGFzc3dvcmRMZW5ndGg6IDY0XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyTWFuaWZlc3QoKTtcbiAgICB0aGlzLnZhbGlkYXRlUHJvcHMoKTtcblxuICAgIHRoaXMuY3JlYXRlRGF0YWJhc2UoKTtcbiAgICB0aGlzLmNyZWF0ZVN0b3JhZ2VCdWNrZXRzKCk7XG4gICAgdGhpcy5jcmVhdGVUYWdDYWNoZSgpO1xuICAgIHRoaXMuY3JlYXRlUmV2YWxpZGF0aW9uUXVldWUoKTtcbiAgICB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9ucygpO1xuICAgIHRoaXMuY3JlYXRlQ2RuKCk7XG4gICAgdGhpcy5jcmVhdGVEbnNSZWNvcmQoKTtcbiAgICB0aGlzLmV4cG9ydFBhdHRlcm5PdXRwdXRzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyTWFuaWZlc3QoKTogdm9pZCB7XG4gICAgY29uc3QgbWFuaWZlc3RQYXR0ZXJuOiBNYW5pZmVzdFBhdHRlcm4gPSB7XG4gICAgICB0eXBlOiBcInBheWxvYWRcIixcbiAgICAgIG5hbWU6IHRoaXMucHJvcHMubmFtZSxcbiAgICAgIHNvdXJjZTogUEFZTE9BRF9ERUZBVUxUUy5TT1VSQ0VcbiAgICB9O1xuICAgIHRoaXMuYXBwLmdldE1hbmlmZXN0Q29sbGVjdG9yKCkuc2V0UGF0dGVybihtYW5pZmVzdFBhdHRlcm4pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRiQ29uZmlnID0gdGhpcy5wcm9wcy5kYXRhYmFzZSA/PyB7fTtcbiAgICBpZiAoZGJDb25maWcucHVibGljbHlBY2Nlc3NpYmxlKSB7XG4gICAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgICBgUGF5bG9hZCBkYXRhYmFzZSAnJHt0aGlzLnByb3BzLm5hbWV9JyBpcyBjb25maWd1cmVkIHdpdGggcHVibGljIGFjY2Vzc2liaWxpdHkuIGAgK1xuICAgICAgICAgIFwiVGhpcyBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGRldmVsb3BtZW50LlwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGF0YWJhc2UoKTogdm9pZCB7XG4gICAgY29uc3QgZGJDb25maWcgPSB0aGlzLnByb3BzLmRhdGFiYXNlID8/IHt9O1xuICAgIGNvbnN0IGRhdGFiYXNlVHlwZSA9IGRiQ29uZmlnLnR5cGUgPz8gUEFZTE9BRF9ERUZBVUxUUy5EQVRBQkFTRS5UWVBFO1xuXG4gICAgdGhpcy5fZGF0YWJhc2UgPVxuICAgICAgZGF0YWJhc2VUeXBlID09PSBcIkF1cm9yYVwiXG4gICAgICAgID8gdGhpcy5jcmVhdGVBdXJvcmFEYXRhYmFzZShkYkNvbmZpZylcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUluc3RhbmNlRGF0YWJhc2UoZGJDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEJhc2VEYXRhYmFzZVByb3BzKFxuICAgIGRiQ29uZmlnOiBOb25OdWxsYWJsZTxJUGF5bG9hZFByb3BzW1wiZGF0YWJhc2VcIl0+XG4gICk6IEJhc2VEYXRhYmFzZVByb3BzIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YWJhc2VOYW1lOlxuICAgICAgICBkYkNvbmZpZy5kYXRhYmFzZU5hbWUgPz8gdG9WYWxpZERhdGFiYXNlTmFtZSh0aGlzLnByb3BzLm5hbWUpLFxuICAgICAgZGF0YWJhc2VFbmdpbmU6IGRiQ29uZmlnLmRhdGFiYXNlRW5naW5lID8/IFwicG9zdGdyZXNxbFwiLFxuICAgICAgYmFja3VwUmV0ZW50aW9uOlxuICAgICAgICBkYkNvbmZpZy5iYWNrdXBSZXRlbnRpb24gPz8gUEFZTE9BRF9ERUZBVUxUUy5EQVRBQkFTRS5CQUNLVVBfUkVURU5USU9OLFxuICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOlxuICAgICAgICBkYkNvbmZpZy5kZWxldGlvblByb3RlY3Rpb24gPz9cbiAgICAgICAgUEFZTE9BRF9ERUZBVUxUUy5EQVRBQkFTRS5ERUxFVElPTl9QUk9URUNUSU9OLFxuICAgICAgcHVibGljbHlBY2Nlc3NpYmxlOiBkYkNvbmZpZy5wdWJsaWNseUFjY2Vzc2libGUsXG4gICAgICBwb3J0OiBkYkNvbmZpZy5wb3J0LFxuICAgICAgZGF0YWJhc2VJbnNpZ2h0czogZGJDb25maWcuZGF0YWJhc2VJbnNpZ2h0cyxcbiAgICAgIHByb3h5OiBkYkNvbmZpZy5wcm94eSxcbiAgICAgIGNyZWRlbnRpYWxzOiBkYkNvbmZpZy5jcmVkZW50aWFscyxcbiAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogZGJDb25maWcuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgc25hcHNob3RVc2VybmFtZTogZGJDb25maWcuc25hcHNob3RVc2VybmFtZVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUF1cm9yYURhdGFiYXNlKFxuICAgIGRiQ29uZmlnOiBOb25OdWxsYWJsZTxJUGF5bG9hZFByb3BzW1wiZGF0YWJhc2VcIl0+XG4gICk6IFJlbGF0aW9uYWxEYXRhYmFzZSB7XG4gICAgY29uc3QgYXVyb3JhUHJvcHM6IEF1cm9yYURhdGFiYXNlUHJvcHMgPSB7XG4gICAgICB0eXBlOiBcIkF1cm9yYVwiLFxuICAgICAgLi4udGhpcy5idWlsZEJhc2VEYXRhYmFzZVByb3BzKGRiQ29uZmlnKSxcbiAgICAgIGFsbG93ZWRJcENpZHI6IGRiQ29uZmlnLmFsbG93ZWRJcENpZHIsXG4gICAgICBlbmNyeXB0aW9uOiBkYkNvbmZpZy5lbmNyeXB0aW9uLFxuICAgICAgd3JpdGVyOiBkYkNvbmZpZy53cml0ZXIsXG4gICAgICByZWFkZXJzOiBkYkNvbmZpZy5yZWFkZXJzLFxuICAgICAgYWxsb3dWcGNBY2Nlc3M6IGRiQ29uZmlnLmFsbG93VnBjQWNjZXNzLFxuICAgICAgbW9uaXRvcmluZ0ludGVydmFsOiBkYkNvbmZpZy5tb25pdG9yaW5nSW50ZXJ2YWwsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogZGJDb25maWcucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3dcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwcC5hZGREYXRhYmFzZShcbiAgICAgIERhdGFiYXNlRmFjdG9yeS5idWlsZCh0aGlzLnByb3BzLm5hbWUsIGF1cm9yYVByb3BzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUluc3RhbmNlRGF0YWJhc2UoXG4gICAgZGJDb25maWc6IE5vbk51bGxhYmxlPElQYXlsb2FkUHJvcHNbXCJkYXRhYmFzZVwiXT5cbiAgKTogUmVsYXRpb25hbERhdGFiYXNlIHtcbiAgICBjb25zdCBpbnN0YW5jZVByb3BzOiBJbnN0YW5jZURhdGFiYXNlUHJvcHMgPSB7XG4gICAgICB0eXBlOiBcIkluc3RhbmNlXCIsXG4gICAgICAuLi50aGlzLmJ1aWxkQmFzZURhdGFiYXNlUHJvcHMoZGJDb25maWcpLFxuICAgICAgcHVibGljbHlBY2Nlc3NpYmxlOiBkYkNvbmZpZy5wdWJsaWNseUFjY2Vzc2libGUgPz8gZmFsc2UsXG4gICAgICBpbnN0YW5jZVR5cGU6IGRiQ29uZmlnLmluc3RhbmNlVHlwZSxcbiAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IGRiQ29uZmlnLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICBtdWx0aUF6OiBkYkNvbmZpZy5tdWx0aUF6LFxuICAgICAgcmVhZFJlcGxpY2E6IGRiQ29uZmlnLnJlYWRSZXBsaWNhLFxuICAgICAgZW5jcnlwdGlvbjogZGJDb25maWcuZW5jcnlwdGlvblxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYXBwLmFkZERhdGFiYXNlKFxuICAgICAgRGF0YWJhc2VGYWN0b3J5LmJ1aWxkKHRoaXMucHJvcHMubmFtZSwgaW5zdGFuY2VQcm9wcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdG9yYWdlQnVja2V0cygpOiB2b2lkIHtcbiAgICB0aGlzLl9hc3NldHNCdWNrZXQgPSB0aGlzLmNyZWF0ZUFzc2V0c0J1Y2tldCgpO1xuICAgIHRoaXMuX2NhY2hlQnVja2V0ID0gdGhpcy5jcmVhdGVDYWNoZUJ1Y2tldCgpO1xuICAgIHRoaXMuX21lZGlhQnVja2V0ID0gdGhpcy5jcmVhdGVNZWRpYUJ1Y2tldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBc3NldHNCdWNrZXQoKTogU3RvcmFnZSB7XG4gICAgY29uc3QgYXNzZXRzQ29uZmlnID0gdGhpcy5wcm9wcy5zdG9yYWdlPy5hc3NldHMgPz8ge307XG4gICAgY29uc3QgYXNzZXRzUHJvcHM6IFMzUHJvcHMgPSB7XG4gICAgICB2ZXJzaW9uZWQ6IGFzc2V0c0NvbmZpZy52ZXJzaW9uZWQgPz8gZmFsc2UsXG4gICAgICBkZXBsb3ltZW50OiB7XG4gICAgICAgIHNvdXJjZTogYCR7UEFZTE9BRF9ERUZBVUxUUy5TT1VSQ0V9LyR7UEFZTE9BRF9ERUZBVUxUUy5PUEVOTkVYVC5BU1NFVFN9YCxcbiAgICAgICAgcHJ1bmU6IHRydWUsXG4gICAgICAgIGNhY2hlQ29udHJvbDoge1xuICAgICAgICAgIG1heEFnZTogUEFZTE9BRF9ERUZBVUxUUy5DQUNIRS5NQVhfQUdFX1NFQ09ORFMsXG4gICAgICAgICAgaW1tdXRhYmxlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwcC5hZGRTdG9yYWdlKFxuICAgICAgU3RvcmFnZUZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS1hc3NldHNgLCBhc3NldHNQcm9wcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUJ1Y2tldCgpOiBTdG9yYWdlIHtcbiAgICBjb25zdCBjYWNoZUNvbmZpZyA9IHRoaXMucHJvcHMuc3RvcmFnZT8uY2FjaGUgPz8ge307XG4gICAgY29uc3QgY2FjaGVQcm9wczogUzNQcm9wcyA9IHtcbiAgICAgIHZlcnNpb25lZDogY2FjaGVDb25maWcudmVyc2lvbmVkID8/IGZhbHNlLFxuICAgICAgZGVwbG95bWVudDoge1xuICAgICAgICBzb3VyY2U6IGAke1BBWUxPQURfREVGQVVMVFMuU09VUkNFfS8ke1BBWUxPQURfREVGQVVMVFMuT1BFTk5FWFQuQ0FDSEV9YCxcbiAgICAgICAgcHJ1bmU6IGZhbHNlIC8vIElTUiBhZGRzIGZpbGVzIGF0IHJ1bnRpbWVcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwcC5hZGRTdG9yYWdlKFxuICAgICAgU3RvcmFnZUZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS1jYWNoZWAsIGNhY2hlUHJvcHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWVkaWFCdWNrZXQoKTogU3RvcmFnZSB7XG4gICAgY29uc3QgbWVkaWFDb25maWcgPSB0aGlzLnByb3BzLnN0b3JhZ2U/Lm1lZGlhID8/IHt9O1xuICAgIGNvbnN0IG1lZGlhUHJvcHM6IFMzUHJvcHMgPSB7XG4gICAgICB2ZXJzaW9uZWQ6IG1lZGlhQ29uZmlnLnZlcnNpb25lZCA/PyBmYWxzZVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYXBwLmFkZFN0b3JhZ2UoXG4gICAgICBTdG9yYWdlRmFjdG9yeS5idWlsZChgJHt0aGlzLnByb3BzLm5hbWV9LW1lZGlhYCwgbWVkaWFQcm9wcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUYWdDYWNoZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0YWdDYWNoZVByb3BzOiBEeW5hbW9EQkRhdGFiYXNlUHJvcHMgPSB7XG4gICAgICB0eXBlOiBcIkR5bmFtb0RCXCIsXG4gICAgICBwYXJ0aXRpb25LZXk6IHsgbmFtZTogXCJ0YWdcIiwgdHlwZTogXCJTXCIgfSxcbiAgICAgIHNvcnRLZXk6IHsgbmFtZTogXCJwYXRoXCIsIHR5cGU6IFwiU1wiIH0sXG4gICAgICBnbG9iYWxTZWNvbmRhcnlJbmRleGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRleE5hbWU6IFwicmV2YWxpZGF0ZVwiLFxuICAgICAgICAgIHBhcnRpdGlvbktleTogeyBuYW1lOiBcInBhdGhcIiwgdHlwZTogXCJTXCIgfSxcbiAgICAgICAgICBzb3J0S2V5OiB7IG5hbWU6IFwicmV2YWxpZGF0ZWRBdFwiLCB0eXBlOiBcIk5cIiB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIHRoaXMuX3RhZ0NhY2hlID0gdGhpcy5hcHAuYWRkRGF0YWJhc2UoXG4gICAgICBEYXRhYmFzZUZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS10YWctY2FjaGVgLCB0YWdDYWNoZVByb3BzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJldmFsaWRhdGlvblF1ZXVlKCk6IHZvaWQge1xuICAgIGNvbnN0IHF1ZXVlQ29uZmlnID0gdGhpcy5wcm9wcy5tZXNzYWdpbmc/LnJldmFsaWRhdGlvblF1ZXVlID8/IHt9O1xuICAgIGNvbnN0IHJldmFsaWRhdGlvblRpbWVvdXQgPVxuICAgICAgdGhpcy5wcm9wcy5jb21wdXRlPy5yZXZhbGlkYXRpb24/LnRpbWVvdXQgPz9cbiAgICAgIFBBWUxPQURfREVGQVVMVFMuQ09NUFVURS5SRVZBTElEQVRJT05fVElNRU9VVDtcblxuICAgIC8vIFJlc29sdmUgZGVhZCBsZXR0ZXIgcXVldWUgY29uZmlnXG4gICAgbGV0IGRscUNvbmZpZzogSVF1ZXVlUHJvcHNbXCJkZWFkTGV0dGVyUXVldWVcIl07XG4gICAgaWYgKHF1ZXVlQ29uZmlnLmRlYWRMZXR0ZXJRdWV1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIGRscUNvbmZpZyA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHF1ZXVlQ29uZmlnLmRlYWRMZXR0ZXJRdWV1ZSkge1xuICAgICAgZGxxQ29uZmlnID0ge1xuICAgICAgICBlbmFibGVkOiBxdWV1ZUNvbmZpZy5kZWFkTGV0dGVyUXVldWUuZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICBtYXhSZWNlaXZlQ291bnQ6IHF1ZXVlQ29uZmlnLmRlYWRMZXR0ZXJRdWV1ZS5tYXhSZWNlaXZlQ291bnQgPz8gM1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGxxQ29uZmlnID0geyBlbmFibGVkOiB0cnVlLCBtYXhSZWNlaXZlQ291bnQ6IDMgfTtcbiAgICB9XG5cbiAgICBjb25zdCBxdWV1ZVByb3BzOiBJUXVldWVQcm9wcyA9IHtcbiAgICAgIHR5cGU6IFwicXVldWVcIixcbiAgICAgIHF1ZXVlVHlwZTogXCJmaWZvXCIsXG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcXVldWVDb25maWcudmlzaWJpbGl0eVRpbWVvdXQgPz8gcmV2YWxpZGF0aW9uVGltZW91dCxcbiAgICAgIG1lc3NhZ2VSZXRlbnRpb25QZXJpb2Q6IHF1ZXVlQ29uZmlnLm1lc3NhZ2VSZXRlbnRpb25QZXJpb2QsXG4gICAgICBtYXhNZXNzYWdlU2l6ZTogcXVldWVDb25maWcubWF4TWVzc2FnZVNpemUsXG4gICAgICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uOiB0cnVlLFxuICAgICAgZGVhZExldHRlclF1ZXVlOiBkbHFDb25maWdcbiAgICB9O1xuICAgIHRoaXMuX3JldmFsaWRhdGlvblF1ZXVlID0gdGhpcy5hcHAuYWRkTWVzc2FnaW5nKFxuICAgICAgTWVzc2FnaW5nRmFjdG9yeS5idWlsZChgJHt0aGlzLnByb3BzLm5hbWV9LXJldmFsaWRhdGlvbmAsIHF1ZXVlUHJvcHMpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTGFtYmRhRnVuY3Rpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlcnZlciA9IHRoaXMuY3JlYXRlU2VydmVyTGFtYmRhKCk7XG4gICAgdGhpcy5faW1hZ2VPcHRpbWlzYXRpb24gPSB0aGlzLmNyZWF0ZUltYWdlTGFtYmRhKCk7XG4gICAgdGhpcy5fcmV2YWxpZGF0aW9uID0gdGhpcy5jcmVhdGVSZXZhbGlkYXRpb25MYW1iZGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU2VydmVyTGFtYmRhKCk6IExhbWJkYUNvbXB1dGUge1xuICAgIGNvbnN0IHsgbWVtb3J5U2l6ZSwgdGltZW91dCwgZXBoZW1lcmFsU3RvcmFnZVNpemUgfSA9IHJlc29sdmVMYW1iZGFDb25maWcoXG4gICAgICB0aGlzLnByb3BzLmNvbXB1dGU/LnNlcnZlcixcbiAgICAgIHtcbiAgICAgICAgbWVtb3J5OiBQQVlMT0FEX0RFRkFVTFRTLkNPTVBVVEUuU0VSVkVSX01FTU9SWSxcbiAgICAgICAgdGltZW91dDogUEFZTE9BRF9ERUZBVUxUUy5DT01QVVRFLlNFUlZFUl9USU1FT1VUXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHNlcnZlclByb3BzOiBDb2RlTGFtYmRhUHJvcHMgPSB7XG4gICAgICB0eXBlOiBcImxhbWJkYVwiLFxuICAgICAgZGVwbG95bWVudDogXCJjb2RlXCIsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChcbiAgICAgICAgYCR7UEFZTE9BRF9ERUZBVUxUUy5TT1VSQ0V9LyR7UEFZTE9BRF9ERUZBVUxUUy5PUEVOTkVYVC5TRVJWRVJ9YFxuICAgICAgKSxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIG1lbW9yeVNpemUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZXBoZW1lcmFsU3RvcmFnZVNpemUsXG4gICAgICBmdW5jdGlvblVybDoge1xuICAgICAgICBhdXRoVHlwZTogRnVuY3Rpb25VcmxBdXRoVHlwZS5OT05FLFxuICAgICAgICBpbnZva2VNb2RlOiBJbnZva2VNb2RlLlJFU1BPTlNFX1NUUkVBTVxuICAgICAgfSxcbiAgICAgIGNvbm5lY3Rpb25zOiBbdGhpcy5fZGF0YWJhc2VdLFxuICAgICAgc2VjcmV0c0ltcG9ydDoge1xuICAgICAgICBEQVRBQkFTRV9VU0VSTkFNRTogdGhpcy5fZGF0YWJhc2VcbiAgICAgICAgICAuZ2V0Q3JlZGVudGlhbHMoKVxuICAgICAgICAgIC5nZXRJbXBvcnQoXCJ1c2VybmFtZVwiKSxcbiAgICAgICAgREFUQUJBU0VfUEFTU1dPUkQ6IHRoaXMuX2RhdGFiYXNlXG4gICAgICAgICAgLmdldENyZWRlbnRpYWxzKClcbiAgICAgICAgICAuZ2V0SW1wb3J0KFwicGFzc3dvcmRcIiksXG4gICAgICAgIFBBWUxPQURfU0VDUkVUOiB0aGlzLl9wYXlsb2FkU2VjcmV0LmdldEltcG9ydCgpXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuYnVpbGRTZXJ2ZXJFbnZpcm9ubWVudCgpXG4gICAgfTtcblxuICAgIGNvbnN0IHNlcnZlciA9IHRoaXMuYXBwLmFkZENvbXB1dGUoXG4gICAgICBDb21wdXRlRmFjdG9yeS5idWlsZChgJHt0aGlzLnByb3BzLm5hbWV9LXNlcnZlcmAsIHNlcnZlclByb3BzKVxuICAgICk7XG5cbiAgICB0aGlzLmdyYW50U2VydmVyUGVybWlzc2lvbnMoc2VydmVyKTtcbiAgICByZXR1cm4gc2VydmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNlcnZlckVudmlyb25tZW50KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IGJhc2VFbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBEQVRBQkFTRV9IT1NUOiB0aGlzLl9kYXRhYmFzZS5nZXRIb3N0RW5kcG9pbnQoKSxcbiAgICAgIERBVEFCQVNFX1BPUlQ6IHRoaXMuX2RhdGFiYXNlLmdldEhvc3RQb3J0KCksXG4gICAgICBEQVRBQkFTRV9OQU1FOiB0aGlzLl9kYXRhYmFzZS5nZXREYXRhYmFzZU5hbWUoKSxcbiAgICAgIERBVEFCQVNFX1NTTDogXCJ0cnVlXCIsXG4gICAgICBDQUNIRV9CVUNLRVRfTkFNRTogdGhpcy5fY2FjaGVCdWNrZXQuZ2V0QnVja2V0TmFtZSgpLFxuICAgICAgQ0FDSEVfQlVDS0VUX1JFR0lPTjogU3RhY2sub2YodGhpcykucmVnaW9uLFxuICAgICAgQ0FDSEVfRFlOQU1PX1RBQkxFOiB0aGlzLl90YWdDYWNoZS5nZXRUYWJsZU5hbWUoKSxcbiAgICAgIFJFVkFMSURBVElPTl9RVUVVRV9VUkw6IHRoaXMuX3JldmFsaWRhdGlvblF1ZXVlLmdldFF1ZXVlVXJsKCksXG4gICAgICBSRVZBTElEQVRJT05fUVVFVUVfUkVHSU9OOiBTdGFjay5vZih0aGlzKS5yZWdpb24sXG4gICAgICBNRURJQV9CVUNLRVRfTkFNRTogdGhpcy5fbWVkaWFCdWNrZXQuZ2V0QnVja2V0TmFtZSgpXG4gICAgfTtcblxuICAgIC8vIExvY2sgZG93biBDT1JTIHRvIGN1c3RvbSBkb21haW4gd2hlbiBwcm92aWRlZFxuICAgIGNvbnN0IGN1c3RvbURvbWFpbiA9IHRoaXMucHJvcHMuZG9tYWluID8/IHRoaXMucHJvcHMuY2RuPy5kb21haW5OYW1lcz8uWzBdO1xuICAgIGlmIChjdXN0b21Eb21haW4pIHtcbiAgICAgIGJhc2VFbnYuTkVYVF9QVUJMSUNfU0VSVkVSX1VSTCA9IGBodHRwczovLyR7Y3VzdG9tRG9tYWlufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4uYmFzZUVudiwgLi4udGhpcy5wcm9wcy5lbnZpcm9ubWVudCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBncmFudFNlcnZlclBlcm1pc3Npb25zKHNlcnZlcjogTGFtYmRhQ29tcHV0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHNlcnZlckZ1bmN0aW9uID0gcmVxdWlyZUZ1bmN0aW9uKHNlcnZlciwgXCJTZXJ2ZXJcIik7XG4gICAgdGhpcy5fY2FjaGVCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoc2VydmVyRnVuY3Rpb24pO1xuICAgIHRoaXMuX21lZGlhQnVja2V0LmdyYW50UmVhZFdyaXRlKHNlcnZlckZ1bmN0aW9uKTtcbiAgICB0aGlzLl90YWdDYWNoZS5ncmFudFJlYWRXcml0ZURhdGEoc2VydmVyRnVuY3Rpb24pO1xuICAgIHRoaXMuX3JldmFsaWRhdGlvblF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHNlcnZlckZ1bmN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VMYW1iZGEoKTogTGFtYmRhQ29tcHV0ZSB7XG4gICAgY29uc3QgeyBtZW1vcnlTaXplLCB0aW1lb3V0LCBlcGhlbWVyYWxTdG9yYWdlU2l6ZSB9ID0gcmVzb2x2ZUxhbWJkYUNvbmZpZyhcbiAgICAgIHRoaXMucHJvcHMuY29tcHV0ZT8uaW1hZ2VPcHRpbWlzYXRpb24sXG4gICAgICB7XG4gICAgICAgIG1lbW9yeTogUEFZTE9BRF9ERUZBVUxUUy5DT01QVVRFLklNQUdFX01FTU9SWSxcbiAgICAgICAgdGltZW91dDogUEFZTE9BRF9ERUZBVUxUUy5DT01QVVRFLklNQUdFX1RJTUVPVVRcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgaW1hZ2VQcm9wczogQ29kZUxhbWJkYVByb3BzID0ge1xuICAgICAgdHlwZTogXCJsYW1iZGFcIixcbiAgICAgIGRlcGxveW1lbnQ6IFwiY29kZVwiLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIGAke1BBWUxPQURfREVGQVVMVFMuU09VUkNFfS8ke1BBWUxPQURfREVGQVVMVFMuT1BFTk5FWFQuSU1BR0V9YFxuICAgICAgKSxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIG1lbW9yeVNpemUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZXBoZW1lcmFsU3RvcmFnZVNpemUsXG4gICAgICBmdW5jdGlvblVybDogeyBhdXRoVHlwZTogRnVuY3Rpb25VcmxBdXRoVHlwZS5OT05FIH0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBCVUNLRVRfTkFNRTogdGhpcy5fYXNzZXRzQnVja2V0LmdldEJ1Y2tldE5hbWUoKSxcbiAgICAgICAgQlVDS0VUX0tFWV9QUkVGSVg6IFwiX2Fzc2V0c1wiXG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGltYWdlID0gdGhpcy5hcHAuYWRkQ29tcHV0ZShcbiAgICAgIENvbXB1dGVGYWN0b3J5LmJ1aWxkKGAke3RoaXMucHJvcHMubmFtZX0taW1hZ2VgLCBpbWFnZVByb3BzKVxuICAgICk7XG5cbiAgICBjb25zdCBpbWFnZUZ1bmN0aW9uID0gcmVxdWlyZUZ1bmN0aW9uKGltYWdlLCBcIkltYWdlT3B0aW1pc2F0aW9uXCIpO1xuICAgIHRoaXMuX2Fzc2V0c0J1Y2tldC5ncmFudFJlYWQoaW1hZ2VGdW5jdGlvbik7XG5cbiAgICByZXR1cm4gaW1hZ2U7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJldmFsaWRhdGlvbkxhbWJkYSgpOiBMYW1iZGFDb21wdXRlIHtcbiAgICBjb25zdCB7IG1lbW9yeVNpemUsIHRpbWVvdXQsIGVwaGVtZXJhbFN0b3JhZ2VTaXplIH0gPSByZXNvbHZlTGFtYmRhQ29uZmlnKFxuICAgICAgdGhpcy5wcm9wcy5jb21wdXRlPy5yZXZhbGlkYXRpb24sXG4gICAgICB7XG4gICAgICAgIG1lbW9yeTogUEFZTE9BRF9ERUZBVUxUUy5DT01QVVRFLlJFVkFMSURBVElPTl9NRU1PUlksXG4gICAgICAgIHRpbWVvdXQ6IFBBWUxPQURfREVGQVVMVFMuQ09NUFVURS5SRVZBTElEQVRJT05fVElNRU9VVFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCByZXZhbGlkYXRpb25Qcm9wczogQ29kZUxhbWJkYVByb3BzID0ge1xuICAgICAgdHlwZTogXCJsYW1iZGFcIixcbiAgICAgIGRlcGxveW1lbnQ6IFwiY29kZVwiLFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIGAke1BBWUxPQURfREVGQVVMVFMuU09VUkNFfS8ke1BBWUxPQURfREVGQVVMVFMuT1BFTk5FWFQuUkVWQUxJREFUSU9OfWBcbiAgICAgICksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBtZW1vcnlTaXplLFxuICAgICAgdGltZW91dCxcbiAgICAgIGVwaGVtZXJhbFN0b3JhZ2VTaXplLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQ0FDSEVfRFlOQU1PX1RBQkxFOiB0aGlzLl90YWdDYWNoZS5nZXRUYWJsZU5hbWUoKSxcbiAgICAgICAgQ0FDSEVfQlVDS0VUX05BTUU6IHRoaXMuX2NhY2hlQnVja2V0LmdldEJ1Y2tldE5hbWUoKVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCByZXZhbGlkYXRpb24gPSB0aGlzLmFwcC5hZGRDb21wdXRlKFxuICAgICAgQ29tcHV0ZUZhY3RvcnkuYnVpbGQoYCR7dGhpcy5wcm9wcy5uYW1lfS1yZXZhbGlkYXRpb25gLCByZXZhbGlkYXRpb25Qcm9wcylcbiAgICApO1xuXG4gICAgY29uc3QgcmV2YWxpZGF0aW9uTGFtYmRhID0gcmV2YWxpZGF0aW9uLmdldExhbWJkYUZ1bmN0aW9uKCk7XG4gICAgcmV2YWxpZGF0aW9uTGFtYmRhLmFkZFNxc0V2ZW50U291cmNlKHRoaXMuX3JldmFsaWRhdGlvblF1ZXVlLmdldFF1ZXVlKCksIHtcbiAgICAgIGJhdGNoU2l6ZTogNVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmV2YWxpZGF0aW9uRnVuY3Rpb24gPSByZXF1aXJlRnVuY3Rpb24ocmV2YWxpZGF0aW9uLCBcIlJldmFsaWRhdGlvblwiKTtcbiAgICB0aGlzLl90YWdDYWNoZS5ncmFudFJlYWRXcml0ZURhdGEocmV2YWxpZGF0aW9uRnVuY3Rpb24pO1xuICAgIHRoaXMuX2NhY2hlQnVja2V0LmdyYW50UmVhZFdyaXRlKHJldmFsaWRhdGlvbkZ1bmN0aW9uKTtcbiAgICB0aGlzLl9yZXZhbGlkYXRpb25RdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyhyZXZhbGlkYXRpb25GdW5jdGlvbik7XG5cbiAgICByZXR1cm4gcmV2YWxpZGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDZG4oKTogdm9pZCB7XG4gICAgY29uc3QgeyBkb21haW5OYW1lcywgY2VydGlmaWNhdGUgfSA9IHRoaXMucmVzb2x2ZURvbWFpbkNvbmZpZygpO1xuXG4gICAgY29uc3QgY2RuUHJvcHM6IFNtYXJ0Q2RuUHJvcHMgPSB7XG4gICAgICBvcmlnaW5UeXBlOiBcImF1dG9cIixcbiAgICAgIG9yaWdpbjogdGhpcy5fc2VydmVyLFxuICAgICAgY2FjaGVQb2xpY3k6IFwiQ0FDSElOR19ESVNBQkxFRFwiLFxuICAgICAgZGVmYXVsdEFsbG93ZWRNZXRob2RzOiBcIkFMTFwiLFxuICAgICAgZm9yd2FyZEhvc3RIZWFkZXI6IHRydWUsXG4gICAgICBwcmljZUNsYXNzOiBcIlByaWNlQ2xhc3NfMTAwXCIsXG4gICAgICBkb21haW5OYW1lcyxcbiAgICAgIGNlcnRpZmljYXRlLFxuICAgICAgYmVoYXZpb3VyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcGF0aFBhdHRlcm46IFBBWUxPQURfREVGQVVMVFMuUEFUSFMuU1RBVElDLFxuICAgICAgICAgIG9yaWdpbjogdGhpcy5fYXNzZXRzQnVja2V0LFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBcIkNBQ0hJTkdfT1BUSU1JWkVEXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhdGhQYXR0ZXJuOiBQQVlMT0FEX0RFRkFVTFRTLlBBVEhTLklNQUdFLFxuICAgICAgICAgIG9yaWdpbjogdGhpcy5faW1hZ2VPcHRpbWlzYXRpb24sXG4gICAgICAgICAgY2FjaGVQb2xpY3k6IFwiQ0FDSElOR19PUFRJTUlaRURcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0aFBhdHRlcm46IFBBWUxPQURfREVGQVVMVFMuUEFUSFMuQVBJLFxuICAgICAgICAgIG9yaWdpbjogdGhpcy5fc2VydmVyLFxuICAgICAgICAgIGNhY2hlUG9saWN5OiBcIkNBQ0hJTkdfRElTQUJMRURcIixcbiAgICAgICAgICBhbGxvd2VkTWV0aG9kczogXCJBTExcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGF0aFBhdHRlcm46IFBBWUxPQURfREVGQVVMVFMuUEFUSFMuQURNSU4sXG4gICAgICAgICAgb3JpZ2luOiB0aGlzLl9zZXJ2ZXIsXG4gICAgICAgICAgY2FjaGVQb2xpY3k6IFwiQ0FDSElOR19ESVNBQkxFRFwiLFxuICAgICAgICAgIGFsbG93ZWRNZXRob2RzOiBcIkFMTFwiXG4gICAgICAgIH0sXG4gICAgICAgIC4uLih0aGlzLnByb3BzLmNkbj8uYmVoYXZpb3VycyA/PyBbXSlcbiAgICAgIF1cbiAgICB9O1xuXG4gICAgdGhpcy5fY2RuID0gdGhpcy5hcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQodGhpcy5wcm9wcy5uYW1lLCBjZG5Qcm9wcykpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRG9tYWluQ29uZmlnKCk6IHtcbiAgICBkb21haW5OYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgY2VydGlmaWNhdGU6IElDZXJ0aWZpY2F0ZSB8IHVuZGVmaW5lZDtcbiAgICBob3N0ZWRab25lOiBSZXR1cm5UeXBlPHR5cGVvZiBIb3N0ZWRab25lLmZyb21Mb29rdXA+IHwgdW5kZWZpbmVkO1xuICB9IHtcbiAgICBpZiAodGhpcy5fcmVzb2x2ZWREb21haW4pIHJldHVybiB0aGlzLl9yZXNvbHZlZERvbWFpbjtcblxuICAgIGlmICh0aGlzLnByb3BzLmRvbWFpbikge1xuICAgICAgdGhpcy5fcmVzb2x2ZWREb21haW4gPSB0aGlzLnJlc29sdmVTaW1wbGVEb21haW4oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuY2RuPy5kb21haW5OYW1lcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlZERvbWFpbiA9IHRoaXMucmVzb2x2ZUFkdmFuY2VkRG9tYWluKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3Jlc29sdmVkRG9tYWluID0ge1xuICAgICAgICBkb21haW5OYW1lczogdW5kZWZpbmVkLFxuICAgICAgICBjZXJ0aWZpY2F0ZTogdW5kZWZpbmVkLFxuICAgICAgICBob3N0ZWRab25lOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVkRG9tYWluO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU2ltcGxlRG9tYWluKCk6IHtcbiAgICBkb21haW5OYW1lczogc3RyaW5nW107XG4gICAgY2VydGlmaWNhdGU6IElDZXJ0aWZpY2F0ZTtcbiAgICBob3N0ZWRab25lOiBSZXR1cm5UeXBlPHR5cGVvZiBIb3N0ZWRab25lLmZyb21Mb29rdXA+O1xuICB9IHtcbiAgICBjb25zdCBkb21haW4gPSB0aGlzLnByb3BzLmRvbWFpbjtcbiAgICBpZiAoIWRvbWFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRG9tYWluIGlzIHJlcXVpcmVkIGZvciBzaW1wbGUgZG9tYWluIHJlc29sdXRpb25cIik7XG4gICAgfVxuXG4gICAgLy8gTWFuYWdlZCBkb21haW46IGltcG9ydCB6b25lIGFuZCBjZXJ0IGZyb20gZG9tYWluIHN0YWNrXG4gICAgaWYgKHRoaXMucHJvcHMubWFuYWdlZERvbWFpbikge1xuICAgICAgY29uc3QgbWFuYWdlZCA9IHRoaXMucHJvcHMubWFuYWdlZERvbWFpbjtcbiAgICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5wYXNjYWxOYW1lfU1hbmFnZWRIb3N0ZWRab25lYCxcbiAgICAgICAge1xuICAgICAgICAgIGhvc3RlZFpvbmVJZDogRm4uaW1wb3J0VmFsdWUobWFuYWdlZC5ob3N0ZWRab25lSWRFeHBvcnQpLFxuICAgICAgICAgIHpvbmVOYW1lOiBtYW5hZ2VkLnpvbmVOYW1lXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IENlcnRpZmljYXRlLmZyb21DZXJ0aWZpY2F0ZUFybihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5wYXNjYWxOYW1lfU1hbmFnZWRDZXJ0aWZpY2F0ZWAsXG4gICAgICAgIEZuLmltcG9ydFZhbHVlKG1hbmFnZWQuY2VydGlmaWNhdGVBcm5FeHBvcnQpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgZG9tYWluTmFtZXM6IFtkb21haW5dLCBjZXJ0aWZpY2F0ZSwgaG9zdGVkWm9uZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3REb21haW4gPSBleHRyYWN0Um9vdERvbWFpbihkb21haW4pO1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUxvb2t1cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHt0aGlzLnBhc2NhbE5hbWV9SG9zdGVkWm9uZWAsXG4gICAgICB7IGRvbWFpbk5hbWU6IHJvb3REb21haW4gfVxuICAgICk7XG5cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9Q2VydGlmaWNhdGVgLCB7XG4gICAgICBkb21haW5OYW1lOiBkb21haW4sXG4gICAgICB2YWxpZGF0aW9uOiBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhob3N0ZWRab25lKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgZG9tYWluTmFtZXM6IFtkb21haW5dLCBjZXJ0aWZpY2F0ZSwgaG9zdGVkWm9uZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQWR2YW5jZWREb21haW4oKToge1xuICAgIGRvbWFpbk5hbWVzOiBzdHJpbmdbXTtcbiAgICBjZXJ0aWZpY2F0ZTogSUNlcnRpZmljYXRlIHwgdW5kZWZpbmVkO1xuICAgIGhvc3RlZFpvbmU6IHVuZGVmaW5lZDtcbiAgfSB7XG4gICAgY29uc3QgY2RuQ29uZmlnID0gdGhpcy5wcm9wcy5jZG47XG4gICAgaWYgKCFjZG5Db25maWc/LmRvbWFpbk5hbWVzPy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDRE4gZG9tYWluIG5hbWVzIGFyZSByZXF1aXJlZCBmb3IgYWR2YW5jZWQgZG9tYWluIHJlc29sdXRpb25cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9XG4gICAgICBjZG5Db25maWcuY2VydGlmaWNhdGUgPz9cbiAgICAgIChjZG5Db25maWcuY2VydGlmaWNhdGVBcm5cbiAgICAgICAgPyBDZXJ0aWZpY2F0ZS5mcm9tQ2VydGlmaWNhdGVBcm4oXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgYCR7dGhpcy5wYXNjYWxOYW1lfUNlcnRpZmljYXRlYCxcbiAgICAgICAgICAgIGNkbkNvbmZpZy5jZXJ0aWZpY2F0ZUFyblxuICAgICAgICAgIClcbiAgICAgICAgOiB1bmRlZmluZWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbWFpbk5hbWVzOiBjZG5Db25maWcuZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIGhvc3RlZFpvbmU6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURuc1JlY29yZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuZG9tYWluKSByZXR1cm47XG5cbiAgICBjb25zdCB7IGhvc3RlZFpvbmUgfSA9IHRoaXMucmVzb2x2ZURvbWFpbkNvbmZpZygpO1xuICAgIGlmICghaG9zdGVkWm9uZSkgcmV0dXJuO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBETlMgcmVjb3JkIGluIHRoZSBDRE4gc3RhY2sgKG5vdCB0aGUgQ29tcHV0ZSBzdGFjayB3aGVyZSB0aGlzXG4gICAgLy8gUGF5bG9hZCBjb25zdHJ1Y3QgbGl2ZXMpIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3k6IENETiByZWZlcmVuY2VzIHRoZVxuICAgIC8vIHNlcnZlciBMYW1iZGEgRnVuY3Rpb25VcmwsIHNvIENvbXB1dGUgY2Fubm90IGFsc28gZGVwZW5kIG9uIENETi5cbiAgICBjb25zdCBjZG5TdGFjayA9IHRoaXMuYXBwLmdldERlZmF1bHRDZG5TdGFjaygpLmdldFN0YWNrKCk7XG4gICAgbmV3IEFSZWNvcmQoY2RuU3RhY2ssIGAke3RoaXMucGFzY2FsTmFtZX1BbGlhc1JlY29yZGAsIHtcbiAgICAgIHpvbmU6IGhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiB0aGlzLnByb3BzLmRvbWFpbixcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IENsb3VkRnJvbnRUYXJnZXQodGhpcy5fY2RuLmdldERpc3RyaWJ1dGlvbigpKVxuICAgICAgKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleHBvcnRQYXR0ZXJuT3V0cHV0cygpOiB2b2lkIHtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3RoaXMucGFzY2FsTmFtZX1QYXR0ZXJuVHlwZWAsIHtcbiAgICAgIGtleTogYCR7dGhpcy5wYXNjYWxOYW1lfVBhdHRlcm5UeXBlYCxcbiAgICAgIHZhbHVlOiBcInBheWxvYWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBgUGF0dGVybiB0eXBlIGZvciAke3RoaXMucHJvcHMubmFtZX1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3RoaXMucGFzY2FsTmFtZX1QYXR0ZXJuTmFtZWAsIHtcbiAgICAgIGtleTogYCR7dGhpcy5wYXNjYWxOYW1lfVBhdHRlcm5OYW1lYCxcbiAgICAgIHZhbHVlOiB0aGlzLnByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYFBhdHRlcm4gbmFtZSBmb3IgJHt0aGlzLnByb3BzLm5hbWV9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9UGF0dGVybkxhbWJkYXNgLCB7XG4gICAgICBrZXk6IGAke3RoaXMucGFzY2FsTmFtZX1QYXR0ZXJuTGFtYmRhc2AsXG4gICAgICB2YWx1ZTogW1xuICAgICAgICBgJHt0aGlzLnByb3BzLm5hbWV9LXNlcnZlcmAsXG4gICAgICAgIGAke3RoaXMucHJvcHMubmFtZX0taW1hZ2VgLFxuICAgICAgICBgJHt0aGlzLnByb3BzLm5hbWV9LXJldmFsaWRhdGlvbmBcbiAgICAgIF0uam9pbihcIixcIiksXG4gICAgICBkZXNjcmlwdGlvbjogYExhbWJkYSBjb25zdHJ1Y3QgcHJlZml4ZXMgZm9yIHBhdHRlcm4gJHt0aGlzLnByb3BzLm5hbWV9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnBhc2NhbE5hbWV9UGF0dGVyblJlc291cmNlc2AsIHtcbiAgICAgIGtleTogYCR7dGhpcy5wYXNjYWxOYW1lfVBhdHRlcm5SZXNvdXJjZXNgLFxuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZGF0YWJhc2VzOiBbdGhpcy5wcm9wcy5uYW1lLCBgJHt0aGlzLnByb3BzLm5hbWV9LXRhZy1jYWNoZWBdLFxuICAgICAgICBzdG9yYWdlOiBbXG4gICAgICAgICAgYCR7dGhpcy5wcm9wcy5uYW1lfS1hc3NldHNgLFxuICAgICAgICAgIGAke3RoaXMucHJvcHMubmFtZX0tY2FjaGVgLFxuICAgICAgICAgIGAke3RoaXMucHJvcHMubmFtZX0tbWVkaWFgXG4gICAgICAgIF0sXG4gICAgICAgIGNkbjogdGhpcy5wcm9wcy5uYW1lXG4gICAgICB9KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgUmVsYXRlZCByZXNvdXJjZSBuYW1lcyBmb3IgcGF0dGVybiAke3RoaXMucHJvcHMubmFtZX1gXG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRhYmFzZSgpOiBSZWxhdGlvbmFsRGF0YWJhc2Uge1xuICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZTtcbiAgfVxuXG4gIGdldFNlcnZlcigpOiBMYW1iZGFDb21wdXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VydmVyO1xuICB9XG5cbiAgZ2V0SW1hZ2VPcHRpbWlzYXRpb24oKTogTGFtYmRhQ29tcHV0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlT3B0aW1pc2F0aW9uO1xuICB9XG5cbiAgZ2V0UmV2YWxpZGF0aW9uKCk6IExhbWJkYUNvbXB1dGUge1xuICAgIHJldHVybiB0aGlzLl9yZXZhbGlkYXRpb247XG4gIH1cblxuICBnZXRBc3NldHNCdWNrZXQoKTogU3RvcmFnZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fzc2V0c0J1Y2tldDtcbiAgfVxuXG4gIGdldENhY2hlQnVja2V0KCk6IFN0b3JhZ2Uge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZUJ1Y2tldDtcbiAgfVxuXG4gIGdldE1lZGlhQnVja2V0KCk6IFN0b3JhZ2Uge1xuICAgIHJldHVybiB0aGlzLl9tZWRpYUJ1Y2tldDtcbiAgfVxuXG4gIGdldFRhZ0NhY2hlKCk6IER5bmFtb0RCRGF0YWJhc2Uge1xuICAgIHJldHVybiB0aGlzLl90YWdDYWNoZTtcbiAgfVxuXG4gIGdldFJldmFsaWRhdGlvblF1ZXVlKCk6IFF1ZXVlTWVzc2FnaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmV2YWxpZGF0aW9uUXVldWU7XG4gIH1cblxuICBnZXRDZG4oKTogQ2RuIHtcbiAgICByZXR1cm4gdGhpcy5fY2RuO1xuICB9XG59XG4iXX0=
|
|
@@ -3,7 +3,8 @@ import { type IBucket, type EventType, type IBucketNotificationDestination, type
|
|
|
3
3
|
import { BucketDeployment } from "aws-cdk-lib/aws-s3-deployment";
|
|
4
4
|
import { type IGrantable, type Grant } from "aws-cdk-lib/aws-iam";
|
|
5
5
|
import type App from "../../app";
|
|
6
|
-
import { type
|
|
6
|
+
import { type WebsiteHostingConfig } from "../../resources/aws/storage";
|
|
7
|
+
import { type BackupTier } from "../../utils/backupTierMapping";
|
|
7
8
|
import { type IStorage } from "./interfaces/storage.js";
|
|
8
9
|
import { type IStorageConnector } from "./interfaces/connector.js";
|
|
9
10
|
export { type IStorage, isStorage } from "./interfaces/storage.js";
|
|
@@ -35,7 +36,7 @@ export interface S3Props {
|
|
|
35
36
|
readonly versioned?: boolean;
|
|
36
37
|
readonly encryption?: "AES256" | "KMS";
|
|
37
38
|
readonly kmsKeyArn?: string;
|
|
38
|
-
readonly backupVaultTier?:
|
|
39
|
+
readonly backupVaultTier?: BackupTier;
|
|
39
40
|
readonly cors?: CorsRule[];
|
|
40
41
|
readonly deployment?: S3DeploymentConfig;
|
|
41
42
|
}
|