@churchillliving/se-ui-toolkit 6.53.831 → 6.53.833

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.
@@ -41,9 +41,9 @@ export class ReportFilterComponent {
41
41
  };
42
42
  }
43
43
  createDynamicFields() {
44
- const getReportByName = '/ReportConfig/ByName';
44
+ const getReportByReport = '/ReportConfig/Report';
45
45
  const getReportById = '/ReportConfig/ById';
46
- const getReportByIdOrName = typeof (this.config.data?.getReport) === 'number' ? getReportById : getReportByName;
46
+ const getReportByIdOrName = typeof (this.config.data?.getReport) === 'number' ? getReportById : getReportByReport;
47
47
  this.requestService.getOne(getReportByIdOrName, this.config.data?.getReport).subscribe((data) => {
48
48
  this.reportJson = JSON.parse(data?.report);
49
49
  this.formFields = this.reportJson?.FormFields;
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
214
214
  }], ctorParameters: function () { return [{ type: i1.DynamicDialogConfig, decorators: [{
215
215
  type: Optional
216
216
  }] }, { type: i2.RequestService }, { type: i3.FormService }, { type: i4.GridService }, { type: i5.AlertService }]; } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3JlcG9ydC9yZXBvcnQtRmlsdGVyL3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3JlcG9ydC9yZXBvcnQtRmlsdGVyL3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkUsT0FBTyxFQUFFLFlBQVksRUFBNEIsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQVV2RyxNQUFNLE9BQU8scUJBQXFCO0lBS2hDLFlBQStCLE1BQTJCLEVBQVUsY0FBOEIsRUFBVSxXQUF3QixFQUFVLFdBQXdCLEVBQVUsWUFBMEI7UUFBM0ssV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFIMU0sZUFBVSxHQUFpQixFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFRLEVBQUUsQ0FBQztJQUV5TCxDQUFDO0lBRS9NLFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUU3QixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsWUFBWSxFQUFFO2dCQUNaO29CQUNFLE1BQU0sRUFBRTt3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SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsUUFBYSxFQUFFLFVBQWtCO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUV4RCxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWEsRUFBRSxVQUFlO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO2lJQW5OVSxxQkFBcUI7cUhBQXJCLHFCQUFxQix3RENibEMsOElBT0E7OzJGRE1hLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0I7OzBCQVNmLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IEVGb3JtQ29udHJvbCwgSUR5bmFtaWNGb3JtLCBJRm9ybUZpZWxkLCBJUmVwb3J0VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1yZXBvcnQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnQtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZHluYW1pY0Zvcm06IElEeW5hbWljRm9ybTtcbiAgZm9ybUZpZWxkczogSUZvcm1GaWVsZFtdID0gW107XG4gIHJlcG9ydEpzb246IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLCBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSwgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRHluYW1pY0ZpZWxkcygpO1xuXG4gIH1cbiAgaW5pdGlhbGl6ZUZvcm0oKSB7XG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHtcbiAgICAgIGZvcm1TZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAuLi50aGlzLmZvcm1GaWVsZHMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnRG93bmxvYWQgUmVwb3J0JyxcbiAgICAgICAgICAgICAgY29udHJvbDogRUZvcm1Db250cm9sLkFERF9CVVRUT04sXG4gICAgICAgICAgICAgIGhpZGRlbjogdGhpcy5jb25maWc/LmRhdGE/LmhpZGVHZW5lcmF0ZVJlcG9ydEJ0bixcbiAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRSZXBvcnQoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cblxuICAgIH1cbiAgfVxuICBjcmVhdGVEeW5hbWljRmllbGRzKCkge1xuICAgIGNvbnN0IGdldFJlcG9ydEJ5TmFtZSA9ICAnL1JlcG9ydENvbmZpZy9CeU5hbWUnO1xuICAgIGNvbnN0IGdldFJlcG9ydEJ5SWQgPSAgJy9SZXBvcnRDb25maWcvQnlJZCc7XG4gICAgY29uc3QgZ2V0UmVwb3J0QnlJZE9yTmFtZSA9IHR5cGVvZih0aGlzLmNvbmZpZy5kYXRhPy5nZXRSZXBvcnQpID09PSAnbnVtYmVyJyA/IGdldFJlcG9ydEJ5SWQgOiBnZXRSZXBvcnRCeU5hbWVcbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLmdldE9uZTxSZXNwb25zZSwgYW55PihnZXRSZXBvcnRCeUlkT3JOYW1lLCB0aGlzLmNvbmZpZy5kYXRhPy5nZXRSZXBvcnQpLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZXBvcnRKc29uID0gSlNPTi5wYXJzZShkYXRhPy5yZXBvcnQpO1xuICAgICAgICB0aGlzLmZvcm1GaWVsZHMgPSB0aGlzLnJlcG9ydEpzb24/LkZvcm1GaWVsZHM7XG4gICAgICAgIHRoaXMuc2V0UGFyYW1GaWVsZFZhbHVlKCk7XG4gICAgICAgIHRoaXMuZm9ybUZpZWxkcyA9IHRoaXMuc2V0UmVwb3J0RmlsdGVyVmlld1BhcmFtZXRlcnModGhpcy5yZXBvcnRKc29uPy5QYXJhbWV0ZXJzLCB0aGlzLmZvcm1GaWVsZHMpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgICAgIC8vIHNldCBkcm9wZG93biBkYXRhIGJhc2VkIG9uIG1hdGNoZWQgZmllbGQuXG4gICAgICAgIHRoaXMuc2V0RHJvcERvd25EYXRhKHRoaXMucmVwb3J0SnNvbik7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBzZXRSZXBvcnRGaWx0ZXJWaWV3UGFyYW1ldGVycyhQYXJhbWV0ZXIsIGZvcm1GaWVsZHMpIHtcbiAgICBQYXJhbWV0ZXIuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgIGlmIChwYXJhbT8uZmlsdGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbT8uZmlsdGVycz8uZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBmb3JtRmllbGRzLmZpbmRJbmRleCgoeCkgPT4geC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmlsdGVyLmZpZWxkPy50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICBmb3JtRmllbGRzW2luZGV4XS5sYWJlbCA9IGZpbHRlci5kaXNwbGF5bmFtZTtcbiAgICAgICAgICAgIGZvcm1GaWVsZHNbaW5kZXhdLmhpZGRlbiA9IGZpbHRlci5oaWRkZW4gPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZm9ybUZpZWxkcztcbiAgfVxuXG4gIHNldFBhcmFtRmllbGRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YSAmJiB0aGlzLmNvbmZpZy5kYXRhLnBhcmFtPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNvbmZpZy5kYXRhLnBhcmFtLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMocGFyYW0pWzBdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybUZpZWxkcy5maW5kSW5kZXgoKGZvcm1GaWVsZCkgPT4gKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0ga2V5LnRvTG93ZXJDYXNlKCkpIHx8IChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09ICdAJyArIGtleS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgaWYgKGluZGV4ID4gLTEgJiYga2V5KSB7XG4gICAgICAgICAgdGhpcy5mb3JtRmllbGRzW2luZGV4XS52YWx1ZSA9IHBhcmFtW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb3JtRmllbGRzLnB1c2goeyBmaWVsZDoga2V5LCBsYWJlbDoga2V5LCB2YWx1ZTogcGFyYW1ba2V5XSwgY29sdW1uOiA0LCBjb250cm9sOiBFRm9ybUNvbnRyb2wuSU5QVVQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldERyb3BEb3duRGF0YShyZXBvcnRKc29uOiBhbnkpIHtcbiAgICByZXBvcnRKc29uLlBhcmFtZXRlcnM/LmZvckVhY2goKHJlY29yZDogYW55KSA9PiB7XG4gICAgICBpZiAocmVjb3JkLmlzdW5pcXVla2V5KSB7XG4gICAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHtcbiAgICAgICAgICB1bmlxdWVLZXk6IHJlY29yZC5pc3VuaXF1ZWtleSxcbiAgICAgICAgICBmaWx0ZXJzOiB0aGlzLmdldERyb3Bkb3duRmlsdGVycyhyZWNvcmQpXG4gICAgICAgIH0pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2Uuc2V0Rm9ybUZpZWxkUHJvcCh0aGlzLmR5bmFtaWNGb3JtLCByZWNvcmQucGFyYW1uYW1lLCBbXG4gICAgICAgICAgICB7IG5hbWU6ICdkYXRhJywgdmFsdWU6IHJlc3BvbnNlLnJlY29yZHMgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RHJvcGRvd25GaWx0ZXJzKFBhcmFtZXRlcjogYW55KSB7XG4gICAgbGV0IGZpbHRlcnM6IGFueSA9IFtdO1xuICAgIGNvbnN0IHBhcmFtRmlsdGVyID0gUGFyYW1ldGVyPy5maWx0ZXJzO1xuICAgIGxldCBhcnIgPSBbXTtcbiAgICBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzKCk7XG4gICAgZmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoRmlsdGVyID0gcGFyYW1GaWx0ZXI/LmZpbmQoKHgpID0+IHg/LmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWx0ZXIuZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICBpZiAobWF0Y2hGaWx0ZXIgJiYgbWF0Y2hGaWx0ZXIuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpbHRlcj8uZmllbGQudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBhcnIucHVzaChmaWx0ZXIpO1xuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG5cbiAgZ2V0UmVwb3J0RmlsdGVyKCkge1xuICAgIGxldCBhcnIgPSBbXTtcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXJzKClcbiAgICB0aGlzLnJlcG9ydEpzb24/LlBhcmFtZXRlcnM/LmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpID0+IChmaWx0ZXIuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IHBhcmFtPy5wYXJhbW5hbWU/LnRvTG93ZXJDYXNlKCkpIHx8IChmaWx0ZXIuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09ICdAJyArIHBhcmFtPy5wYXJhbW5hbWU/LnRvTG93ZXJDYXNlKCkpKVxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgYXJyLnB1c2goZmlsdGVyc1tpbmRleF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnIucHVzaCh7IGZpZWxkOiBwYXJhbT8ucGFyYW1uYW1lPy5yZXBsYWNlKCdAJywgJycpLCBtYXRjaE1vZGU6ICdlcXVhbCcsIG9wZXJhdG9yOiAnYW5kJywgdmFsdWU6IHBhcmFtLnBhcmFtdmFsdWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBhcnI7XG4gIH1cblxuICBnZXRGaWx0ZXJzKCkge1xuICAgIGxldCBmaWx0ZXJzOiBhbnkgPSBbXTtcbiAgICB0aGlzLmR5bmFtaWNGb3JtPy5mb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzPy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQudmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXJzLnB1c2goeyBmaWVsZDogZmllbGQuZmllbGQsIG1hdGNoTW9kZTogJ2VxdWFsJywgb3BlcmF0b3I6ICdhbmQnLCB2YWx1ZTogZmllbGQudmFsdWUgfSk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuXG4gIGRvd25sb2FkUmVwb3J0KCkge1xuICAgIGNvbnN0IGZpbHRlcnM6IGFueSA9IHRoaXMuZ2V0UmVwb3J0RmlsdGVyKCk7XG4gICAgY29uc3QgZmlsZVR5cGUgPSB0aGlzLmNvbmZpZz8uZGF0YT8ucmVwb3J0VHlwZTtcbiAgICBpZiAoZmlsZVR5cGUgPT09IElSZXBvcnRUeXBlLkVYQ0VMIHx8IGZpbGVUeXBlID09PSBJUmVwb3J0VHlwZS5URVhUIHx8IGZpbGVUeXBlID09PSBJUmVwb3J0VHlwZS5DU1YpIHtcbiAgICAgIHRoaXMuZG93bmxvYWRDdXN0b21SZXBvcnQoZmlsZVR5cGUsIHRoaXMuY29uZmlnPy5kYXRhPy5yZXBvcnROYW1lLCBmaWx0ZXJzKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0UGRmUmVwb3J0KGZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBkZlJlcG9ydChmaWx0ZXJzKSB7XG4gICAgbGV0IHJlcElkT2JqOiBhbnk7XG4gICAgXG4gICAgaWYgKHR5cGVvZiAodGhpcy5jb25maWc/LmRhdGE/LmdldFJlcG9ydCkgPT09ICdudW1iZXInKSB7XG4gICAgICByZXBJZE9iaiA9IHsgSWQ6IHRoaXMuY29uZmlnPy5kYXRhPy5nZXRSZXBvcnQsIGZpbHRlcnM6IGZpbHRlcnMgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJlcElkT2JqID0geyByZXBvcnROYW1lOiB0aGlzLmNvbmZpZz8uZGF0YT8uZ2V0UmVwb3J0LCBmaWx0ZXJzOiBmaWx0ZXJzIH1cbiAgICB9XG5cbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLmRvd25sb2FkKCcvUmVwb3J0L0dlbmVyYXRlJywgcmVwSWRPYmopXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB2YXIgbmV3QmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZS5ib2R5XSwgeyB0eXBlOiAnYXBwbGljYXRpb24vcGRmJyB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3QmxvYik7XG4gICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICBhLmhyZWYgPSBkYXRhO1xuICAgICAgICAgIGNvbnN0IGhlYWRlciA9IHJlc3BvbnNlPy5oZWFkZXJzPy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKTtcbiAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGhlYWRlcj8uc3BsaXQoJ2ZpbGVuYW1lPScpPy5bMV0/LnNwbGl0KFwiO1wiKVswXT8ucmVwbGFjZUFsbCgvXFxcIi9nLCAnJyk7XG4gICAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgICAgYS5jbGljaygpO1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGRvd25sb2FkQ3VzdG9tUmVwb3J0KHJlcG9ydFR5cGUsIHJlcG9ydE5hbWUsIGZpbHRlcnMpIHtcbiAgICB0aGlzLmNvbmZpZz8uZGF0YT8ucmVwb3J0SnNvbkRhdGE/LmZvckVhY2goKGRhdGEpID0+IHtcbiAgICAgIGlmIChkYXRhPy5kYXRhc291cmNlKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9NdWx0aUZldGNoJywge1xuICAgICAgICAgIHVuaXF1ZUtleTogZGF0YS5kYXRhc291cmNlLFxuICAgICAgICAgIGZpbHRlcnM6IGZpbHRlcnNcbiAgICAgICAgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93c0luZm8gPSByZXNwb25zZT8udGFibGVzWzBdPy5yZWNvcmRzO1xuICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSBPYmplY3Q/LmtleXMocmVzcG9uc2U/LnRhYmxlc1swXT8ucmVjb3Jkc1swXSk7XG4gICAgICAgICAgaWYgKHJlcG9ydFR5cGUgPT09IElSZXBvcnRUeXBlLkVYQ0VMKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWRTZXJ2aWNlLmV4cG9ydEV4Y2VsKHJvd3NJbmZvLCBjb2x1bW5zLCByZXBvcnROYW1lKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcG9ydFR5cGUgPT09IElSZXBvcnRUeXBlLlRFWFQpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUFzVGV4dEZpbGUocm93c0luZm8sIHJlcG9ydE5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVEYXRhQXNDc3Yocm93c0luZm8sIHJlcG9ydE5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgdG8gdGV4dCAoc3ViLW1ldGhvZClcbiAgICovXG4gIHNhdmVBc1RleHRGaWxlKHJvd3NJbmZvOiBhbnksIHJlcG9ydE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZUFzVGV4dEZpbGUocm93c0luZm8sIHJlcG9ydE5hbWUpO1xuXG4gIH1cblxuICBzYXZlRGF0YUFzQ3N2KHJvd3NJbmZvOiBhbnksIHJlcG9ydE5hbWU6IGFueSkge1xuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2F2ZURhdGFBc0Nzdihyb3dzSW5mbywgcmVwb3J0TmFtZSk7XG4gIH1cblxufVxuIiwiPHNlLWZvcm0tdXRpbCAgXG4qbmdJZj1cImR5bmFtaWNGb3JtXCJcbltmb3JtXT1cImR5bmFtaWNGb3JtXCJcbltoaWRlU2F2ZUJ1dHRvbl09XCJ0cnVlXCJcbltoaWRlQ2FuY2VsQnV0dG9uXT1cInRydWVcIlxuPlxuPC9zZS1mb3JtLXV0aWw+XG4iXX0=
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3JlcG9ydC9yZXBvcnQtRmlsdGVyL3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL3JlcG9ydC9yZXBvcnQtRmlsdGVyL3JlcG9ydC1maWx0ZXIvcmVwb3J0LWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkUsT0FBTyxFQUFFLFlBQVksRUFBNEIsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7OztBQVV2RyxNQUFNLE9BQU8scUJBQXFCO0lBS2hDLFlBQStCLE1BQTJCLEVBQVUsY0FBOEIsRUFBVSxXQUF3QixFQUFVLFdBQXdCLEVBQVUsWUFBMEI7UUFBM0ssV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFIMU0sZUFBVSxHQUFpQixFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFRLEVBQUUsQ0FBQztJQUV5TCxDQUFDO0lBRS9NLFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUU3QixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsWUFBWSxFQUFFO2dCQUNaO29CQUNFLE1BQU0sRUFBRTt3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QUFBO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLFFBQWEsRUFBRSxVQUFrQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFeEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFhLEVBQUUsVUFBZTtRQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztpSUFuTlUscUJBQXFCO3FIQUFyQixxQkFBcUIsd0RDYmxDLDhJQU9BOzsyRkRNYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFTZixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFRm9ybUNvbnRyb2wsIElEeW5hbWljRm9ybSwgSUZvcm1GaWVsZCwgSVJlcG9ydFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtcmVwb3J0LWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGR5bmFtaWNGb3JtOiBJRHluYW1pY0Zvcm07XG4gIGZvcm1GaWVsZHM6IElGb3JtRmllbGRbXSA9IFtdO1xuICByZXBvcnRKc29uOiBhbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgY29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnLCBwcml2YXRlIHJlcXVlc3RTZXJ2aWNlOiBSZXF1ZXN0U2VydmljZSwgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRTZXJ2aWNlLCBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUR5bmFtaWNGaWVsZHMoKTtcblxuICB9XG4gIGluaXRpYWxpemVGb3JtKCkge1xuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB7XG4gICAgICBmb3JtU2VjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAgLi4udGhpcy5mb3JtRmllbGRzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogJ0Rvd25sb2FkIFJlcG9ydCcsXG4gICAgICAgICAgICAgIGNvbnRyb2w6IEVGb3JtQ29udHJvbC5BRERfQlVUVE9OLFxuICAgICAgICAgICAgICBoaWRkZW46IHRoaXMuY29uZmlnPy5kYXRhPy5oaWRlR2VuZXJhdGVSZXBvcnRCdG4sXG4gICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkUmVwb3J0KCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG5cbiAgICB9XG4gIH1cbiAgY3JlYXRlRHluYW1pY0ZpZWxkcygpIHtcbiAgICBjb25zdCBnZXRSZXBvcnRCeVJlcG9ydCA9ICAnL1JlcG9ydENvbmZpZy9SZXBvcnQnO1xuICAgIGNvbnN0IGdldFJlcG9ydEJ5SWQgPSAgJy9SZXBvcnRDb25maWcvQnlJZCc7XG4gICAgY29uc3QgZ2V0UmVwb3J0QnlJZE9yTmFtZSA9IHR5cGVvZih0aGlzLmNvbmZpZy5kYXRhPy5nZXRSZXBvcnQpID09PSAnbnVtYmVyJyA/IGdldFJlcG9ydEJ5SWQgOiBnZXRSZXBvcnRCeVJlcG9ydFxuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0T25lPFJlc3BvbnNlLCBhbnk+KGdldFJlcG9ydEJ5SWRPck5hbWUsIHRoaXMuY29uZmlnLmRhdGE/LmdldFJlcG9ydCkuc3Vic2NyaWJlKFxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJlcG9ydEpzb24gPSBKU09OLnBhcnNlKGRhdGE/LnJlcG9ydCk7XG4gICAgICAgIHRoaXMuZm9ybUZpZWxkcyA9IHRoaXMucmVwb3J0SnNvbj8uRm9ybUZpZWxkcztcbiAgICAgICAgdGhpcy5zZXRQYXJhbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgdGhpcy5mb3JtRmllbGRzID0gdGhpcy5zZXRSZXBvcnRGaWx0ZXJWaWV3UGFyYW1ldGVycyh0aGlzLnJlcG9ydEpzb24/LlBhcmFtZXRlcnMsIHRoaXMuZm9ybUZpZWxkcyk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAgICAgLy8gc2V0IGRyb3Bkb3duIGRhdGEgYmFzZWQgb24gbWF0Y2hlZCBmaWVsZC5cbiAgICAgICAgdGhpcy5zZXREcm9wRG93bkRhdGEodGhpcy5yZXBvcnRKc29uKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRm9ybSgpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHNldFJlcG9ydEZpbHRlclZpZXdQYXJhbWV0ZXJzKFBhcmFtZXRlciwgZm9ybUZpZWxkcykge1xuICAgIFBhcmFtZXRlci5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgaWYgKHBhcmFtPy5maWx0ZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcmFtPy5maWx0ZXJzPy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGZvcm1GaWVsZHMuZmluZEluZGV4KCh4KSA9PiB4LmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWx0ZXIuZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZHNbaW5kZXhdLmxhYmVsID0gZmlsdGVyLmRpc3BsYXluYW1lO1xuICAgICAgICAgICAgZm9ybUZpZWxkc1tpbmRleF0uaGlkZGVuID0gZmlsdGVyLmhpZGRlbiA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBmb3JtRmllbGRzO1xuICB9XG5cbiAgc2V0UGFyYW1GaWVsZFZhbHVlKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhICYmIHRoaXMuY29uZmlnLmRhdGEucGFyYW0/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29uZmlnLmRhdGEucGFyYW0uZm9yRWFjaCgocGFyYW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhwYXJhbSlbMF07XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3JtRmllbGRzLmZpbmRJbmRleCgoZm9ybUZpZWxkKSA9PiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBrZXkudG9Mb3dlckNhc2UoKSkgfHwgKGZvcm1GaWVsZC5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gJ0AnICsga2V5LnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICBpZiAoaW5kZXggPiAtMSAmJiBrZXkpIHtcbiAgICAgICAgICB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLnZhbHVlID0gcGFyYW1ba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm1GaWVsZHMucHVzaCh7IGZpZWxkOiBrZXksIGxhYmVsOiBrZXksIHZhbHVlOiBwYXJhbVtrZXldLCBjb2x1bW46IDQsIGNvbnRyb2w6IEVGb3JtQ29udHJvbC5JTlBVVCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RHJvcERvd25EYXRhKHJlcG9ydEpzb246IGFueSkge1xuICAgIHJlcG9ydEpzb24uUGFyYW1ldGVycz8uZm9yRWFjaCgocmVjb3JkOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZWNvcmQuaXN1bmlxdWVrZXkpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZS5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywge1xuICAgICAgICAgIHVuaXF1ZUtleTogcmVjb3JkLmlzdW5pcXVla2V5LFxuICAgICAgICAgIGZpbHRlcnM6IHRoaXMuZ2V0RHJvcGRvd25GaWx0ZXJzKHJlY29yZClcbiAgICAgICAgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5zZXRGb3JtRmllbGRQcm9wKHRoaXMuZHluYW1pY0Zvcm0sIHJlY29yZC5wYXJhbW5hbWUsIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2RhdGEnLCB2YWx1ZTogcmVzcG9uc2UucmVjb3JkcyB9LFxuICAgICAgICAgIF0pO1xuICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXREcm9wZG93bkZpbHRlcnMoUGFyYW1ldGVyOiBhbnkpIHtcbiAgICBsZXQgZmlsdGVyczogYW55ID0gW107XG4gICAgY29uc3QgcGFyYW1GaWx0ZXIgPSBQYXJhbWV0ZXI/LmZpbHRlcnM7XG4gICAgbGV0IGFyciA9IFtdO1xuICAgIGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnMoKTtcbiAgICBmaWx0ZXJzLmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hGaWx0ZXIgPSBwYXJhbUZpbHRlcj8uZmluZCgoeCkgPT4geD8uZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpbHRlci5maWVsZD8udG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaEZpbHRlciAmJiBtYXRjaEZpbHRlci5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gZmlsdGVyPy5maWVsZC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGFyci5wdXNoKGZpbHRlcik7XG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gYXJyO1xuICB9XG5cblxuICBnZXRSZXBvcnRGaWx0ZXIoKSB7XG4gICAgbGV0IGFyciA9IFtdO1xuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnMoKVxuICAgIHRoaXMucmVwb3J0SnNvbj8uUGFyYW1ldGVycz8uZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcikgPT4gKGZpbHRlci5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gcGFyYW0/LnBhcmFtbmFtZT8udG9Mb3dlckNhc2UoKSkgfHwgKGZpbHRlci5maWVsZD8udG9Mb3dlckNhc2UoKSA9PT0gJ0AnICsgcGFyYW0/LnBhcmFtbmFtZT8udG9Mb3dlckNhc2UoKSkpXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBhcnIucHVzaChmaWx0ZXJzW2luZGV4XSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyci5wdXNoKHsgZmllbGQ6IHBhcmFtPy5wYXJhbW5hbWU/LnJlcGxhY2UoJ0AnLCAnJyksIG1hdGNoTW9kZTogJ2VxdWFsJywgb3BlcmF0b3I6ICdhbmQnLCB2YWx1ZTogcGFyYW0ucGFyYW12YWx1ZSB9KVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG4gIGdldEZpbHRlcnMoKSB7XG4gICAgbGV0IGZpbHRlcnM6IGFueSA9IFtdO1xuICAgIHRoaXMuZHluYW1pY0Zvcm0/LmZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHM/LmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC52YWx1ZSkge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7IGZpZWxkOiBmaWVsZC5maWVsZCwgbWF0Y2hNb2RlOiAnZXF1YWwnLCBvcGVyYXRvcjogJ2FuZCcsIHZhbHVlOiBmaWVsZC52YWx1ZSB9KTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJzO1xuICB9XG5cbiAgZG93bmxvYWRSZXBvcnQoKSB7XG4gICAgY29uc3QgZmlsdGVyczogYW55ID0gdGhpcy5nZXRSZXBvcnRGaWx0ZXIoKTtcbiAgICBjb25zdCBmaWxlVHlwZSA9IHRoaXMuY29uZmlnPy5kYXRhPy5yZXBvcnRUeXBlO1xuICAgIGlmIChmaWxlVHlwZSA9PT0gSVJlcG9ydFR5cGUuRVhDRUwgfHwgZmlsZVR5cGUgPT09IElSZXBvcnRUeXBlLlRFWFQgfHwgZmlsZVR5cGUgPT09IElSZXBvcnRUeXBlLkNTVikge1xuICAgICAgdGhpcy5kb3dubG9hZEN1c3RvbVJlcG9ydChmaWxlVHlwZSwgdGhpcy5jb25maWc/LmRhdGE/LnJlcG9ydE5hbWUsIGZpbHRlcnMpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5nZXRQZGZSZXBvcnQoZmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGRmUmVwb3J0KGZpbHRlcnMpIHtcbiAgICBsZXQgcmVwSWRPYmo6IGFueTtcbiAgICBcbiAgICBpZiAodHlwZW9mICh0aGlzLmNvbmZpZz8uZGF0YT8uZ2V0UmVwb3J0KSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJlcElkT2JqID0geyBJZDogdGhpcy5jb25maWc/LmRhdGE/LmdldFJlcG9ydCwgZmlsdGVyczogZmlsdGVycyB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmVwSWRPYmogPSB7IHJlcG9ydE5hbWU6IHRoaXMuY29uZmlnPy5kYXRhPy5nZXRSZXBvcnQsIGZpbHRlcnM6IGZpbHRlcnMgfVxuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZG93bmxvYWQoJy9SZXBvcnQvR2VuZXJhdGUnLCByZXBJZE9iailcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHZhciBuZXdCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlLmJvZHldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXdCbG9iKTtcbiAgICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgIGEuaHJlZiA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgaGVhZGVyID0gcmVzcG9uc2U/LmhlYWRlcnM/LmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xuICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gaGVhZGVyPy5zcGxpdCgnZmlsZW5hbWU9Jyk/LlsxXT8uc3BsaXQoXCI7XCIpWzBdPy5yZXBsYWNlQWxsKC9cXFwiL2csICcnKTtcbiAgICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgICBhLmNsaWNrKCk7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZG93bmxvYWRDdXN0b21SZXBvcnQocmVwb3J0VHlwZSwgcmVwb3J0TmFtZSwgZmlsdGVycykge1xuICAgIHRoaXMuY29uZmlnPy5kYXRhPy5yZXBvcnRKc29uRGF0YT8uZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGE/LmRhdGFzb3VyY2UpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZS5nZXQ8YW55W10sIGFueT4oJy9EYXRhL011bHRpRmV0Y2gnLCB7XG4gICAgICAgICAgdW5pcXVlS2V5OiBkYXRhLmRhdGFzb3VyY2UsXG4gICAgICAgICAgZmlsdGVyczogZmlsdGVyc1xuICAgICAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByb3dzSW5mbyA9IHJlc3BvbnNlPy50YWJsZXNbMF0/LnJlY29yZHM7XG4gICAgICAgICAgY29uc3QgY29sdW1ucyA9IE9iamVjdD8ua2V5cyhyZXNwb25zZT8udGFibGVzWzBdPy5yZWNvcmRzWzBdKTtcbiAgICAgICAgICBpZiAocmVwb3J0VHlwZSA9PT0gSVJlcG9ydFR5cGUuRVhDRUwpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuZXhwb3J0RXhjZWwocm93c0luZm8sIGNvbHVtbnMsIHJlcG9ydE5hbWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVwb3J0VHlwZSA9PT0gSVJlcG9ydFR5cGUuVEVYVCkge1xuICAgICAgICAgICAgdGhpcy5zYXZlQXNUZXh0RmlsZShyb3dzSW5mbywgcmVwb3J0TmFtZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZURhdGFBc0Nzdihyb3dzSW5mbywgcmVwb3J0TmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCB0byB0ZXh0IChzdWItbWV0aG9kKVxuICAgKi9cbiAgc2F2ZUFzVGV4dEZpbGUocm93c0luZm86IGFueSwgcmVwb3J0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zYXZlQXNUZXh0RmlsZShyb3dzSW5mbywgcmVwb3J0TmFtZSk7XG5cbiAgfVxuXG4gIHNhdmVEYXRhQXNDc3Yocm93c0luZm86IGFueSwgcmVwb3J0TmFtZTogYW55KSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5zYXZlRGF0YUFzQ3N2KHJvd3NJbmZvLCByZXBvcnROYW1lKTtcbiAgfVxuXG59XG4iLCI8c2UtZm9ybS11dGlsICBcbipuZ0lmPVwiZHluYW1pY0Zvcm1cIlxuW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIlxuW2hpZGVTYXZlQnV0dG9uXT1cInRydWVcIlxuW2hpZGVDYW5jZWxCdXR0b25dPVwidHJ1ZVwiXG4+XG48L3NlLWZvcm0tdXRpbD5cbiJdfQ==
@@ -353,6 +353,11 @@ export class SeGlobalFilterComponent {
353
353
  }
354
354
  localStorage.setItem('applyFilter', JSON.stringify(true));
355
355
  this.gridService.applyFilterEvent = check;
356
+ const globalFilters = this.globalFilters.filter((x) => x.field);
357
+ const index = globalFilters.findIndex((filter) => filter.field && filter.type === GridFilterControlType.DATE_RANGE);
358
+ if (index > -1) {
359
+ globalFilters.splice(index, 1);
360
+ }
356
361
  this.filtersApplied.emit(this.globalFilters);
357
362
  // let test=nextValue
358
363
  //filter.value=nextValue
@@ -563,4 +568,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
563
568
  }], activeTestMode: [{
564
569
  type: Input
565
570
  }] } });
566
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dsb2JhbC1maWx0ZXJzL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9nbG9iYWwtZmlsdGVycy9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixlQUFlLEVBRWYsU0FBUyxFQUNULGdCQUFnQixHQUVqQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTyx1QkFBdUI7SUFRbEMsSUFBYSxjQUFjLENBQUUsR0FBTyxJQUFJLElBQUcsR0FBRyxLQUFLLElBQUksRUFBRTtRQUFFLFFBQVEsQ0FBQTtLQUFFLENBQUEsQ0FBQztJQWN0RSxZQUNTLFFBQWtCLEVBQ04sR0FBcUIsRUFDckIsTUFBMkIsRUFDdEMsV0FBd0IsRUFDekIsYUFBNEIsRUFDM0IsWUFBMEIsRUFDMUIsRUFBYztRQU5mLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FB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QVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7aUlBcmxCVSx1QkFBdUI7cUhBQXZCLHVCQUF1Qiw0Y0NwQnBDLDIxdUJBOGdCQTs7MkZEMWZhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQTRCMUIsUUFBUTs7MEJBQ1IsUUFBUTtzSkF4QmlCLFVBQVU7c0JBQXJDLFNBQVM7dUJBQUMsZUFBZTtnQkFDakIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNNLGNBQWM7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7XG4gIElHbG9iYWxGaWx0ZXIsXG4gIEdyaWRGaWx0ZXJDb250cm9sVHlwZSxcbiAgRUdyaWRDb2x1bW5UeXBlLFxuICBhZGRHbG9iYWxGaWx0ZXIsXG4gIEVEYXlSYW5nZSxcbiAgRUZpbHRlclZhbGlkYXRvcixcbiAgSUdyaWRVcGRhdGUsXG59IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1nbG9iYWwtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlR2xvYmFsRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgncmFuZ2VDYWxlbmRhcicpIGRhdGVQaWNrZXI6IGFueTtcbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyczogSUdsb2JhbEZpbHRlcltdID0gW107XG4gIEBJbnB1dCgpIHNlYXJjaEdsb2JhbEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGVhckdsb2JhbEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBncmlkVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQXBwbGllZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHNldCBhY3RpdmVUZXN0TW9kZSAodmFsOmFueSkgeyBpZih2YWwgPT09IHRydWUpIHsgZGVidWdnZXIgfX1cblxuICBwdWJsaWMgZml0ZXJUeXBlcyA9IEdyaWRGaWx0ZXJDb250cm9sVHlwZTtcbiAgcHVibGljIGNvbHVtblR5cGUgPSBFR3JpZENvbHVtblR5cGU7XG4gIHB1YmxpYyBzaG93RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIGRhdGVSYW5nZVZhbHVlIDogYW55O1xuICBwdWJsaWMgc3RhcnREYXRlOiBEYXRlO1xuICBwdWJsaWMgZW5kRGF0ZTogRGF0ZTtcblxuICBzaG93SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyOiBhbnkgPSAnJztcbiAgaGlkZUNsZWFyRmlsdGVyQnRuOiBib29sZWFuID0gdHJ1ZTtcbiAgY2FsZW5kYXJGb3JtYXQ6c3RyaW5nID0gJ21tL2RkL3l5JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGF0ZXBpcGU6IERhdGVQaXBlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbm1lbnQgb2Ygc2VsZWN0ZWQgY29sdW1ucyBvbiBwYWdlIGxvYWRcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmRhdGEpe1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gdGhpcy5jb25maWcuZGF0YS5vcGVuRGlhbG9nO1xuICAgICAgaWYodGhpcy5jb25maWcuZGF0YS5nbG9iYWxGaWx0ZXJzKXtcbiAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzID0gdGhpcy5jb25maWc/LmRhdGEuZ2xvYmFsRmlsdGVycyBhcyBJR2xvYmFsRmlsdGVyW107XG4gICAgICB9XG4gICAgIFxuICAgICAgLy8gc2V0IEJ5IERlZnVhbHQgQ2FsZW5kYXIgUmFuZ2VcbiAgICAgIHRoaXMuc2V0RGVmdWFsdENhbGVuZGFyUmFuZ2UoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGVSYW5nZUZpbHRlclZhbHVlKGRhdGVSYW5nZSl7XG4gICAgaWYoZGF0ZVJhbmdlPy52YWx1ZT8ubGVuZ3RoID4gMSl7XG4gICAgICBkYXRlUmFuZ2UudmFsdWVbMF0gPSBuZXcgRGF0ZShkYXRlUmFuZ2UudmFsdWVbMF0pO1xuICAgICAgZGF0ZVJhbmdlLnZhbHVlWzFdID0gbmV3IERhdGUoZGF0ZVJhbmdlLnZhbHVlWzFdKTtcbiAgICAgIHRoaXMuc2VsZWN0RGF0ZShkYXRlUmFuZ2UsIGZhbHNlKTtcbiAgICB9ZWxzZSB7XG4gICAgICBpZih0aGlzLmRhdGVSYW5nZVZhbHVlKXtcbiAgICAgICAgbGV0IGRhdGVSYW5nZVZhbHVlID0gdGhpcy5kYXRlUmFuZ2VWYWx1ZT8uaW5jbHVkZXMoJy0nKSA/IHRoaXMuZGF0ZVJhbmdlVmFsdWU/LnNwbGl0KCctJykgOiAnJztcbiAgICAgICAgaWYgKGRhdGVSYW5nZVZhbHVlLmxlbmd0aCA9PSAyICYmIChkYXRlUmFuZ2VWYWx1ZVswXS50cmltKCkgPT0gZGF0ZVJhbmdlVmFsdWVbMV0udHJpbSgpKSl7XG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlID0gW11cbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWVbMF0gPSBuZXcgRGF0ZShkYXRlUmFuZ2VWYWx1ZVswXSk7XG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlWzFdID0gbmV3IERhdGUoZGF0ZVJhbmdlVmFsdWVbMV0pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZShkYXRlUmFuZ2UsIGZhbHNlKTsgICAgIFxuICAgICAgICB9ICAgIFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgXG4gIGNvbnRhaW5zV2hpdGVzcGFjZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLmluY2x1ZGVzKCcgJyk7XG4gIH1cblxuICBhZGRTcGFjZXNhdGZpcnN0KHgpIHtcbiAgICByZXR1cm4gXCIgXCIgKyB4O1xuICB9XG5cbiAgYWRkU3BhY2VzYXRsYXN0KHgpIHtcbiAgICByZXR1cm4geCArIFwiIFwiXG4gIH1cblxuICAvLyBjaGFuZ2UgY2FsZW5kYXIgZm9ybWF0IG9uIHJ1biB0aW1lIGlmIHVzZXIgdHlwZSBkYXRlIG9uIHRoZSBjYWxlbmRhciBmaWVsZC5cbiAgY2FsZW5kYXJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlcjpJR2xvYmFsRmlsdGVyLCBldmVudD86IGFueSl7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQpWzBdPy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIChhOiBhbnkpID0+IHtcbiAgICAgIGxldCB5ZWFyID0gYT8udGFyZ2V0Py52YWx1ZT8udG9TdHJpbmcoKT8uc3BsaXQoJy8nKVsyXTtcbiAgICAgIHllYXIgPSB5ZWFyPy50b1N0cmluZygpLnNwbGl0KFwiIFwiKVswXTtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlVmFsdWUgPSBhPy50YXJnZXQ/LnZhbHVlXG4gICAgICBsZXQgZGF0ZVJhbmdlVmFsdWUgPSBhPy50YXJnZXQ/LnZhbHVlPy5pbmNsdWRlcygnLScpID8gYT8udGFyZ2V0Py52YWx1ZT8uc3BsaXQoJy0nKSA6ICcnO1xuICAgICAgLy8gYWRkaW5nIHNwYWNlIGJldHdlZW4gZnJvbSBhbmQgdG8gZGF0ZSBpbiBkYXRlIHJhbmdlIGZpbHRlclxuICAgICAgaWYgKGRhdGVSYW5nZVZhbHVlLmxlbmd0aCA9PSAyICYmIGRhdGVSYW5nZVZhbHVlWzFdLnNwbGl0KCcvJykubGVuZ3RoID09IDMgJiYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVswXSkgfHwgIXRoaXMuY29udGFpbnNXaGl0ZXNwYWNlKGRhdGVSYW5nZVZhbHVlWzFdKSkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVswXSkpIHtcbiAgICAgICAgICBsZXQgZnJvbURhdGUgPSB0aGlzLmFkZFNwYWNlc2F0bGFzdChkYXRlUmFuZ2VWYWx1ZVswXSk7XG4gICAgICAgICAgZGF0ZVJhbmdlVmFsdWVbMF0gPSBmcm9tRGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29udGFpbnNXaGl0ZXNwYWNlKGRhdGVSYW5nZVZhbHVlWzFdKSkge1xuICAgICAgICAgIGxldCB0b0RhdGUgPSB0aGlzLmFkZFNwYWNlc2F0Zmlyc3QoZGF0ZVJhbmdlVmFsdWVbMV0pO1xuICAgICAgICAgIGRhdGVSYW5nZVZhbHVlWzFdID0gdG9EYXRlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhbHVlID0gZGF0ZVJhbmdlVmFsdWVbMF0gKyAnLScgKyBkYXRlUmFuZ2VWYWx1ZVsxXVxuICAgICAgICBhLnRhcmdldC52YWx1ZSA9IGFsdWU7XG4gICAgICB9XG4gICAgICBpZih5ZWFyPy5sZW5ndGggPT09IDQpe1xuICAgICAgICB0aGlzLmNhbGVuZGFyRm9ybWF0ID0gJ21tL2RkL3l5JztcbiAgICAgICAgaWYoZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5DQUxFTkRBUil7XG4gICAgICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlID0gbmV3IERhdGUoYS50YXJnZXQudmFsdWUpLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoeWVhcj8ubGVuZ3RoKXtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm1hdCA9ICdtbS9kZC95JztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgeWVhclZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU/LnRvU3RyaW5nKCk/LnNwbGl0KCcvJylbNF07XG4gICAgaWYoKCFnbG9iYWxGaWx0ZXIudmFsdWUgfHwgeWVhclZhbHVlID09IHVuZGVmaW5lZCB8fCB5ZWFyVmFsdWU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PT0gMSkgJiYgZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tJZkZpbHRlclJlcXVpcmVkKGZpbHRlcjpJR2xvYmFsRmlsdGVyKXtcbiAgICBpZihmaWx0ZXIudmFsaWRhdGlvbnM/LmZpbmQodmFsaWRhdGlvbj0+dmFsaWRhdGlvbi50eXBlPT09RUZpbHRlclZhbGlkYXRvci5SRVFVSVJFRCkpe1xuICAgICAgZmlsdGVyLnJlcXVpcmVkRmllbGQ9dHJ1ZTtcbiAgICB9ICAgIFxuICB9XG4gIGNoZWNrRmlsdGVyVmFsaWRhdGlvbihyZW1vdmVFcnJvcjpib29sZWFuID0gZmFsc2UpOmJvb2xlYW57XG4gICAgbGV0IHZhbGlkOmJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZih0aGlzLmdsb2JhbEZpbHRlcnMgJiYgdGhpcy5nbG9iYWxGaWx0ZXJzLmxlbmd0aCA+IDApe1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzLmZvckVhY2goKGZpbHRlcik9PntcbiAgICAgICAgaWYoZmlsdGVyLnZhbGlkYXRpb25zICYmIGZpbHRlci52YWxpZGF0aW9ucy5sZW5ndGggPiAwICYmIGZpbHRlci52YWxpZGF0aW9uc1swXS50eXBlID09PSBFRmlsdGVyVmFsaWRhdG9yLlJFUVVJUkVEICYmICFmaWx0ZXIudmFsdWUgJiYgIXJlbW92ZUVycm9yKXtcbiAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgZmlsdGVyLmVycm9yTWVzc2FnZSA9IGZpbHRlci5kaXNwbGF5VGV4dCtcIiBpcyByZXF1aXJlZFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlci5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKXtcbiAgICB0aGlzLmdsb2JhbEZpbHRlcnM/LmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgdGhpcy5jaGVja0lmRmlsdGVyUmVxdWlyZWQoZmlsdGVyKTtcbiAgICAgIGlmIChmaWx0ZXIudmFsdWUgJiYgKGZpbHRlci5oaWRkZW4gPT09IGZhbHNlIHx8IGZpbHRlci5oaWRkZW4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnNFdmVudChmaWx0ZXIpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLy8gc2V0IEJ5IERlZnVhbHQgQ2FsZW5kYXIgUmFuZ2VcbiAgICB0aGlzLnNldERlZnVhbHRDYWxlbmRhclJhbmdlKGZhbHNlKTtcbiAgICBjb25zdCBnaXJkQ2xlYXJGaWx0ZXJCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICdjbGVhckdyaWRGaWx0ZXJWYWx1ZXNCdXR0b24nXG4gICAgKTtcbiAgICBpZiAoZ2lyZENsZWFyRmlsdGVyQnRuKSB7XG4gICAgICBpZiAoZ2lyZENsZWFyRmlsdGVyQnRuLmNsYXNzTGlzdC5jb250YWlucygnaGlkZS1jbGVhci1maWx0ZXItYnV0dG9uJykpIHtcbiAgICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIHNwbGl0aW5nIGRhdGUgcmFuZ2UgdmFsdWUgYW5kIGFzc2lnbiB0byB2YWx1ZSBhbmQgdmFsdWVUd28gaW4gRGF0ZV9SYW5nZSBDb250cm9sXG4gICAgY29uc3QgZGF0ZVJhbmdlRmlsdGVyID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UpO1xuICAgIGRhdGVSYW5nZUZpbHRlcj8uZm9yRWFjaCgoZGF0ZVJhbmdlKSA9PiB7XG4gICAgICBpZiAoZGF0ZVJhbmdlLnZhbHVlICYmIGRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICBpZiAodHlwZW9mIChkYXRlUmFuZ2UudmFsdWUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZSA9IGRhdGVSYW5nZS52YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIChkYXRlUmFuZ2UudmFsdWVUd28pID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVR3byA9IGRhdGVSYW5nZS52YWx1ZVR3by50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSAoZGF0ZVJhbmdlLnZhbHVlICsgXCItXCIgKyBkYXRlUmFuZ2UudmFsdWVUd28pPy50b1N0cmluZygpPy5zcGxpdCgnLScpO1xuICAgICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGRhdGVSYW5nZSk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGVSYW5nZS52YWx1ZSAmJiAhZGF0ZVJhbmdlLnZhbHVlVHdvKSB7XG4gICAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGRhdGVSYW5nZS5mcm9tRmllbGQsIGRhdGVSYW5nZS52YWx1ZSwgJ2d0ZScpO1xuICAgICAgfSBlbHNlIGlmICghZGF0ZVJhbmdlLnZhbHVlICYmIGRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhkYXRlUmFuZ2UuZnJvbUZpZWxkLCBkYXRlUmFuZ2UudmFsdWVUd28sICdndGUnKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIEZpbHRyaW5nIE51bWVyaWMgUmFuZ2UgY29udHJvbHMgb24gZ2xvYmFsIGZpbHRlciBcbiAgICBjb25zdCBudW1lclJhbmdlRmlsdGVyID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLk5VTUVSSUNfUkFOR0UpO1xuICAgIG51bWVyUmFuZ2VGaWx0ZXIuZm9yRWFjaCgobnVtZXJpY1JhbmdlKSA9PiB7XG4gICAgICBpZiAobnVtZXJpY1JhbmdlKSB7XG4gICAgICAgIHRoaXMuc2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKG51bWVyaWNSYW5nZSk7XG4gICAgICAgIHRoaXMuc2V0TnVtZXJpY1JhbmdlVmFsdWVUd28obnVtZXJpY1JhbmdlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIGlmKCEodGhpcy5nbG9iYWxGaWx0ZXJzLnNvbWUoKGZpbHRlcik9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkNBTEVOREFSX1JBTkdFKSkgJiZcbiAgICAvLyAgKHRoaXMuZ2xvYmFsRmlsdGVycy5zb21lKChmaWx0ZXIpPT4gZmlsdGVyLnZhbHVlKSlcbiAgICAvLyAgKXtcbiAgICAvLyAgIHRoaXMuYXBwbHlGaWx0ZXJzKGZhbHNlKTtcbiAgICAvLyB9XG4gIH1cblxuICBzZXROdW1lcmljUmFuZ2VWYWx1ZVR3byhnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIHNlbmRSZXF1ZXN0OmJvb2xlYW4gPSBmYWxzZSl7XG4gICAgaWYoZ2xvYmFsRmlsdGVyLnRvRmllbGQpe1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsIGdsb2JhbEZpbHRlci52YWx1ZVR3bywnbHRlJywgZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gICAgaWYoc2VuZFJlcXVlc3Qpe1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICBtYXRjaFNhbWVGaWVsZHMoZmllbGQ6IHN0cmluZyx2YWx1ZTphbnksIG9wZXJhdG9yOnN0cmluZywgbnVtZXJSYW5nZUZpbHRlcjogYW55ID0ge30pe1xuICAgICAgaWYoZmllbGQpe1xuICAgICAgICBpZihudW1lclJhbmdlRmlsdGVyICYmIG51bWVyUmFuZ2VGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnICYmIHZhbHVlKXtcbiAgICAgICAgICBjb25zdCBkaWdpdEluZm8gPSBudW1lclJhbmdlRmlsdGVyPy5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbztcbiAgICAgICAgICBpZihkaWdpdEluZm8pe1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKT8udG9GaXhlZChkaWdpdEluZm8pO1xuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKT8udG9GaXhlZCgyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmllbGQgPT09IGZpbHRlci5maWVsZCk7XG4gICAgICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVyc1tpbmRleF0gPSB7ZmllbGQ6IGZpZWxkLCBtYXRjaE1vZGU6J2FuZCcsIG9wZXJhdG9yOiBvcGVyYXRvciwgdmFsdWU6IHZhbHVlfTsgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzLnB1c2goe2ZpZWxkOiBmaWVsZCwgbWF0Y2hNb2RlOidhbmQnLCBvcGVyYXRvcjogb3BlcmF0b3IsIHZhbHVlOiB2YWx1ZX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICBzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBzZW5kUmVxdWVzdDpib29sZWFuID0gZmFsc2UpIHtcbiAgICAgaWYoZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5OVU1FUklDX1JBTkdFICYmIGdsb2JhbEZpbHRlci5mcm9tRmllbGQpeyBcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci5mcm9tRmllbGQsZ2xvYmFsRmlsdGVyLnZhbHVlLCdndGUnLCBnbG9iYWxGaWx0ZXIpO1xuICAgICAgaWYoc2VuZFJlcXVlc3Qpe1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgfVxuICAgICB9XG4gIFxuICB9XG4gIHJlbW92ZU51bGxMb29rdXAoZXZlbnQ6IGFueSwgZ2xvYmFsRmlsdGVyOiBhbnkpe1xuICAgIGlmKCFldmVudC50YXJnZXQudmFsdWUpe1xuICAgICAgdGhpcy5sb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICB9XG4gIGxvb2t1cENsZWFyVmFsdWUoZ2xvYmFsRmlsdGVyOiBhbnkpe1xuICAgIGlmIChnbG9iYWxGaWx0ZXIpIHtcblxuICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlID8gZ2xvYmFsRmlsdGVyLnZhbHVlPScnOicnXG4gICAgICBnbG9iYWxGaWx0ZXIudmFsdWVUd28/Z2xvYmFsRmlsdGVyLnZhbHVlVHdvPScnOicnXG4gICAgIC8vIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dD9nbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ9Jyc6JydcbiAgICAgIC8vIGNvbHVtbi5kaXNwbGF5RmllbGQ/cm93W2NvbHVtbi5kaXNwbGF5RmllbGRdID0gJyc6JydcbiAgICAgIC8vIHJvd1tjb2x1bW4uZmllbGQrJ19vYmonXT8udGV4dD8gcm93W2NvbHVtbi5maWVsZCsnX29iaiddLnRleHQ9Jyc6JydcbiAgICAgIC8vIHJvd1tjb2x1bW4uZmllbGRdID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgLy8gY29sdW1uLmZpbHRlclZhbHVlID0gJyc7XG4gICAgICAvL3RoaXMuc2V0RmlsdGVyRm9jdXNPdXQoY29sdW1uKTtcbiAgICB9XG4gICAvLyB0aGlzLmJyb3dzZXJDbG9zZUV2ZW50KHRydWUpO1xuICAgLy8gaWYgKGNvbHVtbi5vbkNoYW5nZSkge1xuICAgIC8vICBjb2x1bW4ub25DaGFuZ2Uocm93KTtcbiAgIC8vIH1cbiAgfVxuXG4gIHNldERhdGVSYW5nZVZhbHVlKGdsb2JhbEZpbHRlcjogYW55LCBjbGVhclZhbHVlOiBib29sZWFuID1mYWxzZSkge1xuICAgIGlmKGdsb2JhbEZpbHRlci52YWx1ZT8ubGVuZ3RoID4gMCl7XG4gICAgICBjb25zdCBmcm9tRGF0ZVZhbHVlID0gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIGdsb2JhbEZpbHRlci52YWx1ZVswXSxcbiAgICAgICAgZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICk7XG4gICAgICBjb25zdCB0b0RhdGVWYWx1ZSA9IHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWVbMV0sXG4gICAgICAgIGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApO1xuICAgICAgaWYgKGZyb21EYXRlVmFsdWUgJiYgdG9EYXRlVmFsdWUgJiYgZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCAmJiBnbG9iYWxGaWx0ZXIudG9GaWVsZCkge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLGZyb21EYXRlVmFsdWUsJ2d0ZScpO1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIudG9GaWVsZCx0b0RhdGVWYWx1ZSwnbHRlJyk7XG4gICAgICB9XG4gICAgfWVsc2UgaWYoY2xlYXJWYWx1ZSl7XG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLCBudWxsLCAnZ3RlJyk7XG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIudG9GaWVsZCwgbnVsbCwgJ2x0ZScpO1xuICAgIH1cbiAgfVxuICBvbkNsaWNrRXZlbnQoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICBpZihnbG9iYWxGaWx0ZXIgJiYgZ2xvYmFsRmlsdGVyLm9uQ2xpY2spe1xuICAgICAgZ2xvYmFsRmlsdGVyLm9uQ2xpY2soZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICBpZiAoZ2xvYmFsRmlsdGVyICYmIGdsb2JhbEZpbHRlci5vbkZvY3VzT3V0KSB7XG4gICAgICBnbG9iYWxGaWx0ZXIub25Gb2N1c091dChnbG9iYWxGaWx0ZXIpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLmdsb2JhbEZpbHRlcnMpO1xuICAgICAgfSxnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkxPT0tVUF9JTlBVVCA/ICAyNTAgOiAwKTtcbiAgfVxuICB1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIH0sZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5MT09LVVBfSU5QVVQgPyAgMjUwIDogMCk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlLmVtaXQoZ2xvYmFsRmlsdGVyKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyc0V2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQodGhpcy5nbG9iYWxGaWx0ZXJzKTtcbiAgICB9LGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTE9PS1VQX0lOUFVUID8gIDI1MCA6IDApO1xuICB9XG4gIC8qKlxuICAgKiBBcHBseSBzZWxlY3RlZCBmaWx0ZXJzXG4gICAqL1xuICBhcHBseUZpbHRlcnMoZmlsdGVyRXZlbnQ6IGJvb2xlYW49IHRydWUsIGdsb2JhbEZpbHRlcjphbnkgPSB7fSkge1xuICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgfSBcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmaWx0ZXJFdmVudDtcbiAgICBjb25zdCBnbG9iYWxGaWx0ZXJzID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoeCkgPT4geC5maWVsZCk7XG4gICAgY29uc3QgaW5kZXggPSBnbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpbHRlci5maWVsZCAmJiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgKVxuICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgZ2xvYmFsRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XG4gICAgaWYgKHRoaXMuc2hvd0RpYWxvZykge1xuICAgICAgdGhpcy5yZWYuY2xvc2UoZ2xvYmFsRmlsdGVycyk7XG4gICAgfSBlbHNlIFxuICAgIGlmKCF0aGlzLmNoZWNrRmlsdGVyVmFsaWRhdGlvbigpKXtcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJWYWxpZGF0aW9uKHRydWUpO1xuICAgICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KGdsb2JhbEZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBCeSBEZWZ1YWx0IENhbGVuZGFyIFJhbmdlIFxuICBzZXREZWZ1YWx0Q2FsZW5kYXJSYW5nZShjaGVjazogYm9vbGVhbiA9IHRydWUpe1xuICAgIGlmKHRoaXMuZ2xvYmFsRmlsdGVycyAmJiB0aGlzLmdsb2JhbEZpbHRlcnMubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKT0+e1xuICAgICAgICBpZihmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgJiYgZmlsdGVyLmRheVJhbmdlICYmICFmaWx0ZXIudmFsdWUgJiYgIWZpbHRlci52YWx1ZVR3byl7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dOZXh0KGZpbHRlciwgY2hlY2spO1xuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOZXh0KGZpbHRlcjogSUdsb2JhbEZpbHRlciwgY2hlY2s6IGJvb2xlYW4gPSB0cnVlKTogRGF0ZVtdIHtcbiAgICAvLyBsZXQgbmV4dFZhbHVlOiBzdHJpbmc7XG4gICAgbGV0IG5leHRWYWx1ZTogRGF0ZVtdXG4gICAgbGV0IGRheVJhbmdlOiBFRGF5UmFuZ2UgPSBmaWx0ZXIuZGF5UmFuZ2VcbiAgICAgID8gZmlsdGVyLmRheVJhbmdlXG4gICAgICA6IEVEYXlSYW5nZS5XRUVLO1xuICAgIHN3aXRjaCAoZGF5UmFuZ2UpIHtcbiAgICAgIGNhc2UgRURheVJhbmdlLkRBWTpcbiAgICAgICAvLyBuZXh0VmFsdWUgPSB0aGlzLnNldERheUZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLk1PTlRIOlxuICAgICAgLy8gIG5leHRWYWx1ZSA9IHRoaXMuc2V0TW9udGhGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5ZRUFSOlxuICAgICAgLy8gIG5leHRWYWx1ZSA9IHRoaXMuc2V0WWVhckZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIHdlZWtcbiAgICAgIG5leHRWYWx1ZSA9IHRoaXMuc2V0V2Vla0ZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBmaWx0ZXIudmFsdWU9IG5leHRWYWx1ZVxuICAgICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGZpbHRlcilcbiAgICAgICAgLy9maWx0ZXIudmFsdWVUd289bmV4dFZhbHVlWzFdXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XG4gICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gY2hlY2s7XG4gICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KHRoaXMuZ2xvYmFsRmlsdGVycyk7XG4gICAvLyBsZXQgdGVzdD1uZXh0VmFsdWVcbiAgICAvL2ZpbHRlci52YWx1ZT1uZXh0VmFsdWVcbiAgIFxuICAgIHJldHVybiBuZXh0VmFsdWU7XG4gIH1cblxuICBzaG93UHJldmlvdXMoZmlsdGVyOiBJR2xvYmFsRmlsdGVyKTogRGF0ZVtdIHtcbiAgICBsZXQgcHJldmlvdXNWYWx1ZTogRGF0ZVtdO1xuICAgIGxldCBkYXlSYW5nZTogRURheVJhbmdlID0gZmlsdGVyLmRheVJhbmdlXG4gICAgICA/IGZpbHRlci5kYXlSYW5nZVxuICAgICAgOiBFRGF5UmFuZ2UuV0VFSztcbiAgICBzd2l0Y2ggKGRheVJhbmdlKSB7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5EQVk6XG4gICAgICAgLy8gcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0RGF5RmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLk1PTlRIOlxuICAgICAvLyAgIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldE1vbnRoRmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLllFQVI6XG4gICAgICAvLyAgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0WWVhckZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB3ZWVrXG4gICAgICAgIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldFdlZWtGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIudmFsdWU9cHJldmlvdXNWYWx1ZVxuICAgIHRoaXMuc2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKVxuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IHRydWU7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLmdsb2JhbEZpbHRlcnMpO1xuICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcjogSUdsb2JhbEZpbHRlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIChmaWx0ZXIudmFsdWUgPVxuICAgICAgdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuc3RhcnREYXRlLFxuICAgICAgICBmaWx0ZXIuZm9ybWF0ID8gZmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKSArXG4gICAgICAnfCcgK1xuICAgICAgdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuZW5kRGF0ZSxcbiAgICAgICAgZmlsdGVyLmZvcm1hdCA/IGZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICkpO1xuICB9XG5cbiAgc2V0RGF0ZVZhbHVlKGZpbHRlcjogYW55KSB7XG4gICAgbGV0IHZhbHVlOiBEYXRlO1xuICAgIGlmIChmaWx0ZXIudmFsdWUpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoZmlsdGVyLnZhbHVlLnNwbGl0KCd8JylbMF0pO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLnNldE1vbnRoKHZhbHVlLmdldE1vbnRoKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGF5RmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuXG4gICAgaWYgKGlzTmV4dCkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGN1cnJlbnREYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSAtIDFcbiAgICAgICAgICApXG4gICAgICAgIDogY3VycmVudERhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSArIDFcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICBzZXRZZWFyRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIHZhciBmaXJzdERhdGVPZlllYXIgPSBuZXcgRGF0ZShjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcblxuICAgIGlmIChpc05leHQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSwgMCwgMSlcbiAgICAgICAgOiBmaXJzdERhdGVPZlllYXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpIC0gMSwgMCwgMSlcbiAgICAgICAgOiBmaXJzdERhdGVPZlllYXI7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSwgMTEsIDMxKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0TW9udGhGaWx0ZXIoZmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBpc05leHQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRoaXMuc2V0RGF0ZVZhbHVlKGZpbHRlcik7XG4gICAgdmFyIGZpcnN0RGF0ZU9mTW9udGggPSBuZXcgRGF0ZShcbiAgICAgIGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBjdXJyZW50RGF0ZS5nZXRNb250aCgpLFxuICAgICAgMVxuICAgICk7XG5cbiAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGZpcnN0RGF0ZU9mTW9udGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpIC0gMSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogZmlyc3REYXRlT2ZNb250aDtcbiAgICB9XG5cbiAgICB0aGlzLmVuZERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICBzZXRXZWVrRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogRGF0ZVtde1xuICAgIGxldCBmaWx0ZXJWYWx1ZTpEYXRlPSBBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSk/IGZpbHRlci52YWx1ZVswXTpmaWx0ZXIudmFsdWVcbiAgICBsZXQgY3VycmVudERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJWYWx1ZT8gZmlsdGVyVmFsdWU6bmV3IERhdGUoKSkvL3RoaXMuc2V0RGF0ZVZhbHVlKGZpbHRlcik7XG4gICAgbGV0IGZpcnN0RGF5ID0gbmV3IERhdGUoY3VycmVudERhdGUuc2V0RGF0ZShmaWx0ZXJWYWx1ZSA/IGN1cnJlbnREYXRlLmdldERhdGUoKSA6IGN1cnJlbnREYXRlLmdldERhdGUoKSAtIGN1cnJlbnREYXRlLmdldERheSgpICsgMSkpO1xuICAgIGxldCB3ZWVrU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgIGxldCB2YWx1ZTpEYXRlXG4gICAgICAgIGlmIChpc05leHQpIHtcbiAgICAgIHZhbHVlID0gZmlsdGVyVmFsdWVcbiAgICAgICBmaWx0ZXIudmFsdWVcbiAgICAgICAgPyAgdmFsdWUuc2V0RGF0ZShmaWx0ZXJWYWx1ZS5nZXREYXRlKCkrNykgICAvL25ldyBEYXRlKG5ldyBEYXRlKGZpbHRlclZhbHVlKS5nZXRUaW1lKCkgKyB3ZWVrU2Vjb25kcylcbiAgICAgICAgOiB2YWx1ZT0gbmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGZpbHRlci52YWx1ZVxuICAgICAgICA/bmV3IERhdGUoZmlsdGVyVmFsdWUuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG4gICAgICAgIDogbmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG4gICAgfVxuICAgIC8vdGhpcy5lbmREYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0VGltZSgpICsgNiAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIC8vIGxldCB2YWx1ZTpEYXRlPWZpbHRlclZhbHVlP1xuICAgIC8vICAgaXNOZXh0P25ldyBEYXRlKGZpbHRlclZhbHVlLmdldFRpbWUoKSArIHdlZWtTZWNvbmRzKTpuZXcgRGF0ZShmaWx0ZXJWYWx1ZS5nZXRUaW1lKCkgLSB3ZWVrU2Vjb25kcyk6XG4gICAgLy8gICBpc05leHQ/bmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpKTpuZXcgRGF0ZShmaXJzdERheS5nZXRUaW1lKCkgLSB3ZWVrU2Vjb25kcylcblxuICAgIGxldCB2YWx1ZVR3bzpEYXRlPW5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSArIDYgKiAyNCAqIDYwICogNjAgKiAxMDAwKTsgXG4gICAvLyBjb25zb2xlLmxvZygndGVzdCcsdmFsdWUsJ3Rlc3QyJyx2YWx1ZVR3bylcbiAgICByZXR1cm4gW3ZhbHVlLCB2YWx1ZVR3b11cbiAgIC8vcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICAgIC8qKlxuICAgKiBvcGVuIGRpYWxvZyBvbiBsb29rdXBDb250cm9sIGZpZWxkXG4gICAqL1xuICAgICBzZWxlY3RMb29rdXBGaWVsZChnbG9iYWxGaWx0ZXJzOiBJR2xvYmFsRmlsdGVyKSB7ICAgICAgIFxuICAgICAgdGhpcy5ncmlkU2VydmljZS5zZXRMb29rVXBGaWx0ZXIoZ2xvYmFsRmlsdGVycywgdGhpcy5kaWFsb2dTZXJ2aWNlLCB0cnVlKTtcbiAgICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBmaWx0ZXIgdmFsdWVzXG4gICAqL1xuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJzLm1hcCgoaXRlbTogYW55KSA9PiAoaXRlbS52YWx1ZSA9IG51bGwpKTtcbiAgICBjb25zdCBjbGVhckdyaWRGaWx0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xlYXJHcmlkRmlsdGVyVmFsdWVzQnV0dG9uJylcbiAgICBpZihjbGVhckdyaWRGaWx0ZXIpe1xuICAgICAgY2xlYXJHcmlkRmlsdGVyLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgIC8qKlxuICAgKiBDbGVhciB2YWx1ZXMgb2YgRGF0ZSBSYW5nZSBGaWx0ZXJcbiAgICovXG4gICAgY2xlYXJEYXRlUmFuZ2VWYWx1ZShmaWx0ZXI6IGFueSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGZpbHRlciwgdHJ1ZSlcbiAgICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGRpYWxvZyB3aXRob3V0IGFwcGx5aW5nIGZpbHRlcnNcbiAgICovXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgIHRoaXMucmVmLmNsb3NlKCk7XG4gIH1cbiAgcmFuZ2VEYXRlY2xvc2UoZ2xvYmFsRmlsdGVyOiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXIuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuZGF0ZXBpY2tlckNsaWNrID0gdHJ1ZTtcbiAgICBjb25zdCBpZDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0KTtcbiAgICBpZC5mb2N1cygpO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5kYXRlcGlja2VyQ2xpY2sgPSB0cnVlO1xuXG4gIH1cblxuICBmaWx0ZXJJbnB1dCgpIHtcbiAgICB0aGlzLnNob3dJbnB1dCA9ICF0aGlzLnNob3dJbnB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VkIHRoZSBjYWxlbmRhciBpbnB1dFxuICAgKi9cbiAgc2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXI6IGFueSwgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlKXtcbiAgICBpZihnbG9iYWxGaWx0ZXIudmFsdWU/Lmxlbmd0aCA+IDEgJiYgZ2xvYmFsRmlsdGVyLnZhbHVlWzFdICE9PSBudWxsKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyKTtcbiAgICAgIGlmKGZvY3VzZWQgPT10cnVlKXtcbiAgICAgIHRoaXMucmFuZ2VEYXRlY2xvc2UoZ2xvYmFsRmlsdGVyKTsgXG4gICAgICB9XG4gICAgfVxuICAgIGlmKGZvY3VzZWQpe1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZ2xvYmFsRmlsdGVyLmZpZWxkKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cbiAgdGFiRm9jdXNFdmVudChnbG9iYWxGaWx0ZXI6IGFueSkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy4nK2dsb2JhbEZpbHRlci5maWVsZFxuICAgICk7XG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgY2xhc3NOYW1lLmNsaWNrKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtY29tcG9uZW50LXdyYXBwZXItZGl2XCI+XG4gIDxkaXZcbiAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmhpZGRlbiA/ICdnbG9iYWxGaWx0ZXJIaWRkZW4nIDogZ2xvYmFsRmlsdGVyLmNvbHVtbiA/ICdjb2wtJyArIGdsb2JhbEZpbHRlci5jb2x1bW4gOiAnY29sLTMnXCJcbiAgICAqbmdGb3I9XCJsZXQgZ2xvYmFsRmlsdGVyIG9mIGdsb2JhbEZpbHRlcnNcIlxuICA+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwiZ2xvYmFsRmlsdGVyLnR5cGVcIj5cbiAgICAgIDwhLS0gQ2FsZW5kYXIgY29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkNBTEVOREFSXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHkgJyArIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dDogJ2ZsZXgtZ3Jvdy0xIGdyb3ctMSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdC1EYXRlJ1wiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cInNlbGVjdERhdGUoZ2xvYmFsRmlsdGVyLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJjYWxlbmRhckZvcm1hdFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgW3Nob3dCdXR0b25CYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImNhbGVuZGFyRm9jdXNFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBDYWxlbmRhciBSYW5nZSAtLT5cbiAgICAgIDwhLS0gPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkNBTEVOREFSX1JBTkdFXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCIgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1ByZXZpb3VzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBsYWJlbD1cIlByZXZpb3VzIHt7XG4gICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICAgIH19IDw8XCIgXG4gICAgICAgICAgICA+IC0tPlxuICAgICAgICAgICAgPCEtLSBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGdsb2JhbEZpbHRlci5jb2xvciA/IGdsb2JhbEZpbHRlci5jb2xvciA6ICcnfVwiIC0tPlxuICAgICAgICAgIDwhLS0gPC9idXR0b24+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucHJlZml4PT09dHJ1ZSB8fCBnbG9iYWxGaWx0ZXIucHJlZml4PT09dW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAge3sgIGdsb2JhbEZpbHRlci5sYWJlbFRleHQgPyBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0IDogJycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSB7e1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZVxuICAgICAgICAgICAgICAgICAgfCBkYXRlXG4gICAgICAgICAgICAgICAgICAgIDogKGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB0b1xuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGVuZERhdGVcbiAgICAgICAgICAgICAgICAgIHwgZGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IChnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5JylcbiAgICAgICAgICAgICAgfX0gLS0+XG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucHJlZml4PT09ZmFsc2VcIj5cbiAgICAgICAgICAgICAgICB7eyBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0ID8gZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA6ICcnfX1cbiAgICAgICAgICAgICAgPC9zcGFuPjwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dOZXh0KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBsYWJlbD1cIk5leHQge3tcbiAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgPyBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgOiAnV2VlaydcbiAgICAgICAgICAgICAgfX0gPj5cIlxuICAgICAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8IS0tIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+IC0tPlxuXG4gICAgICA8IS0tIENoZWNrYm94IENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DSEVDS0JPWFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknOiAnZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInXCJcbiAgICAgICAgICAgICAgW2JpbmFyeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBTcGFjZXIgQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuU1BBQ0VSXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuY29sdW1uXG4gICAgICAgICAgICAgICAgPyAnY29sLScgKyBnbG9iYWxGaWx0ZXIuY29sdW1uXG4gICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBEcm9wZG93biBDb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuRFJPUERPV05cIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3N0eWxlQ2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgKGtleXVwLlRhYik9XCJ0YWJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGEgfHwgW11cIlxuICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiZ2xvYmFsRmlsdGVyLm9wdGlvbkxhYmVsXCJcbiAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cImdsb2JhbEZpbHRlci5vcHRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgIFtmaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyLmFsbG93U2VhcmNoXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIElucHV0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5JTlBVVFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gTnVtZXJpY0lucHV0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTlVNRVJJQ0lOUFVUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyIHBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgICAgXG4gICAgICA8IS0tIERhdGUgUmFuZ2UgQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkRBVEVfUkFOR0VcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmRheVJhbmdlXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1yYW5nZS1idG4gIGNhbGVuZGFyLXByZXZpb3VzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcmV2aW91cyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCI8PFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFwiUHJldmlvdXMge3tcbiAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICB9fSA8PFwiIC0tPlxuICAgICAgICAgICAgPCEtLSBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGdsb2JhbEZpbHRlci5jb2xvciA/IGdsb2JhbEZpbHRlci5jb2xvciA6ICcnfVwiIC0tPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgXG4gICAgICAgICAgICAjcmFuZ2VDYWxlbmRhclxuICAgICAgICAgICAgW3Nob3dCdXR0b25CYXJdPVwidHJ1ZVwiXG5cbiAgICAgICAgICAgIFtpbnB1dElkXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5ICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgOiAnZmxleC1ncm93LTEgZ3Jvdy0xICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIiBcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiIFxuICAgICAgICAgICAgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIlxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgdHJ1ZSlcIlxuICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY2FsZW5kYXJGb3JtYXRcIlxuICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgKG9uQ2xpY2tPdXRzaWRlKT1cInNldERhdGVSYW5nZUZpbHRlclZhbHVlKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkNsZWFyQ2xpY2spPVwiY2xlYXJEYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycyh0cnVlLCBnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZGF5UmFuZ2VcIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCIgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1yYW5nZS1idG4gY2FsZW5kYXItbmV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd05leHQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBsYWJlbD1cIj4+XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSBOZXh0IHt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgPyBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgOiAnV2VlaydcbiAgICAgICAgICB9fSA+PlwiIC0tPlxuICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIHRvZGF5QnV0dG9uU3R5bGVDbGFzcz1cImhpZGRlblwiXG4gICAgICAgICAgICBjbGVhckJ1dHRvblN0eWxlQ2xhc3M9XCJtbC1hdXRvXCIgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE51bWVyaWMgUmFuZ2UgY29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5OVU1FUklDX1JBTkdFXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBtci0yXCI+XG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnbG9iYWxGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvIDogJzInIDogJzAnXCJcbiAgICAgICAgICAgICAgKG9uQmx1cik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyLHRydWUpXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnZmxleC1ncm93LTEgIGdyb3ctMSBpbnB1dC1udW1iZXInXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG8tbnVtZXJpYyBtci0yXCI+VG88L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVUd29cIlxuICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnbG9iYWxGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvIDogJzInIDogJzAnXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnZmxleC1ncm93LTEgbXItMiBncm93LTEgaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZVR3byhnbG9iYWxGaWx0ZXIsdHJ1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE11bHRpU2VsZWN0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTVVMVElTRUxFQ1RcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGFcIlxuICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICA+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cblxuICAgICAgICAgPCEtLSBTZWxlY3QgQnV0dG9uIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuU0VMRUNUQlVUVE9OXCJcblxuICAgICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwLXNlbGVjdEJ1dHRvblxuICAgICAgICAgIFtjbGFzc109XCInIG1vZGVybml6ZWRSYWRpb0xvb2sgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBuZy1pbnZhbGlkIG5nLWRpcnR5ICcgOiAnJylcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJnbG9iYWxGaWx0ZXIuZGF0YVwiXG4gICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlTdHlsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICBcbiAgICAgICAgPlxuICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU+XG4gICAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxuICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG5cblxuICAgICAgPCEtLSBMb29rdXAgQ29udHJvbCBGaWVsZCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5MT09LVVBfSU5QVVRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1pY29uLXdyYXBwZXIgbG9va3VwLWZpbHRlci13cmFwcGVyIGdsb2JhbEZpbHRlcnNcIj4gXG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXI/LnZhbHVlVHdvPy50ZXh0ID8gZ2xvYmFsRmlsdGVyLnZhbHVlVHdvLnRleHQgOiBnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdExvb2t1cEZpZWxkKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5UYWIpPVwic2VsZWN0TG9va3VwRmllbGQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJyZW1vdmVOdWxsTG9va3VwKCRldmVudCwgZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCBsb29rdXAtaW5wdXQtaWNvbiBnbG9iYWwtZmlsdGVyXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXJlY3Qtd3JhcHBlci1jbG9zZS1pY29uLWxvb2t1cFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSA8c3Bhbj5cbiAgPGkgIGljb249XCJwaSBwaS10aW1lc1wiPjwvaT5cbjwvc3Bhbj4gLS0+XG5cbjwhLS0gQXBwbHkgYnV0dG9uIC0tPlxuXG48YnV0dG9uXG5wQnV0dG9uXG4qbmdJZj1cIiFncmlkVXBkYXRlXCJcbnR5cGU9XCJidXR0b25cIlxuaWNvbj1cInBpIHBpLXNlYXJjaFwiXG5pZD1cInNlYXJjaEdsb2JhbEZpbHRlckJ0blwiXG4oY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIlxuY2xhc3M9XCJnbG9iYWwtc2VhcmNoIGFsaWduLWdsb2JhbEZpbHRlci1idG4gZ2xvYmFsLWJ0biBoaWRlLWZpbHRlci1idXR0b25cIlxuPjwvYnV0dG9uPlxuXG48IS0tIENsb3NlIGJ1dHRvbiAtLT5cbjxidXR0b25cbnBCdXR0b25cbipuZ0lmPVwiIWdyaWRVcGRhdGVcIlxuaWQ9XCJjbGVhckdsb2JhbEZpbHRlckJ0blwiXG50eXBlPVwiYnV0dG9uXCJcbmljb249XCJwaSBwaS1yZXBsYXlcIlxuKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCJcbmNsYXNzPVwiaGlkZS1maWx0ZXItYnV0dG9uXCJcbj48L2J1dHRvbj5cbiJdfQ==
571
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dsb2JhbC1maWx0ZXJzL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9nbG9iYWwtZmlsdGVycy9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixlQUFlLEVBRWYsU0FBUyxFQUNULGdCQUFnQixHQUVqQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTyx1QkFBdUI7SUFRbEMsSUFBYSxjQUFjLENBQUUsR0FBTyxJQUFJLElBQUcsR0FBRyxLQUFLLElBQUksRUFBRTtRQUFFLFFBQVEsQ0FBQTtLQUFFLENBQUEsQ0FBQztJQWN0RSxZQUNTLFFBQWtCLEVBQ04sR0FBcUIsRUFDckIsTUFBMkIsRUFDdEMsV0FBd0IsRUFDekIsYUFBNEIsRUFDM0IsWUFBMEIsRUFDMUIsRUFBYztRQU5mLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FB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QUFDLENBQUM7WUFDckMsSUFBRyxPQUFPLElBQUcsSUFBSSxFQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7UUFDRCxJQUFHLE9BQU8sRUFBQztZQUNULFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUNELGFBQWEsQ0FBQyxZQUFpQjtRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ25ELEdBQUcsR0FBQyxZQUFZLENBQUMsS0FBSyxDQUN2QixDQUFDO1FBQ0YsSUFBSSxTQUFTLEVBQUU7WUFDYixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO2lJQTFsQlUsdUJBQXVCO3FIQUF2Qix1QkFBdUIsNGNDcEJwQywyMXVCQThnQkE7OzJGRDFmYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsbUJBQW1COzswQkE0QjFCLFFBQVE7OzBCQUNSLFFBQVE7c0pBeEJpQixVQUFVO3NCQUFyQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ2pCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDTSxjQUFjO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ1JlZiwgRHluYW1pY0RpYWxvZ0NvbmZpZywgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge1xuICBJR2xvYmFsRmlsdGVyLFxuICBHcmlkRmlsdGVyQ29udHJvbFR5cGUsXG4gIEVHcmlkQ29sdW1uVHlwZSxcbiAgYWRkR2xvYmFsRmlsdGVyLFxuICBFRGF5UmFuZ2UsXG4gIEVGaWx0ZXJWYWxpZGF0b3IsXG4gIElHcmlkVXBkYXRlLFxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtZ2xvYmFsLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZUdsb2JhbEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3JhbmdlQ2FsZW5kYXInKSBkYXRlUGlja2VyOiBhbnk7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlcnM6IElHbG9iYWxGaWx0ZXJbXSA9IFtdO1xuICBASW5wdXQoKSBzZWFyY2hHbG9iYWxGaWx0ZXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2xlYXJHbG9iYWxGaWx0ZXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZ3JpZFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZmlsdGVyc0FwcGxpZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBzZXQgYWN0aXZlVGVzdE1vZGUgKHZhbDphbnkpIHsgaWYodmFsID09PSB0cnVlKSB7IGRlYnVnZ2VyIH19XG5cbiAgcHVibGljIGZpdGVyVHlwZXMgPSBHcmlkRmlsdGVyQ29udHJvbFR5cGU7XG4gIHB1YmxpYyBjb2x1bW5UeXBlID0gRUdyaWRDb2x1bW5UeXBlO1xuICBwdWJsaWMgc2hvd0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRlUmFuZ2VWYWx1ZSA6IGFueTtcbiAgcHVibGljIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgcHVibGljIGVuZERhdGU6IERhdGU7XG5cbiAgc2hvd0lucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlcjogYW55ID0gJyc7XG4gIGhpZGVDbGVhckZpbHRlckJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIGNhbGVuZGFyRm9ybWF0OnN0cmluZyA9ICdtbS9kZC95eSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRhdGVwaXBlOiBEYXRlUGlwZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBBc3NpZ25tZW50IG9mIHNlbGVjdGVkIGNvbHVtbnMgb24gcGFnZSBsb2FkXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5kYXRhKXtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRoaXMuY29uZmlnLmRhdGEub3BlbkRpYWxvZztcbiAgICAgIGlmKHRoaXMuY29uZmlnLmRhdGEuZ2xvYmFsRmlsdGVycyl7XG4gICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycyA9IHRoaXMuY29uZmlnPy5kYXRhLmdsb2JhbEZpbHRlcnMgYXMgSUdsb2JhbEZpbHRlcltdO1xuICAgICAgfVxuICAgICBcbiAgICAgIC8vIHNldCBCeSBEZWZ1YWx0IENhbGVuZGFyIFJhbmdlXG4gICAgICB0aGlzLnNldERlZnVhbHRDYWxlbmRhclJhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShkYXRlUmFuZ2Upe1xuICAgIGlmKGRhdGVSYW5nZT8udmFsdWU/Lmxlbmd0aCA+IDEpe1xuICAgICAgZGF0ZVJhbmdlLnZhbHVlWzBdID0gbmV3IERhdGUoZGF0ZVJhbmdlLnZhbHVlWzBdKTtcbiAgICAgIGRhdGVSYW5nZS52YWx1ZVsxXSA9IG5ldyBEYXRlKGRhdGVSYW5nZS52YWx1ZVsxXSk7XG4gICAgICB0aGlzLnNlbGVjdERhdGUoZGF0ZVJhbmdlLCBmYWxzZSk7XG4gICAgfWVsc2Uge1xuICAgICAgaWYodGhpcy5kYXRlUmFuZ2VWYWx1ZSl7XG4gICAgICAgIGxldCBkYXRlUmFuZ2VWYWx1ZSA9IHRoaXMuZGF0ZVJhbmdlVmFsdWU/LmluY2x1ZGVzKCctJykgPyB0aGlzLmRhdGVSYW5nZVZhbHVlPy5zcGxpdCgnLScpIDogJyc7XG4gICAgICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5sZW5ndGggPT0gMiAmJiAoZGF0ZVJhbmdlVmFsdWVbMF0udHJpbSgpID09IGRhdGVSYW5nZVZhbHVlWzFdLnRyaW0oKSkpe1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZSA9IFtdXG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlWzBdID0gbmV3IERhdGUoZGF0ZVJhbmdlVmFsdWVbMF0pO1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVsxXSA9IG5ldyBEYXRlKGRhdGVSYW5nZVZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdERhdGUoZGF0ZVJhbmdlLCBmYWxzZSk7ICAgICBcbiAgICAgICAgfSAgICBcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIFxuICBjb250YWluc1doaXRlc3BhY2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5pbmNsdWRlcygnICcpO1xuICB9XG5cbiAgYWRkU3BhY2VzYXRmaXJzdCh4KSB7XG4gICAgcmV0dXJuIFwiIFwiICsgeDtcbiAgfVxuXG4gIGFkZFNwYWNlc2F0bGFzdCh4KSB7XG4gICAgcmV0dXJuIHggKyBcIiBcIlxuICB9XG5cbiAgLy8gY2hhbmdlIGNhbGVuZGFyIGZvcm1hdCBvbiBydW4gdGltZSBpZiB1c2VyIHR5cGUgZGF0ZSBvbiB0aGUgY2FsZW5kYXIgZmllbGQuXG4gIGNhbGVuZGFyRm9jdXNFdmVudChnbG9iYWxGaWx0ZXI6SUdsb2JhbEZpbHRlciwgZXZlbnQ/OiBhbnkpe1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0KVswXT8uYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoYTogYW55KSA9PiB7XG4gICAgICBsZXQgeWVhciA9IGE/LnRhcmdldD8udmFsdWU/LnRvU3RyaW5nKCk/LnNwbGl0KCcvJylbMl07XG4gICAgICB5ZWFyID0geWVhcj8udG9TdHJpbmcoKS5zcGxpdChcIiBcIilbMF07XG4gICAgICB0aGlzLmRhdGVSYW5nZVZhbHVlID0gYT8udGFyZ2V0Py52YWx1ZVxuICAgICAgbGV0IGRhdGVSYW5nZVZhbHVlID0gYT8udGFyZ2V0Py52YWx1ZT8uaW5jbHVkZXMoJy0nKSA/IGE/LnRhcmdldD8udmFsdWU/LnNwbGl0KCctJykgOiAnJztcbiAgICAgIC8vIGFkZGluZyBzcGFjZSBiZXR3ZWVuIGZyb20gYW5kIHRvIGRhdGUgaW4gZGF0ZSByYW5nZSBmaWx0ZXJcbiAgICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5sZW5ndGggPT0gMiAmJiBkYXRlUmFuZ2VWYWx1ZVsxXS5zcGxpdCgnLycpLmxlbmd0aCA9PSAzICYmICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMF0pIHx8ICF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVsxXSkpKSB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMF0pKSB7XG4gICAgICAgICAgbGV0IGZyb21EYXRlID0gdGhpcy5hZGRTcGFjZXNhdGxhc3QoZGF0ZVJhbmdlVmFsdWVbMF0pO1xuICAgICAgICAgIGRhdGVSYW5nZVZhbHVlWzBdID0gZnJvbURhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVsxXSkpIHtcbiAgICAgICAgICBsZXQgdG9EYXRlID0gdGhpcy5hZGRTcGFjZXNhdGZpcnN0KGRhdGVSYW5nZVZhbHVlWzFdKTtcbiAgICAgICAgICBkYXRlUmFuZ2VWYWx1ZVsxXSA9IHRvRGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWx1ZSA9IGRhdGVSYW5nZVZhbHVlWzBdICsgJy0nICsgZGF0ZVJhbmdlVmFsdWVbMV1cbiAgICAgICAgYS50YXJnZXQudmFsdWUgPSBhbHVlO1xuICAgICAgfVxuICAgICAgaWYoeWVhcj8ubGVuZ3RoID09PSA0KXtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm1hdCA9ICdtbS9kZC95eSc7XG4gICAgICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuQ0FMRU5EQVIpe1xuICAgICAgICAgIGdsb2JhbEZpbHRlci52YWx1ZSA9IG5ldyBEYXRlKGEudGFyZ2V0LnZhbHVlKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKHllYXI/Lmxlbmd0aCl7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJGb3JtYXQgPSAnbW0vZGQveSc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHllYXJWYWx1ZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlPy50b1N0cmluZygpPy5zcGxpdCgnLycpWzRdO1xuICAgIGlmKCghZ2xvYmFsRmlsdGVyLnZhbHVlIHx8IHllYXJWYWx1ZSA9PSB1bmRlZmluZWQgfHwgeWVhclZhbHVlPy50b1N0cmluZygpPy5sZW5ndGggPT09IDEpICYmIGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGdsb2JhbEZpbHRlciwgdHJ1ZSk7XG4gICAgfVxuICB9XG4gIGNoZWNrSWZGaWx0ZXJSZXF1aXJlZChmaWx0ZXI6SUdsb2JhbEZpbHRlcil7XG4gICAgaWYoZmlsdGVyLnZhbGlkYXRpb25zPy5maW5kKHZhbGlkYXRpb249PnZhbGlkYXRpb24udHlwZT09PUVGaWx0ZXJWYWxpZGF0b3IuUkVRVUlSRUQpKXtcbiAgICAgIGZpbHRlci5yZXF1aXJlZEZpZWxkPXRydWU7XG4gICAgfSAgICBcbiAgfVxuICBjaGVja0ZpbHRlclZhbGlkYXRpb24ocmVtb3ZlRXJyb3I6Ym9vbGVhbiA9IGZhbHNlKTpib29sZWFue1xuICAgIGxldCB2YWxpZDpib29sZWFuID0gZmFsc2U7XG4gICAgaWYodGhpcy5nbG9iYWxGaWx0ZXJzICYmIHRoaXMuZ2xvYmFsRmlsdGVycy5sZW5ndGggPiAwKXtcbiAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpPT57XG4gICAgICAgIGlmKGZpbHRlci52YWxpZGF0aW9ucyAmJiBmaWx0ZXIudmFsaWRhdGlvbnMubGVuZ3RoID4gMCAmJiBmaWx0ZXIudmFsaWRhdGlvbnNbMF0udHlwZSA9PT0gRUZpbHRlclZhbGlkYXRvci5SRVFVSVJFRCAmJiAhZmlsdGVyLnZhbHVlICYmICFyZW1vdmVFcnJvcil7XG4gICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGZpbHRlci5lcnJvck1lc3NhZ2UgPSBmaWx0ZXIuZGlzcGxheVRleHQrXCIgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXIuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJzPy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tJZkZpbHRlclJlcXVpcmVkKGZpbHRlcik7XG4gICAgICBpZiAoZmlsdGVyLnZhbHVlICYmIChmaWx0ZXIuaGlkZGVuID09PSBmYWxzZSB8fCBmaWx0ZXIuaGlkZGVuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzRXZlbnQoZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIHNldCBCeSBEZWZ1YWx0IENhbGVuZGFyIFJhbmdlXG4gICAgdGhpcy5zZXREZWZ1YWx0Q2FsZW5kYXJSYW5nZShmYWxzZSk7XG4gICAgY29uc3QgZ2lyZENsZWFyRmlsdGVyQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAnY2xlYXJHcmlkRmlsdGVyVmFsdWVzQnV0dG9uJ1xuICAgICk7XG4gICAgaWYgKGdpcmRDbGVhckZpbHRlckJ0bikge1xuICAgICAgaWYgKGdpcmRDbGVhckZpbHRlckJ0bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGUtY2xlYXItZmlsdGVyLWJ1dHRvbicpKSB7XG4gICAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBzcGxpdGluZyBkYXRlIHJhbmdlIHZhbHVlIGFuZCBhc3NpZ24gdG8gdmFsdWUgYW5kIHZhbHVlVHdvIGluIERhdGVfUmFuZ2UgQ29udHJvbFxuICAgIGNvbnN0IGRhdGVSYW5nZUZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKTtcbiAgICBkYXRlUmFuZ2VGaWx0ZXI/LmZvckVhY2goKGRhdGVSYW5nZSkgPT4ge1xuICAgICAgaWYgKGRhdGVSYW5nZS52YWx1ZSAmJiBkYXRlUmFuZ2UudmFsdWVUd28pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0ZVJhbmdlLnZhbHVlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSBkYXRlUmFuZ2UudmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0ZVJhbmdlLnZhbHVlVHdvKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWVUd28gPSBkYXRlUmFuZ2UudmFsdWVUd28udG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZVJhbmdlLnZhbHVlID0gKGRhdGVSYW5nZS52YWx1ZSArIFwiLVwiICsgZGF0ZVJhbmdlLnZhbHVlVHdvKT8udG9TdHJpbmcoKT8uc3BsaXQoJy0nKTtcbiAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShkYXRlUmFuZ2UpO1xuICAgICAgfSBlbHNlIGlmIChkYXRlUmFuZ2UudmFsdWUgJiYgIWRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhkYXRlUmFuZ2UuZnJvbUZpZWxkLCBkYXRlUmFuZ2UudmFsdWUsICdndGUnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWRhdGVSYW5nZS52YWx1ZSAmJiBkYXRlUmFuZ2UudmFsdWVUd28pIHtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZGF0ZVJhbmdlLmZyb21GaWVsZCwgZGF0ZVJhbmdlLnZhbHVlVHdvLCAnZ3RlJyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBGaWx0cmluZyBOdW1lcmljIFJhbmdlIGNvbnRyb2xzIG9uIGdsb2JhbCBmaWx0ZXIgXG4gICAgY29uc3QgbnVtZXJSYW5nZUZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5OVU1FUklDX1JBTkdFKTtcbiAgICBudW1lclJhbmdlRmlsdGVyLmZvckVhY2goKG51bWVyaWNSYW5nZSkgPT4ge1xuICAgICAgaWYgKG51bWVyaWNSYW5nZSkge1xuICAgICAgICB0aGlzLnNldE51bWVyaWNSYW5nZVZhbHVlRnJvbShudW1lcmljUmFuZ2UpO1xuICAgICAgICB0aGlzLnNldE51bWVyaWNSYW5nZVZhbHVlVHdvKG51bWVyaWNSYW5nZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBpZighKHRoaXMuZ2xvYmFsRmlsdGVycy5zb21lKChmaWx0ZXIpPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5DQUxFTkRBUl9SQU5HRSkpICYmXG4gICAgLy8gICh0aGlzLmdsb2JhbEZpbHRlcnMuc29tZSgoZmlsdGVyKT0+IGZpbHRlci52YWx1ZSkpXG4gICAgLy8gICl7XG4gICAgLy8gICB0aGlzLmFwcGx5RmlsdGVycyhmYWxzZSk7XG4gICAgLy8gfVxuICB9XG5cbiAgc2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBzZW5kUmVxdWVzdDpib29sZWFuID0gZmFsc2Upe1xuICAgIGlmKGdsb2JhbEZpbHRlci50b0ZpZWxkKXtcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci50b0ZpZWxkLCBnbG9iYWxGaWx0ZXIudmFsdWVUd28sJ2x0ZScsIGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICAgIGlmKHNlbmRSZXF1ZXN0KXtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hTYW1lRmllbGRzKGZpZWxkOiBzdHJpbmcsdmFsdWU6YW55LCBvcGVyYXRvcjpzdHJpbmcsIG51bWVyUmFuZ2VGaWx0ZXI6IGFueSA9IHt9KXtcbiAgICAgIGlmKGZpZWxkKXtcbiAgICAgICAgaWYobnVtZXJSYW5nZUZpbHRlciAmJiBudW1lclJhbmdlRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyAmJiB2YWx1ZSl7XG4gICAgICAgICAgY29uc3QgZGlnaXRJbmZvID0gbnVtZXJSYW5nZUZpbHRlcj8uZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm87XG4gICAgICAgICAgaWYoZGlnaXRJbmZvKXtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk/LnRvRml4ZWQoZGlnaXRJbmZvKTtcbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk/LnRvRml4ZWQoMik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpZWxkID09PSBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgICAgICB0aGlzLmdsb2JhbEZpbHRlcnNbaW5kZXhdID0ge2ZpZWxkOiBmaWVsZCwgbWF0Y2hNb2RlOidhbmQnLCBvcGVyYXRvcjogb3BlcmF0b3IsIHZhbHVlOiB2YWx1ZX07ICAgICAgIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5wdXNoKHtmaWVsZDogZmllbGQsIG1hdGNoTW9kZTonYW5kJywgb3BlcmF0b3I6IG9wZXJhdG9yLCB2YWx1ZTogdmFsdWV9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgc2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlciwgc2VuZFJlcXVlc3Q6Ym9vbGVhbiA9IGZhbHNlKSB7XG4gICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTlVNRVJJQ19SQU5HRSAmJiBnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkKXsgXG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLGdsb2JhbEZpbHRlci52YWx1ZSwnZ3RlJywgZ2xvYmFsRmlsdGVyKTtcbiAgICAgIGlmKHNlbmRSZXF1ZXN0KXtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH1cbiAgICAgfVxuICBcbiAgfVxuICByZW1vdmVOdWxsTG9va3VwKGV2ZW50OiBhbnksIGdsb2JhbEZpbHRlcjogYW55KXtcbiAgICBpZighZXZlbnQudGFyZ2V0LnZhbHVlKXtcbiAgICAgIHRoaXMubG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXIpO1xuICAgIH1cbiAgfVxuICBsb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcjogYW55KXtcbiAgICBpZiAoZ2xvYmFsRmlsdGVyKSB7XG5cbiAgICAgIGdsb2JhbEZpbHRlci52YWx1ZSA/IGdsb2JhbEZpbHRlci52YWx1ZT0nJzonJ1xuICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlVHdvP2dsb2JhbEZpbHRlci52YWx1ZVR3bz0nJzonJ1xuICAgICAvLyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ/Z2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0PScnOicnXG4gICAgICAvLyBjb2x1bW4uZGlzcGxheUZpZWxkP3Jvd1tjb2x1bW4uZGlzcGxheUZpZWxkXSA9ICcnOicnXG4gICAgICAvLyByb3dbY29sdW1uLmZpZWxkKydfb2JqJ10/LnRleHQ/IHJvd1tjb2x1bW4uZmllbGQrJ19vYmonXS50ZXh0PScnOicnXG4gICAgICAvLyByb3dbY29sdW1uLmZpZWxkXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgIC8vIGNvbHVtbi5maWx0ZXJWYWx1ZSA9ICcnO1xuICAgICAgLy90aGlzLnNldEZpbHRlckZvY3VzT3V0KGNvbHVtbik7XG4gICAgfVxuICAgLy8gdGhpcy5icm93c2VyQ2xvc2VFdmVudCh0cnVlKTtcbiAgIC8vIGlmIChjb2x1bW4ub25DaGFuZ2UpIHtcbiAgICAvLyAgY29sdW1uLm9uQ2hhbmdlKHJvdyk7XG4gICAvLyB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXI6IGFueSwgY2xlYXJWYWx1ZTogYm9vbGVhbiA9ZmFsc2UpIHtcbiAgICBpZihnbG9iYWxGaWx0ZXIudmFsdWU/Lmxlbmd0aCA+IDApe1xuICAgICAgY29uc3QgZnJvbURhdGVWYWx1ZSA9IHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWVbMF0sXG4gICAgICAgIGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApO1xuICAgICAgY29uc3QgdG9EYXRlVmFsdWUgPSB0aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShcbiAgICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlWzFdLFxuICAgICAgICBnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKTtcbiAgICAgIGlmIChmcm9tRGF0ZVZhbHVlICYmIHRvRGF0ZVZhbHVlICYmIGdsb2JhbEZpbHRlci5mcm9tRmllbGQgJiYgZ2xvYmFsRmlsdGVyLnRvRmllbGQpIHtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCxmcm9tRGF0ZVZhbHVlLCdndGUnKTtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsdG9EYXRlVmFsdWUsJ2x0ZScpO1xuICAgICAgfVxuICAgIH1lbHNlIGlmKGNsZWFyVmFsdWUpe1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCwgbnVsbCwgJ2d0ZScpO1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsIG51bGwsICdsdGUnKTtcbiAgICB9XG4gIH1cbiAgb25DbGlja0V2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgaWYoZ2xvYmFsRmlsdGVyICYmIGdsb2JhbEZpbHRlci5vbkNsaWNrKXtcbiAgICAgIGdsb2JhbEZpbHRlci5vbkNsaWNrKGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgb25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgaWYgKGdsb2JhbEZpbHRlciAmJiBnbG9iYWxGaWx0ZXIub25Gb2N1c091dCkge1xuICAgICAgZ2xvYmFsRmlsdGVyLm9uRm9jdXNPdXQoZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQodGhpcy5nbG9iYWxGaWx0ZXJzKTtcbiAgICAgIH0sZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5MT09LVVBfSU5QVVQgPyAgMjUwIDogMCk7XG4gIH1cbiAgdXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmFsc2U7XG4gICAgICB9LGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTE9PS1VQX0lOUFVUID8gIDI1MCA6IDApO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZS5lbWl0KGdsb2JhbEZpbHRlcik7XG4gIH1cblxuICBhcHBseUZpbHRlcnNFdmVudChnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIpe1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KHRoaXMuZ2xvYmFsRmlsdGVycyk7XG4gICAgfSxnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkxPT0tVUF9JTlBVVCA/ICAyNTAgOiAwKTtcbiAgfVxuICAvKipcbiAgICogQXBwbHkgc2VsZWN0ZWQgZmlsdGVyc1xuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKGZpbHRlckV2ZW50OiBib29sZWFuPSB0cnVlLCBnbG9iYWxGaWx0ZXI6YW55ID0ge30pIHtcbiAgICBpZihnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0Upe1xuICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpO1xuICAgIH0gXG4gICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmlsdGVyRXZlbnQ7XG4gICAgY29uc3QgZ2xvYmFsRmlsdGVycyA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKHgpID0+IHguZmllbGQpO1xuICAgIGNvbnN0IGluZGV4ID0gZ2xvYmFsRmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcik9PiBmaWx0ZXIuZmllbGQgJiYgZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFIClcbiAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgIGdsb2JhbEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIGlmICh0aGlzLnNob3dEaWFsb2cpIHtcbiAgICAgIHRoaXMucmVmLmNsb3NlKGdsb2JhbEZpbHRlcnMpO1xuICAgIH0gZWxzZSBcbiAgICBpZighdGhpcy5jaGVja0ZpbHRlclZhbGlkYXRpb24oKSl7XG4gICAgICB0aGlzLmNoZWNrRmlsdGVyVmFsaWRhdGlvbih0cnVlKTtcbiAgICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChnbG9iYWxGaWx0ZXJzKTtcbiAgICB9XG4gIH1cblxuICAvLyBzZXQgQnkgRGVmdWFsdCBDYWxlbmRhciBSYW5nZSBcbiAgc2V0RGVmdWFsdENhbGVuZGFyUmFuZ2UoY2hlY2s6IGJvb2xlYW4gPSB0cnVlKXtcbiAgICBpZih0aGlzLmdsb2JhbEZpbHRlcnMgJiYgdGhpcy5nbG9iYWxGaWx0ZXJzLmxlbmd0aCA+IDApe1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzLmZvckVhY2goKGZpbHRlcik9PntcbiAgICAgICAgaWYoZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFICYmIGZpbHRlci5kYXlSYW5nZSAmJiAhZmlsdGVyLnZhbHVlICYmICFmaWx0ZXIudmFsdWVUd28pe1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TmV4dChmaWx0ZXIsIGNoZWNrKTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaG93TmV4dChmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGNoZWNrOiBib29sZWFuID0gdHJ1ZSk6IERhdGVbXSB7XG4gICAgLy8gbGV0IG5leHRWYWx1ZTogc3RyaW5nO1xuICAgIGxldCBuZXh0VmFsdWU6IERhdGVbXVxuICAgIGxldCBkYXlSYW5nZTogRURheVJhbmdlID0gZmlsdGVyLmRheVJhbmdlXG4gICAgICA/IGZpbHRlci5kYXlSYW5nZVxuICAgICAgOiBFRGF5UmFuZ2UuV0VFSztcbiAgICBzd2l0Y2ggKGRheVJhbmdlKSB7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5EQVk6XG4gICAgICAgLy8gbmV4dFZhbHVlID0gdGhpcy5zZXREYXlGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5NT05USDpcbiAgICAgIC8vICBuZXh0VmFsdWUgPSB0aGlzLnNldE1vbnRoRmlsdGVyKGZpbHRlciwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuWUVBUjpcbiAgICAgIC8vICBuZXh0VmFsdWUgPSB0aGlzLnNldFllYXJGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB3ZWVrXG4gICAgICBuZXh0VmFsdWUgPSB0aGlzLnNldFdlZWtGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgZmlsdGVyLnZhbHVlPSBuZXh0VmFsdWVcbiAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpXG4gICAgICAgIC8vZmlsdGVyLnZhbHVlVHdvPW5leHRWYWx1ZVsxXVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGNoZWNrO1xuICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSApXG4gICAgaWYoaW5kZXggPiAtMSl7XG4gICAgICBnbG9iYWxGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLmdsb2JhbEZpbHRlcnMpO1xuICAgLy8gbGV0IHRlc3Q9bmV4dFZhbHVlXG4gICAgLy9maWx0ZXIudmFsdWU9bmV4dFZhbHVlXG4gICBcbiAgICByZXR1cm4gbmV4dFZhbHVlO1xuICB9XG5cbiAgc2hvd1ByZXZpb3VzKGZpbHRlcjogSUdsb2JhbEZpbHRlcik6IERhdGVbXSB7XG4gICAgbGV0IHByZXZpb3VzVmFsdWU6IERhdGVbXTtcbiAgICBsZXQgZGF5UmFuZ2U6IEVEYXlSYW5nZSA9IGZpbHRlci5kYXlSYW5nZVxuICAgICAgPyBmaWx0ZXIuZGF5UmFuZ2VcbiAgICAgIDogRURheVJhbmdlLldFRUs7XG4gICAgc3dpdGNoIChkYXlSYW5nZSkge1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuREFZOlxuICAgICAgIC8vIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldERheUZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5NT05USDpcbiAgICAgLy8gICBwcmV2aW91c1ZhbHVlID0gdGhpcy5zZXRNb250aEZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5ZRUFSOlxuICAgICAgLy8gIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldFllYXJGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gd2Vla1xuICAgICAgICBwcmV2aW91c1ZhbHVlID0gdGhpcy5zZXRXZWVrRmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmlsdGVyLnZhbHVlPXByZXZpb3VzVmFsdWVcbiAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGZpbHRlcilcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSB0cnVlO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcbiAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQodGhpcy5nbG9iYWxGaWx0ZXJzKTtcbiAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgfVxuXG4gIHNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXI6IElHbG9iYWxGaWx0ZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAoZmlsdGVyLnZhbHVlID1cbiAgICAgIHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSxcbiAgICAgICAgZmlsdGVyLmZvcm1hdCA/IGZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICkgK1xuICAgICAgJ3wnICtcbiAgICAgIHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLmVuZERhdGUsXG4gICAgICAgIGZpbHRlci5mb3JtYXQgPyBmaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApKTtcbiAgfVxuXG4gIHNldERhdGVWYWx1ZShmaWx0ZXI6IGFueSkge1xuICAgIGxldCB2YWx1ZTogRGF0ZTtcbiAgICBpZiAoZmlsdGVyLnZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKGZpbHRlci52YWx1ZS5zcGxpdCgnfCcpWzBdKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5zZXRNb250aCh2YWx1ZS5nZXRNb250aCgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldERheUZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdGhpcy5zZXREYXRlVmFsdWUoZmlsdGVyKTtcblxuICAgIGlmIChpc05leHQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RGF0ZSgpICsgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBjdXJyZW50RGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgLSAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGN1cnJlbnREYXRlO1xuICAgIH1cblxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0WWVhckZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdGhpcy5zZXREYXRlVmFsdWUoZmlsdGVyKTtcbiAgICB2YXIgZmlyc3REYXRlT2ZZZWFyID0gbmV3IERhdGUoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG5cbiAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSArIDEsIDAsIDEpXG4gICAgICAgIDogZmlyc3REYXRlT2ZZZWFyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSAtIDEsIDAsIDEpXG4gICAgICAgIDogZmlyc3REYXRlT2ZZZWFyO1xuICAgIH1cblxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIDExLCAzMSk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXRDYWxlbmRhclJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgfVxuXG4gIHNldE1vbnRoRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIHZhciBmaXJzdERhdGVPZk1vbnRoID0gbmV3IERhdGUoXG4gICAgICBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgY3VycmVudERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIDFcbiAgICApO1xuXG4gICAgaWYgKGlzTmV4dCkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBmaXJzdERhdGVPZk1vbnRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGZpcnN0RGF0ZU9mTW9udGg7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAwXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0V2Vla0ZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IERhdGVbXXtcbiAgICBsZXQgZmlsdGVyVmFsdWU6RGF0ZT0gQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpPyBmaWx0ZXIudmFsdWVbMF06ZmlsdGVyLnZhbHVlXG4gICAgbGV0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoZmlsdGVyVmFsdWU/IGZpbHRlclZhbHVlOm5ldyBEYXRlKCkpLy90aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLnNldERhdGUoZmlsdGVyVmFsdWUgPyBjdXJyZW50RGF0ZS5nZXREYXRlKCkgOiBjdXJyZW50RGF0ZS5nZXREYXRlKCkgLSBjdXJyZW50RGF0ZS5nZXREYXkoKSArIDEpKTtcbiAgICBsZXQgd2Vla1NlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICBsZXQgdmFsdWU6RGF0ZVxuICAgICAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB2YWx1ZSA9IGZpbHRlclZhbHVlXG4gICAgICAgZmlsdGVyLnZhbHVlXG4gICAgICAgID8gIHZhbHVlLnNldERhdGUoZmlsdGVyVmFsdWUuZ2V0RGF0ZSgpKzcpICAgLy9uZXcgRGF0ZShuZXcgRGF0ZShmaWx0ZXJWYWx1ZSkuZ2V0VGltZSgpICsgd2Vla1NlY29uZHMpXG4gICAgICAgIDogdmFsdWU9IG5ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBmaWx0ZXIudmFsdWVcbiAgICAgICAgP25ldyBEYXRlKGZpbHRlclZhbHVlLmdldFRpbWUoKSAtIHdlZWtTZWNvbmRzKVxuICAgICAgICA6IG5ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSAtIHdlZWtTZWNvbmRzKVxuICAgIH1cbiAgICAvL3RoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldFRpbWUoKSArIDYgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAvLyBsZXQgdmFsdWU6RGF0ZT1maWx0ZXJWYWx1ZT9cbiAgICAvLyAgIGlzTmV4dD9uZXcgRGF0ZShmaWx0ZXJWYWx1ZS5nZXRUaW1lKCkgKyB3ZWVrU2Vjb25kcyk6bmV3IERhdGUoZmlsdGVyVmFsdWUuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpOlxuICAgIC8vICAgaXNOZXh0P25ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSk6bmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG5cbiAgICBsZXQgdmFsdWVUd286RGF0ZT1uZXcgRGF0ZSh2YWx1ZS5nZXRUaW1lKCkgKyA2ICogMjQgKiA2MCAqIDYwICogMTAwMCk7IFxuICAgLy8gY29uc29sZS5sb2coJ3Rlc3QnLHZhbHVlLCd0ZXN0MicsdmFsdWVUd28pXG4gICAgcmV0dXJuIFt2YWx1ZSwgdmFsdWVUd29dXG4gICAvL3JldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgICAvKipcbiAgICogb3BlbiBkaWFsb2cgb24gbG9va3VwQ29udHJvbCBmaWVsZFxuICAgKi9cbiAgICAgc2VsZWN0TG9va3VwRmllbGQoZ2xvYmFsRmlsdGVyczogSUdsb2JhbEZpbHRlcikgeyAgICAgICBcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0TG9va1VwRmlsdGVyKGdsb2JhbEZpbHRlcnMsIHRoaXMuZGlhbG9nU2VydmljZSwgdHJ1ZSk7XG4gICAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgZmlsdGVyIHZhbHVlc1xuICAgKi9cbiAgY2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5tYXAoKGl0ZW06IGFueSkgPT4gKGl0ZW0udmFsdWUgPSBudWxsKSk7XG4gICAgY29uc3QgY2xlYXJHcmlkRmlsdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsZWFyR3JpZEZpbHRlclZhbHVlc0J1dHRvbicpXG4gICAgaWYoY2xlYXJHcmlkRmlsdGVyKXtcbiAgICAgIGNsZWFyR3JpZEZpbHRlci5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gICAvKipcbiAgICogQ2xlYXIgdmFsdWVzIG9mIERhdGUgUmFuZ2UgRmlsdGVyXG4gICAqL1xuICAgIGNsZWFyRGF0ZVJhbmdlVmFsdWUoZmlsdGVyOiBhbnkpe1xuICAgICAgdGhpcy5zZXREYXRlUmFuZ2VWYWx1ZShmaWx0ZXIsIHRydWUpXG4gICAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBkaWFsb2cgd2l0aG91dCBhcHBseWluZyBmaWx0ZXJzXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICB0aGlzLnJlZi5jbG9zZSgpO1xuICB9XG4gIHJhbmdlRGF0ZWNsb3NlKGdsb2JhbEZpbHRlcjogYW55KSB7XG4gICAgdGhpcy5kYXRlUGlja2VyLmhpZGVPdmVybGF5KCk7XG4gICAgdGhpcy5kYXRlUGlja2VyLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5kYXRlUGlja2VyLmRhdGVwaWNrZXJDbGljayA9IHRydWU7XG4gICAgY29uc3QgaWQ6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCk7XG4gICAgaWQuZm9jdXMoKTtcbiAgICB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuZGF0ZXBpY2tlckNsaWNrID0gdHJ1ZTtcblxuICB9XG5cbiAgZmlsdGVySW5wdXQoKSB7XG4gICAgdGhpcy5zaG93SW5wdXQgPSAhdGhpcy5zaG93SW5wdXQ7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlZCB0aGUgY2FsZW5kYXIgaW5wdXRcbiAgICovXG4gIHNlbGVjdERhdGUoZ2xvYmFsRmlsdGVyOiBhbnksIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZSl7XG4gICAgaWYoZ2xvYmFsRmlsdGVyLnZhbHVlPy5sZW5ndGggPiAxICYmIGdsb2JhbEZpbHRlci52YWx1ZVsxXSAhPT0gbnVsbCl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgICBpZihmb2N1c2VkID09dHJ1ZSl7XG4gICAgICB0aGlzLnJhbmdlRGF0ZWNsb3NlKGdsb2JhbEZpbHRlcik7IFxuICAgICAgfVxuICAgIH1cbiAgICBpZihmb2N1c2VkKXtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdsb2JhbEZpbHRlci5maWVsZCk/LmZvY3VzKCk7XG4gICAgfVxuICB9XG4gIHRhYkZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuJytnbG9iYWxGaWx0ZXIuZmllbGRcbiAgICApO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZS5jbGljaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWNvbXBvbmVudC13cmFwcGVyLWRpdlwiPlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5oaWRkZW4gPyAnZ2xvYmFsRmlsdGVySGlkZGVuJyA6IGdsb2JhbEZpbHRlci5jb2x1bW4gPyAnY29sLScgKyBnbG9iYWxGaWx0ZXIuY29sdW1uIDogJ2NvbC0zJ1wiXG4gICAgKm5nRm9yPVwibGV0IGdsb2JhbEZpbHRlciBvZiBnbG9iYWxGaWx0ZXJzXCJcbiAgPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cImdsb2JhbEZpbHRlci50eXBlXCI+XG4gICAgICA8IS0tIENhbGVuZGFyIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DQUxFTkRBUlwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5ICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ6ICdmbGV4LWdyb3ctMSBncm93LTEgJyArIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QtRGF0ZSdcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImdsb2JhbEZpbHRlci5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY2FsZW5kYXJGb3JtYXRcIlxuICAgICAgICAgICAgICAgIChvbkNsb3NlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtzaG93QnV0dG9uQmFyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gQ2FsZW5kYXIgUmFuZ2UgLS0+XG4gICAgICA8IS0tIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DQUxFTkRBUl9SQU5HRVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcmV2aW91cyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJQcmV2aW91cyB7e1xuICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgICB9fSA8PFwiIFxuICAgICAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8IS0tIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnByZWZpeD09PXRydWUgfHwgZ2xvYmFsRmlsdGVyLnByZWZpeD09PXVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgIHt7ICBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0ID8gZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA6ICcnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0ge3tcbiAgICAgICAgICAgICAgICBzdGFydERhdGVcbiAgICAgICAgICAgICAgICAgIHwgZGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IChnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5JylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdG9cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBlbmREYXRlXG4gICAgICAgICAgICAgICAgICB8IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgOiAoZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eScpXG4gICAgICAgICAgICAgIH19IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnByZWZpeD09PWZhbHNlXCI+XG4gICAgICAgICAgICAgICAge3sgZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA/IGdsb2JhbEZpbHRlci5sYWJlbFRleHQgOiAnJ319XG4gICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWJ0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93TmV4dChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJOZXh0IHt7XG4gICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICAgIH19ID4+XCJcbiAgICAgICAgICAgID4gLS0+XG4gICAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgICAgPCEtLSA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPiAtLT5cblxuICAgICAgPCEtLSBDaGVja2JveCBDb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuQ0hFQ0tCT1hcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JzogJ2ZsZXggYWxpZ24taXRlbXMtY2VudGVyJ1wiXG4gICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrRXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gU3BhY2VyIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLlNQQUNFUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmNvbHVtblxuICAgICAgICAgICAgICAgID8gJ2NvbC0nICsgZ2xvYmFsRmlsdGVyLmNvbHVtblxuICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRHJvcGRvd24gQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkRST1BET1dOXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImdsb2JhbEZpbHRlci5maWVsZFwiXG4gICAgICAgICAgICAgIChrZXl1cC5UYWIpPVwidGFiRm9jdXNFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImdsb2JhbEZpbHRlci5kYXRhIHx8IFtdXCJcbiAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdsb2JhbEZpbHRlci5vcHRpb25MYWJlbFwiXG4gICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJnbG9iYWxGaWx0ZXIub3B0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICBbZmlsdGVyXT1cImdsb2JhbEZpbHRlci5hbGxvd1NlYXJjaFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBJbnB1dCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuSU5QVVRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE51bWVyaWNJbnB1dCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLk5VTUVSSUNJTlBVVFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIFxuICAgICAgPCEtLSBEYXRlIFJhbmdlIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5EQVRFX1JBTkdFXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImdsb2JhbEZpbHRlci5kYXlSYW5nZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcmFuZ2UtYnRuICBjYWxlbmRhci1wcmV2aW91c1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJldmlvdXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiPDxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBcIlByZXZpb3VzIHt7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgfX0gPDxcIiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFxuICAgICAgICAgICAgI3JhbmdlQ2FsZW5kYXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uQmFyXT1cInRydWVcIlxuXG4gICAgICAgICAgICBbaW5wdXRJZF09XCJnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IDogJ2ZsZXgtZ3Jvdy0xIGdyb3ctMSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCIgXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIiBcbiAgICAgICAgICAgIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXIsIHRydWUpXCJcbiAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImNhbGVuZGFyRm9ybWF0XCJcbiAgICAgICAgICAgIChvbkNsb3NlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChvbkNsaWNrT3V0c2lkZSk9XCJzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwic2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAoa2V5dXApPVwiY2FsZW5kYXJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlciwgJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbGVhckNsaWNrKT1cImNsZWFyRGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnModHJ1ZSwgZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBcbiAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmRheVJhbmdlXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcmFuZ2UtYnRuIGNhbGVuZGFyLW5leHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dOZXh0KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgbGFiZWw9XCI+PlwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwhLS0gTmV4dCB7e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgfX0gPj5cIiAtLT5cbiAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLSB0b2RheUJ1dHRvblN0eWxlQ2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAgICAgY2xlYXJCdXR0b25TdHlsZUNsYXNzPVwibWwtYXV0b1wiIC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBOdW1lcmljIFJhbmdlIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTlVNRVJJQ19SQU5HRVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LW5vd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdsb2JhbEZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gOiAnMicgOiAnMCdcIlxuICAgICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcix0cnVlKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJ2ZsZXgtZ3Jvdy0xICBncm93LTEgaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvLW51bWVyaWMgbXItMlwiPlRvPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlVHdvXCJcbiAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdsb2JhbEZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gOiAnMicgOiAnMCdcIlxuICAgICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJ2ZsZXgtZ3Jvdy0xIG1yLTIgZ3Jvdy0xIGlucHV0LW51bWJlcidcIlxuICAgICAgICAgICAgICAob25CbHVyKT1cInNldE51bWVyaWNSYW5nZVZhbHVlVHdvKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyLHRydWUpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBNdWx0aVNlbGVjdCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLk1VTFRJU0VMRUNUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImdsb2JhbEZpbHRlci5kYXRhXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG5cbiAgICAgICAgIDwhLS0gU2VsZWN0IEJ1dHRvbiBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLlNFTEVDVEJVVFRPTlwiXG5cbiAgICAgICAgPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8cC1zZWxlY3RCdXR0b25cbiAgICAgICAgICBbY2xhc3NdPVwiJyBtb2Rlcm5pemVkUmFkaW9Mb29rICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgbmctaW52YWxpZCBuZy1kaXJ0eSAnIDogJycpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGFcIlxuICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5U3R5bGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgXG4gICAgICAgID5cbiAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPlxuICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICA8L25nLXRlbXBsYXRlPiAtLT5cbiAgICAgIDwvcC1zZWxlY3RCdXR0b24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuXG5cbiAgICAgIDwhLS0gTG9va3VwIENvbnRyb2wgRmllbGQgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTE9PS1VQX0lOUFVUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UtaWNvbi13cmFwcGVyIGxvb2t1cC1maWx0ZXItd3JhcHBlciBnbG9iYWxGaWx0ZXJzXCI+IFxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyPy52YWx1ZVR3bz8udGV4dCA/IGdsb2JhbEZpbHRlci52YWx1ZVR3by50ZXh0IDogZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMb29rdXBGaWVsZChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuVGFiKT1cInNlbGVjdExvb2t1cEZpZWxkKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwicmVtb3ZlTnVsbExvb2t1cCgkZXZlbnQsIGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGxvb2t1cC1pbnB1dFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHQgbG9va3VwLWlucHV0LWljb24gZ2xvYmFsLWZpbHRlclwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlyZWN0LXdyYXBwZXItY2xvc2UtaWNvbi1sb29rdXBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gPHNwYW4+XG4gIDxpICBpY29uPVwicGkgcGktdGltZXNcIj48L2k+XG48L3NwYW4+IC0tPlxuXG48IS0tIEFwcGx5IGJ1dHRvbiAtLT5cblxuPGJ1dHRvblxucEJ1dHRvblxuKm5nSWY9XCIhZ3JpZFVwZGF0ZVwiXG50eXBlPVwiYnV0dG9uXCJcbmljb249XCJwaSBwaS1zZWFyY2hcIlxuaWQ9XCJzZWFyY2hHbG9iYWxGaWx0ZXJCdG5cIlxuKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcbmNsYXNzPVwiZ2xvYmFsLXNlYXJjaCBhbGlnbi1nbG9iYWxGaWx0ZXItYnRuIGdsb2JhbC1idG4gaGlkZS1maWx0ZXItYnV0dG9uXCJcbj48L2J1dHRvbj5cblxuPCEtLSBDbG9zZSBidXR0b24gLS0+XG48YnV0dG9uXG5wQnV0dG9uXG4qbmdJZj1cIiFncmlkVXBkYXRlXCJcbmlkPVwiY2xlYXJHbG9iYWxGaWx0ZXJCdG5cIlxudHlwZT1cImJ1dHRvblwiXG5pY29uPVwicGkgcGktcmVwbGF5XCJcbihjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiXG5jbGFzcz1cImhpZGUtZmlsdGVyLWJ1dHRvblwiXG4+PC9idXR0b24+XG4iXX0=