UNPKG

raindancers-network

Version:
72 lines 16.1 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PermissionSet = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const assignment_1 = require("./assignment"); const permissionset_common_1 = require("./private/permissionset-common"); /** * The base permission set class */ class PermissionSetBase extends aws_cdk_lib_1.Resource { grant(id, assignmentOptions) { return new assignment_1.Assignment(this, id, { permissionSet: this, principal: assignmentOptions.principal, targetId: assignmentOptions.targetId, targetType: assignmentOptions.targetType, }); } } ; class PermissionSet extends PermissionSetBase { constructor(scope, id, props) { super(scope, id); let managedPolicies = []; if (props.awsManagedPolicies) { managedPolicies = props.awsManagedPolicies.map(policy => policy.managedPolicyArn); } if (!props.ssoInstanceArn.match(/arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance\/(sso)?ins-[a-zA-Z0-9-.]{16}/)) { throw new Error(`Invalid SSO instance ARN: ${props.ssoInstanceArn}`); } if (!props.name.match(/[\w+=,.@-]+/)) { throw new Error(`Invalid permission set name. Name may only contain alphanumeric characters and any of: +=,.@-: ${props.name}`); } if (props.relayStateType && !props.relayStateType.match(/[a-zA-Z0-9&$@#\\\/%?=~\-_'"|!:,.;*+\[\]\ \(\)\{\}]+/)) { throw new Error(`Invalid relay state type: ${props.relayStateType}`); } this.cfnPermissionSet = new aws_cdk_lib_1.aws_sso.CfnPermissionSet(this, 'permissionSet', { instanceArn: props.ssoInstanceArn, name: props.name, customerManagedPolicyReferences: props.customerManagedPolicyReferences, description: props.description, inlinePolicy: props.inlinePolicy, managedPolicies, permissionsBoundary: props.permissionsBoundary, relayStateType: props.relayStateType, sessionDuration: props.sessionDuration ? props.sessionDuration.toIsoString() : undefined, }); this.ssoInstanceArn = props.ssoInstanceArn; this.permissionSetArn = this.cfnPermissionSet.attrPermissionSetArn; } /** * Reference an existing permission set by ARN */ static fromPermissionSetArn(scope, id, permissionSetArn) { class Import extends PermissionSetBase { constructor() { super(...arguments); this.permissionSetArn = permissionSetArn; this.ssoInstanceArn = `arn:aws:sso:::instance/${permissionset_common_1.permissionSetParseArn(permissionSetArn).resourceName.split('/')[0]}`; } } ; const permissionSet = new Import(scope, id); return permissionSet; } } exports.PermissionSet = PermissionSet; _a = JSII_RTTI_SYMBOL_1; PermissionSet[_a] = { fqn: "raindancers-network.sso.PermissionSet", version: "1.29.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc28vcGVybWlzc2lvbnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQU1xQjtBQUVyQiw2Q0FBNkQ7QUFDN0QseUVBQXVFO0FBNkJ2RTs7S0FFSztBQUNMLE1BQWUsaUJBQWtCLFNBQVEsc0JBQVE7SUFJeEMsS0FBSyxDQUFDLEVBQVUsRUFBRSxpQkFBb0M7UUFDNUQsT0FBTyxJQUFJLHVCQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUM3QixhQUFhLEVBQUUsSUFBSTtZQUNuQixTQUFTLEVBQUUsaUJBQWlCLENBQUMsU0FBUztZQUN0QyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtZQUNwQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsVUFBVTtTQUMxQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFBQSxDQUFDO0FBa0dGLE1BQWEsYUFBYyxTQUFRLGlCQUFpQjtJQThCbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNsRSxLQUFLLENBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksZUFBZSxHQUFhLEVBQUUsQ0FBQztRQUNuQyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixlQUFlLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3BGO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDJGQUEyRixDQUFDLEVBQUU7WUFDM0gsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrR0FBa0csS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEk7UUFFRCxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxFQUFFO1lBQzdHLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUkscUJBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ3JFLFdBQVcsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNqQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsK0JBQStCLEVBQUUsS0FBSyxDQUFDLCtCQUErQjtZQUN0RSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGVBQWU7WUFDZixtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1lBQzlDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNwQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUMxRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztJQUNwRSxDQUFDO0lBL0REOztTQUVFO0lBQ0ssTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLGdCQUF3QjtRQUN4RixNQUFNLE1BQU8sU0FBUSxpQkFBaUI7WUFBdEM7O2dCQUNtQixxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDcEMsbUJBQWMsR0FBRywwQkFBMEIsNENBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEksQ0FBQztTQUFBO1FBQUEsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1QyxPQUFPLGFBQWEsQ0FBQztJQUN0QixDQUFDOztBQWJILHNDQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19zc28gYXMgc3NvLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgSVJlc291cmNlLFxuICBSZXNvdXJjZSxcbiAgRHVyYXRpb24sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXNzaWdubWVudCwgQXNzaWdubWVudE9wdGlvbnMgfSBmcm9tICcuL2Fzc2lnbm1lbnQnO1xuaW1wb3J0IHsgcGVybWlzc2lvblNldFBhcnNlQXJuIH0gZnJvbSAnLi9wcml2YXRlL3Blcm1pc3Npb25zZXQtY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2UgZXh0ZW5kcyBzc28uQ2ZuUGVybWlzc2lvblNldC5DdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VQcm9wZXJ0eSB7fVxuZXhwb3J0IGludGVyZmFjZSBQZXJtaXNzaW9uQm91bmRhcnkgZXh0ZW5kcyBzc28uQ2ZuUGVybWlzc2lvblNldC5QZXJtaXNzaW9uc0JvdW5kYXJ5UHJvcGVydHkge31cblxuLyoqXG4gICAqIFRoZSByZXNvdXJjZSBpbnRlcmZhY2UgZm9yIGFuIEFXUyBTU08gcGVybWlzc2lvbiBzZXQuXG4gICAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGVybWlzc2lvblNldCBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuXHQgKiBUaGUgcGVybWlzc2lvbiBzZXQgQVJOIG9mIHRoZSBwZXJtaXNzaW9uIHNldC4gU3VjaCBhc1xuXHQgKiBgYXJuOmF3czpzc286OjpwZXJtaXNzaW9uU2V0L2lucy1pbnN0YW5jZWlkL3BzLXBlcm1pc3Npb25zZXRpZGAuXG5cdCAqXG5cdCAqIEBhdHRyaWJ1dGVcblx0ICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25TZXRBcm46IHN0cmluZztcblxuICAvKipcblx0ICogVGhlIFNTTyBpbnN0YW5jZSBBUk4gb2YgdGhlIHBlcm1pc3Npb24gc2V0LlxuXHQgKi9cbiAgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZztcblxuICAvKipcblx0ICogR3JhbnQgdGhpcyBwZXJtaXNzaW9uIHNldCB0byBhIGdpdmVuIHByaW5jaXBhbCBmb3IgYSBnaXZlblxuXHQgKiB0YXJnZXRJZCAoQVdTIGFjY291bnQgaWRlbnRpZmllcikgb24gYSBnaXZlbiBTU08gaW5zdGFuY2UuXG5cdCAqL1xuICBncmFudChpZDogc3RyaW5nLCBhc3NpZ25tZW50T3B0aW9uczogQXNzaWdubWVudE9wdGlvbnMpOiBBc3NpZ25tZW50O1xufVxuXG4vKipcbiAgICogVGhlIGJhc2UgcGVybWlzc2lvbiBzZXQgY2xhc3NcbiAgICovXG5hYnN0cmFjdCBjbGFzcyBQZXJtaXNzaW9uU2V0QmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVBlcm1pc3Npb25TZXQge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZztcblxuICBwdWJsaWMgZ3JhbnQoaWQ6IHN0cmluZywgYXNzaWdubWVudE9wdGlvbnM6IEFzc2lnbm1lbnRPcHRpb25zKTogQXNzaWdubWVudCB7XG5cdCAgcmV0dXJuIG5ldyBBc3NpZ25tZW50KHRoaXMsIGlkLCB7XG4gICAgICBwZXJtaXNzaW9uU2V0OiB0aGlzLFxuICAgICAgcHJpbmNpcGFsOiBhc3NpZ25tZW50T3B0aW9ucy5wcmluY2lwYWwsXG4gICAgICB0YXJnZXRJZDogYXNzaWdubWVudE9wdGlvbnMudGFyZ2V0SWQsXG4gICAgICB0YXJnZXRUeXBlOiBhc3NpZ25tZW50T3B0aW9ucy50YXJnZXRUeXBlLFxuXHQgIH0pO1xuICB9XG59O1xuXG4vKipcbiAgICogQXR0cmlidXRlcyBmb3IgYSBwZXJtaXNzaW9uIHNldFxuICAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvblNldEF0dHJpYnV0ZXMge1xuICAvKipcblx0ICogVGhlIHBlcm1pc3Npb24gc2V0IEFSTiBvZiB0aGUgcGVybWlzc2lvbiBzZXQuIFN1Y2ggYXNcblx0ICogYGFybjphd3M6c3NvOjo6cGVybWlzc2lvblNldC9pbnMtaW5zdGFuY2VpZC9wcy1wZXJtaXNzaW9uc2V0aWRgLlxuXHQgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuXG4gIC8qKlxuXHQgKiBUaGUgU1NPIGluc3RhbmNlIEFSTiBvZiB0aGUgcGVybWlzc2lvbiBzZXQuXG5cdCAqL1xuICByZWFkb25seSBzc29JbnN0YW5jZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAgICogVGhlIHByb3BlcnRpZXMgb2YgYSBuZXcgcGVybWlzc2lvbiBzZXRcbiAgICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25TZXRQcm9wcyB7XG4gIC8qKlxuXHQgKiBUaGUgQVJOIG9mIHRoZSBTU08gaW5zdGFuY2UgdW5kZXIgd2hpY2ggdGhlIG9wZXJhdGlvbiB3aWxsIGJlIGV4ZWN1dGVkLlxuXHQgKi9cbiAgcmVhZG9ubHkgc3NvSW5zdGFuY2VBcm46IHN0cmluZztcbiAgLyoqXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBwZXJtaXNzaW9uIHNldC5cblx0ICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgbmFtZXMgYW5kIHBhdGhzIG9mIGEgY3VzdG9tZXIgbWFuYWdlZCBwb2xpY3kuXG5cdCAqIFlvdSBtdXN0IGhhdmUgYW4gSUFNIHBvbGljeSB0aGF0IG1hdGNoZXMgdGhlIG5hbWUgYW5kIHBhdGggaW4gZWFjaFxuXHQgKiBBV1MgYWNjb3VudCB3aGVyZSB5b3Ugd2FudCB0byBkZXBsb3kgeW91ciBwZXJtaXNzaW9uIHNldC5cblx0ICpcblx0ICogQGRlZmF1bHQgLSBObyBjdXN0b21lciBtYW5hZ2VkIHBvbGljaWVzXG5cdCAqL1xuICByZWFkb25seSBjdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzPzogQ3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlW107XG4gIC8qKlxuXHQgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGBQZXJtaXNzaW9uU2V0YC5cblx0ICpcblx0ICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuXHQgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuXHQgKiBUaGUgSUFNIGlubGluZSBwb2xpY3kgdGhhdCBpcyBhdHRhY2hlZCB0byB0aGUgcGVybWlzc2lvbiBzZXQuXG5cdCAqXG5cdCAqIEBkZWZhdWx0IC0gTm8gaW5saW5lIHBvbGljeVxuXHQgKi9cbiAgcmVhZG9ubHkgaW5saW5lUG9saWN5PzogaWFtLlBvbGljeURvY3VtZW50O1xuICAvKipcblx0ICogVGhlIEFXUyBtYW5hZ2VkIHBvbGljaWVzIHRvIGF0dGFjaCB0byB0aGUgYFBlcm1pc3Npb25TZXRgLlxuXHQgKlxuXHQgKiBAZGVmYXVsdCAtIE5vIEFXUyBtYW5hZ2VkIHBvbGljaWVzXG5cdCAqL1xuICByZWFkb25seSBhd3NNYW5hZ2VkUG9saWNpZXM/OiBpYW0uSU1hbmFnZWRQb2xpY3lbXTtcbiAgLyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgQVdTIG1hbmFnZWQgb3IgY3VzdG9tZXIgbWFuYWdlZFxuXHQgKiBwb2xpY3kgdGhhdCB5b3Ugd2FudCB0byBzZXQgYXMgYSBwZXJtaXNzaW9ucyBib3VuZGFyeS4gU3BlY2lmeSBlaXRoZXJcblx0ICogY3VzdG9tZXJNYW5hZ2VkUG9saWN5UmVmZXJlbmNlIHRvIHVzZSB0aGUgbmFtZSBhbmQgcGF0aCBvZiBhIGN1c3RvbWVyXG5cdCAqIG1hbmFnZWQgcG9saWN5LCBvciBtYW5hZ2VkUG9saWN5IHRvIHVzZSB0aGUgQVJOIG9mIGFuIEFXUyBtYW5hZ2VkXG5cdCAqIHBvbGljeS5cblx0ICpcblx0ICogQSBwZXJtaXNzaW9ucyBib3VuZGFyeSByZXByZXNlbnRzIHRoZSBtYXhpbXVtIHBlcm1pc3Npb25zIHRoYXQgYW55XG5cdCAqIHBvbGljeSBjYW4gZ3JhbnQgeW91ciByb2xlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFBlcm1pc3Npb25zIGJvdW5kYXJpZXNcblx0ICogZm9yIElBTSBlbnRpdGllcyBpbiB0aGUgQVdTIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCBVc2VyIEd1aWRlLlxuXHQgKlxuXHQgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9hY2Nlc3NfcG9saWNpZXNfYm91bmRhcmllcy5odG1sXG5cdCAqXG5cdCAqIEBkZWZhdWx0IC0gTm8gcGVybWlzc2lvbnMgYm91bmRhcnlcblx0ICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zQm91bmRhcnk/OiBQZXJtaXNzaW9uQm91bmRhcnk7XG4gIC8qKlxuXHQgKiBVc2VkIHRvIHJlZGlyZWN0IHVzZXJzIHdpdGhpbiB0aGUgYXBwbGljYXRpb24gZHVyaW5nIHRoZSBmZWRlcmF0aW9uXG5cdCAqIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuXG5cdCAqXG5cdCAqIEJ5IGRlZmF1bHQsIHdoZW4gYSB1c2VyIHNpZ25zIGludG8gdGhlIEFXUyBhY2Nlc3MgcG9ydGFsLCBjaG9vc2VzIGFuIGFjY291bnQsXG5cdCAqIGFuZCB0aGVuIGNob29zZXMgdGhlIHJvbGUgdGhhdCBBV1MgY3JlYXRlcyBmcm9tIHRoZSBhc3NpZ25lZCBwZXJtaXNzaW9uIHNldCxcblx0ICogSUFNIElkZW50aXR5IENlbnRlciByZWRpcmVjdHMgdGhlIHVzZXLigJlzIGJyb3dzZXIgdG8gdGhlIEFXUyBNYW5hZ2VtZW50IENvbnNvbGUuXG5cdCAqXG5cdCAqIFlvdSBjYW4gY2hhbmdlIHRoaXMgYmVoYXZpb3IgYnkgc2V0dGluZyB0aGUgcmVsYXkgc3RhdGUgdG8gYSBkaWZmZXJlbnQgY29uc29sZVxuXHQgKiBVUkwuIFNldHRpbmcgdGhlIHJlbGF5IHN0YXRlIGVuYWJsZXMgeW91IHRvIHByb3ZpZGUgdGhlIHVzZXIgd2l0aCBxdWljayBhY2Nlc3Ncblx0ICogdG8gdGhlIGNvbnNvbGUgdGhhdCBpcyBtb3N0IGFwcHJvcHJpYXRlIGZvciB0aGVpciByb2xlLiBGb3IgZXhhbXBsZSwgeW91IGNhblxuXHQgKiBzZXQgdGhlIHJlbGF5IHN0YXRlIHRvIHRoZSBBbWF6b24gRUMyIGNvbnNvbGUgVVJMIChodHRwczovL2NvbnNvbGUuYXdzLmFtYXpvbi5jb20vZWMyLylcblx0ICogdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhhdCBjb25zb2xlIHdoZW4gdGhleSBjaG9vc2UgdGhlIEFtYXpvbiBFQzJcblx0ICogYWRtaW5pc3RyYXRvciByb2xlLlxuXHQgKlxuXHQgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zaW5nbGVzaWdub24vbGF0ZXN0L3VzZXJndWlkZS9ob3d0b3Blcm1yZWxheXN0YXRlLmh0bWxcblx0ICpcblx0ICogQGRlZmF1bHQgLSBObyByZWRpcmVjdGlvblxuXHQgKi9cbiAgcmVhZG9ubHkgcmVsYXlTdGF0ZVR5cGU/OiBzdHJpbmc7XG4gIC8qKlxuXHQgKiBUaGUgbGVuZ3RoIG9mIHRpbWUgdGhhdCB0aGUgYXBwbGljYXRpb24gdXNlciBzZXNzaW9ucyBhcmUgdmFsaWQgZm9yLlxuXHQgKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbkR1cmF0aW9uPzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uU2V0IGV4dGVuZHMgUGVybWlzc2lvblNldEJhc2Uge1xuICAvKipcblx0ICogUmVmZXJlbmNlIGFuIGV4aXN0aW5nIHBlcm1pc3Npb24gc2V0IGJ5IEFSTlxuXHQgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUGVybWlzc2lvblNldEFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwZXJtaXNzaW9uU2V0QXJuOiBzdHJpbmcpOiBJUGVybWlzc2lvblNldCB7XG5cdCAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUGVybWlzc2lvblNldEJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHBlcm1pc3Npb25TZXRBcm4gPSBwZXJtaXNzaW9uU2V0QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHNzb0luc3RhbmNlQXJuID0gYGFybjphd3M6c3NvOjo6aW5zdGFuY2UvJHtwZXJtaXNzaW9uU2V0UGFyc2VBcm4ocGVybWlzc2lvblNldEFybikucmVzb3VyY2VOYW1lIS5zcGxpdCgnLycpWzBdfWA7XG5cdCAgfTtcblxuXHQgIGNvbnN0IHBlcm1pc3Npb25TZXQgPSBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG5cblx0ICByZXR1cm4gcGVybWlzc2lvblNldDtcbiAgfVxuXG4gIC8qKlxuXHQgKiBUaGUgdW5kZXJseWluZyBDZm5QZXJtaXNzaW9uU2V0IHJlc291cmNlXG5cdCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2ZuUGVybWlzc2lvblNldDogc3NvLkNmblBlcm1pc3Npb25TZXQ7XG5cbiAgLyoqXG5cdCAqIFRoZSBwZXJtaXNzaW9uIHNldCBBUk4gb2YgdGhlIHBlcm1pc3Npb24gc2V0LlxuXHQgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlcm1pc3Npb25TZXRBcm46IHN0cmluZztcblxuICAvKipcblx0ICogVGhlIFNTTyBpbnN0YW5jZSB0aGUgcGVybWlzc2lvbiBzZXQgYmVsb25ncyB0b1xuXHQgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNzb0luc3RhbmNlQXJuOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBlcm1pc3Npb25TZXRQcm9wcykge1xuXHQgIHN1cGVyIChzY29wZSwgaWQpO1xuXG5cdCAgbGV0IG1hbmFnZWRQb2xpY2llczogc3RyaW5nW10gPSBbXTtcblx0ICBpZiAocHJvcHMuYXdzTWFuYWdlZFBvbGljaWVzKSB7XG4gICAgICBtYW5hZ2VkUG9saWNpZXMgPSBwcm9wcy5hd3NNYW5hZ2VkUG9saWNpZXMubWFwKHBvbGljeSA9PiBwb2xpY3kubWFuYWdlZFBvbGljeUFybik7XG5cdCAgfVxuXG5cdCAgaWYgKCFwcm9wcy5zc29JbnN0YW5jZUFybi5tYXRjaCgvYXJuOihhd3N8YXdzLXVzLWdvdnxhd3MtY258YXdzLWlzb3xhd3MtaXNvLWIpOnNzbzo6Omluc3RhbmNlXFwvKHNzbyk/aW5zLVthLXpBLVowLTktLl17MTZ9LykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBTU08gaW5zdGFuY2UgQVJOOiAke3Byb3BzLnNzb0luc3RhbmNlQXJufWApO1xuXHQgIH1cblxuXHQgIGlmICghcHJvcHMubmFtZS5tYXRjaCgvW1xcdys9LC5ALV0rLykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwZXJtaXNzaW9uIHNldCBuYW1lLiBOYW1lIG1heSBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGFueSBvZjogKz0sLkAtOiAke3Byb3BzLm5hbWV9YCk7XG5cdCAgfVxuXG5cdCAgaWYgKHByb3BzLnJlbGF5U3RhdGVUeXBlICYmICFwcm9wcy5yZWxheVN0YXRlVHlwZS5tYXRjaCgvW2EtekEtWjAtOSYkQCNcXFxcXFwvJT89flxcLV8nXCJ8ITosLjsqK1xcW1xcXVxcIFxcKFxcKVxce1xcfV0rLykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZWxheSBzdGF0ZSB0eXBlOiAke3Byb3BzLnJlbGF5U3RhdGVUeXBlfWApO1xuXHQgIH1cblxuXHQgIHRoaXMuY2ZuUGVybWlzc2lvblNldCA9IG5ldyBzc28uQ2ZuUGVybWlzc2lvblNldCh0aGlzLCAncGVybWlzc2lvblNldCcsIHtcbiAgICAgIGluc3RhbmNlQXJuOiBwcm9wcy5zc29JbnN0YW5jZUFybixcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBjdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzOiBwcm9wcy5jdXN0b21lck1hbmFnZWRQb2xpY3lSZWZlcmVuY2VzLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgaW5saW5lUG9saWN5OiBwcm9wcy5pbmxpbmVQb2xpY3ksXG4gICAgICBtYW5hZ2VkUG9saWNpZXMsXG4gICAgICBwZXJtaXNzaW9uc0JvdW5kYXJ5OiBwcm9wcy5wZXJtaXNzaW9uc0JvdW5kYXJ5LFxuICAgICAgcmVsYXlTdGF0ZVR5cGU6IHByb3BzLnJlbGF5U3RhdGVUeXBlLFxuICAgICAgc2Vzc2lvbkR1cmF0aW9uOiBwcm9wcy5zZXNzaW9uRHVyYXRpb24gPyBwcm9wcy5zZXNzaW9uRHVyYXRpb24udG9Jc29TdHJpbmcoKSA6IHVuZGVmaW5lZCxcblx0ICB9KTtcblxuXHQgIHRoaXMuc3NvSW5zdGFuY2VBcm4gPSBwcm9wcy5zc29JbnN0YW5jZUFybjtcblx0ICB0aGlzLnBlcm1pc3Npb25TZXRBcm4gPSB0aGlzLmNmblBlcm1pc3Npb25TZXQuYXR0clBlcm1pc3Npb25TZXRBcm47XG4gIH1cbn0iXX0=