awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
169 lines • 24.7 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnDatabaseUser = exports.ScopeDefinitionType = exports.CfnDatabaseUserPropsX509Type = exports.CfnDatabaseUserPropsLdapAuthType = exports.CfnDatabaseUserPropsAwsiamType = void 0;
exports.toJson_CfnDatabaseUserProps = toJson_CfnDatabaseUserProps;
exports.toJson_LabelDefinition = toJson_LabelDefinition;
exports.toJson_RoleDefinition = toJson_RoleDefinition;
exports.toJson_ScopeDefinition = toJson_ScopeDefinition;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnDatabaseUserProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnDatabaseUserProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
DeleteAfterDate: obj.deleteAfterDate,
AWSIAMType: obj.awsiamType,
DatabaseName: obj.databaseName,
Description: obj.description,
Labels: obj.labels?.map((y) => toJson_LabelDefinition(y)),
LdapAuthType: obj.ldapAuthType,
X509Type: obj.x509Type,
Password: obj.password,
ProjectId: obj.projectId,
Roles: obj.roles?.map((y) => toJson_RoleDefinition(y)),
Scopes: obj.scopes?.map((y) => toJson_ScopeDefinition(y)),
Username: obj.username,
Profile: obj.profile,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* Human-readable label that indicates whether the new database user authenticates with the Amazon Web Services (AWS) Identity and Access Management (IAM) credentials associated with the user or the user's role. Default value is `NONE`.
*
* @schema CfnDatabaseUserPropsAwsiamType
*/
var CfnDatabaseUserPropsAwsiamType;
(function (CfnDatabaseUserPropsAwsiamType) {
/** NONE */
CfnDatabaseUserPropsAwsiamType["NONE"] = "NONE";
/** USER */
CfnDatabaseUserPropsAwsiamType["USER"] = "USER";
/** ROLE */
CfnDatabaseUserPropsAwsiamType["ROLE"] = "ROLE";
})(CfnDatabaseUserPropsAwsiamType || (exports.CfnDatabaseUserPropsAwsiamType = CfnDatabaseUserPropsAwsiamType = {}));
/**
* Converts an object of type 'LabelDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_LabelDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Key: obj.key,
Value: obj.value,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* Method by which the provided username is authenticated. Default value is `NONE`.
*
* @schema CfnDatabaseUserPropsLdapAuthType
*/
var CfnDatabaseUserPropsLdapAuthType;
(function (CfnDatabaseUserPropsLdapAuthType) {
/** NONE */
CfnDatabaseUserPropsLdapAuthType["NONE"] = "NONE";
/** USER */
CfnDatabaseUserPropsLdapAuthType["USER"] = "USER";
/** GROUP */
CfnDatabaseUserPropsLdapAuthType["GROUP"] = "GROUP";
})(CfnDatabaseUserPropsLdapAuthType || (exports.CfnDatabaseUserPropsLdapAuthType = CfnDatabaseUserPropsLdapAuthType = {}));
/**
* Method that briefs who owns the certificate provided. Default value is `NONE`.
*
* @schema CfnDatabaseUserPropsX509Type
*/
var CfnDatabaseUserPropsX509Type;
(function (CfnDatabaseUserPropsX509Type) {
/** NONE */
CfnDatabaseUserPropsX509Type["NONE"] = "NONE";
/** MANAGED */
CfnDatabaseUserPropsX509Type["MANAGED"] = "MANAGED";
/** CUSTOMER */
CfnDatabaseUserPropsX509Type["CUSTOMER"] = "CUSTOMER";
})(CfnDatabaseUserPropsX509Type || (exports.CfnDatabaseUserPropsX509Type = CfnDatabaseUserPropsX509Type = {}));
/**
* Converts an object of type 'RoleDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_RoleDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
CollectionName: obj.collectionName,
DatabaseName: obj.databaseName,
RoleName: obj.roleName,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ScopeDefinition' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ScopeDefinition(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Name: obj.name,
Type: obj.type,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, quote-props */
/**
* @schema ScopeDefinitionType
*/
var ScopeDefinitionType;
(function (ScopeDefinitionType) {
/** CLUSTER */
ScopeDefinitionType["CLUSTER"] = "CLUSTER";
/** DATA_LAKE */
ScopeDefinitionType["DATA_LAKE"] = "DATA_LAKE";
})(ScopeDefinitionType || (exports.ScopeDefinitionType = ScopeDefinitionType = {}));
/**
* A CloudFormation `MongoDB::Atlas::DatabaseUser`
*
* @cloudformationResource MongoDB::Atlas::DatabaseUser
* @stability external
*/
class CfnDatabaseUser extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::DatabaseUser`.
*
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/
constructor(scope, id, props) {
super(scope, id, {
type: CfnDatabaseUser.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnDatabaseUserProps(props),
});
this.props = props;
this.attrUserCFNIdentifier = cdk.Token.asString(this.getAtt("UserCFNIdentifier"));
}
}
exports.CfnDatabaseUser = CfnDatabaseUser;
_a = JSII_RTTI_SYMBOL_1;
CfnDatabaseUser[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnDatabaseUser", version: "3.13.1" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnDatabaseUser.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::DatabaseUser";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL2RhdGFiYXNlLXVzZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQTBHQSxrRUEwQkM7QUFvQ0Qsd0RBZUM7QUF1REQsc0RBZ0JDO0FBc0JELHdEQWVDOztBQW5TRCwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBcUduQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiwyQkFBMkIsQ0FDekMsR0FBcUM7SUFFckMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHO1FBQ2IsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlO1FBQ3BDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtRQUMxQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN0QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztR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O1FBRTNCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLGVBQWUsQ0FBQyxzQkFBc0I7WUFDNUMsVUFBVSxFQUFFLDJCQUEyQixDQUFDLEtBQUssQ0FBRTtTQUNoRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMscUJBQXFCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FDakMsQ0FBQztJQUNKLENBQUM7O0FBdkNILDBDQXdDQzs7O0FBdkNDOztHQUVHO0FBQ29CLHNDQUFzQixHQUMzQyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogUmV0dXJucywgYWRkcywgZWRpdHMsIGFuZCByZW1vdmVzIGRhdGFiYXNlIHVzZXJzLlxuICpcbiAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5EYXRhYmFzZVVzZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBEYXRlIGFuZCB0aW1lIHdoZW4gTW9uZ29EQiBDbG91ZCBkZWxldGVzIHRoZSB1c2VyLiBUaGlzIHBhcmFtZXRlciBleHByZXNzZXMgaXRzIHZhbHVlIGluIHRoZSBJU08gODYwMSB0aW1lc3RhbXAgZm9ybWF0IGluIFVUQyBhbmQgY2FuIGluY2x1ZGUgdGhlIHRpbWUgem9uZSBkZXNpZ25hdGlvbi4gWW91IG11c3Qgc3BlY2lmeSBhIGZ1dHVyZSBkYXRlIHRoYXQgZmFsbHMgd2l0aGluIG9uZSB3ZWVrIG9mIG1ha2luZyB0aGUgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIChBUEkpIHJlcXVlc3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHMjRGVsZXRlQWZ0ZXJEYXRlXG4gICAqL1xuICByZWFkb25seSBkZWxldGVBZnRlckRhdGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldyBkYXRhYmFzZSB1c2VyIGF1dGhlbnRpY2F0ZXMgd2l0aCB0aGUgQW1hem9uIFdlYiBTZXJ2aWNlcyAoQVdTKSBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgY3JlZGVudGlhbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyIG9yIHRoZSB1c2VyJ3Mgcm9sZS4gRGVmYXVsdCB2YWx1ZSBpcyBgTk9ORWAuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHMjQVdTSUFNVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYXdzaWFtVHlwZT86IENmbkRhdGFiYXNlVXNlclByb3BzQXdzaWFtVHlwZTtcblxuICAvKipcbiAgICogTW9uZ29EQiBkYXRhYmFzZSBhZ2FpbnN0IHdoaWNoIHRoZSBNb25nb0RCIGRhdGFiYXNlIHVzZXIgYXV0aGVudGljYXRlcy4gTW9uZ29EQiBkYXRhYmFzZSB1c2VycyBtdXN0IHByb3ZpZGUgYm90aCBhIHVzZXJuYW1lIGFuZCBhdXRoZW50aWNhdGlvbiBkYXRhYmFzZSB0byBsb2cgaW50byBNb25nb0RCLiAgRGVmYXVsdCB2YWx1ZSBpcyBgYWRtaW5gLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkRhdGFiYXNlVXNlclByb3BzI0RhdGFiYXNlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoaXMgZGF0YWJhc2UgdXNlci5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5EYXRhYmFzZVVzZXJQcm9wcyNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3QgdGhhdCBjb250YWlucyB0aGUga2V5LXZhbHVlIHBhaXJzIGZvciB0YWdnaW5nIGFuZCBjYXRlZ29yaXppbmcgdGhlIE1vbmdvREIgZGF0YWJhc2UgdXNlci4gVGhlIGxhYmVscyB0aGF0IHlvdSBkZWZpbmUgZG8gbm90IGFwcGVhciBpbiB0aGUgY29uc29sZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5EYXRhYmFzZVVzZXJQcm9wcyNMYWJlbHNcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IExhYmVsRGVmaW5pdGlvbltdO1xuXG4gIC8qKlxuICAgKiBNZXRob2QgYnkgd2hpY2ggdGhlIHByb3ZpZGVkIHVzZXJuYW1lIGlzIGF1dGhlbnRpY2F0ZWQuIERlZmF1bHQgdmFsdWUgaXMgYE5PTkVgLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkRhdGFiYXNlVXNlclByb3BzI0xkYXBBdXRoVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgbGRhcEF1dGhUeXBlPzogQ2ZuRGF0YWJhc2VVc2VyUHJvcHNMZGFwQXV0aFR5cGU7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0aGF0IGJyaWVmcyB3aG8gb3ducyB0aGUgY2VydGlmaWNhdGUgcHJvdmlkZWQuIERlZmF1bHQgdmFsdWUgaXMgYE5PTkVgLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkRhdGFiYXNlVXNlclByb3BzI1g1MDlUeXBlXG4gICAqL1xuICByZWFkb25seSB4NTA5VHlwZT86IENmbkRhdGFiYXNlVXNlclByb3BzWDUwOVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2Vy4oCZcyBwYXNzd29yZC4gVGhpcyBmaWVsZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGVudGl0eSByZXR1cm5lZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHMjUGFzc3dvcmRcbiAgICovXG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgMjQtaGV4YWRlY2ltYWwgZGlnaXQgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB5b3VyIEF0bGFzIFByb2plY3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHMjUHJvamVjdElkXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCB0aGF0IHByb3ZpZGVzIHRoZSBwYWlyaW5ncyBvZiBvbmUgcm9sZSB3aXRoIG9uZSBhcHBsaWNhYmxlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbkRhdGFiYXNlVXNlclByb3BzI1JvbGVzXG4gICAqL1xuICByZWFkb25seSByb2xlczogUm9sZURlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogTGlzdCB0aGF0IGNvbnRhaW5zIGNsdXN0ZXJzIGFuZCBNb25nb0RCIEF0bGFzIERhdGEgRmVkZXJhdGlvbiB0aGF0IHRoaXMgZGF0YWJhc2UgdXNlciBjYW4gYWNjZXNzLiBJZiBvbWl0dGVkLCBNb25nb0RCIENsb3VkIGdyYW50cyB0aGUgZGF0YWJhc2UgdXNlciBhY2Nlc3MgdG8gYWxsIHRoZSBjbHVzdGVycyBhbmQgTW9uZ29EQiBBdGxhcyBEYXRhIEZlZGVyYXRpb24gaW4gdGhlIHByb2plY3QuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHMjU2NvcGVzXG4gICAqL1xuICByZWFkb25seSBzY29wZXM/OiBTY29wZURlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCByZXByZXNlbnRzIHRoZSB1c2VyIHRoYXQgYXV0aGVudGljYXRlcyB0byBNb25nb0RCLiBUaGUgZm9ybWF0IG9mIHRoaXMgbGFiZWwgZGVwZW5kcyBvbiB0aGUgbWV0aG9kIG9mIGF1dGhlbnRpY2F0aW9uLiBUaGlzIHdpbGwgYmUgVVNFUl9BUk4gb3IgUk9MRV9BUk4gaWYgQVdTSUFNVHlwZSBpcyBVU0VSIG9yIFJPTEUuIFJlZmVyIGh0dHBzOi8vd3d3Lm1vbmdvZGIuY29tL2RvY3MvYXRsYXMvcmVmZXJlbmNlL2FwaS1yZXNvdXJjZXMtc3BlYy8jdGFnL0RhdGFiYXNlLVVzZXJzL29wZXJhdGlvbi9jcmVhdGVEYXRhYmFzZVVzZXIgZm9yIGRldGFpbHMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHMjVXNlcm5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2ZpbGUgdXNlZCB0byBwcm92aWRlIGNyZWRlbnRpYWxzIGluZm9ybWF0aW9uLCAoYSBzZWNyZXQgd2l0aCB0aGUgY2ZuL2F0bGFzL3Byb2ZpbGUve1Byb2ZpbGV9LCBpcyByZXF1aXJlZCksIGlmIG5vdCBwcm92aWRlZCBgZGVmYXVsdGAgaXMgdXNlZFxuICAgKlxuICAgKiBAc2NoZW1hIENmbkRhdGFiYXNlVXNlclByb3BzI1Byb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkRhdGFiYXNlVXNlclByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5EYXRhYmFzZVVzZXJQcm9wcyhcbiAgb2JqOiBDZm5EYXRhYmFzZVVzZXJQcm9wcyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIERlbGV0ZUFmdGVyRGF0ZTogb2JqLmRlbGV0ZUFmdGVyRGF0ZSxcbiAgICBBV1NJQU1UeXBlOiBvYmouYXdzaWFtVHlwZSxcbiAgICBEYXRhYmFzZU5hbWU6IG9iai5kYXRhYmFzZU5hbWUsXG4gICAgRGVzY3JpcHRpb246IG9iai5kZXNjcmlwdGlvbixcbiAgICBMYWJlbHM6IG9iai5sYWJlbHM/Lm1hcCgoeSkgPT4gdG9Kc29uX0xhYmVsRGVmaW5pdGlvbih5KSksXG4gICAgTGRhcEF1dGhUeXBlOiBvYmoubGRhcEF1dGhUeXBlLFxuICAgIFg1MDlUeXBlOiBvYmoueDUwOVR5cGUsXG4gICAgUGFzc3dvcmQ6IG9iai5wYXNzd29yZCxcbiAgICBQcm9qZWN0SWQ6IG9iai5wcm9qZWN0SWQsXG4gICAgUm9sZXM6IG9iai5yb2xlcz8ubWFwKCh5KSA9PiB0b0pzb25fUm9sZURlZmluaXRpb24oeSkpLFxuICAgIFNjb3Blczogb2JqLnNjb3Blcz8ubWFwKCh5KSA9PiB0b0pzb25fU2NvcGVEZWZpbml0aW9uKHkpKSxcbiAgICBVc2VybmFtZTogb2JqLnVzZXJuYW1lLFxuICAgIFByb2ZpbGU6IG9iai5wcm9maWxlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBuZXcgZGF0YWJhc2UgdXNlciBhdXRoZW50aWNhdGVzIHdpdGggdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgKEFXUykgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIGNyZWRlbnRpYWxzIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlciBvciB0aGUgdXNlcidzIHJvbGUuIERlZmF1bHQgdmFsdWUgaXMgYE5PTkVgLlxuICpcbiAqIEBzY2hlbWEgQ2ZuRGF0YWJhc2VVc2VyUHJvcHNBd3NpYW1UeXBlXG4gKi9cbmV4cG9ydCBlbnVtIENmbkRhdGFiYXNlVXNlclByb3BzQXdzaWFtVHlwZSB7XG4gIC8qKiBOT05FICovXG4gIE5PTkUgPSBcIk5PTkVcIixcbiAgLyoqIFVTRVIgKi9cbiAgVVNFUiA9IFwiVVNFUlwiLFxuICAvKiogUk9MRSAqL1xuICBST0xFID0gXCJST0xFXCIsXG59XG5cbi8qKlxuICogQHNjaGVtYSBsYWJlbERlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbERlZmluaXRpb24ge1xuICAvKipcbiAgICogQHNjaGVtYSBsYWJlbERlZmluaXRpb24jS2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgbGFiZWxEZWZpbml0aW9uI1ZhbHVlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnTGFiZWxEZWZpbml0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9MYWJlbERlZmluaXRpb24oXG4gIG9iajogTGFiZWxEZWZpbml0aW9uIHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgS2V5OiBvYmoua2V5LFxuICAgIFZhbHVlOiBvYmoudmFsdWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE1ldGhvZCBieSB3aGljaCB0aGUgcHJvdmlkZWQgdXNlcm5hbWUgaXMgYXV0aGVudGljYXRlZC4gRGVmYXVsdCB2YWx1ZSBpcyBgTk9ORWAuXG4gKlxuICogQHNjaGVtYSBDZm5EYXRhYmFzZVVzZXJQcm9wc0xkYXBBdXRoVHlwZVxuICovXG5leHBvcnQgZW51bSBDZm5EYXRhYmFzZVVzZXJQcm9wc0xkYXBBdXRoVHlwZSB7XG4gIC8qKiBOT05FICovXG4gIE5PTkUgPSBcIk5PTkVcIixcbiAgLyoqIFVTRVIgKi9cbiAgVVNFUiA9IFwiVVNFUlwiLFxuICAvKiogR1JPVVAgKi9cbiAgR1JPVVAgPSBcIkdST1VQXCIsXG59XG5cbi8qKlxuICogTWV0aG9kIHRoYXQgYnJpZWZzIHdobyBvd25zIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4gRGVmYXVsdCB2YWx1ZSBpcyBgTk9ORWAuXG4gKlxuICogQHNjaGVtYSBDZm5EYXRhYmFzZVVzZXJQcm9wc1g1MDlUeXBlXG4gKi9cbmV4cG9ydCBlbnVtIENmbkRhdGFiYXNlVXNlclByb3BzWDUwOVR5cGUge1xuICAvKiogTk9ORSAqL1xuICBOT05FID0gXCJOT05FXCIsXG4gIC8qKiBNQU5BR0VEICovXG4gIE1BTkFHRUQgPSBcIk1BTkFHRURcIixcbiAgLyoqIENVU1RPTUVSICovXG4gIENVU1RPTUVSID0gXCJDVVNUT01FUlwiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgcm9sZURlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xlRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIHJvbGVEZWZpbml0aW9uI0NvbGxlY3Rpb25OYW1lXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSByb2xlRGVmaW5pdGlvbiNEYXRhYmFzZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSByb2xlRGVmaW5pdGlvbiNSb2xlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1JvbGVEZWZpbml0aW9uJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Sb2xlRGVmaW5pdGlvbihcbiAgb2JqOiBSb2xlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIENvbGxlY3Rpb25OYW1lOiBvYmouY29sbGVjdGlvbk5hbWUsXG4gICAgRGF0YWJhc2VOYW1lOiBvYmouZGF0YWJhc2VOYW1lLFxuICAgIFJvbGVOYW1lOiBvYmoucm9sZU5hbWUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgc2NvcGVEZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgc2NvcGVEZWZpbml0aW9uI05hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgc2NvcGVEZWZpbml0aW9uI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBTY29wZURlZmluaXRpb25UeXBlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdTY29wZURlZmluaXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1Njb3BlRGVmaW5pdGlvbihcbiAgb2JqOiBTY29wZURlZmluaXRpb24gfCB1bmRlZmluZWRcbik6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBOYW1lOiBvYmoubmFtZSxcbiAgICBUeXBlOiBvYmoudHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBTY29wZURlZmluaXRpb25UeXBlXG4gKi9cbmV4cG9ydCBlbnVtIFNjb3BlRGVmaW5pdGlvblR5cGUge1xuICAvKiogQ0xVU1RFUiAqL1xuICBDTFVTVEVSID0gXCJDTFVTVEVSXCIsXG4gIC8qKiBEQVRBX0xBS0UgKi9cbiAgREFUQV9MQUtFID0gXCJEQVRBX0xBS0VcIixcbn1cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6RGF0YWJhc2VVc2VyYFxuICpcbiAqIEBjbG91ZGZvcm1hdGlvblJlc291cmNlIE1vbmdvREI6OkF0bGFzOjpEYXRhYmFzZVVzZXJcbiAqIEBzdGFiaWxpdHkgZXh0ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIENmbkRhdGFiYXNlVXNlciBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID1cbiAgICBcIk1vbmdvREI6OkF0bGFzOjpEYXRhYmFzZVVzZXJcIjtcblxuICAvKipcbiAgICogUmVzb3VyY2UgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IENmbkRhdGFiYXNlVXNlclByb3BzO1xuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpEYXRhYmFzZVVzZXIuVXNlckNGTklkZW50aWZpZXJgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clVzZXJDRk5JZGVudGlmaWVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgTW9uZ29EQjo6QXRsYXM6OkRhdGFiYXNlVXNlcmAuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZFxuICAgKiBAcGFyYW0gaWQgICAgLSBzY29wZWQgaWQgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDZm5EYXRhYmFzZVVzZXJQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHR5cGU6IENmbkRhdGFiYXNlVXNlci5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLFxuICAgICAgcHJvcGVydGllczogdG9Kc29uX0NmbkRhdGFiYXNlVXNlclByb3BzKHByb3BzKSEsXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmF0dHJVc2VyQ0ZOSWRlbnRpZmllciA9IGNkay5Ub2tlbi5hc1N0cmluZyhcbiAgICAgIHRoaXMuZ2V0QXR0KFwiVXNlckNGTklkZW50aWZpZXJcIilcbiAgICApO1xuICB9XG59XG4iXX0=