awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
180 lines • 31.6 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnOnlineArchive = exports.ScheduleViewType = exports.CriteriaViewDateFormat = exports.CriteriaViewType = exports.CfnOnlineArchivePropsCollectionType = void 0;
exports.toJson_CfnOnlineArchiveProps = toJson_CfnOnlineArchiveProps;
exports.toJson_CriteriaView = toJson_CriteriaView;
exports.toJson_PartitionFieldView = toJson_PartitionFieldView;
exports.toJson_ScheduleView = toJson_ScheduleView;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnOnlineArchiveProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnOnlineArchiveProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Profile: obj.profile,
ClusterName: obj.clusterName,
CollName: obj.collName,
CollectionType: obj.collectionType,
Criteria: toJson_CriteriaView(obj.criteria),
DbName: obj.dbName,
ProjectId: obj.projectId,
IncludeCount: obj.includeCount,
ItemsPerPage: obj.itemsPerPage,
PageNum: obj.pageNum,
PartitionFields: obj.partitionFields?.map((y) => toJson_PartitionFieldView(y)),
Schedule: toJson_ScheduleView(obj.schedule),
};
// 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 */
/**
* Classification of MongoDB database collection that you want to return.
*
* If you set this parameter to `TIMESERIES`, set `"criteria.type" : "date"` and `"criteria.dateFormat" : "ISODATE"`.
*
* @schema CfnOnlineArchivePropsCollectionType
*/
var CfnOnlineArchivePropsCollectionType;
(function (CfnOnlineArchivePropsCollectionType) {
/** STANDARD */
CfnOnlineArchivePropsCollectionType["STANDARD"] = "STANDARD";
/** TIMESERIES */
CfnOnlineArchivePropsCollectionType["TIMESERIES"] = "TIMESERIES";
})(CfnOnlineArchivePropsCollectionType || (exports.CfnOnlineArchivePropsCollectionType = CfnOnlineArchivePropsCollectionType = {}));
/**
* Converts an object of type 'CriteriaView' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CriteriaView(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Type: obj.type,
DateField: obj.dateField,
DateFormat: obj.dateFormat,
ExpireAfterDays: obj.expireAfterDays,
Query: obj.query,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'PartitionFieldView' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_PartitionFieldView(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
FieldName: obj.fieldName,
Order: obj.order,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), {});
}
/**
* Converts an object of type 'ScheduleView' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_ScheduleView(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
Type: obj.type,
EndHour: obj.endHour,
EndMinute: obj.endMinute,
StartHour: obj.startHour,
StartMinute: obj.startMinute,
DayOfMonth: obj.dayOfMonth,
DayOfWeek: obj.dayOfWeek,
};
// 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 */
/**
* Means by which MongoDB Cloud selects data to archive. Data can be chosen using the age of the data or a MongoDB query. **DATE** selects documents to archive based on a date. (if DATE is selected, the PartitionFields.FieldName must be completed with the Criteria.DateField value)**CUSTOM** selects documents to archive based on a custom JSON query (When selecting this option, the Query property must be inputted). MongoDB Cloud doesn't support **CUSTOM** when `collectionType: TIMESERIES`.
*
* @schema CriteriaViewType
*/
var CriteriaViewType;
(function (CriteriaViewType) {
/** DATE */
CriteriaViewType["DATE"] = "DATE";
/** CUSTOM */
CriteriaViewType["CUSTOM"] = "CUSTOM";
})(CriteriaViewType || (exports.CriteriaViewType = CriteriaViewType = {}));
/**
* Syntax used to write the date after which data moves to the online archive. Date can be expressed as ISO 8601 or Epoch timestamps. The Epoch timestamp can be expressed as nanoseconds, milliseconds, or seconds. Set this parameter when "criteria.type" : "DATE". You must set "criteria.type" : "DATE" if "collectionType": "TIMESERIES".
*
* @schema CriteriaViewDateFormat
*/
var CriteriaViewDateFormat;
(function (CriteriaViewDateFormat) {
/** ISODATE */
CriteriaViewDateFormat["ISODATE"] = "ISODATE";
/** EPOCH_SECONDS */
CriteriaViewDateFormat["EPOCH_SECONDS"] = "EPOCH_SECONDS";
/** EPOCH_MILLIS */
CriteriaViewDateFormat["EPOCH_MILLIS"] = "EPOCH_MILLIS";
/** EPOCH_NANOSECONDS */
CriteriaViewDateFormat["EPOCH_NANOSECONDS"] = "EPOCH_NANOSECONDS";
})(CriteriaViewDateFormat || (exports.CriteriaViewDateFormat = CriteriaViewDateFormat = {}));
/**
* @schema ScheduleViewType
*/
var ScheduleViewType;
(function (ScheduleViewType) {
/** DAILY */
ScheduleViewType["DAILY"] = "DAILY";
/** MONTHLY */
ScheduleViewType["MONTHLY"] = "MONTHLY";
/** DEFAULT */
ScheduleViewType["DEFAULT"] = "DEFAULT";
/** WEEKLY */
ScheduleViewType["WEEKLY"] = "WEEKLY";
})(ScheduleViewType || (exports.ScheduleViewType = ScheduleViewType = {}));
/**
* A CloudFormation `MongoDB::Atlas::OnlineArchive`
*
* @cloudformationResource MongoDB::Atlas::OnlineArchive
* @stability external
*/
class CfnOnlineArchive extends cdk.CfnResource {
/**
* Create a new `MongoDB::Atlas::OnlineArchive`.
*
* @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: CfnOnlineArchive.CFN_RESOURCE_TYPE_NAME,
properties: toJson_CfnOnlineArchiveProps(props),
});
this.props = props;
this.attrState = cdk.Token.asString(this.getAtt("State"));
this.attrTotalCount = cdk.Token.asNumber(this.getAtt("TotalCount"));
this.attrArchiveId = cdk.Token.asString(this.getAtt("ArchiveId"));
}
}
exports.CfnOnlineArchive = CfnOnlineArchive;
_a = JSII_RTTI_SYMBOL_1;
CfnOnlineArchive[_a] = { fqn: "awscdk-resources-mongodbatlas.CfnOnlineArchive", version: "3.13.1" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnOnlineArchive.CFN_RESOURCE_TYPE_NAME = "MongoDB::Atlas::OnlineArchive";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDEtcmVzb3VyY2VzL29ubGluZS1hcmNoaXZlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUF5R0Esb0VBMkJDO0FBNkRELGtEQWtCQztBQTBCRCw4REFlQztBQTJERCxrREFvQkM7O0FBM1VELDBCQUEwQjtBQUMxQixtQ0FBbUM7QUFvR25DOztHQUVHO0FBQ0gseUNBQXlDO0FBQ3pDLFNBQWdCLDRCQUE0QixDQUMxQyxHQUFzQztJQUV0QyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUc7UUFDYixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87UUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN0QixjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWM7UUFDbEMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ2xCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztRQUNwQixlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUM5Qyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FDN0I7UUFDRCxRQUFRLEVBQUUsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztLQUM1QyxDQUFDO0lBQ0YsMEJBQTBCO0lBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FB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LGdDQUFoQixnQkFBZ0IsUUFTM0I7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsR0FBRyxDQUFDLFdBQVc7SUF5Qm5EOzs7Ozs7T0FNRztJQUNILFlBQ0UsS0FBMkIsRUFDM0IsRUFBVSxFQUNWLEtBQTRCO1FBRTVCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLGdCQUFnQixDQUFDLHNCQUFzQjtZQUM3QyxVQUFVLEVBQUUsNEJBQTRCLENBQUMsS0FBSyxDQUFFO1NBQ2pELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7O0FBL0NILDRDQWdEQzs7O0FBL0NDOztHQUVHO0FBQ29CLHVDQUFzQixHQUMzQywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogUmV0dXJucywgYWRkcywgZWRpdHMsIG9yIHJlbW92ZXMgYW4gb25saW5lIGFyY2hpdmUuXG4gKlxuICogQHNjaGVtYSBDZm5PbmxpbmVBcmNoaXZlUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5PbmxpbmVBcmNoaXZlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHByb2ZpbGUgaXMgZGVmaW5lZCBpbiBBV1MgU2VjcmV0IG1hbmFnZXIuIFNlZSBbU2VjcmV0IE1hbmFnZXIgUHJvZmlsZSBzZXR1cF0oLi4vLi4vLi4vZXhhbXBsZXMvcHJvZmlsZS1zZWNyZXQueWFtbCkuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuT25saW5lQXJjaGl2ZVByb3BzI1Byb2ZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuLXJlYWRhYmxlIGxhYmVsIHRoYXQgaWRlbnRpZmllcyB0aGUgY2x1c3RlciB0aGF0IGNvbnRhaW5zIHRoZSBjb2xsZWN0aW9uIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gcmVtb3ZlIGFuIG9ubGluZSBhcmNoaXZlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbk9ubGluZUFyY2hpdmVQcm9wcyNDbHVzdGVyTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbGFiZWwgdGhhdCBpZGVudGlmaWVzIHRoZSBjb2xsZWN0aW9uIGZvciB3aGljaCB5b3UgY3JlYXRlZCB0aGUgb25saW5lIGFyY2hpdmUuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuT25saW5lQXJjaGl2ZVByb3BzI0NvbGxOYW1lXG4gICAqL1xuICByZWFkb25seSBjb2xsTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ2xhc3NpZmljYXRpb24gb2YgTW9uZ29EQiBkYXRhYmFzZSBjb2xsZWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gcmV0dXJuLlxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IHRoaXMgcGFyYW1ldGVyIHRvIGBUSU1FU0VSSUVTYCwgc2V0IGBcImNyaXRlcmlhLnR5cGVcIiA6IFwiZGF0ZVwiYCBhbmQgYFwiY3JpdGVyaWEuZGF0ZUZvcm1hdFwiIDogXCJJU09EQVRFXCJgLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbk9ubGluZUFyY2hpdmVQcm9wcyNDb2xsZWN0aW9uVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgY29sbGVjdGlvblR5cGU/OiBDZm5PbmxpbmVBcmNoaXZlUHJvcHNDb2xsZWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogUnVsZXMgYnkgd2hpY2ggTW9uZ29EQiBNb25nb0RCIENsb3VkIGFyY2hpdmVzIGRhdGEuXG4gICAqXG4gICAqIFVzZSB0aGUgKipjcml0ZXJpYS50eXBlKiogZmllbGQgdG8gY2hvb3NlIGhvdyBNb25nb0RCIENsb3VkIHNlbGVjdHMgZGF0YSB0byBhcmNoaXZlLiBDaG9vc2UgZGF0YSB1c2luZyB0aGUgYWdlIG9mIHRoZSBkYXRhIG9yIGEgTW9uZ29EQiBxdWVyeS5cbiAgICogKipcImNyaXRlcmlhLnR5cGVcIjogXCJEQVRFXCIqKiBzZWxlY3RzIGRvY3VtZW50cyB0byBhcmNoaXZlIGJhc2VkIG9uIGEgZGF0ZS5cbiAgICogKipcImNyaXRlcmlhLnR5cGVcIjogXCJDVVNUT01cIioqIHNlbGVjdHMgZG9jdW1lbnRzIHRvIGFyY2hpdmUgYmFzZWQgb24gYSBjdXN0b20gSlNPTiBxdWVyeS4gTW9uZ29EQiBDbG91ZCBkb2Vzbid0IHN1cHBvcnQgKipcImNyaXRlcmlhLnR5cGVcIjogXCJDVVNUT01cIioqIHdoZW4gKipcImNvbGxlY3Rpb25UeXBlXCI6IFwiVElNRVNFUklFU1wiKiouXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuT25saW5lQXJjaGl2ZVByb3BzI0NyaXRlcmlhXG4gICAqL1xuICByZWFkb25seSBjcml0ZXJpYTogQ3JpdGVyaWFWaWV3O1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCBvZiB0aGUgZGF0YWJhc2UgdGhhdCBjb250YWlucyB0aGUgY29sbGVjdGlvbiB0aGF0IGNvbnRhaW5zIHRoZSBvbmxpbmUgYXJjaGl2ZS5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5PbmxpbmVBcmNoaXZlUHJvcHMjRGJOYW1lXG4gICAqL1xuICByZWFkb25seSBkYk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVuaXF1ZSAyNC1oZXhhZGVjaW1hbCBkaWdpdCBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHlvdXIgcHJvamVjdC5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5PbmxpbmVBcmNoaXZlUHJvcHMjUHJvamVjdElkXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzcG9uc2UgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICgqKnRvdGFsQ291bnQqKikgaW4gdGhlIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbk9ubGluZUFyY2hpdmVQcm9wcyNJbmNsdWRlQ291bnRcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDb3VudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBpdGVtcyB0aGF0IHRoZSByZXNwb25zZSByZXR1cm5zIHBlciBwYWdlLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbk9ubGluZUFyY2hpdmVQcm9wcyNJdGVtc1BlclBhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1zUGVyUGFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHRoZSBwYWdlIHRoYXQgZGlzcGxheXMgdGhlIGN1cnJlbnQgc2V0IG9mIHRoZSB0b3RhbCBvYmplY3RzIHRoYXQgdGhlIHJlc3BvbnNlIHJldHVybnMuXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuT25saW5lQXJjaGl2ZVByb3BzI1BhZ2VOdW1cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VOdW0/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIExpc3QgdGhhdCBjb250YWlucyBkb2N1bWVudCBwYXJhbWV0ZXJzIHRvIHVzZSB0byBsb2dpY2FsbHkgZGl2aWRlIGRhdGEgd2l0aGluIGEgY29sbGVjdGlvbi4gUGFydGl0aW9ucyBwcm92aWRlIGEgY29hcnNlIGxldmVsIG9mIGZpbHRlcmluZyBvZiB0aGUgdW5kZXJseWluZyBjb2xsZWN0aW9uIGRhdGEuIFRvIGRpdmlkZSB5b3VyIGRhdGEsIHNwZWNpZnkgdXAgdG8gdHdvIHBhcmFtZXRlcnMgdGhhdCB5b3UgZnJlcXVlbnRseSBxdWVyeS4gQW55IHF1ZXJpZXMgdGhhdCBkb24ndCB1c2UgdGhlc2UgcGFyYW1ldGVycyByZXN1bHQgaW4gYSBmdWxsIGNvbGxlY3Rpb24gc2NhbiBvZiBhbGwgYXJjaGl2ZWQgZG9jdW1lbnRzLiBUaGlzIHRha2VzIG1vcmUgdGltZSBhbmQgaW5jcmVhc2UgeW91ciBjb3N0cy5cbiAgICpcbiAgICogQHNjaGVtYSBDZm5PbmxpbmVBcmNoaXZlUHJvcHMjUGFydGl0aW9uRmllbGRzXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb25GaWVsZHM/OiBQYXJ0aXRpb25GaWVsZFZpZXdbXTtcblxuICAvKipcbiAgICogUmVndWxhciBmcmVxdWVuY3kgYW5kIGR1cmF0aW9uIHdoZW4gYXJjaGl2aW5nIHByb2Nlc3Mgb2NjdXJzLlxuICAgKlxuICAgKiBAc2NoZW1hIENmbk9ubGluZUFyY2hpdmVQcm9wcyNTY2hlZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBTY2hlZHVsZVZpZXc7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0Nmbk9ubGluZUFyY2hpdmVQcm9wcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuT25saW5lQXJjaGl2ZVByb3BzKFxuICBvYmo6IENmbk9ubGluZUFyY2hpdmVQcm9wcyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIFByb2ZpbGU6IG9iai5wcm9maWxlLFxuICAgIENsdXN0ZXJOYW1lOiBvYmouY2x1c3Rlck5hbWUsXG4gICAgQ29sbE5hbWU6IG9iai5jb2xsTmFtZSxcbiAgICBDb2xsZWN0aW9uVHlwZTogb2JqLmNvbGxlY3Rpb25UeXBlLFxuICAgIENyaXRlcmlhOiB0b0pzb25fQ3JpdGVyaWFWaWV3KG9iai5jcml0ZXJpYSksXG4gICAgRGJOYW1lOiBvYmouZGJOYW1lLFxuICAgIFByb2plY3RJZDogb2JqLnByb2plY3RJZCxcbiAgICBJbmNsdWRlQ291bnQ6IG9iai5pbmNsdWRlQ291bnQsXG4gICAgSXRlbXNQZXJQYWdlOiBvYmouaXRlbXNQZXJQYWdlLFxuICAgIFBhZ2VOdW06IG9iai5wYWdlTnVtLFxuICAgIFBhcnRpdGlvbkZpZWxkczogb2JqLnBhcnRpdGlvbkZpZWxkcz8ubWFwKCh5KSA9PlxuICAgICAgdG9Kc29uX1BhcnRpdGlvbkZpZWxkVmlldyh5KVxuICAgICksXG4gICAgU2NoZWR1bGU6IHRvSnNvbl9TY2hlZHVsZVZpZXcob2JqLnNjaGVkdWxlKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKFxuICAgIChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkID8gciA6IHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLFxuICAgIHt9XG4gICk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQ2xhc3NpZmljYXRpb24gb2YgTW9uZ29EQiBkYXRhYmFzZSBjb2xsZWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gcmV0dXJuLlxuICpcbiAqIElmIHlvdSBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gYFRJTUVTRVJJRVNgLCBzZXQgYFwiY3JpdGVyaWEudHlwZVwiIDogXCJkYXRlXCJgIGFuZCBgXCJjcml0ZXJpYS5kYXRlRm9ybWF0XCIgOiBcIklTT0RBVEVcImAuXG4gKlxuICogQHNjaGVtYSBDZm5PbmxpbmVBcmNoaXZlUHJvcHNDb2xsZWN0aW9uVHlwZVxuICovXG5leHBvcnQgZW51bSBDZm5PbmxpbmVBcmNoaXZlUHJvcHNDb2xsZWN0aW9uVHlwZSB7XG4gIC8qKiBTVEFOREFSRCAqL1xuICBTVEFOREFSRCA9IFwiU1RBTkRBUkRcIixcbiAgLyoqIFRJTUVTRVJJRVMgKi9cbiAgVElNRVNFUklFUyA9IFwiVElNRVNFUklFU1wiLFxufVxuXG4vKipcbiAqIEBzY2hlbWEgQ3JpdGVyaWFWaWV3XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JpdGVyaWFWaWV3IHtcbiAgLyoqXG4gICAqIE1lYW5zIGJ5IHdoaWNoIE1vbmdvREIgQ2xvdWQgc2VsZWN0cyBkYXRhIHRvIGFyY2hpdmUuIERhdGEgY2FuIGJlIGNob3NlbiB1c2luZyB0aGUgYWdlIG9mIHRoZSBkYXRhIG9yIGEgTW9uZ29EQiBxdWVyeS4gKipEQVRFKiogc2VsZWN0cyBkb2N1bWVudHMgdG8gYXJjaGl2ZSBiYXNlZCBvbiBhIGRhdGUuIChpZiBEQVRFIGlzIHNlbGVjdGVkLCB0aGUgUGFydGl0aW9uRmllbGRzLkZpZWxkTmFtZSBtdXN0IGJlIGNvbXBsZXRlZCB3aXRoIHRoZSBDcml0ZXJpYS5EYXRlRmllbGQgdmFsdWUpKipDVVNUT00qKiBzZWxlY3RzIGRvY3VtZW50cyB0byBhcmNoaXZlIGJhc2VkIG9uIGEgY3VzdG9tIEpTT04gcXVlcnkgKFdoZW4gc2VsZWN0aW5nIHRoaXMgb3B0aW9uLCB0aGUgUXVlcnkgcHJvcGVydHkgbXVzdCBiZSBpbnB1dHRlZCkuIE1vbmdvREIgQ2xvdWQgZG9lc24ndCBzdXBwb3J0ICoqQ1VTVE9NKiogd2hlbiBgY29sbGVjdGlvblR5cGU6IFRJTUVTRVJJRVNgLlxuICAgKlxuICAgKiBAc2NoZW1hIENyaXRlcmlhVmlldyNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogQ3JpdGVyaWFWaWV3VHlwZTtcblxuICAvKipcbiAgICogSW5kZXhlZCBkYXRhYmFzZSBwYXJhbWV0ZXIgdGhhdCBzdG9yZXMgdGhlIGRhdGUgdGhhdCBkZXRlcm1pbmVzIHdoZW4gZGF0YSBtb3ZlcyB0byB0aGUgb25saW5lIGFyY2hpdmUuIE1vbmdvREIgQ2xvdWQgYXJjaGl2ZXMgdGhlIGRhdGEgd2hlbiB0aGUgY3VycmVudCBkYXRlIGV4Y2VlZHMgdGhlIGRhdGUgaW4gdGhpcyBkYXRhYmFzZSBwYXJhbWV0ZXIgcGx1cyB0aGUgbnVtYmVyIG9mIGRheXMgc3BlY2lmaWVkIHRocm91Z2ggdGhlIGV4cGlyZUFmdGVyRGF5cyBwYXJhbWV0ZXIuIFNldCB0aGlzIHBhcmFtZXRlciB3aGVuIHlvdSBzZXQgXCJjcml0ZXJpYS50eXBlXCIgOiBcIkRBVEVcIi5cbiAgICpcbiAgICogQHNjaGVtYSBDcml0ZXJpYVZpZXcjRGF0ZUZpZWxkXG4gICAqL1xuICByZWFkb25seSBkYXRlRmllbGQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN5bnRheCB1c2VkIHRvIHdyaXRlIHRoZSBkYXRlIGFmdGVyIHdoaWNoIGRhdGEgbW92ZXMgdG8gdGhlIG9ubGluZSBhcmNoaXZlLiBEYXRlIGNhbiBiZSBleHByZXNzZWQgYXMgSVNPIDg2MDEgb3IgRXBvY2ggdGltZXN0YW1wcy4gVGhlIEVwb2NoIHRpbWVzdGFtcCBjYW4gYmUgZXhwcmVzc2VkIGFzIG5hbm9zZWNvbmRzLCBtaWxsaXNlY29uZHMsIG9yIHNlY29uZHMuIFNldCB0aGlzIHBhcmFtZXRlciB3aGVuIFwiY3JpdGVyaWEudHlwZVwiIDogXCJEQVRFXCIuIFlvdSBtdXN0IHNldCBcImNyaXRlcmlhLnR5cGVcIiA6IFwiREFURVwiIGlmIFwiY29sbGVjdGlvblR5cGVcIjogXCJUSU1FU0VSSUVTXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgQ3JpdGVyaWFWaWV3I0RhdGVGb3JtYXRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGVGb3JtYXQ/OiBDcml0ZXJpYVZpZXdEYXRlRm9ybWF0O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGF5cyBhZnRlciB0aGUgdmFsdWUgaW4gdGhlIGNyaXRlcmlhLmRhdGVGaWVsZCB3aGVuIE1vbmdvREIgQ2xvdWQgYXJjaGl2ZXMgZGF0YSBpbiB0aGUgc3BlY2lmaWVkIGNsdXN0ZXIuIFNldCB0aGlzIHBhcmFtZXRlciB3aGVuIHlvdSBzZXQgXCJjcml0ZXJpYS50eXBlXCIgOiBcIkRBVEVcIi5cbiAgICpcbiAgICogQHNjaGVtYSBDcml0ZXJpYVZpZXcjRXhwaXJlQWZ0ZXJEYXlzXG4gICAqL1xuICByZWFkb25seSBleHBpcmVBZnRlckRheXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1vbmdvREIgZmluZCBxdWVyeSB0aGF0IHNlbGVjdHMgZG9jdW1lbnRzIHRvIGFyY2hpdmUuIFRoZSBzcGVjaWZpZWQgcXVlcnkgZm9sbG93cyB0aGUgc3ludGF4IG9mIHRoZSBkYi5jb2xsZWN0aW9uLmZpbmQocXVlcnkpIGNvbW1hbmQuIFRoaXMgcXVlcnkgY2FuJ3QgdXNlIHRoZSBlbXB0eSBkb2N1bWVudCAoe30pIHRvIHJldHVybiBhbGwgZG9jdW1lbnRzLiBTZXQgdGhpcyBwYXJhbWV0ZXIgd2hlbiBcImNyaXRlcmlhLnR5cGVcIiA6IFwiQ1VTVE9NXCIuXG4gICAqXG4gICAqIEBzY2hlbWEgQ3JpdGVyaWFWaWV3I1F1ZXJ5XG4gICAqL1xuICByZWFkb25seSBxdWVyeT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ3JpdGVyaWFWaWV3JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Dcml0ZXJpYVZpZXcoXG4gIG9iajogQ3JpdGVyaWFWaWV3IHwgdW5kZWZpbmVkXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgVHlwZTogb2JqLnR5cGUsXG4gICAgRGF0ZUZpZWxkOiBvYmouZGF0ZUZpZWxkLFxuICAgIERhdGVGb3JtYXQ6IG9iai5kYXRlRm9ybWF0LFxuICAgIEV4cGlyZUFmdGVyRGF5czogb2JqLmV4cGlyZUFmdGVyRGF5cyxcbiAgICBRdWVyeTogb2JqLnF1ZXJ5LFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFBhcnRpdGlvbkZpZWxkVmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpdGlvbkZpZWxkVmlldyB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBsYWJlbCB0aGF0IGlkZW50aWZpZXMgdGhlIHBhcmFtZXRlciB0aGF0IE1vbmdvREIgQ2xvdWQgdXNlcyB0byBwYXJ0aXRpb24gZGF0YS4gVG8gc3BlY2lmeSBhIG5lc3RlZCBwYXJhbWV0ZXIsIHVzZSB0aGUgZG90IG5vdGF0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFBhcnRpdGlvbkZpZWxkVmlldyNGaWVsZE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGZpZWxkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU2VxdWVuY2UgaW4gd2hpY2ggTW9uZ29EQiBDbG91ZCBzbGljZXMgdGhlIGNvbGxlY3Rpb24gZGF0YSB0byBjcmVhdGUgcGFydGl0aW9ucy4gVGhlIHJlc291cmNlIGV4cHJlc3NlcyB0aGlzIHNlcXVlbmNlIHN0YXJ0aW5nIHdpdGggemVyby4gVGhlIHZhbHVlIG9mIHRoZSAqKmNyaXRlcmlhLmRhdGVGaWVsZCoqIHBhcmFtZXRlciBkZWZhdWx0cyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcGFydGl0aW9uIHNlcXVlbmNlLlxuICAgKlxuICAgKiBAc2NoZW1hIFBhcnRpdGlvbkZpZWxkVmlldyNPcmRlclxuICAgKi9cbiAgcmVhZG9ubHkgb3JkZXI/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1BhcnRpdGlvbkZpZWxkVmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fUGFydGl0aW9uRmllbGRWaWV3KFxuICBvYmo6IFBhcnRpdGlvbkZpZWxkVmlldyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIEZpZWxkTmFtZTogb2JqLmZpZWxkTmFtZSxcbiAgICBPcmRlcjogb2JqLm9yZGVyLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoXG4gICAgKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQgPyByIDogeyAuLi5yLCBbaVswXV06IGlbMV0gfSksXG4gICAge31cbiAgKTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIFNjaGVkdWxlVmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlVmlldyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlVmlldyNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogU2NoZWR1bGVWaWV3VHlwZTtcblxuICAvKipcbiAgICogSG91ciBvZiB0aGUgZGF5IHdoZW4gdGhlIHNjaGVkdWxlZCB3aW5kb3cgdG8gcnVuIG9uZSBvbmxpbmUgYXJjaGl2ZSBlbmRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlVmlldyNFbmRIb3VyXG4gICAqL1xuICByZWFkb25seSBlbmRIb3VyPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNaW51dGUgb2YgdGhlIGhvdXIgd2hlbiB0aGUgc2NoZWR1bGVkIHdpbmRvdyB0byBydW4gb25lIG9ubGluZSBhcmNoaXZlIGVuZHMuXG4gICAqXG4gICAqIEBzY2hlbWEgU2NoZWR1bGVWaWV3I0VuZE1pbnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kTWludXRlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIb3VyIG9mIHRoZSBkYXkgd2hlbiB0aGUgd2hlbiB0aGUgc2NoZWR1bGVkIHdpbmRvdyB0byBydW4gb25lIG9ubGluZSBhcmNoaXZlIHN0YXJ0cy5cbiAgICpcbiAgICogQHNjaGVtYSBTY2hlZHVsZVZpZXcjU3RhcnRIb3VyXG4gICAqL1xuICByZWFkb25seSBzdGFydEhvdXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbnV0ZSBvZiB0aGUgaG91ciB3aGVuIHRoZSBzY2hlZHVsZWQgd2luZG93IHRvIHJ1biBvbmUgb25saW5lIGFyY2hpdmUgc3RhcnRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlVmlldyNTdGFydE1pbnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRNaW51dGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERheSBvZiB0aGUgbW9udGggd2hlbiB0aGUgc2NoZWR1bGVkIGFyY2hpdmUgc3RhcnRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFNjaGVkdWxlVmlldyNEYXlPZk1vbnRoXG4gICAqL1xuICByZWFkb25seSBkYXlPZk1vbnRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEYXkgb2YgdGhlIG1vbnRoIHdoZW4gdGhlIHNjaGVkdWxlZCBhcmNoaXZlIHN0YXJ0cy5cbiAgICpcbiAgICogQHNjaGVtYSBTY2hlZHVsZVZpZXcjRGF5T2ZXZWVrXG4gICAqL1xuICByZWFkb25seSBkYXlPZldlZWs/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1NjaGVkdWxlVmlldycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fU2NoZWR1bGVWaWV3KFxuICBvYmo6IFNjaGVkdWxlVmlldyB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIFR5cGU6IG9iai50eXBlLFxuICAgIEVuZEhvdXI6IG9iai5lbmRIb3VyLFxuICAgIEVuZE1pbnV0ZTogb2JqLmVuZE1pbnV0ZSxcbiAgICBTdGFydEhvdXI6IG9iai5zdGFydEhvdXIsXG4gICAgU3RhcnRNaW51dGU6IG9iai5zdGFydE1pbnV0ZSxcbiAgICBEYXlPZk1vbnRoOiBvYmouZGF5T2ZNb250aCxcbiAgICBEYXlPZldlZWs6IG9iai5kYXlPZldlZWssXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZShcbiAgICAociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCA/IHIgOiB7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSxcbiAgICB7fVxuICApO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIE1lYW5zIGJ5IHdoaWNoIE1vbmdvREIgQ2xvdWQgc2VsZWN0cyBkYXRhIHRvIGFyY2hpdmUuIERhdGEgY2FuIGJlIGNob3NlbiB1c2luZyB0aGUgYWdlIG9mIHRoZSBkYXRhIG9yIGEgTW9uZ29EQiBxdWVyeS4gKipEQVRFKiogc2VsZWN0cyBkb2N1bWVudHMgdG8gYXJjaGl2ZSBiYXNlZCBvbiBhIGRhdGUuIChpZiBEQVRFIGlzIHNlbGVjdGVkLCB0aGUgUGFydGl0aW9uRmllbGRzLkZpZWxkTmFtZSBtdXN0IGJlIGNvbXBsZXRlZCB3aXRoIHRoZSBDcml0ZXJpYS5EYXRlRmllbGQgdmFsdWUpKipDVVNUT00qKiBzZWxlY3RzIGRvY3VtZW50cyB0byBhcmNoaXZlIGJhc2VkIG9uIGEgY3VzdG9tIEpTT04gcXVlcnkgKFdoZW4gc2VsZWN0aW5nIHRoaXMgb3B0aW9uLCB0aGUgUXVlcnkgcHJvcGVydHkgbXVzdCBiZSBpbnB1dHRlZCkuIE1vbmdvREIgQ2xvdWQgZG9lc24ndCBzdXBwb3J0ICoqQ1VTVE9NKiogd2hlbiBgY29sbGVjdGlvblR5cGU6IFRJTUVTRVJJRVNgLlxuICpcbiAqIEBzY2hlbWEgQ3JpdGVyaWFWaWV3VHlwZVxuICovXG5leHBvcnQgZW51bSBDcml0ZXJpYVZpZXdUeXBlIHtcbiAgLyoqIERBVEUgKi9cbiAgREFURSA9IFwiREFURVwiLFxuICAvKiogQ1VTVE9NICovXG4gIENVU1RPTSA9IFwiQ1VTVE9NXCIsXG59XG5cbi8qKlxuICogU3ludGF4IHVzZWQgdG8gd3JpdGUgdGhlIGRhdGUgYWZ0ZXIgd2hpY2ggZGF0YSBtb3ZlcyB0byB0aGUgb25saW5lIGFyY2hpdmUuIERhdGUgY2FuIGJlIGV4cHJlc3NlZCBhcyBJU08gODYwMSBvciBFcG9jaCB0aW1lc3RhbXBzLiBUaGUgRXBvY2ggdGltZXN0YW1wIGNhbiBiZSBleHByZXNzZWQgYXMgbmFub3NlY29uZHMsIG1pbGxpc2Vjb25kcywgb3Igc2Vjb25kcy4gU2V0IHRoaXMgcGFyYW1ldGVyIHdoZW4gXCJjcml0ZXJpYS50eXBlXCIgOiBcIkRBVEVcIi4gWW91IG11c3Qgc2V0IFwiY3JpdGVyaWEudHlwZVwiIDogXCJEQVRFXCIgaWYgXCJjb2xsZWN0aW9uVHlwZVwiOiBcIlRJTUVTRVJJRVNcIi5cbiAqXG4gKiBAc2NoZW1hIENyaXRlcmlhVmlld0RhdGVGb3JtYXRcbiAqL1xuZXhwb3J0IGVudW0gQ3JpdGVyaWFWaWV3RGF0ZUZvcm1hdCB7XG4gIC8qKiBJU09EQVRFICovXG4gIElTT0RBVEUgPSBcIklTT0RBVEVcIixcbiAgLyoqIEVQT0NIX1NFQ09ORFMgKi9cbiAgRVBPQ0hfU0VDT05EUyA9IFwiRVBPQ0hfU0VDT05EU1wiLFxuICAvKiogRVBPQ0hfTUlMTElTICovXG4gIEVQT0NIX01JTExJUyA9IFwiRVBPQ0hfTUlMTElTXCIsXG4gIC8qKiBFUE9DSF9OQU5PU0VDT05EUyAqL1xuICBFUE9DSF9OQU5PU0VDT05EUyA9IFwiRVBPQ0hfTkFOT1NFQ09ORFNcIixcbn1cblxuLyoqXG4gKiBAc2NoZW1hIFNjaGVkdWxlVmlld1R5cGVcbiAqL1xuZXhwb3J0IGVudW0gU2NoZWR1bGVWaWV3VHlwZSB7XG4gIC8qKiBEQUlMWSAqL1xuICBEQUlMWSA9IFwiREFJTFlcIixcbiAgLyoqIE1PTlRITFkgKi9cbiAgTU9OVEhMWSA9IFwiTU9OVEhMWVwiLFxuICAvKiogREVGQVVMVCAqL1xuICBERUZBVUxUID0gXCJERUZBVUxUXCIsXG4gIC8qKiBXRUVLTFkgKi9cbiAgV0VFS0xZID0gXCJXRUVLTFlcIixcbn1cblxuLyoqXG4gKiBBIENsb3VkRm9ybWF0aW9uIGBNb25nb0RCOjpBdGxhczo6T25saW5lQXJjaGl2ZWBcbiAqXG4gKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSBNb25nb0RCOjpBdGxhczo6T25saW5lQXJjaGl2ZVxuICogQHN0YWJpbGl0eSBleHRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgQ2ZuT25saW5lQXJjaGl2ZSBleHRlbmRzIGNkay5DZm5SZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDRk5fUkVTT1VSQ0VfVFlQRV9OQU1FID1cbiAgICBcIk1vbmdvREI6OkF0bGFzOjpPbmxpbmVBcmNoaXZlXCI7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlIHByb3BzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBDZm5PbmxpbmVBcmNoaXZlUHJvcHM7XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6Ok9ubGluZUFyY2hpdmUuU3RhdGVgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clN0YXRlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgYE1vbmdvREI6OkF0bGFzOjpPbmxpbmVBcmNoaXZlLlRvdGFsQ291bnRgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXR0clRvdGFsQ291bnQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIEF0dHJpYnV0ZSBgTW9uZ29EQjo6QXRsYXM6Ok9ubGluZUFyY2hpdmUuQXJjaGl2ZUlkYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF0dHJBcmNoaXZlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGBNb25nb0RCOjpBdGxhczo6T25saW5lQXJjaGl2ZWAuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZFxuICAgKiBAcGFyYW0gaWQgICAgLSBzY29wZWQgaWQgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDZm5PbmxpbmVBcmNoaXZlUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0eXBlOiBDZm5PbmxpbmVBcmNoaXZlLkNGTl9SRVNPVVJDRV9UWVBFX05BTUUsXG4gICAgICBwcm9wZXJ0aWVzOiB0b0pzb25fQ2ZuT25saW5lQXJjaGl2ZVByb3BzKHByb3BzKSEsXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmF0dHJTdGF0ZSA9IGNkay5Ub2tlbi5hc1N0cmluZyh0aGlzLmdldEF0dChcIlN0YXRlXCIpKTtcbiAgICB0aGlzLmF0dHJUb3RhbENvdW50ID0gY2RrLlRva2VuLmFzTnVtYmVyKHRoaXMuZ2V0QXR0KFwiVG90YWxDb3VudFwiKSk7XG4gICAgdGhpcy5hdHRyQXJjaGl2ZUlkID0gY2RrLlRva2VuLmFzU3RyaW5nKHRoaXMuZ2V0QXR0KFwiQXJjaGl2ZUlkXCIpKTtcbiAgfVxufVxuIl19