@smither/aws-user-pool-client-settings
Version:
aws-cdk custom resource to allow setting details for user pool client and integrations.
114 lines • 18.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const cfn = require("@aws-cdk/aws-cloudformation");
const lambda = require("@aws-cdk/aws-lambda");
const cdk = require("@aws-cdk/core");
const iam = require("@aws-cdk/aws-iam");
class UserPoolClientSettings extends cdk.Resource {
constructor(scope, id, props) {
super(scope, id);
const role = new iam.Role(this, "userPoolClientIntegration-role", {
assumedBy: new iam.ServicePrincipal("lambda.amazonaws.com"),
inlinePolicies: {
WriteCloudWatchLogs: new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
actions: [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
resources: ["arn:aws:logs:*:*:*"]
})
]
}),
UpdateUserPoolClient: new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
actions: ["cognito-idp:UpdateUserPoolClient"],
resources: ["arn:aws:cognito-idp:*:*:userpool/*"]
})
]
}),
ManageUserPoolDomain: new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
actions: [
"cognito-idp:CreateUserPoolDomain",
"cognito-idp:DeleteUserPoolDomain",
"cognito-idp:DescribeUserPoolDomain"
],
resources: ["arn:aws:cognito-idp:*:*:userpool/*"]
}),
new iam.PolicyStatement({
actions: [
"cognito-idp:DescribeUserPoolDomain"
],
resources: ["*"]
})
]
}),
InvokeLambdaFunction: new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
actions: ["lambda:InvokeFunction"],
resources: ["arn:aws:lambda:*:*:function:*"]
})
]
})
}
});
const lambdaProps = {
domain: props.domain,
userPoolId: props.userPool.userPoolId,
userPoolClientId: props.userPoolClient.userPoolClientId,
supportedIdentityProviders: props.supportedIdentityProviders.join(","),
callbackURLs: props.callbackURLs.join(","),
logoutURLs: props.logoutURLs.join(","),
allowedOAuthFlowsUserPoolClient: props.allowedOAuthFlowsUserPoolClient.toString(),
allowedOAuthFlows: props.allowedOAuthFlows.join(","),
allowedOAuthScopes: props.allowedOAuthScopes.join(",")
};
const sendResponse = new lambda.Function(this, "userPoolClientIntegration-sendResponseLambda", {
code: new lambda.AssetCode("./node_modules/@smither/aws-user-pool-client-settings/lib/CloudFormationSendResponse"),
functionName: `${this.stack.stackName}-CloudFormationSendResponse`,
handler: "index.handler",
timeout: cdk.Duration.seconds(300),
runtime: lambda.Runtime.NODEJS_10_X,
role: role,
environment: lambdaProps
});
const cognitoUserPoolClientSettings = new cfn.CustomResource(this, "userPoolClientIntegration-cognitoUserPoolClientSettings", {
provider: cfn.CustomResourceProvider.lambda(new lambda.SingletonFunction(this, "userPoolClientIntegration-cognitoUserPoolClientSettingsLambda", {
code: new lambda.AssetCode("./node_modules/@smither/aws-user-pool-client-settings/lib/UserPoolIntegration"),
handler: "ClientSettings.handler",
timeout: cdk.Duration.seconds(300),
runtime: lambda.Runtime.NODEJS_10_X,
role: role,
uuid: "4051d446-69bf-4dc6-90a9-d28135a7ca3b"
})),
properties: lambdaProps
});
cognitoUserPoolClientSettings.node.addDependency(sendResponse);
const cognitoUserPoolDomain = new cfn.CustomResource(this, "userPoolClientIntegration-cognitoUserPoolDomain", {
provider: cfn.CustomResourceProvider.lambda(new lambda.SingletonFunction(this, "userPoolClientIntegration-cognitoUserPoolDomainLambda", {
code: new lambda.AssetCode("./node_modules/@smither/aws-user-pool-client-settings/lib/UserPoolIntegration"),
handler: "Domain.handler",
timeout: cdk.Duration.seconds(300),
runtime: lambda.Runtime.NODEJS_10_X,
role: role,
environment: lambdaProps,
uuid: "74fa06ef-a6c6-47c0-94b2-4ef30ca39851"
})),
properties: lambdaProps
});
this.domain = `https://${props.domain}.auth.${this.stack.region}.amazoncognito.com`;
cognitoUserPoolDomain.node.addDependency(sendResponse);
}
}
exports.UserPoolClientSettings = UserPoolClientSettings;
var IdentityProviders;
(function (IdentityProviders) {
IdentityProviders["COGNITO"] = "COGNITO";
})(IdentityProviders = exports.IdentityProviders || (exports.IdentityProviders = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlclBvb2xDbGllbnRTZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VyUG9vbENsaWVudFNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQW9EO0FBQ3BELDhDQUErQztBQUMvQyxxQ0FBc0M7QUFDdEMsd0NBQXlDO0FBR3pDLE1BQWEsc0JBQXVCLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFHdEQsWUFDRSxLQUFvQixFQUNwQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxFQUFFO1lBQ2hFLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxjQUFjLEVBQUU7Z0JBQ2QsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDO29CQUMxQyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDOzRCQUN0QixPQUFPLEVBQUU7Z0NBQ1AscUJBQXFCO2dDQUNyQixzQkFBc0I7Z0NBQ3RCLG1CQUFtQjs2QkFDcEI7NEJBQ0QsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7eUJBQ2xDLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQztnQkFDRixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7b0JBQzNDLFVBQVUsRUFBRTt3QkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE9BQU8sRUFBRSxDQUFDLGtDQUFrQyxDQUFDOzRCQUM3QyxTQUFTLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQzt5QkFDbEQsQ0FBQztxQkFDSDtpQkFDRixDQUFDO2dCQUNGLG9CQUFvQixFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQztvQkFDM0Ms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YUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUNsRCxJQUFJLEVBQ0osaURBQWlELEVBQ2pEO1lBQ0UsUUFBUSxFQUFFLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQ3pDLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUMxQixJQUFJLEVBQ0osdURBQXVELEVBQ3ZEO2dCQUNFLElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQ3hCLCtFQUErRSxDQUNoRjtnQkFDRCxPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUNuQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixXQUFXLEVBQUUsV0FBOEM7Z0JBQzNELElBQUksRUFBRSxzQ0FBc0M7YUFDN0MsQ0FDRixDQUNGO1lBQ0QsVUFBVSxFQUFFLFdBQVc7U0FDeEIsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBQyxXQUFXLEtBQUssQ0FBQyxNQUFNLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLG9CQUFvQixDQUFBO1FBQ2pGLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGO0FBNUlELHdEQTRJQztBQWFELElBQVksaUJBRVg7QUFGRCxXQUFZLGlCQUFpQjtJQUMzQix3Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2ZuID0gcmVxdWlyZShcIkBhd3MtY2RrL2F3cy1jbG91ZGZvcm1hdGlvblwiKTtcbmltcG9ydCBsYW1iZGEgPSByZXF1aXJlKFwiQGF3cy1jZGsvYXdzLWxhbWJkYVwiKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKFwiQGF3cy1jZGsvY29yZVwiKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKFwiQGF3cy1jZGsvYXdzLWlhbVwiKTtcbmltcG9ydCB7IFVzZXJQb29sLCBVc2VyUG9vbENsaWVudCB9IGZyb20gXCJAYXdzLWNkay9hd3MtY29nbml0b1wiO1xuXG5leHBvcnQgY2xhc3MgVXNlclBvb2xDbGllbnRTZXR0aW5ncyBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG4gIHB1YmxpYyByZWFkb25seSByZXNwb25zZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZG9tYWluOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjZGsuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFVzZXJQb29sQ2xpZW50U2V0dGluZ3NQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJ1c2VyUG9vbENsaWVudEludGVncmF0aW9uLXJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFdyaXRlQ2xvdWRXYXRjaExvZ3M6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwibG9nczpDcmVhdGVMb2dHcm91cFwiLFxuICAgICAgICAgICAgICAgIFwibG9nczpDcmVhdGVMb2dTdHJlYW1cIixcbiAgICAgICAgICAgICAgICBcImxvZ3M6UHV0TG9nRXZlbnRzXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCJhcm46YXdzOmxvZ3M6KjoqOipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgVXBkYXRlVXNlclBvb2xDbGllbnQ6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wiY29nbml0by1pZHA6VXBkYXRlVXNlclBvb2xDbGllbnRcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiYXJuOmF3czpjb2duaXRvLWlkcDoqOio6dXNlcnBvb2wvKlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBNYW5hZ2VVc2VyUG9vbERvbWFpbjogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJjb2duaXRvLWlkcDpDcmVhdGVVc2VyUG9vbERvbWFpblwiLFxuICAgICAgICAgICAgICAgIFwiY29nbml0by1pZHA6RGVsZXRlVXNlclBvb2xEb21haW5cIixcbiAgICAgICAgICAgICAgICBcImNvZ25pdG8taWRwOkRlc2NyaWJlVXNlclBvb2xEb21haW5cIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcImFybjphd3M6Y29nbml0by1pZHA6KjoqOnVzZXJwb29sLypcIl1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJjb2duaXRvLWlkcDpEZXNjcmliZVVzZXJQb29sRG9tYWluXCJcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIEludm9rZUxhbWJkYUZ1bmN0aW9uOiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcImxhbWJkYTpJbnZva2VGdW5jdGlvblwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCJhcm46YXdzOmxhbWJkYToqOio6ZnVuY3Rpb246KlwiXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgbGFtYmRhUHJvcHM6IExhbWJkYVByb3BzID0ge1xuICAgICAgZG9tYWluOiBwcm9wcy5kb21haW4sXG4gICAgICB1c2VyUG9vbElkOiBwcm9wcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgdXNlclBvb2xDbGllbnRJZDogcHJvcHMudXNlclBvb2xDbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICAgIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBwcm9wcy5zdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVycy5qb2luKFwiLFwiKSxcbiAgICAgIGNhbGxiYWNrVVJMczogcHJvcHMuY2FsbGJhY2tVUkxzLmpvaW4oXCIsXCIpLFxuICAgICAgbG9nb3V0VVJMczogcHJvcHMubG9nb3V0VVJMcy5qb2luKFwiLFwiKSxcbiAgICAgIGFsbG93ZWRPQXV0aEZsb3dzVXNlclBvb2xDbGllbnQ6IHByb3BzLmFsbG93ZWRPQXV0aEZsb3dzVXNlclBvb2xDbGllbnQudG9TdHJpbmcoKSxcbiAgICAgIGFsbG93ZWRPQXV0aEZsb3dzOiBwcm9wcy5hbGxvd2VkT0F1dGhGbG93cy5qb2luKFwiLFwiKSxcbiAgICAgIGFsbG93ZWRPQXV0aFNjb3BlczogcHJvcHMuYWxsb3dlZE9BdXRoU2NvcGVzLmpvaW4oXCIsXCIpXG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRSZXNwb25zZSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJ1c2VyUG9vbENsaWVudEludGVncmF0aW9uLXNlbmRSZXNwb25zZUxhbWJkYVwiLFxuICAgICAge1xuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLkFzc2V0Q29kZShcbiAgICAgICAgICBcIi4vbm9kZV9tb2R1bGVzL0BzbWl0aGVyL2F3cy11c2VyLXBvb2wtY2xpZW50LXNldHRpbmdzL2xpYi9DbG91ZEZvcm1hdGlvblNlbmRSZXNwb25zZVwiXG4gICAgICAgICksXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogYCR7dGhpcy5zdGFjay5zdGFja05hbWV9LUNsb3VkRm9ybWF0aW9uU2VuZFJlc3BvbnNlYCxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMF9YLFxuICAgICAgICByb2xlOiByb2xlLFxuICAgICAgICBlbnZpcm9ubWVudDogbGFtYmRhUHJvcHMgYXMgT2JqZWN0IGFzIHtba2V5OnN0cmluZ106c3RyaW5nfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBjb2duaXRvVXNlclBvb2xDbGllbnRTZXR0aW5ncyA9IG5ldyBjZm4uQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJ1c2VyUG9vbENsaWVudEludGVncmF0aW9uLWNvZ25pdG9Vc2VyUG9vbENsaWVudFNldHRpbmdzXCIsXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGVyOiBjZm4uQ3VzdG9tUmVzb3VyY2VQcm92aWRlci5sYW1iZGEoXG4gICAgICAgICAgbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBcInVzZXJQb29sQ2xpZW50SW50ZWdyYXRpb24tY29nbml0b1VzZXJQb29sQ2xpZW50U2V0dGluZ3NMYW1iZGFcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29kZTogbmV3IGxhbWJkYS5Bc3NldENvZGUoXG4gICAgICAgICAgICAgICAgXCIuL25vZGVfbW9kdWxlcy9Ac21pdGhlci9hd3MtdXNlci1wb29sLWNsaWVudC1zZXR0aW5ncy9saWIvVXNlclBvb2xJbnRlZ3JhdGlvblwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGhhbmRsZXI6IFwiQ2xpZW50U2V0dGluZ3MuaGFuZGxlclwiLFxuICAgICAgICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTBfWCxcbiAgICAgICAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgICAgICAgdXVpZDogXCI0MDUxZDQ0Ni02OWJmLTRkYzYtOTBhOS1kMjgxMzVhN2NhM2JcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgcHJvcGVydGllczogbGFtYmRhUHJvcHNcbiAgICAgIH1cbiAgICApO1xuICAgIGNvZ25pdG9Vc2VyUG9vbENsaWVudFNldHRpbmdzLm5vZGUuYWRkRGVwZW5kZW5jeShzZW5kUmVzcG9uc2UpO1xuXG4gICAgY29uc3QgY29nbml0b1VzZXJQb29sRG9tYWluID0gbmV3IGNmbi5DdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBcInVzZXJQb29sQ2xpZW50SW50ZWdyYXRpb24tY29nbml0b1VzZXJQb29sRG9tYWluXCIsXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGVyOiBjZm4uQ3VzdG9tUmVzb3VyY2VQcm92aWRlci5sYW1iZGEoXG4gICAgICAgICAgbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBcInVzZXJQb29sQ2xpZW50SW50ZWdyYXRpb24tY29nbml0b1VzZXJQb29sRG9tYWluTGFtYmRhXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvZGU6IG5ldyBsYW1iZGEuQXNzZXRDb2RlKFxuICAgICAgICAgICAgICAgIFwiLi9ub2RlX21vZHVsZXMvQHNtaXRoZXIvYXdzLXVzZXItcG9vbC1jbGllbnQtc2V0dGluZ3MvbGliL1VzZXJQb29sSW50ZWdyYXRpb25cIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBcIkRvbWFpbi5oYW5kbGVyXCIsXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICAgICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMF9YLFxuICAgICAgICAgICAgICByb2xlOiByb2xlLFxuICAgICAgICAgICAgICBlbnZpcm9ubWVudDogbGFtYmRhUHJvcHMgYXMgT2JqZWN0IGFzIHtba2V5OnN0cmluZ106c3RyaW5nfSxcbiAgICAgICAgICAgICAgdXVpZDogXCI3NGZhMDZlZi1hNmM2LTQ3YzAtOTRiMi00ZWYzMGNhMzk4NTFcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgcHJvcGVydGllczogbGFtYmRhUHJvcHNcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuZG9tYWluPWBodHRwczovLyR7cHJvcHMuZG9tYWlufS5hdXRoLiR7dGhpcy5zdGFjay5yZWdpb259LmFtYXpvbmNvZ25pdG8uY29tYFxuICAgIGNvZ25pdG9Vc2VyUG9vbERvbWFpbi5ub2RlLmFkZERlcGVuZGVuY3koc2VuZFJlc3BvbnNlKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyUG9vbENsaWVudFNldHRpbmdzUHJvcHMge1xuICBkb21haW46IHN0cmluZztcbiAgdXNlclBvb2w6IFVzZXJQb29sO1xuICB1c2VyUG9vbENsaWVudDogVXNlclBvb2xDbGllbnQ7XG4gIHN1cHBvcnRlZElkZW50aXR5UHJvdmlkZXJzOiBJZGVudGl0eVByb3ZpZGVyc1tdO1xuICBjYWxsYmFja1VSTHM6IHN0cmluZ1tdO1xuICBsb2dvdXRVUkxzOiBzdHJpbmdbXTtcbiAgYWxsb3dlZE9BdXRoRmxvd3NVc2VyUG9vbENsaWVudDogYm9vbGVhbjtcbiAgYWxsb3dlZE9BdXRoRmxvd3M6IHN0cmluZ1tdO1xuICBhbGxvd2VkT0F1dGhTY29wZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZW51bSBJZGVudGl0eVByb3ZpZGVycyB7XG4gIFwiQ09HTklUT1wiPVwiQ09HTklUT1wiXG59XG5cbmludGVyZmFjZSBMYW1iZGFQcm9wcyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyUG9vbElkOiBzdHJpbmc7XG4gIHVzZXJQb29sQ2xpZW50SWQ6IHN0cmluZztcbiAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IHN0cmluZztcbiAgY2FsbGJhY2tVUkxzOiBzdHJpbmc7XG4gIGxvZ291dFVSTHM6IHN0cmluZztcbiAgYWxsb3dlZE9BdXRoRmxvd3NVc2VyUG9vbENsaWVudDogc3RyaW5nO1xuICBhbGxvd2VkT0F1dGhGbG93czogc3RyaW5nO1xuICBhbGxvd2VkT0F1dGhTY29wZXM6IHN0cmluZztcbn1cbiJdfQ==