@sunbird-cb/consumption 0.0.101 → 0.0.103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -660,27 +660,32 @@ export class WidgetContentLibService {
660
660
  getEnrolledData(doId) {
661
661
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
662
662
  /** @type {?} */
663
- let userId = this.configSvc.userProfile.userId;
663
+ let enrolledDoId = this.userSvc.enrollmentDataIds.includes(doId);
664
664
  /** @type {?} */
665
- const responseData = yield this.userSvc.fetchEnrollmentDataByContentId(userId, doId).toPromise().then((/**
666
- * @param {?} res
667
- * @return {?}
668
- */
669
- (res) => tslib_1.__awaiter(this, void 0, void 0, function* () {
670
- if (res && res.courses && res.courses.length) {
671
- return res.courses;
672
- }
673
- else {
665
+ let userId = this.configSvc.userProfile.userId;
666
+ if (enrolledDoId) {
667
+ /** @type {?} */
668
+ const responseData = yield this.userSvc.fetchEnrollmentDataByContentId(userId, doId).toPromise().then((/**
669
+ * @param {?} res
670
+ * @return {?}
671
+ */
672
+ (res) => tslib_1.__awaiter(this, void 0, void 0, function* () {
673
+ if (res && res.courses && res.courses.length) {
674
+ return res.courses;
675
+ }
676
+ else {
677
+ return [];
678
+ }
679
+ }))).catch((/**
680
+ * @param {?} _err
681
+ * @return {?}
682
+ */
683
+ (_err) => {
674
684
  return [];
675
- }
676
- }))).catch((/**
677
- * @param {?} _err
678
- * @return {?}
679
- */
680
- (_err) => {
681
- return [];
682
- }));
683
- return responseData || [];
685
+ }));
686
+ return responseData || [];
687
+ }
688
+ return [];
684
689
  });
685
690
  }
686
691
  /**
@@ -906,4 +911,4 @@ if (false) {
906
911
  WidgetContentLibService.prototype.userSvc;
907
912
  }
908
913
  export { ɵ0, ɵ1, ɵ2, ɵ3 };
909
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi9jb25zdW1wdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRzVELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRyxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFBO0FBQzlELE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDOzs7Ozs7TUFDNUIsTUFBTSxHQUFHLE9BQU87Ozs7TUFJaEIsaUJBQWlCLEdBQUcsb0JBQW9COzs7Ozs7QUF5QnRCLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxFQUFFLENBQ2pELEdBQUcsaUJBQWlCLHVCQUF1QixJQUFJLElBQUksRUFBRSxFQUFFOzs7O0FBRWxDLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsa0JBQWtCLFNBQVMsRUFBRTs7OztBQVFoRixDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMs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QyxjQUFtQixFQUFFLFlBQW9CO1FBQy9ELElBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUU7O2dCQUN0QyxZQUFZLEdBQUcsY0FBYyxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUM7WUFDekYsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUNqRDtJQUNILENBQUM7OztZQTloQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBakVRLFVBQVU7WUFFVixxQkFBcUI7WUFTdEIsb0JBQW9COzs7OztJQStEMUIsZ0RBQWtEOztJQUNsRCxpREFBb0Q7Ozs7O0lBRXBELGdEQUErQzs7SUFDL0MsaURBQXlEOztJQUN6RCxrREFBcUM7O0lBQ3JDLDZEQUFnRDs7SUFDaEQsNkRBQWlEOztJQUNqRCwrREFBNEQ7O0lBQzVELGdFQUFpRjs7Ozs7SUFmL0UsdUNBQXdCOzs7OztJQUN4Qiw0Q0FBd0M7Ozs7O0lBQ3hDLDBDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12Mic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgRU1QVFksIEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOc0NvbnRlbnRTdHJpcE11bHRpcGxlIH0gZnJvbSAnLi4vX21vZGVscy9jb250ZW50LXN0cmlwLW11bHRpcGxlLm1vZGVsJztcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnO1xuaW1wb3J0IHsgTlNTZWFyY2ggfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC1zZWFyY2gubW9kZWwnO1xuLy8gdHNsaW50OmRpc2FibGVcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgIHZpZXdlclJvdXRlR2VuZXJhdG9yIH0gZnJvbSAnLi92aWV3ZXItcm91dGUtdXRpbCdcbmltcG9ydCB7V2lkZ2V0VXNlclNlcnZpY2VMaWJ9IGZyb20gJy4vd2lkZ2V0LXVzZXItbGliLnNlcnZpY2UnXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuLy8gdHNsaW50OmVuYWJsZVxuXG4vLyBUT0RPOiBtb3ZlIHRoaXMgaW4gc29tZSBjb21tb24gcGxhY2VcbmNvbnN0IFBST1RFQ1RFRF9TTEFHX1Y4ID0gJy9hcGlzL3Byb3RlY3RlZC92OCc7XG5cbmNvbnN0IEFQSV9FTkRfUE9JTlRTID0ge1xuICBDT05URU5UOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudGAsXG4gIEFVVEhPUklOR19DT05URU5UOiBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5YCxcbiAgQ09OVEVOVF9MSUtFUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvbGlrZUNvdW50YCxcbiAgU0VUX1MzX0NPT0tJRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2V0Q29va2llYCxcbiAgU0VUX1MzX0lNQUdFX0NPT0tJRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2V0SW1hZ2VDb29raWVgLFxuICBGRVRDSF9NQU5JRkVTVDogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvZ2V0V2ViTW9kdWxlTWFuaWZlc3RgLFxuICBGRVRDSF9XRUJfTU9EVUxFX0ZJTEVTOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9nZXRXZWJNb2R1bGVGaWxlc2AsXG4gIE1VTFRJUExFX0NPTlRFTlQ6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L211bHRpcGxlYCxcbiAgQ09OVEVOVF9TRUFSQ0hfVjU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NlYXJjaFY1YCxcbiAgQ09OVEVOVF9TRUFSQ0hfVjY6IGAvYXBpcy9wcm94aWVzL3Y4L3N1bmJpcmRpZ290L3NlYXJjaGAsXG4gIFRSRU5ESU5HX0NPTlRFTlRfU0VBUkNIOiBgYXBpcy9wcm94aWVzL3Y4L3RyZW5kaW5nL2NvbnRlbnQvc2VhcmNoYCxcbiAgQ09OVEVOVF9TRUFSQ0hfUkVMQVRFRF9DQlBfVjY6IGAvYXBpcy9wcm94aWVzL3Y4L3N1bmJpcmRpZ290L3NlYXJjaGAsXG4gIENPTlRFTlRfU0VBUkNIX1JFR0lPTl9SRUNPTU1FTkRBVElPTjogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2VhcmNoUmVnaW9uUmVjb21tZW5kYXRpb25gLFxuICBDT05URU5UX0hJU1RPUlk6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL2hpc3RvcnlgLFxuICBDT05URU5UX0hJU1RPUllWMjogYC9hcGlzL3Byb3hpZXMvdjgvcmVhZC9jb250ZW50LXByb2dyZXNgLFxuICBDT1VSU0VfQkFUQ0hfTElTVDogYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjEvYmF0Y2gvbGlzdGAsXG4gIENPVVJTRV9CQVRDSDogYC9hcGlzL3Byb3hpZXMvdjgvY291cnNlL3YxL2JhdGNoL3JlYWRgLFxuICBBVVRPX0FTU0lHTl9CQVRDSDogYC9hcGlzL3Byb3RlY3RlZC92OC9jb2hvcnRzL3VzZXIvYXV0b2Vucm9sbG1lbnQvYCxcbiAgQVVUT19BU1NJR05fQ1VSQVRFRF9CQVRDSDogYC9hcGlzL3Byb3hpZXMvdjgvY3VyYXRlZHByb2dyYW0vdjEvZW5yb2xgLFxuICBBVVRPX0FTU0lHTl9PUEVOX1BST0dSQU06IGAvYXBpcy9wcm94aWVzL3Y4L29wZW5wcm9ncmFtL3YxL2Vucm9sYCxcbiAgVVNFUl9DT05USU5VRV9MRUFSTklORzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvaGlzdG9yeS9jb250aW51ZWAsXG4gIENPTlRFTlRfUkFUSU5HOiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9yYXRpbmdgLFxuICBDT0xMRUNUSU9OX0hJRVJBUkNIWTogKHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZykgPT5cbiAgICBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9jb2xsZWN0aW9uLyR7dHlwZX0vJHtpZH1gLFxuICBSRUdJU1RSQVRJT05fU1RBVFVTOiBgJHtQUk9URUNURURfU0xBR19WOH0vYWRtaW4vdXNlclJlZ2lzdHJhdGlvbi9jaGVja1VzZXJSZWdpc3RyYXRpb25Db250ZW50YCxcbiAgTUFSS19BU19DT01QTEVURV9NRVRBOiAoY29udGVudElkOiBzdHJpbmcpID0+IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL3Byb2dyZXNzLyR7Y29udGVudElkfWAsXG4gIEVOUk9MTF9CQVRDSDogYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjEvZW5yb2xgLFxuICBFTlJPTExfQkFUQ0hfV0Y6IGAvYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL2Vucm9sYCxcbiAgV0lUSERSQVdfQkFUQ0hfV0Y6IGAvYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL3VuZW5yb2xgLFxuICBCTEVOREVEX1VTRVJfV0Y6IGAvYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL3VzZXIvc2VhcmNoYCxcbiAgQkxFTkRFRF9VU0VSX0NPVU5UOiBgYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL2Vucm9sL3N0YXR1cy9jb3VudGAsXG4gIENFUlRfQUREX1RFTVBMQVRFOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29ob3J0cy9jb3Vyc2UvYmF0Y2gvY2VydC90ZW1wbGF0ZS9hZGRgLFxuICBDRVJUX0lTU1VFOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29ob3J0cy9jb3Vyc2UvYmF0Y2gvY2VydC9pc3N1ZWAsXG4gIENFUlRfRE9XTkxPQUQ6IChjZXJ0SWQ6IGFueSkgPT4gYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvZG93bmxvYWQvJHtjZXJ0SWR9YCxcbiAgUkVBRF9LQVJNQVBPSU5UUzogYC9hcGlzL3Byb3hpZXMvdjgva2FybWFwb2ludHMvcmVhZGAsXG4gIENPTlRFTlRfUkVBRDogKGNvbnRlbnRJZDogYW55KSA9PiBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9yZWFkLyR7Y29udGVudElkfWAsXG4gIFJFQURfQ09VUlNFX0tBUk1BUE9JTlRTOiAnL2FwaXMvcHJveGllcy92OC9rYXJtYXBvaW50cy91c2VyL2NvdXJzZS9yZWFkJyxcbiAgQ0xBSU1fS0FSTUFQT0lOVFM6ICcvYXBpcy9wcm94aWVzL3Y4L2NsYWlta2FybWFwb2ludHMnLFxuICBVU0VSX0tBUk1BX1BPSU5UUzogJy9hcGlzL3Byb3hpZXMvdjgvdXNlci90b3RhbGthcm1hcG9pbnRzJyxcbiAgQUdHUkVHQVRJT05fU0VBUkNIOiAnL2FwaXMvcHJveGllcy92OC9jb250ZW50L2FnZ3JlZ2F0aW9uL3NlYXJjaCcsXG4gIEZFQVRVUkVfU0VBUkNIOiAnL2FwaXMvcHJveGllcy92OC9mZWF0dXJlZC9jb250ZW50L3NlYXJjaCcsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29udGVudExpYlNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTdmM6IFdpZGdldFVzZXJTZXJ2aWNlTGliXG4gICkge1xuICB9XG5cbiAgdG9jQ29uZmlnRGF0YTogYW55ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcbiAgdG9jQ29uZmlnRGF0YSQgID0gdGhpcy50b2NDb25maWdEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgdGVsZW1ldHJ5RGF0YTogYW55ID0gbmV3IFN1YmplY3Q8YW55PigpXG4gIHB1YmxpYyB0ZWxlbWV0cnlEYXRhJCA9IHRoaXMudGVsZW1ldHJ5RGF0YS5hc09ic2VydmFibGUoKVxuICBjdXJyZW50TWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnQ7XG4gIGN1cnJlbnRDb250ZW50UmVhZE1ldGFEYXRhITogTnNDb250ZW50LklDb250ZW50O1xuICBjdXJyZW50QmF0Y2hFbnJvbGxtZW50TGlzdCE6IE5zQ29udGVudC5JQ291cnNlW107XG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuICBwcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhJCA9IHRoaXMucHJvZ3JhbUNoaWxkQ291cnNlUmVzdW1lRGF0YS5hc09ic2VydmFibGUoKTtcblxuICBjaGFuZ2VUZWxlbWV0cnlEYXRhKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMudGVsZW1ldHJ5RGF0YS5uZXh0KG1lc3NhZ2UpO1xuICB9XG4gIGlzUmVzb3VyY2UocHJpbWFyeUNhdGVnb3J5OiBzdHJpbmcpIHtcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5KSB7XG4gICAgICBjb25zdCBpc1Jlc291cmNlID0gKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLkxFQVJOSU5HX1JFU09VUkNFKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuUFJBQ1RJQ0VfUkVTT1VSQ0UpIHx8XG4gICAgICAgIChwcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUmVzb3VyY2VQcmltYXJ5Q2F0ZWdvcmllcy5GSU5BTF9BU1NFU1NNRU5UKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuQ09NUF9BU1NFU1NNRU5UKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuT0ZGTElORV9TRVNTSU9OKTtcbiAgICAgIHJldHVybiBpc1Jlc291cmNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmZXRjaE1hcmtBc0NvbXBsZXRlTWV0YShpZGVudGlmaWVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLk1BUktfQVNfQ09NUExFVEVfTUVUQShpZGVudGlmaWVyKVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkudG9Qcm9taXNlKClcbiAgICBpZiAodXJsKSB7IH1cbiAgICByZXR1cm4gb2YoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHVwZGF0ZVRvY0NvbmZpZyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRvY0NvbmZpZ0RhdGEubmV4dChkYXRhKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudChcbiAgICBjb250ZW50SWQ6IHN0cmluZyxcbiAgICBoaWVyYXJjaHlUeXBlOiAnYWxsJyB8ICdtaW5pbWFsJyB8ICdkZXRhaWwnID0gJ2RldGFpbCcsXG4gICAgX2FkZGl0aW9uYWxGaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgcHJpbWFyeUNhdGVnb3J5Pzogc3RyaW5nIHwgbnVsbCxcbiAgKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICAvLyBjb25zdCB1cmwgPSBgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UfS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT0ke2hpZXJhcmNoeVR5cGV9YFxuICAgIGxldCB1cmwgPSAnJztcbiAgICBjb25zdCBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKTtcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5ICYmIHRoaXMuaXNSZXNvdXJjZShwcmltYXJ5Q2F0ZWdvcnkpKSB7XG4gICAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvcmVhZC8ke2NvbnRlbnRJZH1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9yUHJldmlldykge1xuICAgICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmb3JjcmVhdG9yID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VkaXRNb2RlPXRydWUnKTtcbiAgICAgICAgaWYgKGZvcmNyZWF0b3IpIHtcbiAgICAgICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwgPSBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5wb3N0PE5zQ29udGVudC5JQ29udGVudD4odXJsLCB7IGFkZGl0aW9uYWxGaWVsZHMgfSlcbiAgICAvLyAgIC5waXBlKHJldHJ5KDEpKVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8TnNDb250ZW50LklDb250ZW50Pih1cmwpXG4gICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgLy8gaWYgKGFwaURhdGEgJiYgYXBpRGF0YS5yZXN1bHQpIHtcbiAgICAvLyAgIHJldHVybiBhcGlEYXRhLnJlc3VsdC5jb250ZW50XG4gICAgLy8gfVxuICB9XG4gIGZldGNoQXV0aG9yaW5nQ29udGVudChjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50PiB7XG4gICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJyk7XG4gICAgbGV0IHVybCA9ICcnO1xuICAgIGlmIChmb3JjcmVhdG9yKSB7XG4gICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gYCR7QVBJX0VORF9QT0lOVFMuQVVUSE9SSU5HX0NPTlRFTlR9LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPWRldGFpbGA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKS5waXBlKHNoYXJlUmVwbGF5KDEpLCByID0+IHIpO1xuICB9XG4gIGZldGNoTXVsdGlwbGVDb250ZW50KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuTVVMVElQTEVfQ09OVEVOVH0vJHtpZHMuam9pbignLCcpfWAsXG4gICAgKTtcbiAgfVxuICBmZXRjaENvbGxlY3Rpb25IaWVyYXJjaHkodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29sbGVjdGlvbkhpZXJhcmNoeVJlc3BvbnNlPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTExFQ1RJT05fSElFUkFSQ0hZKFxuICAgICAgICB0eXBlLFxuICAgICAgICBpZCxcbiAgICAgICl9P3BhZ2VOdW1iZXI9JHtwYWdlTnVtYmVyfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWAsXG4gICAgKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZENvdXJzZSgpIHtcblxuICB9XG5cbiAgZmV0Y2hDb3Vyc2VCYXRjaGVzKHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oQVBJX0VORF9QT0lOVFMuQ09VUlNFX0JBVENIX0xJU1QsIHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICAvLyBmZXRjaCBpbmRpdmlkdWFsIGJhdGNoXG4gIGZldGNoQ291cnNlQmF0Y2goYmF0Y2hJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT1VSU0VfQkFUQ0h9LyR7YmF0Y2hJZH1gLFxuICAgICk7XG4gIH1cblxuICBhdXRvQXNzaWduQmF0Y2hBcGkoaWRlbnRpZmllcjogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7QVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQkFUQ0h9JHtpZGVudGlmaWVyfWApXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgYXV0b0Fzc2lnbkN1cmF0ZWRCYXRjaEFwaShyZXF1ZXN0OiBhbnksIHByb2dyYW1UeXBlOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBwcm9ncmFtVHlwZSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5NT0RFUkFURURfUFJPR1JBTSA/XG4gICAgQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNIDogQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQ1VSQVRFRF9CQVRDSDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7dXJsfWAsIHJlcXVlc3QpXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgZW5yb2xsVXNlclRvQmF0Y2gocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0gsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGVucm9sbEFuZFVuZW5yb2xsVXNlclRvQmF0Y2hXRihyZXE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgY29uc3QgdXJsOiBhbnkgPSB0eXBlID09PSAnV0lUSERSQVcnID8gQVBJX0VORF9QT0lOVFMuV0lUSERSQVdfQkFUQ0hfV0YgOiBBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0hfV0Y7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCByZXEpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBmZXRjaEJsZW5kZWRVc2VyV0YocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5CTEVOREVEX1VTRVJfV0YsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZFVzZXJDT1VOVChyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkJMRU5ERURfVVNFUl9DT1VOVCwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50TGlrZXMoY29udGVudElkczogeyBjb250ZW50X2lkOiBzdHJpbmdbXSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyBbaWRlbnRpZmllcjogc3RyaW5nXTogbnVtYmVyIH0+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfTElLRVMsIGNvbnRlbnRJZHMpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cbiAgZmV0Y2hDb250ZW50UmF0aW5ncyhjb250ZW50SWRzOiB7IGNvbnRlbnRJZHM6IHN0cmluZ1tdIH0pIHtcbiAgICBpZiAoY29udGVudElkcykgeyB9XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cFxuICAgIC8vICAgLnBvc3QoYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9L3JhdGluZ2AsIGNvbnRlbnRJZHMpXG4gICAgLy8gICAudG9Qcm9taXNlKClcbiAgICByZXR1cm4gb2YoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudEhpc3RvcnkoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfSElTVE9SWX0vJHtjb250ZW50SWR9YCxcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50SGlzdG9yeVYyKHJlcTogTnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YVJlcSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4ge1xuICAgIHJlcS5yZXF1ZXN0LmZpZWxkcyA9IFsncHJvZ3Jlc3NkZXRhaWxzJ107XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuaHR0cC5wb3N0PE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9ISVNUT1JZVjJ9LyR7cmVxLnJlcXVlc3QuY291cnNlSWR9YCwgcmVxXG4gICAgKTtcbiAgICBkYXRhLnN1YnNjcmliZSgoc3Vic2NyaWJlRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLm5leHQoeyByZXN1bWVEYXRhOiBzdWJzY3JpYmVEYXRhLnJlc3VsdC5jb250ZW50TGlzdCwgY291cnNlSWQ6IHJlcS5yZXF1ZXN0LmNvdXJzZUlkIH0pO1xuICAgICAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGNvbnRpbnVlTGVhcm5pbmcoaWQ6IHN0cmluZywgY29sbGVjdGlvbklkPzogc3RyaW5nLCBjb2xsZWN0aW9uVHlwZT86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlICYmXG4gICAgICAgIGNvbGxlY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdwbGF5bGlzdCcpIHtcbiAgICAgICAgY29uc3QgcmVxQm9keSA9IHtcbiAgICAgICAgICBjb250ZXh0UGF0aElkOiBjb2xsZWN0aW9uSWQgPyBjb2xsZWN0aW9uSWQgOiBpZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBpZCxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgICAgICBjb250ZXh0RnVsbFBhdGg6IFtjb2xsZWN0aW9uSWQsIGlkXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBkYXRlQWNjZXNzZWQ6IERhdGUubm93KCksXG4gICAgICAgICAgY29udGV4dFR5cGU6ICdwbGF5bGlzdCcsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUNvbnRpbnVlTGVhcm5pbmcocmVxQm9keSkudG9Qcm9taXNlKCkuY2F0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXFCb2R5ID0ge1xuICAgICAgICAgIGNvbnRleHRQYXRoSWQ6IGNvbGxlY3Rpb25JZCA/IGNvbGxlY3Rpb25JZCA6IGlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IGlkLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pLFxuICAgICAgICAgIGRhdGVBY2Nlc3NlZDogRGF0ZS5ub3coKSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlQ29udGludWVMZWFybmluZyhyZXFCb2R5KS50b1Byb21pc2UoKS5jYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNhdmVDb250aW51ZUxlYXJuaW5nKGNvbnRlbnQ6IE5zQ29udGVudC5JVmlld2VyQ29udGludWVMZWFybmluZ1JlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLlVTRVJfQ09OVElOVUVfTEVBUk5JTkdcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIGNvbnRlbnQpXG4gICAgaWYgKGNvbnRlbnQpIHtcblxuICAgIH1cbiAgICByZXR1cm4gb2YoKSBhcyBhbnk7XG4gIH1cblxuICBzZXRTM0Nvb2tpZShcbiAgICBfY29udGVudElkOiBzdHJpbmcsXG4gICAgLy8gX3BhdGg6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdChBUElfRU5EX1BPSU5UUy5TRVRfUzNfQ09PS0lFLCB7IGNvbnRlbnRJZCB9KVxuICAgIC8vICAgLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSlcblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHNldFMzSW1hZ2VDb29raWUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuU0VUX1MzX0lNQUdFX0NPT0tJRSwge30pLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSk7XG4gIH1cblxuICBmZXRjaE1hbmlmZXN0KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuRkVUQ0hfTUFOSUZFU1QsIHsgdXJsIH0pO1xuICB9XG4gIGZldGNoV2ViTW9kdWxlQ29udGVudCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7QVBJX0VORF9QT0lOVFMuRkVUQ0hfV0VCX01PRFVMRV9GSUxFU30/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCl9YCk7XG4gIH1cbiAgc2VhcmNoKHJlcTogTlNTZWFyY2guSVNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+IHtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y1LCB7XG4gICAgICByZXF1ZXN0OiByZXEsXG4gICAgfSk7XG4gIH1cbiAgc2VhcmNoUmVnaW9uUmVjb21tZW5kYXRpb24oXG4gICAgcmVxOiBOU1NlYXJjaC5JU2VhcmNoT3JnUmVnaW9uUmVjb21tZW5kYXRpb25SZXF1ZXN0LFxuICApOiBPYnNlcnZhYmxlPE5zQ29udGVudFN0cmlwTXVsdGlwbGUuSUNvbnRlbnRTdHJpcFJlc3BvbnNlQXBpPiB7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIHJlcS5wcmVMYWJlbFZhbHVlID1cbiAgICAgIChyZXEucHJlTGFiZWxWYWx1ZSB8fCAnJykgK1xuICAgICAgKCh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5jb3VudHJ5KSB8fCAnJyk7XG4gICAgcmVxLmZpbHRlcnMgPSB7XG4gICAgICAuLi5yZXEuZmlsdGVycyxcbiAgICAgIGxhYmVsczogW3JlcS5wcmVMYWJlbFZhbHVlIHx8ICcnXSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnRTdHJpcE11bHRpcGxlLklDb250ZW50U3RyaXBSZXNwb25zZUFwaT4oXG4gICAgICBBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9SRUdJT05fUkVDT01NRU5EQVRJT04sXG4gICAgICB7IHJlcXVlc3Q6IHJlcSB9LFxuICAgICk7XG4gIH1cbiAgc2VhcmNoVjYocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIGNvbnN0IGFwaVBhdGggPSBfLmdldChyZXEsICdhcGkucGF0aCcpO1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICBpZiAoYXBpUGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KGFwaVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y2LCByZXEpO1xuICB9XG5cbiAgc2VhcmNoUmVsYXRlZENCUFY2KHJlcTogTlNTZWFyY2guSVNlYXJjaFY2UmVxdWVzdFYyKTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfUkVMQVRFRF9DQlBfVjYsIHJlcSk7XG4gIH1cblxuICBmZXRjaENvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgcmF0aW5nOiBudW1iZXIgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgcmF0aW5nOiBudW1iZXIgfT4oYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWApO1xuICB9XG4gIGRlbGV0ZUNvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gKTtcbiAgfVxuICBhZGRDb250ZW50UmF0aW5nKGNvbnRlbnRJZDogc3RyaW5nLCBkYXRhOiB7IHJhdGluZzogbnVtYmVyIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gLCBkYXRhKTtcbiAgfVxuXG4gIGdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpOiBOc0NvbnRlbnQuSUNvbnRlbnQge1xuICAgIGlmICghKGNvbnRlbnQuY2hpbGRyZW4gfHwgW10pLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1BTkRBVE9SWV9DT1VSU0VfR09BTCB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSkgfHxcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpXG4gICAgKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF07XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkoY2hpbGQpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJBQ1RJQ0VfUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5GSU5BTF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OXG4gICAgKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF07XG4gICAgY29uc3QgcmVzdWx0Q29udGVudCA9IHRoaXMuZ2V0Rmlyc3RDaGlsZEluSGllcmFyY2h5KGZpcnN0Q2hpbGQpO1xuICAgIHJldHVybiByZXN1bHRDb250ZW50O1xuICB9XG5cbiAgZ2V0UmVnaXN0cmF0aW9uU3RhdHVzKHNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTx7IGhhc0FjY2VzczogYm9vbGVhbjsgcmVnaXN0cmF0aW9uVXJsPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLlJFR0lTVFJBVElPTl9TVEFUVVN9LyR7c291cmNlfWApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb25maWcodXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCk7XG4gIH1cblxuICBhZGRDZXJ0VGVtcGxhdGUoYm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfQUREX1RFTVBMQVRFfWAsIGJvZHkpO1xuICB9XG5cbiAgaXNzdWVDZXJ0KGJvZHk6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfSVNTVUV9YCwgYm9keSk7XG4gIH1cbiAgZG93bmxvYWRDZXJ0KGNlcnRJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHtBUElfRU5EX1BPSU5UUy5DRVJUX0RPV05MT0FEKGNlcnRJZCl9YCk7XG4gIH1cblxuICB0cmVuZGluZ0NvbnRlbnRTZWFyY2gocmVxOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5UUkVORElOR19DT05URU5UX1NFQVJDSCwgcmVxKTtcbiAgfVxuXG4gIGdldEthcm1hUG9pdG5zKGxpbWl0OiBudW1iZXIsIG9mZnNldDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlJFQURfS0FSTUFQT0lOVFMsIHsgbGltaXQsIG9mZnNldCB9KS5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpO1xuICB9XG4gIGZldGNoUHJvZ3JhbUNvbnRlbnQoY29udGVudElkOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50W10+IHtcbiAgICBsZXQgdXJsID0gJyc7XG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJyk7XG4gICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oXG4gICAgICAgIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpLFxuICAgICAgKTtcbiAgICB9XG4gICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KHVybCk7XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpKVxuICB9XG5cbiAgZ2V0Q291cnNlS2FybWFQb2ludHMocmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuUkVBRF9DT1VSU0VfS0FSTUFQT0lOVFMsIHJlcXVlc3QpO1xuICB9XG5cbiAgY2xhaW1LYXJtYXBvaW50cyhyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5DTEFJTV9LQVJNQVBPSU5UUywgcmVxdWVzdCk7XG4gIH1cblxuICB1c2VyS2FybWFQb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuVVNFUl9LQVJNQV9QT0lOVFMsIHt9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEVucm9sbGVkRGF0YShkb0lkOiBzdHJpbmcpIHtcbiAgICBsZXQgdXNlcklkID0gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkXG4gICAgY29uc3QgcmVzcG9uc2VEYXRhID0gIGF3YWl0IHRoaXMudXNlclN2Yy5mZXRjaEVucm9sbG1lbnREYXRhQnlDb250ZW50SWQodXNlcklkLGRvSWQpLnRvUHJvbWlzZSgpLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAocmVzICYmIHJlcy5jb3Vyc2VzICYmIHJlcy5jb3Vyc2VzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzLmNvdXJzZXNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbXVxuICAgICAgfVxuICAgIH0pLmNhdGNoKChfZXJyOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBbXVxuICAgIH0pO1xuICAgIHJldHVybiByZXNwb25zZURhdGEgfHwgW11cbiAgfVxuXG4gIGFzeW5jIGdldFJlc291cnNlTGluayhjb250ZW50OiBhbnkpIHtcbiAgICBpZihjb250ZW50LmV4dGVybmFsSWQpIHtcbiAgICAgICAgY29uc3QgdXJsRGF0YTogYW55ID0ge1xuICAgICAgICAgIHVybDogYGFwcC90b2MvZXh0LyR7Y29udGVudC5jb250ZW50SWR9YCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyBiYXRjaElkOiBjb250ZW50LmJhdGNoSWQgfSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHVybERhdGFcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZW5yb2xsZWRDb3Vyc2U6IGFueSA9IGF3YWl0IHRoaXMuZ2V0RW5yb2xsZWREYXRhKGNvbnRlbnQuaWRlbnRpZmllcik7XG4gICAgICBpZiAoZW5yb2xsZWRDb3Vyc2UgJiYgZW5yb2xsZWRDb3Vyc2UubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGVucm9sbGVkQ291cnNlRGF0YSA9IGVucm9sbGVkQ291cnNlWzBdXG4gICAgICAgIGlmIChlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LklOVklURV9PTkxZX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTU9ERVJBVEVEX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNCYXRjaEluUHJvZ3Jlc3MoZW5yb2xsZWRDb3Vyc2VEYXRhLmJhdGNoKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAgYXdhaXQgdGhpcy5jaGVja0ZvckRhdGFUb0Zvcm1VcmwoY29udGVudCwgZW5yb2xsZWRDb3Vyc2VEYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9ICB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9ICBhd2FpdCB0aGlzLmNoZWNrRm9yRGF0YVRvRm9ybVVybChjb250ZW50LCBlbnJvbGxlZENvdXJzZURhdGEpO1xuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQ6IGFueSwgZW5yb2xsRGF0YTogYW55KSB7XG4gICAgbGV0IHVybERhdGE6IGFueTtcbiAgICBpZiAoZW5yb2xsRGF0YS5jb21wbGV0aW9uUGVyY2VudGFnZSAgPT09IDEwMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoZW5yb2xsRGF0YSk7XG4gICAgfVxuICAgIGlmIChlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscyAmJiBlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscy5taW1lVHlwZSkge1xuICAgICAgY29uc3QgbW9kaWZ5RW5yb2xsRGF0YSAgPSB7XG4gICAgICAgIC4uLmVucm9sbERhdGEsXG4gICAgICAgIGlkZW50aWZpZXI6IGVucm9sbERhdGEuY29sbGVjdGlvbklkLFxuICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6IGVucm9sbERhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgIG5hbWU6IGVucm9sbERhdGEuY29udGVudC5uYW1lLFxuICAgICAgfTtcbiAgICAgIGlmIChtb2RpZnlFbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJlc291cnNlRGF0YVdpdGhEYXRhKG1vZGlmeUVucm9sbERhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQsIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RpZnlFbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yb2xsRGF0YS5scmNQcm9ncmVzc0RldGFpbHMubWltZVR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5yb2xsRGF0YS5maXJzdENoaWxkSWQgfHwgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCkge1xuICAgICAgICBjb25zdCBkb0lkID0gZW5yb2xsRGF0YS5maXJzdENoaWxkSWQgfHwgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZDtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5mZXRjaFByb2dyYW1Db250ZW50KGRvSWQpLnRvUHJvbWlzZSgpLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMucmVzdWx0ICYmIHJlcy5yZXN1bHQuY29udGVudCkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudERhdGE6IGFueSA9IHJlcy5yZXN1bHQuY29udGVudDtcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmeUVucm9sbERhdGEgID0ge1xuICAgICAgICAgICAgICAuLi5lbnJvbGxEYXRhLFxuICAgICAgICAgICAgICBpZGVudGlmaWVyOiBlbnJvbGxEYXRhLmNvbGxlY3Rpb25JZCxcbiAgICAgICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBlbnJvbGxEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgICAgICAgICBuYW1lOiBlbnJvbGxEYXRhLmNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1cmxEYXRhID0gIHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSwgY29udGVudERhdGEuaWRlbnRpZmllciwgY29udGVudERhdGEubWltZVR5cGUpO1xuICAgICAgICAgICAgaWYgKHVybERhdGEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVybERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSA/IHJlc3BvbnNlRGF0YSA6IHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG4gICAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG5cbiAgfVxuXG4gIGdldFJlc291cnNlRGF0YVdpdGhEYXRhKGNvbnRlbnQ6IGFueSwgcmVzb3Vyc2VJZDogYW55LCBtaW1lVHlwZTogYW55KSB7XG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIGNvbnN0IHVybCA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICByZXNvdXJzZUlkLFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgY29udGVudC5pZGVudGlmaWVyLFxuICAgICAgICAnQ291cnNlJyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgICAgIGNvbnRlbnQuYmF0Y2hJZCxcbiAgICAgICAgY29udGVudC5uYW1lLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGNvbnRlbnQpO1xuICB9XG4gIGdvdG9Ub2NQYWdlKGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IHVybERhdGE6IGFueSA9IHtcbiAgICAgIHVybDogYC9hcHAvdG9jLyR7Y29udGVudC5pZGVudGlmaWVyID8gY29udGVudC5pZGVudGlmaWVyIDogY29udGVudC5jb2xsZWN0aW9uSWR9L292ZXJ2aWV3YCxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGJhdGNoSWQ6IGNvbnRlbnQuYmF0Y2hJZCB9LFxuICAgIH07XG4gICAgaWYgKGNvbnRlbnQuZW5kRGF0ZSkge1xuICAgICAgdXJsRGF0YS5xdWVyeVBhcmFtcyA9IHsgLi4udXJsRGF0YS5xdWVyeVBhcmFtcywgcGxhblR5cGU6ICdjYlBsYW4nLCBlbmREYXRlOiBjb250ZW50LmVuZERhdGUgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVybERhdGE7XG4gIH1cbiAgaXNCYXRjaEluUHJvZ3Jlc3MoYmF0Y2hEYXRhOiBhbnkpIHtcbiAgICAvLyBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudFsnYmF0Y2hlcyddKSB7XG4gICAgLy8gY29uc3QgYmF0Y2hlcyA9IHRoaXMuY29udGVudFsnYmF0Y2hlcyddIGFzIE5zQ29udGVudC5JQmF0Y2hcbiAgICBpZiAoYmF0Y2hEYXRhICYmIGJhdGNoRGF0YS5lbmREYXRlKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChiYXRjaERhdGEuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBiYXRjaERhdGEuZW5kRGF0ZSA/IG1vbWVudChiYXRjaERhdGEuZW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiBub3c7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAgICAgLy8gYmF0Y2guc3RhdHVzICYmXG4gICAgICAgICAgICBtb21lbnQoc3RhcnREYXRlKS5pc1NhbWVPckJlZm9yZShub3cpXG4gICAgICAgICAgICAmJiBtb21lbnQoZW5kRGF0ZSkuaXNTYW1lT3JBZnRlcihub3cpXG4gICAgICAgICAgKTtcbiAgICB9IHJldHVybiB0cnVlO1xuICB9XG4gIHBvc3RBcGlNZXRob2QoYXBpVXJsOiBhbnksIHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklDb250ZW50PihhcGlVcmwsIHJlcSk7XG4gIH1cbiAgZ2V0QXBpTWV0aG9kKGFwaVVybDogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICAvLyByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50PihhcGlVcmwpO1xuICB9XG5cblxuICBnZXRFbnJvbGxlZERhdGFGcm9tTGlzdChlbnJvbGxtZW50TGlzdDogYW55LCBjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmKGVucm9sbG1lbnRMaXN0ICYmIGVucm9sbG1lbnRMaXN0Lmxlbmd0aCkge1xuICAgICAgbGV0IGVucm9sbGVkRGF0YSA9IGVucm9sbG1lbnRMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5jb2xsZWN0aW9uSWQgPT09IGNvbGxlY3Rpb25JZClcbiAgICAgIHJldHVybiBlbnJvbGxlZERhdGEubGVuZ3RoID8gZW5yb2xsZWREYXRhWzBdOiB7fVxuICAgIH1cbiAgfVxufVxuIl19
914
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi9jb25zdW1wdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRzVELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRyxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFBO0FBQzlELE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDOzs7Ozs7TUFDNUIsTUFBTSxHQUFHLE9BQU87Ozs7TUFJaEIsaUJBQWlCLEdBQUcsb0JBQW9COzs7Ozs7QUF5QnRCLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxFQUFFLENBQ2pELEdBQUcsaUJBQWlCLHVCQUF1QixJQUFJLElBQUksRUFBRSxFQUFFOzs7O0FBRWxDLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsa0JBQWtCLFNBQVMsRUFBRTs7OztBQVFoRixDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMs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QUNELFlBQVksQ0FBQyxNQUFXO1FBQ3RCLCtCQUErQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7Ozs7SUFHRCx1QkFBdUIsQ0FBQyxjQUFtQixFQUFFLFlBQW9CO1FBQy9ELElBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUU7O2dCQUN0QyxZQUFZLEdBQUcsY0FBYyxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUM7WUFDekYsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUNqRDtJQUNILENBQUM7OztZQWxpQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBakVRLFVBQVU7WUFFVixxQkFBcUI7WUFTdEIsb0JBQW9COzs7OztJQStEMUIsZ0RBQWtEOztJQUNsRCxpREFBb0Q7Ozs7O0lBRXBELGdEQUErQzs7SUFDL0MsaURBQXlEOztJQUN6RCxrREFBcUM7O0lBQ3JDLDZEQUFnRDs7SUFDaEQsNkRBQWlEOztJQUNqRCwrREFBNEQ7O0lBQzVELGdFQUFpRjs7Ozs7SUFmL0UsdUNBQXdCOzs7OztJQUN4Qiw0Q0FBd0M7Ozs7O0lBQ3hDLDBDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12Mic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgRU1QVFksIEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOc0NvbnRlbnRTdHJpcE11bHRpcGxlIH0gZnJvbSAnLi4vX21vZGVscy9jb250ZW50LXN0cmlwLW11bHRpcGxlLm1vZGVsJztcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnO1xuaW1wb3J0IHsgTlNTZWFyY2ggfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC1zZWFyY2gubW9kZWwnO1xuLy8gdHNsaW50OmRpc2FibGVcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgIHZpZXdlclJvdXRlR2VuZXJhdG9yIH0gZnJvbSAnLi92aWV3ZXItcm91dGUtdXRpbCdcbmltcG9ydCB7V2lkZ2V0VXNlclNlcnZpY2VMaWJ9IGZyb20gJy4vd2lkZ2V0LXVzZXItbGliLnNlcnZpY2UnXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuLy8gdHNsaW50OmVuYWJsZVxuXG4vLyBUT0RPOiBtb3ZlIHRoaXMgaW4gc29tZSBjb21tb24gcGxhY2VcbmNvbnN0IFBST1RFQ1RFRF9TTEFHX1Y4ID0gJy9hcGlzL3Byb3RlY3RlZC92OCc7XG5cbmNvbnN0IEFQSV9FTkRfUE9JTlRTID0ge1xuICBDT05URU5UOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudGAsXG4gIEFVVEhPUklOR19DT05URU5UOiBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5YCxcbiAgQ09OVEVOVF9MSUtFUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvbGlrZUNvdW50YCxcbiAgU0VUX1MzX0NPT0tJRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2V0Q29va2llYCxcbiAgU0VUX1MzX0lNQUdFX0NPT0tJRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2V0SW1hZ2VDb29raWVgLFxuICBGRVRDSF9NQU5JRkVTVDogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvZ2V0V2ViTW9kdWxlTWFuaWZlc3RgLFxuICBGRVRDSF9XRUJfTU9EVUxFX0ZJTEVTOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9nZXRXZWJNb2R1bGVGaWxlc2AsXG4gIE1VTFRJUExFX0NPTlRFTlQ6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L211bHRpcGxlYCxcbiAgQ09OVEVOVF9TRUFSQ0hfVjU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NlYXJjaFY1YCxcbiAgQ09OVEVOVF9TRUFSQ0hfVjY6IGAvYXBpcy9wcm94aWVzL3Y4L3N1bmJpcmRpZ290L3NlYXJjaGAsXG4gIFRSRU5ESU5HX0NPTlRFTlRfU0VBUkNIOiBgYXBpcy9wcm94aWVzL3Y4L3RyZW5kaW5nL2NvbnRlbnQvc2VhcmNoYCxcbiAgQ09OVEVOVF9TRUFSQ0hfUkVMQVRFRF9DQlBfVjY6IGAvYXBpcy9wcm94aWVzL3Y4L3N1bmJpcmRpZ290L3NlYXJjaGAsXG4gIENPTlRFTlRfU0VBUkNIX1JFR0lPTl9SRUNPTU1FTkRBVElPTjogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2VhcmNoUmVnaW9uUmVjb21tZW5kYXRpb25gLFxuICBDT05URU5UX0hJU1RPUlk6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL2hpc3RvcnlgLFxuICBDT05URU5UX0hJU1RPUllWMjogYC9hcGlzL3Byb3hpZXMvdjgvcmVhZC9jb250ZW50LXByb2dyZXNgLFxuICBDT1VSU0VfQkFUQ0hfTElTVDogYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjEvYmF0Y2gvbGlzdGAsXG4gIENPVVJTRV9CQVRDSDogYC9hcGlzL3Byb3hpZXMvdjgvY291cnNlL3YxL2JhdGNoL3JlYWRgLFxuICBBVVRPX0FTU0lHTl9CQVRDSDogYC9hcGlzL3Byb3RlY3RlZC92OC9jb2hvcnRzL3VzZXIvYXV0b2Vucm9sbG1lbnQvYCxcbiAgQVVUT19BU1NJR05fQ1VSQVRFRF9CQVRDSDogYC9hcGlzL3Byb3hpZXMvdjgvY3VyYXRlZHByb2dyYW0vdjEvZW5yb2xgLFxuICBBVVRPX0FTU0lHTl9PUEVOX1BST0dSQU06IGAvYXBpcy9wcm94aWVzL3Y4L29wZW5wcm9ncmFtL3YxL2Vucm9sYCxcbiAgVVNFUl9DT05USU5VRV9MRUFSTklORzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvaGlzdG9yeS9jb250aW51ZWAsXG4gIENPTlRFTlRfUkFUSU5HOiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9yYXRpbmdgLFxuICBDT0xMRUNUSU9OX0hJRVJBUkNIWTogKHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZykgPT5cbiAgICBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9jb2xsZWN0aW9uLyR7dHlwZX0vJHtpZH1gLFxuICBSRUdJU1RSQVRJT05fU1RBVFVTOiBgJHtQUk9URUNURURfU0xBR19WOH0vYWRtaW4vdXNlclJlZ2lzdHJhdGlvbi9jaGVja1VzZXJSZWdpc3RyYXRpb25Db250ZW50YCxcbiAgTUFSS19BU19DT01QTEVURV9NRVRBOiAoY29udGVudElkOiBzdHJpbmcpID0+IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL3Byb2dyZXNzLyR7Y29udGVudElkfWAsXG4gIEVOUk9MTF9CQVRDSDogYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjEvZW5yb2xgLFxuICBFTlJPTExfQkFUQ0hfV0Y6IGAvYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL2Vucm9sYCxcbiAgV0lUSERSQVdfQkFUQ0hfV0Y6IGAvYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL3VuZW5yb2xgLFxuICBCTEVOREVEX1VTRVJfV0Y6IGAvYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL3VzZXIvc2VhcmNoYCxcbiAgQkxFTkRFRF9VU0VSX0NPVU5UOiBgYXBpcy9wcm94aWVzL3Y4L3dvcmtmbG93L2JsZW5kZWRwcm9ncmFtL2Vucm9sL3N0YXR1cy9jb3VudGAsXG4gIENFUlRfQUREX1RFTVBMQVRFOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29ob3J0cy9jb3Vyc2UvYmF0Y2gvY2VydC90ZW1wbGF0ZS9hZGRgLFxuICBDRVJUX0lTU1VFOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29ob3J0cy9jb3Vyc2UvYmF0Y2gvY2VydC9pc3N1ZWAsXG4gIENFUlRfRE9XTkxPQUQ6IChjZXJ0SWQ6IGFueSkgPT4gYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvZG93bmxvYWQvJHtjZXJ0SWR9YCxcbiAgUkVBRF9LQVJNQVBPSU5UUzogYC9hcGlzL3Byb3hpZXMvdjgva2FybWFwb2ludHMvcmVhZGAsXG4gIENPTlRFTlRfUkVBRDogKGNvbnRlbnRJZDogYW55KSA9PiBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9yZWFkLyR7Y29udGVudElkfWAsXG4gIFJFQURfQ09VUlNFX0tBUk1BUE9JTlRTOiAnL2FwaXMvcHJveGllcy92OC9rYXJtYXBvaW50cy91c2VyL2NvdXJzZS9yZWFkJyxcbiAgQ0xBSU1fS0FSTUFQT0lOVFM6ICcvYXBpcy9wcm94aWVzL3Y4L2NsYWlta2FybWFwb2ludHMnLFxuICBVU0VSX0tBUk1BX1BPSU5UUzogJy9hcGlzL3Byb3hpZXMvdjgvdXNlci90b3RhbGthcm1hcG9pbnRzJyxcbiAgQUdHUkVHQVRJT05fU0VBUkNIOiAnL2FwaXMvcHJveGllcy92OC9jb250ZW50L2FnZ3JlZ2F0aW9uL3NlYXJjaCcsXG4gIEZFQVRVUkVfU0VBUkNIOiAnL2FwaXMvcHJveGllcy92OC9mZWF0dXJlZC9jb250ZW50L3NlYXJjaCcsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29udGVudExpYlNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTdmM6IFdpZGdldFVzZXJTZXJ2aWNlTGliXG4gICkge1xuICB9XG5cbiAgdG9jQ29uZmlnRGF0YTogYW55ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcbiAgdG9jQ29uZmlnRGF0YSQgID0gdGhpcy50b2NDb25maWdEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgdGVsZW1ldHJ5RGF0YTogYW55ID0gbmV3IFN1YmplY3Q8YW55PigpXG4gIHB1YmxpYyB0ZWxlbWV0cnlEYXRhJCA9IHRoaXMudGVsZW1ldHJ5RGF0YS5hc09ic2VydmFibGUoKVxuICBjdXJyZW50TWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnQ7XG4gIGN1cnJlbnRDb250ZW50UmVhZE1ldGFEYXRhITogTnNDb250ZW50LklDb250ZW50O1xuICBjdXJyZW50QmF0Y2hFbnJvbGxtZW50TGlzdCE6IE5zQ29udGVudC5JQ291cnNlW107XG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuICBwcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhJCA9IHRoaXMucHJvZ3JhbUNoaWxkQ291cnNlUmVzdW1lRGF0YS5hc09ic2VydmFibGUoKTtcblxuICBjaGFuZ2VUZWxlbWV0cnlEYXRhKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMudGVsZW1ldHJ5RGF0YS5uZXh0KG1lc3NhZ2UpO1xuICB9XG4gIGlzUmVzb3VyY2UocHJpbWFyeUNhdGVnb3J5OiBzdHJpbmcpIHtcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5KSB7XG4gICAgICBjb25zdCBpc1Jlc291cmNlID0gKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLkxFQVJOSU5HX1JFU09VUkNFKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuUFJBQ1RJQ0VfUkVTT1VSQ0UpIHx8XG4gICAgICAgIChwcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUmVzb3VyY2VQcmltYXJ5Q2F0ZWdvcmllcy5GSU5BTF9BU1NFU1NNRU5UKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuQ09NUF9BU1NFU1NNRU5UKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuT0ZGTElORV9TRVNTSU9OKTtcbiAgICAgIHJldHVybiBpc1Jlc291cmNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmZXRjaE1hcmtBc0NvbXBsZXRlTWV0YShpZGVudGlmaWVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLk1BUktfQVNfQ09NUExFVEVfTUVUQShpZGVudGlmaWVyKVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkudG9Qcm9taXNlKClcbiAgICBpZiAodXJsKSB7IH1cbiAgICByZXR1cm4gb2YoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHVwZGF0ZVRvY0NvbmZpZyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRvY0NvbmZpZ0RhdGEubmV4dChkYXRhKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudChcbiAgICBjb250ZW50SWQ6IHN0cmluZyxcbiAgICBoaWVyYXJjaHlUeXBlOiAnYWxsJyB8ICdtaW5pbWFsJyB8ICdkZXRhaWwnID0gJ2RldGFpbCcsXG4gICAgX2FkZGl0aW9uYWxGaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgcHJpbWFyeUNhdGVnb3J5Pzogc3RyaW5nIHwgbnVsbCxcbiAgKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICAvLyBjb25zdCB1cmwgPSBgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UfS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT0ke2hpZXJhcmNoeVR5cGV9YFxuICAgIGxldCB1cmwgPSAnJztcbiAgICBjb25zdCBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKTtcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5ICYmIHRoaXMuaXNSZXNvdXJjZShwcmltYXJ5Q2F0ZWdvcnkpKSB7XG4gICAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvcmVhZC8ke2NvbnRlbnRJZH1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9yUHJldmlldykge1xuICAgICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmb3JjcmVhdG9yID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VkaXRNb2RlPXRydWUnKTtcbiAgICAgICAgaWYgKGZvcmNyZWF0b3IpIHtcbiAgICAgICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwgPSBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5wb3N0PE5zQ29udGVudC5JQ29udGVudD4odXJsLCB7IGFkZGl0aW9uYWxGaWVsZHMgfSlcbiAgICAvLyAgIC5waXBlKHJldHJ5KDEpKVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8TnNDb250ZW50LklDb250ZW50Pih1cmwpXG4gICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgLy8gaWYgKGFwaURhdGEgJiYgYXBpRGF0YS5yZXN1bHQpIHtcbiAgICAvLyAgIHJldHVybiBhcGlEYXRhLnJlc3VsdC5jb250ZW50XG4gICAgLy8gfVxuICB9XG4gIGZldGNoQXV0aG9yaW5nQ29udGVudChjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50PiB7XG4gICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJyk7XG4gICAgbGV0IHVybCA9ICcnO1xuICAgIGlmIChmb3JjcmVhdG9yKSB7XG4gICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gYCR7QVBJX0VORF9QT0lOVFMuQVVUSE9SSU5HX0NPTlRFTlR9LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPWRldGFpbGA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKS5waXBlKHNoYXJlUmVwbGF5KDEpLCByID0+IHIpO1xuICB9XG4gIGZldGNoTXVsdGlwbGVDb250ZW50KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuTVVMVElQTEVfQ09OVEVOVH0vJHtpZHMuam9pbignLCcpfWAsXG4gICAgKTtcbiAgfVxuICBmZXRjaENvbGxlY3Rpb25IaWVyYXJjaHkodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29sbGVjdGlvbkhpZXJhcmNoeVJlc3BvbnNlPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTExFQ1RJT05fSElFUkFSQ0hZKFxuICAgICAgICB0eXBlLFxuICAgICAgICBpZCxcbiAgICAgICl9P3BhZ2VOdW1iZXI9JHtwYWdlTnVtYmVyfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWAsXG4gICAgKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZENvdXJzZSgpIHtcblxuICB9XG5cbiAgZmV0Y2hDb3Vyc2VCYXRjaGVzKHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oQVBJX0VORF9QT0lOVFMuQ09VUlNFX0JBVENIX0xJU1QsIHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICAvLyBmZXRjaCBpbmRpdmlkdWFsIGJhdGNoXG4gIGZldGNoQ291cnNlQmF0Y2goYmF0Y2hJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT1VSU0VfQkFUQ0h9LyR7YmF0Y2hJZH1gLFxuICAgICk7XG4gIH1cblxuICBhdXRvQXNzaWduQmF0Y2hBcGkoaWRlbnRpZmllcjogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7QVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQkFUQ0h9JHtpZGVudGlmaWVyfWApXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgYXV0b0Fzc2lnbkN1cmF0ZWRCYXRjaEFwaShyZXF1ZXN0OiBhbnksIHByb2dyYW1UeXBlOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBwcm9ncmFtVHlwZSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5NT0RFUkFURURfUFJPR1JBTSA/XG4gICAgQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNIDogQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQ1VSQVRFRF9CQVRDSDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7dXJsfWAsIHJlcXVlc3QpXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgZW5yb2xsVXNlclRvQmF0Y2gocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0gsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGVucm9sbEFuZFVuZW5yb2xsVXNlclRvQmF0Y2hXRihyZXE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgY29uc3QgdXJsOiBhbnkgPSB0eXBlID09PSAnV0lUSERSQVcnID8gQVBJX0VORF9QT0lOVFMuV0lUSERSQVdfQkFUQ0hfV0YgOiBBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0hfV0Y7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCByZXEpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBmZXRjaEJsZW5kZWRVc2VyV0YocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5CTEVOREVEX1VTRVJfV0YsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZFVzZXJDT1VOVChyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkJMRU5ERURfVVNFUl9DT1VOVCwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50TGlrZXMoY29udGVudElkczogeyBjb250ZW50X2lkOiBzdHJpbmdbXSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyBbaWRlbnRpZmllcjogc3RyaW5nXTogbnVtYmVyIH0+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfTElLRVMsIGNvbnRlbnRJZHMpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cbiAgZmV0Y2hDb250ZW50UmF0aW5ncyhjb250ZW50SWRzOiB7IGNvbnRlbnRJZHM6IHN0cmluZ1tdIH0pIHtcbiAgICBpZiAoY29udGVudElkcykgeyB9XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cFxuICAgIC8vICAgLnBvc3QoYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9L3JhdGluZ2AsIGNvbnRlbnRJZHMpXG4gICAgLy8gICAudG9Qcm9taXNlKClcbiAgICByZXR1cm4gb2YoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudEhpc3RvcnkoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfSElTVE9SWX0vJHtjb250ZW50SWR9YCxcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50SGlzdG9yeVYyKHJlcTogTnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YVJlcSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4ge1xuICAgIHJlcS5yZXF1ZXN0LmZpZWxkcyA9IFsncHJvZ3Jlc3NkZXRhaWxzJ107XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuaHR0cC5wb3N0PE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9ISVNUT1JZVjJ9LyR7cmVxLnJlcXVlc3QuY291cnNlSWR9YCwgcmVxXG4gICAgKTtcbiAgICBkYXRhLnN1YnNjcmliZSgoc3Vic2NyaWJlRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLm5leHQoeyByZXN1bWVEYXRhOiBzdWJzY3JpYmVEYXRhLnJlc3VsdC5jb250ZW50TGlzdCwgY291cnNlSWQ6IHJlcS5yZXF1ZXN0LmNvdXJzZUlkIH0pO1xuICAgICAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGNvbnRpbnVlTGVhcm5pbmcoaWQ6IHN0cmluZywgY29sbGVjdGlvbklkPzogc3RyaW5nLCBjb2xsZWN0aW9uVHlwZT86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlICYmXG4gICAgICAgIGNvbGxlY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdwbGF5bGlzdCcpIHtcbiAgICAgICAgY29uc3QgcmVxQm9keSA9IHtcbiAgICAgICAgICBjb250ZXh0UGF0aElkOiBjb2xsZWN0aW9uSWQgPyBjb2xsZWN0aW9uSWQgOiBpZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBpZCxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgICAgICBjb250ZXh0RnVsbFBhdGg6IFtjb2xsZWN0aW9uSWQsIGlkXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBkYXRlQWNjZXNzZWQ6IERhdGUubm93KCksXG4gICAgICAgICAgY29udGV4dFR5cGU6ICdwbGF5bGlzdCcsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUNvbnRpbnVlTGVhcm5pbmcocmVxQm9keSkudG9Qcm9taXNlKCkuY2F0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXFCb2R5ID0ge1xuICAgICAgICAgIGNvbnRleHRQYXRoSWQ6IGNvbGxlY3Rpb25JZCA/IGNvbGxlY3Rpb25JZCA6IGlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IGlkLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pLFxuICAgICAgICAgIGRhdGVBY2Nlc3NlZDogRGF0ZS5ub3coKSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlQ29udGludWVMZWFybmluZyhyZXFCb2R5KS50b1Byb21pc2UoKS5jYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNhdmVDb250aW51ZUxlYXJuaW5nKGNvbnRlbnQ6IE5zQ29udGVudC5JVmlld2VyQ29udGludWVMZWFybmluZ1JlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLlVTRVJfQ09OVElOVUVfTEVBUk5JTkdcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIGNvbnRlbnQpXG4gICAgaWYgKGNvbnRlbnQpIHtcblxuICAgIH1cbiAgICByZXR1cm4gb2YoKSBhcyBhbnk7XG4gIH1cblxuICBzZXRTM0Nvb2tpZShcbiAgICBfY29udGVudElkOiBzdHJpbmcsXG4gICAgLy8gX3BhdGg6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdChBUElfRU5EX1BPSU5UUy5TRVRfUzNfQ09PS0lFLCB7IGNvbnRlbnRJZCB9KVxuICAgIC8vICAgLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSlcblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHNldFMzSW1hZ2VDb29raWUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuU0VUX1MzX0lNQUdFX0NPT0tJRSwge30pLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSk7XG4gIH1cblxuICBmZXRjaE1hbmlmZXN0KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuRkVUQ0hfTUFOSUZFU1QsIHsgdXJsIH0pO1xuICB9XG4gIGZldGNoV2ViTW9kdWxlQ29udGVudCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7QVBJX0VORF9QT0lOVFMuRkVUQ0hfV0VCX01PRFVMRV9GSUxFU30/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCl9YCk7XG4gIH1cbiAgc2VhcmNoKHJlcTogTlNTZWFyY2guSVNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+IHtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y1LCB7XG4gICAgICByZXF1ZXN0OiByZXEsXG4gICAgfSk7XG4gIH1cbiAgc2VhcmNoUmVnaW9uUmVjb21tZW5kYXRpb24oXG4gICAgcmVxOiBOU1NlYXJjaC5JU2VhcmNoT3JnUmVnaW9uUmVjb21tZW5kYXRpb25SZXF1ZXN0LFxuICApOiBPYnNlcnZhYmxlPE5zQ29udGVudFN0cmlwTXVsdGlwbGUuSUNvbnRlbnRTdHJpcFJlc3BvbnNlQXBpPiB7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIHJlcS5wcmVMYWJlbFZhbHVlID1cbiAgICAgIChyZXEucHJlTGFiZWxWYWx1ZSB8fCAnJykgK1xuICAgICAgKCh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5jb3VudHJ5KSB8fCAnJyk7XG4gICAgcmVxLmZpbHRlcnMgPSB7XG4gICAgICAuLi5yZXEuZmlsdGVycyxcbiAgICAgIGxhYmVsczogW3JlcS5wcmVMYWJlbFZhbHVlIHx8ICcnXSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnRTdHJpcE11bHRpcGxlLklDb250ZW50U3RyaXBSZXNwb25zZUFwaT4oXG4gICAgICBBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9SRUdJT05fUkVDT01NRU5EQVRJT04sXG4gICAgICB7IHJlcXVlc3Q6IHJlcSB9LFxuICAgICk7XG4gIH1cbiAgc2VhcmNoVjYocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIGNvbnN0IGFwaVBhdGggPSBfLmdldChyZXEsICdhcGkucGF0aCcpO1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICBpZiAoYXBpUGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KGFwaVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y2LCByZXEpO1xuICB9XG5cbiAgc2VhcmNoUmVsYXRlZENCUFY2KHJlcTogTlNTZWFyY2guSVNlYXJjaFY2UmVxdWVzdFYyKTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfUkVMQVRFRF9DQlBfVjYsIHJlcSk7XG4gIH1cblxuICBmZXRjaENvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgcmF0aW5nOiBudW1iZXIgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgcmF0aW5nOiBudW1iZXIgfT4oYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWApO1xuICB9XG4gIGRlbGV0ZUNvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gKTtcbiAgfVxuICBhZGRDb250ZW50UmF0aW5nKGNvbnRlbnRJZDogc3RyaW5nLCBkYXRhOiB7IHJhdGluZzogbnVtYmVyIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gLCBkYXRhKTtcbiAgfVxuXG4gIGdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpOiBOc0NvbnRlbnQuSUNvbnRlbnQge1xuICAgIGlmICghKGNvbnRlbnQuY2hpbGRyZW4gfHwgW10pLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1BTkRBVE9SWV9DT1VSU0VfR09BTCB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSkgfHxcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpXG4gICAgKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF07XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkoY2hpbGQpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJBQ1RJQ0VfUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5GSU5BTF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OXG4gICAgKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF07XG4gICAgY29uc3QgcmVzdWx0Q29udGVudCA9IHRoaXMuZ2V0Rmlyc3RDaGlsZEluSGllcmFyY2h5KGZpcnN0Q2hpbGQpO1xuICAgIHJldHVybiByZXN1bHRDb250ZW50O1xuICB9XG5cbiAgZ2V0UmVnaXN0cmF0aW9uU3RhdHVzKHNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTx7IGhhc0FjY2VzczogYm9vbGVhbjsgcmVnaXN0cmF0aW9uVXJsPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLlJFR0lTVFJBVElPTl9TVEFUVVN9LyR7c291cmNlfWApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb25maWcodXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCk7XG4gIH1cblxuICBhZGRDZXJ0VGVtcGxhdGUoYm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfQUREX1RFTVBMQVRFfWAsIGJvZHkpO1xuICB9XG5cbiAgaXNzdWVDZXJ0KGJvZHk6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfSVNTVUV9YCwgYm9keSk7XG4gIH1cbiAgZG93bmxvYWRDZXJ0KGNlcnRJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHtBUElfRU5EX1BPSU5UUy5DRVJUX0RPV05MT0FEKGNlcnRJZCl9YCk7XG4gIH1cblxuICB0cmVuZGluZ0NvbnRlbnRTZWFyY2gocmVxOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5UUkVORElOR19DT05URU5UX1NFQVJDSCwgcmVxKTtcbiAgfVxuXG4gIGdldEthcm1hUG9pdG5zKGxpbWl0OiBudW1iZXIsIG9mZnNldDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlJFQURfS0FSTUFQT0lOVFMsIHsgbGltaXQsIG9mZnNldCB9KS5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpO1xuICB9XG4gIGZldGNoUHJvZ3JhbUNvbnRlbnQoY29udGVudElkOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50W10+IHtcbiAgICBsZXQgdXJsID0gJyc7XG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJyk7XG4gICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oXG4gICAgICAgIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpLFxuICAgICAgKTtcbiAgICB9XG4gICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KHVybCk7XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpKVxuICB9XG5cbiAgZ2V0Q291cnNlS2FybWFQb2ludHMocmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuUkVBRF9DT1VSU0VfS0FSTUFQT0lOVFMsIHJlcXVlc3QpO1xuICB9XG5cbiAgY2xhaW1LYXJtYXBvaW50cyhyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5DTEFJTV9LQVJNQVBPSU5UUywgcmVxdWVzdCk7XG4gIH1cblxuICB1c2VyS2FybWFQb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuVVNFUl9LQVJNQV9QT0lOVFMsIHt9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEVucm9sbGVkRGF0YShkb0lkOiBzdHJpbmcpIHtcbiAgICBsZXQgZW5yb2xsZWREb0lkOiBhbnkgPSB0aGlzLnVzZXJTdmMuZW5yb2xsbWVudERhdGFJZHMuaW5jbHVkZXMoZG9JZClcbiAgICBsZXQgdXNlcklkID0gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkXG4gICAgaWYoZW5yb2xsZWREb0lkKSB7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSAgYXdhaXQgdGhpcy51c2VyU3ZjLmZldGNoRW5yb2xsbWVudERhdGFCeUNvbnRlbnRJZCh1c2VySWQsZG9JZCkudG9Qcm9taXNlKCkudGhlbihhc3luYyAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY291cnNlcyAmJiByZXMuY291cnNlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gcmVzLmNvdXJzZXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKF9lcnI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gW11cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSB8fCBbXVxuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGFzeW5jIGdldFJlc291cnNlTGluayhjb250ZW50OiBhbnkpIHtcbiAgICBpZihjb250ZW50LmV4dGVybmFsSWQpIHtcbiAgICAgICAgY29uc3QgdXJsRGF0YTogYW55ID0ge1xuICAgICAgICAgIHVybDogYGFwcC90b2MvZXh0LyR7Y29udGVudC5jb250ZW50SWR9YCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyBiYXRjaElkOiBjb250ZW50LmJhdGNoSWQgfSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHVybERhdGFcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZW5yb2xsZWRDb3Vyc2U6IGFueSA9IGF3YWl0IHRoaXMuZ2V0RW5yb2xsZWREYXRhKGNvbnRlbnQuaWRlbnRpZmllcik7XG4gICAgICBpZiAoZW5yb2xsZWRDb3Vyc2UgJiYgZW5yb2xsZWRDb3Vyc2UubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGVucm9sbGVkQ291cnNlRGF0YSA9IGVucm9sbGVkQ291cnNlWzBdXG4gICAgICAgIGlmIChlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LklOVklURV9PTkxZX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gIE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTU9ERVJBVEVEX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gfHxcbiAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNCYXRjaEluUHJvZ3Jlc3MoZW5yb2xsZWRDb3Vyc2VEYXRhLmJhdGNoKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAgYXdhaXQgdGhpcy5jaGVja0ZvckRhdGFUb0Zvcm1VcmwoY29udGVudCwgZW5yb2xsZWRDb3Vyc2VEYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9ICB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9ICBhd2FpdCB0aGlzLmNoZWNrRm9yRGF0YVRvRm9ybVVybChjb250ZW50LCBlbnJvbGxlZENvdXJzZURhdGEpO1xuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KTtcbiAgICB9XG4gIH1cbiAgYXN5bmMgY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQ6IGFueSwgZW5yb2xsRGF0YTogYW55KSB7XG4gICAgbGV0IHVybERhdGE6IGFueTtcbiAgICBpZiAoZW5yb2xsRGF0YS5jb21wbGV0aW9uUGVyY2VudGFnZSAgPT09IDEwMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoZW5yb2xsRGF0YSk7XG4gICAgfVxuICAgIGlmIChlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscyAmJiBlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscy5taW1lVHlwZSkge1xuICAgICAgY29uc3QgbW9kaWZ5RW5yb2xsRGF0YSAgPSB7XG4gICAgICAgIC4uLmVucm9sbERhdGEsXG4gICAgICAgIGlkZW50aWZpZXI6IGVucm9sbERhdGEuY29sbGVjdGlvbklkLFxuICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6IGVucm9sbERhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgIG5hbWU6IGVucm9sbERhdGEuY29udGVudC5uYW1lLFxuICAgICAgfTtcbiAgICAgIGlmIChtb2RpZnlFbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJlc291cnNlRGF0YVdpdGhEYXRhKG1vZGlmeUVucm9sbERhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQsIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RpZnlFbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5yb2xsRGF0YS5scmNQcm9ncmVzc0RldGFpbHMubWltZVR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5yb2xsRGF0YS5maXJzdENoaWxkSWQgfHwgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCkge1xuICAgICAgICBjb25zdCBkb0lkID0gZW5yb2xsRGF0YS5maXJzdENoaWxkSWQgfHwgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZDtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5mZXRjaFByb2dyYW1Db250ZW50KGRvSWQpLnRvUHJvbWlzZSgpLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMucmVzdWx0ICYmIHJlcy5yZXN1bHQuY29udGVudCkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudERhdGE6IGFueSA9IHJlcy5yZXN1bHQuY29udGVudDtcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmeUVucm9sbERhdGEgID0ge1xuICAgICAgICAgICAgICAuLi5lbnJvbGxEYXRhLFxuICAgICAgICAgICAgICBpZGVudGlmaWVyOiBlbnJvbGxEYXRhLmNvbGxlY3Rpb25JZCxcbiAgICAgICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBlbnJvbGxEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgICAgICAgICBuYW1lOiBlbnJvbGxEYXRhLmNvbnRlbnQubmFtZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1cmxEYXRhID0gIHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSwgY29udGVudERhdGEuaWRlbnRpZmllciwgY29udGVudERhdGEubWltZVR5cGUpO1xuICAgICAgICAgICAgaWYgKHVybERhdGEpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVybERhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSA/IHJlc3BvbnNlRGF0YSA6IHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG4gICAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG5cbiAgfVxuXG4gIGdldFJlc291cnNlRGF0YVdpdGhEYXRhKGNvbnRlbnQ6IGFueSwgcmVzb3Vyc2VJZDogYW55LCBtaW1lVHlwZTogYW55KSB7XG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIGNvbnN0IHVybCA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICByZXNvdXJzZUlkLFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgY29udGVudC5pZGVudGlmaWVyLFxuICAgICAgICAnQ291cnNlJyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgICAgIGNvbnRlbnQuYmF0Y2hJZCxcbiAgICAgICAgY29udGVudC5uYW1lLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGNvbnRlbnQpO1xuICB9XG4gIGdvdG9Ub2NQYWdlKGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IHVybERhdGE6IGFueSA9IHtcbiAgICAgIHVybDogYC9hcHAvdG9jLyR7Y29udGVudC5pZGVudGlmaWVyID8gY29udGVudC5pZGVudGlmaWVyIDogY29udGVudC5jb2xsZWN0aW9uSWR9L292ZXJ2aWV3YCxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGJhdGNoSWQ6IGNvbnRlbnQuYmF0Y2hJZCB9LFxuICAgIH07XG4gICAgaWYgKGNvbnRlbnQuZW5kRGF0ZSkge1xuICAgICAgdXJsRGF0YS5xdWVyeVBhcmFtcyA9IHsgLi4udXJsRGF0YS5xdWVyeVBhcmFtcywgcGxhblR5cGU6ICdjYlBsYW4nLCBlbmREYXRlOiBjb250ZW50LmVuZERhdGUgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVybERhdGE7XG4gIH1cbiAgaXNCYXRjaEluUHJvZ3Jlc3MoYmF0Y2hEYXRhOiBhbnkpIHtcbiAgICAvLyBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudFsnYmF0Y2hlcyddKSB7XG4gICAgLy8gY29uc3QgYmF0Y2hlcyA9IHRoaXMuY29udGVudFsnYmF0Y2hlcyddIGFzIE5zQ29udGVudC5JQmF0Y2hcbiAgICBpZiAoYmF0Y2hEYXRhICYmIGJhdGNoRGF0YS5lbmREYXRlKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChiYXRjaERhdGEuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBiYXRjaERhdGEuZW5kRGF0ZSA/IG1vbWVudChiYXRjaERhdGEuZW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiBub3c7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAgICAgLy8gYmF0Y2guc3RhdHVzICYmXG4gICAgICAgICAgICBtb21lbnQoc3RhcnREYXRlKS5pc1NhbWVPckJlZm9yZShub3cpXG4gICAgICAgICAgICAmJiBtb21lbnQoZW5kRGF0ZSkuaXNTYW1lT3JBZnRlcihub3cpXG4gICAgICAgICAgKTtcbiAgICB9IHJldHVybiB0cnVlO1xuICB9XG4gIHBvc3RBcGlNZXRob2QoYXBpVXJsOiBhbnksIHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklDb250ZW50PihhcGlVcmwsIHJlcSk7XG4gIH1cbiAgZ2V0QXBpTWV0aG9kKGFwaVVybDogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICAvLyByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50PihhcGlVcmwpO1xuICB9XG5cblxuICBnZXRFbnJvbGxlZERhdGFGcm9tTGlzdChlbnJvbGxtZW50TGlzdDogYW55LCBjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmKGVucm9sbG1lbnRMaXN0ICYmIGVucm9sbG1lbnRMaXN0Lmxlbmd0aCkge1xuICAgICAgbGV0IGVucm9sbGVkRGF0YSA9IGVucm9sbG1lbnRMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5jb2xsZWN0aW9uSWQgPT09IGNvbGxlY3Rpb25JZClcbiAgICAgIHJldHVybiBlbnJvbGxlZERhdGEubGVuZ3RoID8gZW5yb2xsZWREYXRhWzBdOiB7fVxuICAgIH1cbiAgfVxufVxuIl19
@@ -63,6 +63,7 @@ export class WidgetUserServiceLib {
63
63
  */
64
64
  constructor(environment, http) {
65
65
  this.http = http;
66
+ this.enrollmentDataIds = [];
66
67
  this.environment = environment;
67
68
  }
68
69
  /**
@@ -125,6 +126,7 @@ export class WidgetUserServiceLib {
125
126
  if (content.contentStatus) {
126
127
  delete content.contentStatus;
127
128
  }
129
+ this.enrollmentDataIds.push(content.contentId);
128
130
  coursesData.push(content);
129
131
  }));
130
132
  this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo, data.result.courses.length);
@@ -513,6 +515,8 @@ WidgetUserServiceLib.ctorParameters = () => [
513
515
  if (false) {
514
516
  /** @type {?} */
515
517
  WidgetUserServiceLib.prototype.environment;
518
+ /** @type {?} */
519
+ WidgetUserServiceLib.prototype.enrollmentDataIds;
516
520
  /**
517
521
  * @type {?}
518
522
  * @private
@@ -520,4 +524,4 @@ if (false) {
520
524
  WidgetUserServiceLib.prototype.http;
521
525
  }
522
526
  export { ɵ0, ɵ1, ɵ2, ɵ3 };
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXVzZXItbGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi9jb25zdW1wdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvd2lkZ2V0LXVzZXItbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyx3QkFBd0IsQ0FBQTtBQUMvQixPQUFPLEtBQUssTUFBTSxNQUFNLE9BQU8sQ0FBQzs7OztNQUMxQixLQUFLLEdBQUcsTUFBTTtBQUNwQiw2REFBNkQ7OztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O01BRzNCLGlCQUFpQixHQUFHLG9CQUFvQjs7Ozs7QUFFekIsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUNwQyxHQUFHLGlCQUFpQixxQ0FBcUMsTUFBTSxFQUFFOzs7O0FBRXZDLENBQUMsTUFBMEIsRUFBRSxFQUFFO0FBQ3pELDRDQUE0QztBQUM1QywyREFBMkQsTUFBTSx5VEFBeVQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLG1HQUFtRzs7OztBQUMvZCxDQUFDLE1BQTBCLEVBQUUsRUFBRTtBQUNqRSw0Q0FBNEM7QUFDNUMsMkRBQTJELE1BQU0seVRBQXlULGFBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSw4SEFBOEg7Ozs7Ozs7O0FBRS9mLENBQUMsTUFBMEIsRUFBRSxVQUFrQixFQUFFLGNBQXNCLEVB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QUU7UUFDMUIsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDM0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O1lBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDckMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDeEMsQ0FBQyxFQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sVUFBVSxDQUFBO0lBQ25CLENBQUM7OztZQXpTRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7NENBSUksTUFBTSxTQUFDLGFBQWE7WUFwQ2hCLFVBQVU7Ozs7O0lBa0NqQiwyQ0FBaUI7Ozs7O0lBR2Ysb0NBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJVXNlckdyb3VwRGV0YWlscyB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LXVzZXIubW9kZWwnO1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vX21vZGVscy93aWRnZXQtY29udGVudC5tb2RlbCc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnXG5pbXBvcnQgKiBhcyBkYXlqc18gZnJvbSAnZGF5anMnO1xuY29uc3QgZGF5anMgPSBkYXlqc19cbi8vIGltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnc3JjL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCdcbmltcG9ydCB7IE5zQ2FyZENvbnRlbnQgfSBmcm9tICcuLi9fbW9kZWxzL2NhcmQtY29udGVudC12Mi5tb2RlbCc7XG5pbXBvcnQgKiBhcyBsb2Rhc2ggZnJvbSAnbG9kYXNoJztcblxuXG5jb25zdCBQUk9URUNURURfU0xBR19WOCA9ICcvYXBpcy9wcm90ZWN0ZWQvdjgnO1xuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIEZFVENIX1VTRVJfR1JPVVBTOiAodXNlcklkOiBzdHJpbmcpID0+XG4gICAgYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvZ3JvdXAvZmV0Y2hVc2VyR3JvdXA/dXNlcklkPSR7dXNlcklkfWAsXG4gICAgRkVUQ0hfQ1BCX1BMQU5TOiBgL2FwaXMvcHJveGllcy92OC91c2VyL3YxL2NicGxhbmAsXG4gIEZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUOiAodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92Mi91c2VyL2Vucm9sbG1lbnQvbGlzdC8ke3VzZXJJZH0/b3JnZGV0YWlscz1vcmdOYW1lLGVtYWlsJmxpY2Vuc2VEZXRhaWxzPW5hbWUsZGVzY3JpcHRpb24sdXJsJmZpZWxkcz1jb250ZW50VHlwZSxwcmltYXJ5Q2F0ZWdvcnksY291cnNlQ2F0ZWdvcnksdG9waWMsbmFtZSxjaGFubmVsLG1pbWVUeXBlLGFwcEljb24sZ3JhZGVMZXZlbCxyZXNvdXJjZVR5cGUsaWRlbnRpZmllcixtZWRpdW0scGtnVmVyc2lvbixib2FyZCxzdWJqZWN0LHRyYWNrYWJsZSxwb3N0ZXJJbWFnZSxkdXJhdGlvbixjcmVhdG9yTG9nbyxsaWNlbnNlLHZlcnNpb24sdmVyc2lvbktleSxhdmdSYXRpbmcsYWRkaXRpb25hbFRhZ3MsJHtOc0NhcmRDb250ZW50LklHT1RDb25zdC5DT01QRVRFTkNJRVN9JmJhdGNoRGV0YWlscz1uYW1lLGVuZERhdGUsc3RhcnREYXRlLHN0YXR1cyxlbnJvbGxtZW50VHlwZSxjcmVhdGVkQnksY2VydGlmaWNhdGVzLGJhdGNoQXR0cmlidXRlc2AsXG4gIEZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1BST0ZJTEU6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPW9yZ05hbWUsZW1haWwmbGljZW5zZURldGFpbHM9bmFtZSxkZXNjcmlwdGlvbix1cmwmZmllbGRzPWNvbnRlbnRUeXBlLHByaW1hcnlDYXRlZ29yeSxjb3Vyc2VDYXRlZ29yeSx0b3BpYyxuYW1lLGNoYW5uZWwsbWltZVR5cGUsYXBwSWNvbixncmFkZUxldmVsLHJlc291cmNlVHlwZSxpZGVudGlmaWVyLG1lZGl1bSxwa2dWZXJzaW9uLGJvYXJkLHN1YmplY3QsdHJhY2thYmxlLHBvc3RlckltYWdlLGR1cmF0aW9uLGNyZWF0b3JMb2dvLGxpY2Vuc2UsdmVyc2lvbix2ZXJzaW9uS2V5LGF2Z1JhdGluZyxhZGRpdGlvbmFsVGFncywke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPW5hbWUsZW5kRGF0ZSxzdGFydERhdGUsc3RhdHVzLGVucm9sbG1lbnRUeXBlLGNyZWF0ZWRCeSxjZXJ0aWZpY2F0ZXMsYmF0Y2hBdHRyaWJ1dGVzJnJldGlyZWRDb3Vyc2VzRW5hYmxlZD10cnVlYCxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfVjI6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgb3JnZGV0YWlsczogc3RyaW5nLCBsaWNlbnNlRGV0YWlsczogc3RyaW5nLCBmaWVsZHM6IHN0cmluZywgYmF0Y2hEZXRhaWxzOiBzdHJpbmcpID0+XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICBgYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPSR7b3JnZGV0YWlsc30mbGljZW5zZURldGFpbHM9JHtsaWNlbnNlRGV0YWlsc30mZmllbGRzPSR7ZmllbGRzfSxjb3Vyc2VDYXRlZ29yeSwke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPSR7YmF0Y2hEZXRhaWxzfWAsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0VXNlclNlcnZpY2VMaWIge1xuICBlbnZpcm9ubWVudDogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgfVxuXG4gICBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3JFdmVudCkge1xuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJ1xuICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBFcnJvcjogJHtlcnJvci5lcnJvci5tZXNzYWdlfWBcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKVxuICB9XG5cbiAgZmV0Y2hVc2VyR3JvdXBEZXRhaWxzKHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJVXNlckdyb3VwRGV0YWlsc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxJVXNlckdyb3VwRGV0YWlsc1tdPihBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0dST1VQUyh1c2VySWQpKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSlcbiAgfVxuIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gIGZldGNoVXNlckJhdGNoTGlzdCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgcXVlcnlQYXJhbXM/OiB7IG9yZ2RldGFpbHM6IGFueSwgbGljZW5zZURldGFpbHM6IGFueSwgZmllbGRzOiBhbnksIGJhdGNoRGV0YWlsczogYW55IH0pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ291cnNlW10+IHtcbiAgICBsZXQgcGF0aCA9ICcnXG4gICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgIHBhdGggPSBBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9WMih1c2VySWQsIHF1ZXJ5UGFyYW1zLm9yZ2RldGFpbHMsIHF1ZXJ5UGFyYW1zLmxpY2Vuc2VEZXRhaWxzLCBxdWVyeVBhcmFtcy5maWVsZHMsIHF1ZXJ5UGFyYW1zLmJhdGNoRGV0YWlscylcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUKHVzZXJJZClcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICAnbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnLFxuICAgICAgUHJhZ21hOiAnbm8tY2FjaGUnLFxuICAgICAgRXhwaXJlczogJzAnLFxuICAgIH0pXG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcCggIFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvdXJzZXNEYXRhOiBhbnkgPSBbXVxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5yZXN1bHQgJiYgZGF0YS5yZXN1bHQuY291cnNlcykge1xuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzLmZvckVhY2goKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmNvbnRlbnRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjb250ZW50LmNvbnRlbnRTdGF0dXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY291cnNlc0RhdGEucHVzaChjb250ZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB0aGlzLnN0b3JlVXNlckVucm9sbG1lbnRJbmZvKGRhdGEucmVzdWx0LnVzZXJDb3Vyc2VFbnJvbG1lbnRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0LmNvdXJzZXMubGVuZ3RoKVxuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzID0gY291cnNlc0RhdGFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhLnJlc3VsdFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gIGZldGNoUHJvZmlsZVVzZXJCYXRjaExpc3QodXNlcklkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHF1ZXJ5UGFyYW1zPzogeyBvcmdkZXRhaWxzOiBhbnksIGxpY2Vuc2VEZXRhaWxzOiBhbnksIGZpZWxkczogYW55LCBiYXRjaERldGFpbHM6IGFueSB9KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvdXJzZVtdPiB7XG4gICAgbGV0IHBhdGggPSAnJ1xuICAgIGlmIChxdWVyeVBhcmFtcykge1xuICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfVjIodXNlcklkLCBxdWVyeVBhcmFtcy5vcmdkZXRhaWxzLCBxdWVyeVBhcmFtcy5saWNlbnNlRGV0YWlscywgcXVlcnlQYXJhbXMuZmllbGRzLCBxdWVyeVBhcmFtcy5iYXRjaERldGFpbHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGggPSBBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9QUk9GSUxFKHVzZXJJZClcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICAnbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnLFxuICAgICAgUHJhZ21hOiAnbm8tY2FjaGUnLFxuICAgICAgRXhwaXJlczogJzAnLFxuICAgIH0pXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChwYXRoLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpLFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5yZXN1bHRcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG5cbiAgY2hlY2tTdG9yYWdlRGF0YShrZXk6IGFueSwgZGF0YUtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgICBjb25zdCBkYXRlID0gZGF5anMoKVxuICAgICAgICBjb25zdCBkaWZmTWluID0gZGF0ZS5kaWZmKHBhcnNlZERhdGFba2V5XSwgJ21pbnV0ZScpXG4gICAgICAgIGNvbnN0IHRpbWVDaGVjayA9IHRoaXMuZW52aXJvbm1lbnQuYXBpQ2FjaGUgfHwgMFxuICAgICAgICBpZiAoZGlmZk1pbiA+PSB0aW1lQ2hlY2spIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShkYXRhS2V5KSA/IGZhbHNlIDogdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGdldERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSB8fCAne30nKSlcbiAgfVxuICBnZXRTYXZlZERhdGEoa2V5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJycpXG4gIH1cblxuICBzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgcGFyc2VkRGF0YVtrZXldID0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aW1lQ2hlY2snLCBKU09OLnN0cmluZ2lmeShwYXJzZWREYXRhKSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0YTogYW55ID0ge31cbiAgICAgIGRhdGFba2V5XSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gICAgfVxuICB9XG5cbiAgcmVzZXRUaW1lKGtleTogYW55KSB7XG4gICAgY29uc3QgY2hlY2tUaW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpbWVDaGVjaycpXG4gICAgaWYgKGNoZWNrVGltZSkge1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY2hlY2tUaW1lKVxuICAgICAgaWYgKHBhcnNlZERhdGFba2V5XSkge1xuICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2tleV1cbiAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkRGF0YSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgICBmZXRjaENicFBsYW5MaXN0KHVzZXJJZDogc3RyaW5nKSB7XG4gICAgIGlmICh0aGlzLmNoZWNrU3RvcmFnZURhdGEoJ2NicFNlcnZpY2UnLCAnY2JwRGF0YScpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gdGhpcy5odHRwLmdldChBUElfRU5EX1BPSU5UUy5GRVRDSF9DUEJfUExBTlMpLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSwgbWFwKFxuICAgICAgICAgIGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0ICYmIGRhdGEucmVzdWx0LmNvbnRlbnQgJiYgZGF0YS5yZXN1bHQuY29udGVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbGV0IGNicERhdGE6IGFueSA9IHRoaXMuZ2V0Q2JwRm9ybWF0ZWREYXRhKGRhdGEucmVzdWx0LmNvbnRlbnQpXG4gICAgICAgICAgICAgIGxldCBjYnBEb0lkcyA9IGNicERhdGEuY29udGVudElkcy5qb2luKCcsJylcbiAgICAgICAgICAgICAgbGV0IGNicENvbnRlbnREYXRhOiBhbnkgPSBjYnBEYXRhLmNicENvbnRlbnREYXRhIHx8IFtdXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9ICBhd2FpdCB0aGlzLmZldGNoRW5yb2xsbWVudERhdGFCeUNvbnRlbnRJZCh1c2VySWQsY2JwRG9JZHMpLnRvUHJvbWlzZSgpLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5yb2xsRGF0YTogYW55ID0ge31cbiAgICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb3Vyc2VzICYmIHJlcy5jb3Vyc2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgcmVzLmNvdXJzZXMuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVucm9sbERhdGFbZGF0YS5jb2xsZWN0aW9uSWRdID0gZGF0YVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbnJvbGxEYXRhXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSkuY2F0Y2goKF9lcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwQ2JwRGF0YShjYnBDb250ZW50RGF0YSwgcmVzcG9uc2VEYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgdGhpcy5zZXRUaW1lKCdjYnBTZXJ2aWNlJylcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgnY2JwRGF0YScpXG4gIH1cblxuICBzdG9yZVVzZXJFbnJvbGxtZW50SW5mbyhlbnJvbGxtZW50RGF0YTogYW55LCBlbnJvbGxlZENvdXJzZUNvdW50OiBudW1iZXIpIHtcbiAgICBjb25zdCB1c2VyRGF0YSA9IHtcbiAgICAgIGVucm9sbGVkQ291cnNlQ291bnQsXG4gICAgICB1c2VyQ291cnNlRW5yb2xtZW50SW5mbzogZW5yb2xsbWVudERhdGEsXG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyRW5yb2xsbWVudENvdW50JylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlckVucm9sbG1lbnRDb3VudCcsIEpTT04uc3RyaW5naWZ5KHVzZXJEYXRhKSlcbiAgfVxuXG5cbiAgZmV0Y2hFbnJvbGxtZW50RGF0YUJ5Q29udGVudElkKHVzZXJJZCwgY29udGVudGRhdGEpIHtcbiAgICBsZXQgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUKHVzZXJJZClcbiAgICBwYXRoID0gYCR7cGF0aH0mY291cnNlSWRzPSR7Y29udGVudGRhdGF9JmNhY2hlPXRydWUnYFxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAgJ25vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyxcbiAgICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICAgIEV4cGlyZXM6ICcwJyxcbiAgICB9KVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQocGF0aCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0XG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGdldENicEZvcm1hdGVkRGF0YShjYnBDb250ZW50OiBhbnkpIHtcbiAgICBsZXQgY2JwQ29udGVudERhdGEgPSBbXVxuICAgIGxldCBjb250ZW50SWRzID0gW11cbiAgICBjb25zdCB0b2RheURhdGUgPSBkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgY2JwQ29udGVudC5mb3JFYWNoKChjOiBhbnkpID0+IHtcbiAgICAgICAgYy5jb250ZW50TGlzdC5mb3JFYWNoKChjaGlsZERhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVuZERhdGUgPSBkYXlqcyhjLmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICAgICAgY29uc3QgZGF5c0NvdW50ID0gZGF5anMoZW5kRGF0ZSkuZGlmZih0b2RheURhdGUsICdkYXknKVxuICAgICAgICAgIGNoaWxkRGF0YVsncGxhbkR1cmF0aW9uJ10gPSAgZGF5c0NvdW50IDwgMCA/IE5zQ2FyZENvbnRlbnQuQUNCUENvbnN0Lk9WRVJEVUUgOiBkYXlzQ291bnQgPiAyOVxuICAgICAgICAgID8gTnNDYXJkQ29udGVudC5BQ0JQQ29uc3QuU1VDQ0VTUyA6IE5zQ2FyZENvbnRlbnQuQUNCUENvbnN0LlVQQ09NSU5HXG4gICAgICAgICAgY2hpbGREYXRhWydlbmREYXRlJ10gPSBjLmVuZERhdGVcbiAgICAgICAgICBjaGlsZERhdGFbJ3BhcmVudElkJ10gPSBjLmlkXG4gICAgICAgICAgY2hpbGREYXRhWydwbGFuVHlwZSddID0gJ2NiUGxhbidcbiAgICAgICAgICBjaGlsZERhdGFbJ2NvbnRlbnRTdGF0dXMnXSA9IDBcbiAgICAgICAgICBjb250ZW50SWRzLnB1c2goY2hpbGREYXRhLmlkZW50aWZpZXIpXG4gICAgICAgICAgaWYgKGNoaWxkRGF0YS5zdGF0dXMgIT09IE5zQ2FyZENvbnRlbnQuSUdPVENvbnN0LlJFVElSRUQpIHtcbiAgICAgICAgICAgIGNicENvbnRlbnREYXRhLnB1c2goY2hpbGREYXRhKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgcmV0dXJuIHtjYnBDb250ZW50RGF0YSxjb250ZW50SWRzfVxuICB9XG4gIGFzeW5jIG1hcENicERhdGEoY2JwQ29udGVudDogYW55LCBlbnJvbGxtZW50RGF0YTogYW55KXtcbiAgICBsZXQgY2JwRmlsdGVyZWRDb250ZW50OiBhbnkgPSBbXVxuICAgIGlmKGNicENvbnRlbnQgJiYgY2JwQ29udGVudC5sZW5ndGgpIHtcbiAgICAgIGlmKE9iamVjdC5rZXlzKGVucm9sbG1lbnREYXRhKS5sZW5ndGgpIHtcbiAgICAgICAgY2JwQ29udGVudC5mb3JFYWNoKChjYnA6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkRW5yb2xsRGF0YSA9IGVucm9sbG1lbnREYXRhW2NicC5pZGVudGlmaWVyXVxuXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeUFyZWE6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVRoZW1lOiBhbnkgPSBbXVxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZVR5cGU6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVN1YlRoZW1lOiBhbnkgPSBbXVxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lBcmVhSWQ6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVRoZW1lSWQ6IGFueSA9IFtdXG4gICAgICAgICAgY29uc3QgY29tcGV0ZW5jeVN1YlRoZW1lSWQ6IGFueSA9IFtdXG4gICAgICAgICAgY2JwWydjb250ZW50U3RhdHVzJ10gPSAwXG4gICAgICAgICAgaWYgKGNoaWxkRW5yb2xsRGF0YSkge1xuICAgICAgICAgICAgY2JwWydjb250ZW50U3RhdHVzJ10gPSBjaGlsZEVucm9sbERhdGEuc3RhdHVzXG4gICAgICAgICAgfVxuICAgICAgICBpZiAoY2JwLmNvbXBldGVuY2llc192NSkge1xuICAgICAgICAgIGNicC5jb21wZXRlbmNpZXNfdjUuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lBcmVhLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWEpKSB7XG4gICAgICAgICAgICAgIGNvbXBldGVuY3lBcmVhLnB1c2goZWxlbWVudC5jb21wZXRlbmN5QXJlYSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeUFyZWFJZC5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWFJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5VGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZUlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjb21wZXRlbmN5VGhlbWVUeXBlLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lVHlwZS5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeVRoZW1lVHlwZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVN1YlRoZW1lLmluY2x1ZGVzKGVsZW1lbnQuY29tcGV0ZW5jeVN1YlRoZW1lKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5U3ViVGhlbWUucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZSlcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZUlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAgIGNicFsnY29tcGV0ZW5jeUFyZWEnXSA9IGNvbXBldGVuY3lBcmVhXG4gICAgICAgICAgY2JwWydjb21wZXRlbmN5VGhlbWUnXSA9IGNvbXBldGVuY3lUaGVtZVxuICAgICAgICAgIGNicFsnY29tcGV0ZW5jeVRoZW1lVHlwZSddID0gY29tcGV0ZW5jeVRoZW1lVHlwZVxuICAgICAgICAgIGNicFsnY29tcGV0ZW5jeVN1YlRoZW1lJ10gPSBjb21wZXRlbmN5U3ViVGhlbWVcbiAgICAgICAgICBjYnBbJ2NvbXBldGVuY3lBcmVhSWQnXSA9IGNvbXBldGVuY3lBcmVhSWRcbiAgICAgICAgICBjYnBbJ2NvbXBldGVuY3lUaGVtZUlkJ10gPSBjb21wZXRlbmN5VGhlbWVJZFxuICAgICAgICAgIGNicFsnY29tcGV0ZW5jeVN1YlRoZW1lSWQnXSA9IGNvbXBldGVuY3lTdWJUaGVtZUlkXG4gICAgICAgICAgaWYgKGNicC5zdGF0dXMgIT09IE5zQ2FyZENvbnRlbnQuSUdPVENvbnN0LlJFVElSRUQpIHtcbiAgICAgICAgICAgIGNicEZpbHRlcmVkQ29udGVudC5wdXNoKGNicClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNoaWxkRW5yb2xsRGF0YSAmJiBjaGlsZEVucm9sbERhdGEuc3RhdHVzID09PSAyKSB7XG4gICAgICAgICAgICAgIGNicEZpbHRlcmVkQ29udGVudC5wdXNoKGNicClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY2JwRmlsdGVyZWRDb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhOiBhbnkgPSBjYnBGaWx0ZXJlZENvbnRlbnQuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0RGF0ZTogYW55ID0gbmV3IERhdGUoYS5lbmREYXRlKVxuICAgICAgICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5lbmREYXRlKVxuXG4gICAgICAgICAgICByZXR1cm4gIHNlY29uZERhdGUgPiBmaXJzdERhdGUgID8gMSA6IC0xXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCB1bmlxdWVVc2Vyc0J5SUQgPSBsb2Rhc2gudW5pcUJ5KHNvcnRlZERhdGEsICdpZGVudGlmaWVyJylcbiAgICAgICAgICBjb25zdCBzb3J0ZWRCeUVuZERhdGUgPSAgbG9kYXNoLm9yZGVyQnkodW5pcXVlVXNlcnNCeUlELCBbJ2VuZERhdGUnXSwgWydhc2MnXSlcbiAgICAgICAgICBjb25zdCBzb3J0ZWRCeVN0YXR1cyA9ICBsb2Rhc2gub3JkZXJCeShzb3J0ZWRCeUVuZERhdGUsIFsnY29udGVudFN0YXR1cyddLCBbJ2FzYyddKVxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoc29ydGVkQnlTdGF0dXMpKVxuICAgICAgICAgIHJldHVybiBzb3J0ZWRCeVN0YXR1c1xuICAgICAgfVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NicERhdGEnLCBKU09OLnN0cmluZ2lmeShjYnBGaWx0ZXJlZENvbnRlbnQpKVxuICAgICAgcmV0dXJuIGNicEZpbHRlcmVkQ29udGVudFxuICAgICAgfVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NicERhdGEnLCBKU09OLnN0cmluZ2lmeShjYnBDb250ZW50KSlcbiAgICAgIHJldHVybiBjYnBDb250ZW50XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoW10pKVxuICAgIHJldHVybiBbXVxuICB9XG4gIG1hcEVucm9sbG1lbnREYXRhKGNvdXJzZURhdGE6IGFueSkge1xuICAgIGNvbnN0IGVucm9sbERhdGE6IGFueSA9IHt9XG4gICAgaWYgKGNvdXJzZURhdGEgJiYgY291cnNlRGF0YS5jb3Vyc2VzLmxlbmd0aCkge1xuICAgICAgY291cnNlRGF0YS5jb3Vyc2VzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGVucm9sbERhdGFbZGF0YS5jb2xsZWN0aW9uSWRdID0gZGF0YVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGVucm9sbERhdGFcbiAgfVxufVxuIl19
527
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXVzZXItbGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac3VuYmlyZC1jYi9jb25zdW1wdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvd2lkZ2V0LXVzZXItbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsT0FBTyx3QkFBd0IsQ0FBQTtBQUMvQixPQUFPLEtBQUssTUFBTSxNQUFNLE9BQU8sQ0FBQzs7OztNQUMxQixLQUFLLEdBQUcsTUFBTTtBQUNwQiw2REFBNkQ7OztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7O01BRzNCLGlCQUFpQixHQUFHLG9CQUFvQjs7Ozs7QUFFekIsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUNwQyxHQUFHLGlCQUFpQixxQ0FBcUMsTUFBTSxFQUFFOzs7O0FBRXZDLENBQUMsTUFBMEIsRUFBRSxFQUFFO0FBQ3pELDRDQUE0QztBQUM1QywyREFBMkQsTUFBTSx5VEFBeVQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLG1HQUFtRzs7OztBQUMvZCxDQUFDLE1BQTBCLEVBQUUsRUFBRTtBQUNqRSw0Q0FBNEM7QUFDNUMsMkRBQTJELE1BQU0seVRBQXlULGFBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSw4SEFBOEg7Ozs7Ozs7O0FBRS9mLENBQUMsTUFBMEIsRUFBRSxVQUFrQixFQUFFLGNBQXNCLEVB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LENBQUMsQ0FBQTtZQUNuRCxPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7S0FBQTs7Ozs7SUFDRCxpQkFBaUIsQ0FBQyxVQUFlOztjQUN6QixVQUFVLEdBQVEsRUFBRTtRQUMxQixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUMzQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNyQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQTtZQUN4QyxDQUFDLEVBQUMsQ0FBQTtTQUNIO1FBQ0QsT0FBTyxVQUFVLENBQUE7SUFDbkIsQ0FBQzs7O1lBM1NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs0Q0FLSSxNQUFNLFNBQUMsYUFBYTtZQXJDaEIsVUFBVTs7Ozs7SUFrQ2pCLDJDQUFpQjs7SUFDakIsaURBQTJCOzs7OztJQUd6QixvQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElVc2VyR3JvdXBEZXRhaWxzIH0gZnJvbSAnLi4vX21vZGVscy93aWRnZXQtdXNlci5tb2RlbCc7XG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC1jb250ZW50Lm1vZGVsJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9vZidcbmltcG9ydCAqIGFzIGRheWpzXyBmcm9tICdkYXlqcyc7XG5jb25zdCBkYXlqcyA9IGRheWpzX1xuLy8gaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICdzcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50J1xuaW1wb3J0IHsgTnNDYXJkQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvY2FyZC1jb250ZW50LXYyLm1vZGVsJztcbmltcG9ydCAqIGFzIGxvZGFzaCBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IFBST1RFQ1RFRF9TTEFHX1Y4ID0gJy9hcGlzL3Byb3RlY3RlZC92OCc7XG5jb25zdCBBUElfRU5EX1BPSU5UUyA9IHtcbiAgRkVUQ0hfVVNFUl9HUk9VUFM6ICh1c2VySWQ6IHN0cmluZykgPT5cbiAgICBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9ncm91cC9mZXRjaFVzZXJHcm91cD91c2VySWQ9JHt1c2VySWR9YCxcbiAgICBGRVRDSF9DUEJfUExBTlM6IGAvYXBpcy9wcm94aWVzL3Y4L3VzZXIvdjEvY2JwbGFuYCxcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1Q6ICh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YyL3VzZXIvZW5yb2xsbWVudC9saXN0LyR7dXNlcklkfT9vcmdkZXRhaWxzPW9yZ05hbWUsZW1haWwmbGljZW5zZURldGFpbHM9bmFtZSxkZXNjcmlwdGlvbix1cmwmZmllbGRzPWNvbnRlbnRUeXBlLHByaW1hcnlDYXRlZ29yeSxjb3Vyc2VDYXRlZ29yeSx0b3BpYyxuYW1lLGNoYW5uZWwsbWltZVR5cGUsYXBwSWNvbixncmFkZUxldmVsLHJlc291cmNlVHlwZSxpZGVudGlmaWVyLG1lZGl1bSxwa2dWZXJzaW9uLGJvYXJkLHN1YmplY3QsdHJhY2thYmxlLHBvc3RlckltYWdlLGR1cmF0aW9uLGNyZWF0b3JMb2dvLGxpY2Vuc2UsdmVyc2lvbix2ZXJzaW9uS2V5LGF2Z1JhdGluZyxhZGRpdGlvbmFsVGFncywke05zQ2FyZENvbnRlbnQuSUdPVENvbnN0LkNPTVBFVEVOQ0lFU30mYmF0Y2hEZXRhaWxzPW5hbWUsZW5kRGF0ZSxzdGFydERhdGUsc3RhdHVzLGVucm9sbG1lbnRUeXBlLGNyZWF0ZWRCeSxjZXJ0aWZpY2F0ZXMsYmF0Y2hBdHRyaWJ1dGVzYCxcbiAgRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRTogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gICAgYC9hcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9b3JnTmFtZSxlbWFpbCZsaWNlbnNlRGV0YWlscz1uYW1lLGRlc2NyaXB0aW9uLHVybCZmaWVsZHM9Y29udGVudFR5cGUscHJpbWFyeUNhdGVnb3J5LGNvdXJzZUNhdGVnb3J5LHRvcGljLG5hbWUsY2hhbm5lbCxtaW1lVHlwZSxhcHBJY29uLGdyYWRlTGV2ZWwscmVzb3VyY2VUeXBlLGlkZW50aWZpZXIsbWVkaXVtLHBrZ1ZlcnNpb24sYm9hcmQsc3ViamVjdCx0cmFja2FibGUscG9zdGVySW1hZ2UsZHVyYXRpb24sY3JlYXRvckxvZ28sbGljZW5zZSx2ZXJzaW9uLHZlcnNpb25LZXksYXZnUmF0aW5nLGFkZGl0aW9uYWxUYWdzLCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9bmFtZSxlbmREYXRlLHN0YXJ0RGF0ZSxzdGF0dXMsZW5yb2xsbWVudFR5cGUsY3JlYXRlZEJ5LGNlcnRpZmljYXRlcyxiYXRjaEF0dHJpYnV0ZXMmcmV0aXJlZENvdXJzZXNFbmFibGVkPXRydWVgLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBGRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9WMjogKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBvcmdkZXRhaWxzOiBzdHJpbmcsIGxpY2Vuc2VEZXRhaWxzOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nLCBiYXRjaERldGFpbHM6IHN0cmluZykgPT5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgIGBhcGlzL3Byb3hpZXMvdjgvbGVhcm5lci9jb3Vyc2UvdjIvdXNlci9lbnJvbGxtZW50L2xpc3QvJHt1c2VySWR9P29yZ2RldGFpbHM9JHtvcmdkZXRhaWxzfSZsaWNlbnNlRGV0YWlscz0ke2xpY2Vuc2VEZXRhaWxzfSZmaWVsZHM9JHtmaWVsZHN9LGNvdXJzZUNhdGVnb3J5LCR7TnNDYXJkQ29udGVudC5JR09UQ29uc3QuQ09NUEVURU5DSUVTfSZiYXRjaERldGFpbHM9JHtiYXRjaERldGFpbHN9YCxcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRVc2VyU2VydmljZUxpYiB7XG4gIGVudmlyb25tZW50OiBhbnk7XG4gIGVucm9sbG1lbnREYXRhSWRzOiBhbnkgPSBbXVxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgfVxuXG4gICBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3JFdmVudCkge1xuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJ1xuICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBFcnJvcjogJHtlcnJvci5lcnJvci5tZXNzYWdlfWBcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKVxuICB9XG5cbiAgZmV0Y2hVc2VyR3JvdXBEZXRhaWxzKHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJVXNlckdyb3VwRGV0YWlsc1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxJVXNlckdyb3VwRGV0YWlsc1tdPihBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0dST1VQUyh1c2VySWQpKVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSlcbiAgfVxuIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXG4gIGZldGNoVXNlckJhdGNoTGlzdCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgcXVlcnlQYXJhbXM/OiB7IG9yZ2RldGFpbHM6IGFueSwgbGljZW5zZURldGFpbHM6IGFueSwgZmllbGRzOiBhbnksIGJhdGNoRGV0YWlsczogYW55IH0pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ291cnNlW10+IHtcbiAgICBsZXQgcGF0aCA9ICcnXG4gICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgIHBhdGggPSBBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVF9WMih1c2VySWQsIHF1ZXJ5UGFyYW1zLm9yZ2RldGFpbHMsIHF1ZXJ5UGFyYW1zLmxpY2Vuc2VEZXRhaWxzLCBxdWVyeVBhcmFtcy5maWVsZHMsIHF1ZXJ5UGFyYW1zLmJhdGNoRGV0YWlscylcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUKHVzZXJJZClcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICAnbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnLFxuICAgICAgUHJhZ21hOiAnbm8tY2FjaGUnLFxuICAgICAgRXhwaXJlczogJzAnLFxuICAgIH0pXG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9ICB0aGlzLmh0dHAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcCggIFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvdXJzZXNEYXRhOiBhbnkgPSBbXVxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5yZXN1bHQgJiYgZGF0YS5yZXN1bHQuY291cnNlcykge1xuICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzLmZvckVhY2goKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmNvbnRlbnRTdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjb250ZW50LmNvbnRlbnRTdGF0dXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbnJvbGxtZW50RGF0YUlkcy5wdXNoKGNvbnRlbnQuY29udGVudElkKVxuICAgICAgICAgICAgICAgIGNvdXJzZXNEYXRhLnB1c2goY29udGVudClcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgdGhpcy5zdG9yZVVzZXJFbnJvbGxtZW50SW5mbyhkYXRhLnJlc3VsdC51c2VyQ291cnNlRW5yb2xtZW50SW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnJlc3VsdC5jb3Vyc2VzLmxlbmd0aClcbiAgICAgICAgICAgICAgZGF0YS5yZXN1bHQuY291cnNlcyA9IGNvdXJzZXNEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5yZXN1bHRcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBmZXRjaFByb2ZpbGVVc2VyQmF0Y2hMaXN0KHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkLCBxdWVyeVBhcmFtcz86IHsgb3JnZGV0YWlsczogYW55LCBsaWNlbnNlRGV0YWlsczogYW55LCBmaWVsZHM6IGFueSwgYmF0Y2hEZXRhaWxzOiBhbnkgfSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb3Vyc2VbXT4ge1xuICAgIGxldCBwYXRoID0gJydcbiAgICBpZiAocXVlcnlQYXJhbXMpIHtcbiAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgcGF0aCA9IEFQSV9FTkRfUE9JTlRTLkZFVENIX1VTRVJfRU5ST0xMTUVOVF9MSVNUX1YyKHVzZXJJZCwgcXVlcnlQYXJhbXMub3JnZGV0YWlscywgcXVlcnlQYXJhbXMubGljZW5zZURldGFpbHMsIHF1ZXJ5UGFyYW1zLmZpZWxkcywgcXVlcnlQYXJhbXMuYmF0Y2hEZXRhaWxzKVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXRoID0gQVBJX0VORF9QT0lOVFMuRkVUQ0hfVVNFUl9FTlJPTExNRU5UX0xJU1RfUFJPRklMRSh1c2VySWQpXG4gICAgfVxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NhY2hlLUNvbnRyb2wnOiAgJ25vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyxcbiAgICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICAgIEV4cGlyZXM6ICcwJyxcbiAgICB9KVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQocGF0aCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0XG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGNoZWNrU3RvcmFnZURhdGEoa2V5OiBhbnksIGRhdGFLZXk6IGFueSkge1xuICAgIGNvbnN0IGNoZWNrVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aW1lQ2hlY2snKVxuICAgIGlmIChjaGVja1RpbWUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKGNoZWNrVGltZSlcbiAgICAgIGlmIChwYXJzZWREYXRhW2tleV0pIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IGRheWpzKClcbiAgICAgICAgY29uc3QgZGlmZk1pbiA9IGRhdGUuZGlmZihwYXJzZWREYXRhW2tleV0sICdtaW51dGUnKVxuICAgICAgICBjb25zdCB0aW1lQ2hlY2sgPSB0aGlzLmVudmlyb25tZW50LmFwaUNhY2hlIHx8IDBcbiAgICAgICAgaWYgKGRpZmZNaW4gPj0gdGltZUNoZWNrKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oZGF0YUtleSkgPyBmYWxzZSA6IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBnZXREYXRhKGtleTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJ3t9JykpXG4gIH1cbiAgZ2V0U2F2ZWREYXRhKGtleTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICcnKVxuICB9XG5cbiAgc2V0VGltZShrZXk6IGFueSkge1xuICAgIGNvbnN0IGNoZWNrVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aW1lQ2hlY2snKVxuICAgIGlmIChjaGVja1RpbWUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKGNoZWNrVGltZSlcbiAgICAgIHBhcnNlZERhdGFba2V5XSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGltZUNoZWNrJywgSlNPTi5zdHJpbmdpZnkocGFyc2VkRGF0YSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9XG4gICAgICBkYXRhW2tleV0gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RpbWVDaGVjaycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0VGltZShrZXk6IGFueSkge1xuICAgIGNvbnN0IGNoZWNrVGltZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aW1lQ2hlY2snKVxuICAgIGlmIChjaGVja1RpbWUpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKGNoZWNrVGltZSlcbiAgICAgIGlmIChwYXJzZWREYXRhW2tleV0pIHtcbiAgICAgICBkZWxldGUgcGFyc2VkRGF0YVtrZXldXG4gICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RpbWVDaGVjaycsIEpTT04uc3RyaW5naWZ5KHBhcnNlZERhdGEpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICAgZmV0Y2hDYnBQbGFuTGlzdCh1c2VySWQ6IHN0cmluZykge1xuICAgICBpZiAodGhpcy5jaGVja1N0b3JhZ2VEYXRhKCdjYnBTZXJ2aWNlJywgJ2NicERhdGEnKSkge1xuICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHRoaXMuaHR0cC5nZXQoQVBJX0VORF9QT0lOVFMuRkVUQ0hfQ1BCX1BMQU5TKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksIG1hcChcbiAgICAgICAgICBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZihkYXRhLnJlc3VsdCAmJiBkYXRhLnJlc3VsdC5jb250ZW50ICYmIGRhdGEucmVzdWx0LmNvbnRlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGxldCBjYnBEYXRhOiBhbnkgPSB0aGlzLmdldENicEZvcm1hdGVkRGF0YShkYXRhLnJlc3VsdC5jb250ZW50KVxuICAgICAgICAgICAgICBsZXQgY2JwRG9JZHMgPSBjYnBEYXRhLmNvbnRlbnRJZHMuam9pbignLCcpXG4gICAgICAgICAgICAgIGxldCBjYnBDb250ZW50RGF0YTogYW55ID0gY2JwRGF0YS5jYnBDb250ZW50RGF0YSB8fCBbXVxuICAgICAgICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSAgYXdhaXQgdGhpcy5mZXRjaEVucm9sbG1lbnREYXRhQnlDb250ZW50SWQodXNlcklkLGNicERvSWRzKS50b1Byb21pc2UoKS50aGVuKGFzeW5jIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVucm9sbERhdGE6IGFueSA9IHt9XG4gICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY291cnNlcyAmJiByZXMuY291cnNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJlcy5jb3Vyc2VzLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlbnJvbGxEYXRhW2RhdGEuY29sbGVjdGlvbklkXSA9IGRhdGFcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW5yb2xsRGF0YVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLmNhdGNoKChfZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge31cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1hcENicERhdGEoY2JwQ29udGVudERhdGEsIHJlc3BvbnNlRGF0YSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIHRoaXMuc2V0VGltZSgnY2JwU2VydmljZScpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldERhdGEoJ2NicERhdGEnKVxuICB9XG5cbiAgc3RvcmVVc2VyRW5yb2xsbWVudEluZm8oZW5yb2xsbWVudERhdGE6IGFueSwgZW5yb2xsZWRDb3Vyc2VDb3VudDogbnVtYmVyKSB7XG4gICAgY29uc3QgdXNlckRhdGEgPSB7XG4gICAgICBlbnJvbGxlZENvdXJzZUNvdW50LFxuICAgICAgdXNlckNvdXJzZUVucm9sbWVudEluZm86IGVucm9sbG1lbnREYXRhLFxuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndXNlckVucm9sbG1lbnRDb3VudCcpXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VzZXJFbnJvbGxtZW50Q291bnQnLCBKU09OLnN0cmluZ2lmeSh1c2VyRGF0YSkpXG4gIH1cblxuXG4gIGZldGNoRW5yb2xsbWVudERhdGFCeUNvbnRlbnRJZCh1c2VySWQsIGNvbnRlbnRkYXRhKSB7XG4gICAgbGV0IHBhdGggPSBBUElfRU5EX1BPSU5UUy5GRVRDSF9VU0VSX0VOUk9MTE1FTlRfTElTVCh1c2VySWQpXG4gICAgcGF0aCA9IGAke3BhdGh9JmNvdXJzZUlkcz0ke2NvbnRlbnRkYXRhfSZjYWNoZT10cnVlJ2BcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDYWNoZS1Db250cm9sJzogICduby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZSwgcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCcsXG4gICAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgICBFeHBpcmVzOiAnMCcsXG4gICAgfSlcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHBhdGgsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdFxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRDYnBGb3JtYXRlZERhdGEoY2JwQ29udGVudDogYW55KSB7XG4gICAgbGV0IGNicENvbnRlbnREYXRhID0gW11cbiAgICBsZXQgY29udGVudElkcyA9IFtdXG4gICAgY29uc3QgdG9kYXlEYXRlID0gZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgIGNicENvbnRlbnQuZm9yRWFjaCgoYzogYW55KSA9PiB7XG4gICAgICAgIGMuY29udGVudExpc3QuZm9yRWFjaCgoY2hpbGREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBlbmREYXRlID0gZGF5anMoYy5lbmREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgICAgIGNvbnN0IGRheXNDb3VudCA9IGRheWpzKGVuZERhdGUpLmRpZmYodG9kYXlEYXRlLCAnZGF5JylcbiAgICAgICAgICBjaGlsZERhdGFbJ3BsYW5EdXJhdGlvbiddID0gIGRheXNDb3VudCA8IDAgPyBOc0NhcmRDb250ZW50LkFDQlBDb25zdC5PVkVSRFVFIDogZGF5c0NvdW50ID4gMjlcbiAgICAgICAgICA/IE5zQ2FyZENvbnRlbnQuQUNCUENvbnN0LlNVQ0NFU1MgOiBOc0NhcmRDb250ZW50LkFDQlBDb25zdC5VUENPTUlOR1xuICAgICAgICAgIGNoaWxkRGF0YVsnZW5kRGF0ZSddID0gYy5lbmREYXRlXG4gICAgICAgICAgY2hpbGREYXRhWydwYXJlbnRJZCddID0gYy5pZFxuICAgICAgICAgIGNoaWxkRGF0YVsncGxhblR5cGUnXSA9ICdjYlBsYW4nXG4gICAgICAgICAgY2hpbGREYXRhWydjb250ZW50U3RhdHVzJ10gPSAwXG4gICAgICAgICAgY29udGVudElkcy5wdXNoKGNoaWxkRGF0YS5pZGVudGlmaWVyKVxuICAgICAgICAgIGlmIChjaGlsZERhdGEuc3RhdHVzICE9PSBOc0NhcmRDb250ZW50LklHT1RDb25zdC5SRVRJUkVEKSB7XG4gICAgICAgICAgICBjYnBDb250ZW50RGF0YS5wdXNoKGNoaWxkRGF0YSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIHJldHVybiB7Y2JwQ29udGVudERhdGEsY29udGVudElkc31cbiAgfVxuICBhc3luYyBtYXBDYnBEYXRhKGNicENvbnRlbnQ6IGFueSwgZW5yb2xsbWVudERhdGE6IGFueSl7XG4gICAgbGV0IGNicEZpbHRlcmVkQ29udGVudDogYW55ID0gW11cbiAgICBpZihjYnBDb250ZW50ICYmIGNicENvbnRlbnQubGVuZ3RoKSB7XG4gICAgICBpZihPYmplY3Qua2V5cyhlbnJvbGxtZW50RGF0YSkubGVuZ3RoKSB7XG4gICAgICAgIGNicENvbnRlbnQuZm9yRWFjaCgoY2JwOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZEVucm9sbERhdGEgPSBlbnJvbGxtZW50RGF0YVtjYnAuaWRlbnRpZmllcl1cblxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lBcmVhOiBhbnkgPSBbXVxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZTogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5VGhlbWVUeXBlOiBhbnkgPSBbXVxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lTdWJUaGVtZTogYW55ID0gW11cbiAgICAgICAgICBjb25zdCBjb21wZXRlbmN5QXJlYUlkOiBhbnkgPSBbXVxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZUlkOiBhbnkgPSBbXVxuICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lTdWJUaGVtZUlkOiBhbnkgPSBbXVxuICAgICAgICAgIGNicFsnY29udGVudFN0YXR1cyddID0gMFxuICAgICAgICAgIGlmIChjaGlsZEVucm9sbERhdGEpIHtcbiAgICAgICAgICAgIGNicFsnY29udGVudFN0YXR1cyddID0gY2hpbGRFbnJvbGxEYXRhLnN0YXR1c1xuICAgICAgICAgIH1cbiAgICAgICAgaWYgKGNicC5jb21wZXRlbmNpZXNfdjUpIHtcbiAgICAgICAgICBjYnAuY29tcGV0ZW5jaWVzX3Y1LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb21wZXRlbmN5QXJlYS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lBcmVhKSkge1xuICAgICAgICAgICAgICBjb21wZXRlbmN5QXJlYS5wdXNoKGVsZW1lbnQuY29tcGV0ZW5jeUFyZWEpXG4gICAgICAgICAgICAgIGNvbXBldGVuY3lBcmVhSWQucHVzaChlbGVtZW50LmNvbXBldGVuY3lBcmVhSWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lUaGVtZS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lUaGVtZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lLnB1c2goZWxlbWVudC5jb21wZXRlbmN5VGhlbWUpXG4gICAgICAgICAgICAgIGNvbXBldGVuY3lUaGVtZUlkLnB1c2goZWxlbWVudC5jb21wZXRlbmN5VGhlbWVJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY29tcGV0ZW5jeVRoZW1lVHlwZS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lUaGVtZVR5cGUpKSB7XG4gICAgICAgICAgICAgIGNvbXBldGVuY3lUaGVtZVR5cGUucHVzaChlbGVtZW50LmNvbXBldGVuY3lUaGVtZVR5cGUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNvbXBldGVuY3lTdWJUaGVtZS5pbmNsdWRlcyhlbGVtZW50LmNvbXBldGVuY3lTdWJUaGVtZSkpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVN1YlRoZW1lLnB1c2goZWxlbWVudC5jb21wZXRlbmN5U3ViVGhlbWUpXG4gICAgICAgICAgICAgIGNvbXBldGVuY3lTdWJUaGVtZUlkLnB1c2goZWxlbWVudC5jb21wZXRlbmN5U3ViVGhlbWVJZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgICBjYnBbJ2NvbXBldGVuY3lBcmVhJ10gPSBjb21wZXRlbmN5QXJlYVxuICAgICAgICAgIGNicFsnY29tcGV0ZW5jeVRoZW1lJ10gPSBjb21wZXRlbmN5VGhlbWVcbiAgICAgICAgICBjYnBbJ2NvbXBldGVuY3lUaGVtZVR5cGUnXSA9IGNvbXBldGVuY3lUaGVtZVR5cGVcbiAgICAgICAgICBjYnBbJ2NvbXBldGVuY3lTdWJUaGVtZSddID0gY29tcGV0ZW5jeVN1YlRoZW1lXG4gICAgICAgICAgY2JwWydjb21wZXRlbmN5QXJlYUlkJ10gPSBjb21wZXRlbmN5QXJlYUlkXG4gICAgICAgICAgY2JwWydjb21wZXRlbmN5VGhlbWVJZCddID0gY29tcGV0ZW5jeVRoZW1lSWRcbiAgICAgICAgICBjYnBbJ2NvbXBldGVuY3lTdWJUaGVtZUlkJ10gPSBjb21wZXRlbmN5U3ViVGhlbWVJZFxuICAgICAgICAgIGlmIChjYnAuc3RhdHVzICE9PSBOc0NhcmRDb250ZW50LklHT1RDb25zdC5SRVRJUkVEKSB7XG4gICAgICAgICAgICBjYnBGaWx0ZXJlZENvbnRlbnQucHVzaChjYnApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaGlsZEVucm9sbERhdGEgJiYgY2hpbGRFbnJvbGxEYXRhLnN0YXR1cyA9PT0gMikge1xuICAgICAgICAgICAgICBjYnBGaWx0ZXJlZENvbnRlbnQucHVzaChjYnApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNicEZpbHRlcmVkQ29udGVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3Qgc29ydGVkRGF0YTogYW55ID0gY2JwRmlsdGVyZWRDb250ZW50LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdERhdGU6IGFueSA9IG5ldyBEYXRlKGEuZW5kRGF0ZSlcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZERhdGU6IGFueSA9IG5ldyBEYXRlKGIuZW5kRGF0ZSlcblxuICAgICAgICAgICAgcmV0dXJuICBzZWNvbmREYXRlID4gZmlyc3REYXRlICA/IDEgOiAtMVxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3QgdW5pcXVlVXNlcnNCeUlEID0gbG9kYXNoLnVuaXFCeShzb3J0ZWREYXRhLCAnaWRlbnRpZmllcicpXG4gICAgICAgICAgY29uc3Qgc29ydGVkQnlFbmREYXRlID0gIGxvZGFzaC5vcmRlckJ5KHVuaXF1ZVVzZXJzQnlJRCwgWydlbmREYXRlJ10sIFsnYXNjJ10pXG4gICAgICAgICAgY29uc3Qgc29ydGVkQnlTdGF0dXMgPSAgbG9kYXNoLm9yZGVyQnkoc29ydGVkQnlFbmREYXRlLCBbJ2NvbnRlbnRTdGF0dXMnXSwgWydhc2MnXSlcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KHNvcnRlZEJ5U3RhdHVzKSlcbiAgICAgICAgICByZXR1cm4gc29ydGVkQnlTdGF0dXNcbiAgICAgIH1cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoY2JwRmlsdGVyZWRDb250ZW50KSlcbiAgICAgIHJldHVybiBjYnBGaWx0ZXJlZENvbnRlbnRcbiAgICAgIH1cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBEYXRhJywgSlNPTi5zdHJpbmdpZnkoY2JwQ29udGVudCkpXG4gICAgICByZXR1cm4gY2JwQ29udGVudFxuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwRGF0YScsIEpTT04uc3RyaW5naWZ5KFtdKSlcbiAgICByZXR1cm4gW11cbiAgfVxuICBtYXBFbnJvbGxtZW50RGF0YShjb3Vyc2VEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBlbnJvbGxEYXRhOiBhbnkgPSB7fVxuICAgIGlmIChjb3Vyc2VEYXRhICYmIGNvdXJzZURhdGEuY291cnNlcy5sZW5ndGgpIHtcbiAgICAgIGNvdXJzZURhdGEuY291cnNlcy5mb3JFYWNoKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBlbnJvbGxEYXRhW2RhdGEuY29sbGVjdGlvbklkXSA9IGRhdGFcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBlbnJvbGxEYXRhXG4gIH1cbn1cbiJdfQ==