raindancers-network
Version:
Extensions to the ec2.Vpc Constructs
130 lines • 18.6 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnterpriseVpcLambda = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const path = require("path");
const cdk = require("aws-cdk-lib");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const constructs = require("constructs");
class EnterpriseVpcLambda extends constructs.Construct {
/**
*
* @param scope
* @param id
*/
constructor(scope, id) {
super(scope, id);
// attach vpc to cloudwan
const attachToCloudwan = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'attachtoCloudwan', {
uuid: 'FEAD99771132',
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'vpcattachment.on_event',
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc'), {
bundling: {
image: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9.bundlingImage,
command: [
'bash', '-c',
'pip install -r requirements.txt -t /asset-output && cp -au . /asset-output',
],
},
}),
timeout: cdk.Duration.seconds(899),
});
attachToCloudwan.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW,
resources: ['*'],
actions: [
'networkmanager:CreateVpcAttachment',
'networkmanager:TagResource',
'networkmanager:DeleteVpcAttachment',
'networkmanager:DeleteAttachment',
'account:ListRegions',
'ec2:DescribeRegions',
'iam:CreateServiceLinkedRole',
],
}));
const isAttachmentComplete = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'isattachmentComplete', {
uuid: 'FEAD99771134',
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'vpcattachment.is_complete',
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc'), {
bundling: {
image: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9.bundlingImage,
command: [
'bash', '-c',
'pip install -r requirements.txt -t /asset-output && cp -au . /asset-output',
],
},
}),
timeout: cdk.Duration.seconds(899),
});
isAttachmentComplete.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW,
resources: ['*'],
actions: [
'networkmanager:getVpcAttachment',
],
}));
this.attachToCloudwanProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'AttachToCloudwanProvider', {
onEventHandler: attachToCloudwan,
isCompleteHandler: isAttachmentComplete,
logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_DAY,
totalTimeout: cdk.Duration.minutes(15),
queryInterval: cdk.Duration.seconds(15),
});
// add routes lambda
const addRoutesLambda = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'lookupIdLambda-evpc', {
uuid: '00001122AA',
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'addRoutes.on_event',
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')),
timeout: cdk.Duration.seconds(899),
});
addRoutesLambda.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW,
resources: ['*'],
actions: [
'ec2:CreateRoute',
'ec2:DeleteRoute',
'ec2:ReplaceRoute',
'networkmanager:ListCoreNetworks',
],
}));
this.addRoutesProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'NetworkManagerProvider', {
onEventHandler: addRoutesLambda,
});
// transit gateway is ready
const tgwaittofinishOnEvent = new aws_cdk_lib_1.aws_lambda.Function(this, 'tgReadyOnevent', {
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'checktgready.on_event',
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')),
timeout: cdk.Duration.seconds(899),
});
const tgwaittofinishIsComplete = new aws_cdk_lib_1.aws_lambda.Function(this, 'tgReadyisComplete', {
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'checktgready.is_complete',
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')),
timeout: cdk.Duration.seconds(899),
});
tgwaittofinishIsComplete.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW,
resources: ['*'],
actions: [
'ec2:DescribeTransitGateway*',
],
}));
this.tgWaiterProvider = new aws_cdk_lib_1.custom_resources.Provider(this, 'WaittoFinishProvider', {
onEventHandler: tgwaittofinishOnEvent,
isCompleteHandler: tgwaittofinishIsComplete,
totalTimeout: cdk.Duration.minutes(119),
queryInterval: cdk.Duration.seconds(20),
logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_MONTH,
providerFunctionName: cdk.PhysicalName.GENERATE_IF_NEEDED,
});
}
}
exports.EnterpriseVpcLambda = EnterpriseVpcLambda;
_a = JSII_RTTI_SYMBOL_1;
EnterpriseVpcLambda[_a] = { fqn: "raindancers-network.network.EnterpriseVpcLambda", version: "1.29.3" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXJwcmlzZXZwY2xhbWJkYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZwYy9lbnRlcnByaXNldnBjbGFtYmRhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFDbkMsNkNBTXFCO0FBRXJCLHlDQUF5QztBQUd6QyxNQUFhLG1CQUFvQixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBZTNEOzs7O1NBSUU7SUFDRixZQUFZLEtBQTJCLEVBQUUsRUFBVTtRQUNsRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWhCLHlCQUF5QjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUksd0JBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDbEYsSUFBSSxFQUFFLGNBQWM7WUFDcEIsT0FBTyxFQUFFLHdCQUFVLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDdEMsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxJQUFJLEVBQUUsd0JBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLEVBQUU7Z0JBQ3pFLFFBQVEsRUFBRTtvQkFDUixLQUFLLEVBQUUsd0JBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWE7b0JBQ2xELE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsSUFBSTt3QkFDWiw0RUFBNEU7cUJBQzdFO2lCQUNGO2FBQ0YsQ0FBQztZQUNGLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsZ0JBQWdCLENBQUMsZUFBZSxDQUM5QixJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLFNBQVMs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RUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDdkMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxZQUFZLEVBQUUsc0JBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztZQUMxQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLGtCQUFrQjtTQUMxRCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQTNKSCxrREE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIGF3c19sYW1iZGEsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbG9ncyBhcyBsb2dzLFxuICBjdXN0b21fcmVzb3VyY2VzIGFzIGNyLFxufVxuICBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5cblxuZXhwb3J0IGNsYXNzIEVudGVycHJpc2VWcGNMYW1iZGEgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIC8qKlxuXHQgKiBBIGN1c3RvbSByZXNvdXJjZSB0byB1c2UgZm9yIGFkZGluZyByb3V0ZXNcblx0ICovXG4gIHB1YmxpYyByZWFkb25seSBhZGRSb3V0ZXNQcm92aWRlcjogY3IuUHJvdmlkZXI7XG4gIC8qKlxuXHQgKiBBIGNoZWNrIHRvIHNlZSBpZiB0cmFuc2l0Z2F0ZXdheSBpcyByZWFkeSB0byByb3V0ZSB0by5cblx0ICovXG4gIHB1YmxpYyByZWFkb25seSB0Z1dhaXRlclByb3ZpZGVyOiBjci5Qcm92aWRlcjtcbiAgLyoqXG4gICAqIGF0dGFjaCB0byBjbG91ZHdhbiB3aXRoIGEgd2F0ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdHRhY2hUb0Nsb3Vkd2FuUHJvdmlkZXI6IGNyLlByb3ZpZGVyO1xuXG5cbiAgLyoqXG5cdCAqXG5cdCAqIEBwYXJhbSBzY29wZVxuXHQgKiBAcGFyYW0gaWRcblx0ICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuXHQgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBhdHRhY2ggdnBjIHRvIGNsb3Vkd2FuXG4gICAgY29uc3QgYXR0YWNoVG9DbG91ZHdhbiA9IG5ldyBhd3NfbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdhdHRhY2h0b0Nsb3Vkd2FuJywge1xuICAgICAgdXVpZDogJ0ZFQUQ5OTc3MTEzMicsXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICd2cGNhdHRhY2htZW50Lm9uX2V2ZW50JyxcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2xhbWJkYS9ldnBjJyksIHtcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBpbWFnZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzkuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAnYmFzaCcsICctYycsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0ICYmIGNwIC1hdSAuIC9hc3NldC1vdXRwdXQnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgfSk7XG5cbiAgICBhdHRhY2hUb0Nsb3Vkd2FuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ25ldHdvcmttYW5hZ2VyOkNyZWF0ZVZwY0F0dGFjaG1lbnQnLFxuICAgICAgICAgICduZXR3b3JrbWFuYWdlcjpUYWdSZXNvdXJjZScsXG4gICAgICAgICAgJ25ldHdvcmttYW5hZ2VyOkRlbGV0ZVZwY0F0dGFjaG1lbnQnLFxuICAgICAgICAgICduZXR3b3JrbWFuYWdlcjpEZWxldGVBdHRhY2htZW50JyxcbiAgICAgICAgICAnYWNjb3VudDpMaXN0UmVnaW9ucycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVJlZ2lvbnMnLFxuICAgICAgICAgICdpYW06Q3JlYXRlU2VydmljZUxpbmtlZFJvbGUnLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGlzQXR0YWNobWVudENvbXBsZXRlID0gbmV3IGF3c19sYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24odGhpcywgJ2lzYXR0YWNobWVudENvbXBsZXRlJywge1xuICAgICAgdXVpZDogJ0ZFQUQ5OTc3MTEzNCcsXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICd2cGNhdHRhY2htZW50LmlzX2NvbXBsZXRlJyxcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2xhbWJkYS9ldnBjJyksIHtcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBpbWFnZTogYXdzX2xhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzkuYnVuZGxpbmdJbWFnZSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICAnYmFzaCcsICctYycsXG4gICAgICAgICAgICAncGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dCAtdCAvYXNzZXQtb3V0cHV0ICYmIGNwIC1hdSAuIC9hc3NldC1vdXRwdXQnLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgfSk7XG5cbiAgICBpc0F0dGFjaG1lbnRDb21wbGV0ZS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICduZXR3b3JrbWFuYWdlcjpnZXRWcGNBdHRhY2htZW50JyxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLmF0dGFjaFRvQ2xvdWR3YW5Qcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCAnQXR0YWNoVG9DbG91ZHdhblByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGF0dGFjaFRvQ2xvdWR3YW4sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNBdHRhY2htZW50Q29tcGxldGUsIC8vIG9wdGlvbmFsIGFzeW5jIFwid2FpdGVyXCJcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9EQVksIC8vIGRlZmF1bHQgaXMgSU5GSU5JVEVcbiAgICAgIHRvdGFsVGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgcXVlcnlJbnRlcnZhbDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgIH0pO1xuXG5cblx0ICAvLyBhZGQgIHJvdXRlcyBsYW1iZGFcbiAgICBjb25zdCBhZGRSb3V0ZXNMYW1iZGEgPSBuZXcgYXdzX2xhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnbG9va3VwSWRMYW1iZGEtZXZwYycsIHtcbiAgICAgIHV1aWQ6ICcwMDAwMTEyMkFBJyxcbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM185LFxuICAgICAgaGFuZGxlcjogJ2FkZFJvdXRlcy5vbl9ldmVudCcsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvZXZwYycpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgfSk7XG5cbiAgICBhZGRSb3V0ZXNMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnZWMyOkNyZWF0ZVJvdXRlJyxcbiAgICAgICAgICAnZWMyOkRlbGV0ZVJvdXRlJyxcbiAgICAgICAgICAnZWMyOlJlcGxhY2VSb3V0ZScsXG4gICAgICAgICAgJ25ldHdvcmttYW5hZ2VyOkxpc3RDb3JlTmV0d29ya3MnLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkUm91dGVzUHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ05ldHdvcmtNYW5hZ2VyUHJvdmlkZXInLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogYWRkUm91dGVzTGFtYmRhLFxuICAgIH0pO1xuXG5cbiAgICAvLyB0cmFuc2l0IGdhdGV3YXkgaXMgcmVhZHlcbiAgICBjb25zdCB0Z3dhaXR0b2ZpbmlzaE9uRXZlbnQgPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCAndGdSZWFkeU9uZXZlbnQnLCB7XG5cbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM185LFxuICAgICAgaGFuZGxlcjogJ2NoZWNrdGdyZWFkeS5vbl9ldmVudCcsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvZXZwYycpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgICAvL2Z1bmN0aW9uTmFtZTogJ2Nsb3Vkd2FuUG9saWN5RXhlY3V0ZXdhaXR0b2ZpbmlzaG9uZXZlbnQnLCAvL2Nkay5QaHlzaWNhbE5hbWUuR0VORVJBVEVfSUZfTkVFREVEXG4gICAgfSk7XG5cblxuICAgIGNvbnN0IHRnd2FpdHRvZmluaXNoSXNDb21wbGV0ZSA9IG5ldyBhd3NfbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICd0Z1JlYWR5aXNDb21wbGV0ZScsIHtcbiAgICAgIHJ1bnRpbWU6IGF3c19sYW1iZGEuUnVudGltZS5QWVRIT05fM185LFxuICAgICAgaGFuZGxlcjogJ2NoZWNrdGdyZWFkeS5pc19jb21wbGV0ZScsXG4gICAgICBjb2RlOiBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9sYW1iZGEvZXZwYycpKSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDg5OSksXG4gICAgICAvL2Z1bmN0aW9uTmFtZTogJ2Nsb3Vkd2FuUG9saWN5RXhlY3V0ZXdhaXRpc2NvbXBsZXRlJywgLy9jZGsuUGh5c2ljYWxOYW1lLkdFTkVSQVRFX0lGX05FRURFRFxuICAgIH0pO1xuXG4gICAgdGd3YWl0dG9maW5pc2hJc0NvbXBsZXRlLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVRyYW5zaXRHYXRld2F5KicsXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy50Z1dhaXRlclByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdXYWl0dG9GaW5pc2hQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiB0Z3dhaXR0b2ZpbmlzaE9uRXZlbnQsXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogdGd3YWl0dG9maW5pc2hJc0NvbXBsZXRlLFxuICAgICAgdG90YWxUaW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygxMTkpLFx0Ly8gbm90ZSB0aGlzIGNhbiBiZSBsb25nZXIgdGhhbiB0aGUgbGFtYmRhIHRpbWVvdXRcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDIwKSxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgIHByb3ZpZGVyRnVuY3Rpb25OYW1lOiBjZGsuUGh5c2ljYWxOYW1lLkdFTkVSQVRFX0lGX05FRURFRCxcbiAgICB9KTtcbiAgfVxufSJdfQ==