@sd-angular/core 1.2.78 → 1.2.79

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.
@@ -168,8 +168,13 @@ export class SdExportService {
168
168
  });
169
169
  csvExporter.generateCsv([headerCSV, ...items]);
170
170
  });
171
- this.exportExcelRaw = (data, fileName) => __awaiter(this, void 0, void 0, function* () {
172
- const ws = XLSX.utils.json_to_sheet(data);
171
+ this.exportExcelRaw = (option) => __awaiter(this, void 0, void 0, function* () {
172
+ const { columns, items, fileName } = option;
173
+ const header = {};
174
+ for (const column of columns) {
175
+ header[column.field] = column.title;
176
+ }
177
+ const ws = XLSX.utils.json_to_sheet([header, ...items]);
173
178
  const wb = { Sheets: { data: ws }, SheetNames: ['data'] };
174
179
  const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
175
180
  const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' });
@@ -243,4 +248,4 @@ SdExportService.ctorParameters = () => [
243
248
  { type: SdNotifyService },
244
249
  { type: undefined, decorators: [{ type: Inject, args: [EXPORT_CONFIG,] }, { type: Optional }] }
245
250
  ];
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQXdDLGFBQWEsRUFBaUIsR0FBRyxFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBSzVELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1UsVUFBd0IsRUFDeEIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDSyxhQUFtQztRQUh0RSxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDSyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUF1QmhGLHFCQUFhLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUks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LE1BQU07UUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFZLFVBQVU7UUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEMsSUFBSSxFQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOzs7OztZQWhDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFlBQVk7WUFPWixnQkFBZ0I7WUFEaEIsZUFBZTs0Q0FjbkIsTUFBTSxTQUFDLGFBQWEsY0FBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkQXBpU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvYXBpJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgeyBFeHBvcnRUb0NzdiB9IGZyb20gJ2V4cG9ydC10by1jc3YnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBFeHBvcnRUZW1wbGF0ZSwgSUV4cG9ydENvbmZpZ3VyYXRpb24sIEVYUE9SVF9DT05GSUcsIElFeHBvcnRPcHRpb24sIEFQSSwgU2RFeHBvcnRGaWxlIH0gZnJvbSAnLi9leHBvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3V0aWxpdHknO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFeHBvcnRTZXJ2aWNlIHtcclxuICBnZXQgaGFzQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHJldHVybiAhIXRoaXMuY29uZmlndXJhdGlvbj8uZmlyZWJhc2VVcmw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBTZFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KEVYUE9SVF9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUV4cG9ydENvbmZpZ3VyYXRpb24pIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBpZiAodHlwZW9mIChmb2xkZXIpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgdXNlckZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgdXNlciB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKCF1c2VyPy5mb2xkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IHVzZXI7XHJcbiAgICBpZiAodHlwZW9mIChmb2xkZXIpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgI2RpcmVjdG9yeSA9IChrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IGhhc2hlZEZvbGRlciA9IGhhc2goe1xyXG4gICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyLFxyXG4gICAgICB1c2VyRm9sZGVyOiB0aGlzLnVzZXJGb2xkZXJcclxuICAgIH0pO1xyXG4gICAgaWYgKCFncm91cCkge1xyXG4gICAgICByZXR1cm4gYGRpcjE9JHt0aGlzLmZvbGRlcn0mZGlyMj1VLSR7aGFzaGVkRm9sZGVyfSZkaXIzPSR7a2V5IHx8ICcnfWA7XHJcbiAgICB9XHJcbiAgICBoYXNoZWRGb2xkZXIgPSBoYXNoKHtcclxuICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcixcclxuICAgICAgZ3JvdXBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9Ry0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICh0ZW1wbGF0ZTogRXhwb3J0VGVtcGxhdGUpID0+IHtcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RHZW5lcmF0ZVRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkR2VuZXJhdGVUZW1wbGF0ZX1gO1xyXG4gICAgLy8gY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgdGVtcGxhdGUpO1xyXG4gICAgLy8gcmV0dXJuIHsgZmlsZVBhdGgsIGZpbGVOYW1lIH07XHJcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh1cmwsIHRlbXBsYXRlLCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCwnIH0pO1xyXG4gICAgdGhpcy4jYmxvYlRvU2F2ZUFzKGJsb2IsIHRlbXBsYXRlLmZpbGVOYW1lIHx8ICdUZW1wbGF0ZScpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICAgIHZhbGlkYXRvcj86IChmaWxlTmFtZTogc3RyaW5nKSA9PiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTxTZEV4cG9ydEZpbGU+ID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCBncm91cCwgdmFsaWRhdG9yIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyB1cGxvYWRUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHt1cGxvYWRUZW1wbGF0ZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9YDtcclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLnV0aWxpdHlTZXJ2aWNlLnVwbG9hZCh7XHJcbiAgICAgIGV4dGVuc2lvbnM6IFsneGxzeCddLFxyXG4gICAgICBtYXhTaXplSW5NYjogMC4xLFxyXG4gICAgICB2YWxpZGF0b3JcclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS51cGxvYWQodXJsLCBmaWxlKS5jYXRjaCgoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhlcnI/Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZVBhdGgsXHJcbiAgICAgICAgZmlsZU5hbWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0ZW1wbGF0ZTogRXhwb3J0VGVtcGxhdGU7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgdGVtcGxhdGUsIGdyb3VwIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke2dlbmVyYXRlVXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCBncm91cCwgZmlsZU5hbWUgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IHJlbW92ZUZpbGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7cmVtb3ZlRmlsZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9Jm5hbWU9JHtmaWxlTmFtZX1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsKTtcclxuICB9XHJcblxyXG4gIGZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KTogUHJvbWlzZTxTZEV4cG9ydEZpbGVbXT4gPT4ge1xyXG4gICAgaW50ZXJmYWNlIEZpbGVzSW5Gb2xkZXJSZXMge1xyXG4gICAgICBkaXJlY3Rvcnk6IHN0cmluZztcclxuICAgICAgZmlsZXM6IHtcclxuICAgICAgICBwdWJsaWNVcmw6IHN0cmluZywgZnVsbFBhdGg6IHN0cmluZywgbmFtZTogc3RyaW5nXHJcbiAgICAgIH1bXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsga2V5LCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgZmlsZXNJbkZvbGRlciB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtmaWxlc0luRm9sZGVyfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldDxGaWxlc0luRm9sZGVyUmVzPih1cmwpO1xyXG4gICAgcmV0dXJuIHJlcy5maWxlcz8ubWFwKGUgPT4gKHtcclxuICAgICAgZmlsZVBhdGg6IGUucHVibGljVXJsLFxyXG4gICAgICBmaWxlTmFtZTogZS5uYW1lXHJcbiAgICB9KSkgfHwgW107XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCA9IChmaWxlUGF0aDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGAke2ZpbGVOYW1lIHx8IHV1aWQudjQoKX0ueGxzeGA7XHJcbiAgICBsaW5rLmhyZWYgPSBmaWxlUGF0aDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QnlUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxyXG4gICAgY29sdW1uczogYW55W10sXHJcbiAgICBpdGVtczogYW55W10sXHJcbiAgICBmaWxlTmFtZT86IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZVBhdGgsIGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RFeHBvcnRCeVRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkRXhwb3J0QnlUZW1wbGF0ZX1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB7XHJcbiAgICAgIGZpbGVQYXRoLFxyXG4gICAgICBjb2x1bW5zLFxyXG4gICAgICBpdGVtcyxcclxuICAgICAgZmlsZU5hbWVcclxuICAgIH0sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKG9wdGlvbjogSUV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBzZEV4cG9ydCB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtzZEV4cG9ydH1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCBvcHRpb24sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgb3B0aW9uPy5maWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvLyBleHBvcnRDU1YgPSBhc3luYyAob3B0aW9uOiBJRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgLy8gICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gIC8vICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAvLyAgICAgZmllbGRTZXBhcmF0b3I6ICcsJyxcclxuICAvLyAgICAgcXVvdGVTdHJpbmdzOiAnXCInLFxyXG4gIC8vICAgICBkZWNpbWFsc2VwYXJhdG9yOiAnLicsXHJcbiAgLy8gICAgIHNob3dMYWJlbHM6IHRydWUsXHJcbiAgLy8gICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgLy8gICAgIHRpdGxlOiBmaWxlTmFtZSB8fCAnQ1NWJyxcclxuICAvLyAgICAgdXNlQm9tOiB0cnVlLFxyXG4gIC8vICAgICBub0Rvd25sb2FkOiBmYWxzZSxcclxuICAvLyAgICAgdXNlSGVhZGVyOiBmYWxzZSxcclxuICAvLyAgICAgbnVsbFRvRW1wdHlTdHJpbmc6IHRydWUsXHJcbiAgLy8gICB9O1xyXG4gIC8vICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgLy8gICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgLy8gICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG5ldyBBbmd1bGFyQ3N2KFsuLi5baGVhZGVyQ1NWXSwgLi4uaXRlbXNdLCBgJHtmaWxlTmFtZSB8fCAnQ1NWJ31fJHtEYXRlLnRvRm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkLUhILW1tLXNzJyl9YCwgb3B0aW9ucyk7XHJcbiAgLy8gfVxyXG5cclxuICBleHBvcnRDU1YgPSBhc3luYyAob3B0aW9uOiBJRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3N2RXhwb3J0ZXIgPSBuZXcgRXhwb3J0VG9Dc3Yoe1xyXG4gICAgICBmaWxlbmFtZTogYCR7ZmlsZU5hbWUgfHwgJ0NTVid9XyR7RGF0ZS50b0Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZC1ISC1tbS1zcycpfWAsXHJcbiAgICAgIGZpZWxkU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgIHF1b3RlU3RyaW5nczogJ1wiJyxcclxuICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICB0aXRsZTogZmlsZU5hbWUgfHwgJ0NTVicsXHJcbiAgICAgIHVzZUJvbTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY3N2RXhwb3J0ZXIuZ2VuZXJhdGVDc3YoW2hlYWRlckNTViwgLi4uaXRlbXNdKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEV4Y2VsUmF3ID0gYXN5bmMgKGRhdGE6IGFueVtdLCBmaWxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoZGF0YSk7XHJcbiAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IHsgU2hlZXRzOiB7IGRhdGE6IHdzIH0sIFNoZWV0TmFtZXM6IFsnZGF0YSddIH07XHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3YiwgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtleGNlbEJ1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnIH0pO1xyXG4gICAgdGhpcy4jYmxvYlRvU2F2ZUFzKGJsb2IsIGZpbGVOYW1lICk7XHJcbiAgfVxyXG5cclxuICBtZXJnZVBERiA9IGFzeW5jICh1cmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBzZE1lcmdlUERGIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkTWVyZ2VQREZ9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwge1xyXG4gICAgICB1cmxzXHJcbiAgICB9LCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgYCR7dXVpZC52NCgpfWApO1xyXG4gIH1cclxuXHJcbiAgI2Jsb2JUb1NhdmVBcyA9IChibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nID0gJ0V4cG9ydCcpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoLy54bHN4L2ksICcnKTtcclxuICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8ucGRmL2ksICcnKTtcclxuICAgICAgaWYgKGxpbmsuZG93bmxvYWQgIT09IHVuZGVmaW5lZCkgeyAvLyBmZWF0dXJlIGRldGVjdGlvblxyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBgJHtmaWxlTmFtZX1fJHtuZXcgRGF0ZSgpLnRvRm9ybWF0KCd5eXl5X01NX2RkX0hIX21tJyl9YCk7XHJcbiAgICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdCbG9iVG9TYXZlQXMgZXJyb3InLCBlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4cG9ydEluZm8ge1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIHNoZWV0TmFtZT86IHN0cmluZztcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxufVxyXG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQXdDLGFBQWEsRUFBaUIsR0FBRyxFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBSzVELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1UsVUFBd0IsRUFDeEIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDSyxhQUFtQztRQUh0RSxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDSyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUF1QmhGLHFCQUFhLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUks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QUNqQzthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN4QztRQUNILENBQUMsRUFBQTtJQXhQRCxDQUFDO0lBUkQsSUFBSSxnQkFBZ0I7O1FBQ2xCLE9BQU8sQ0FBQyxRQUFDLElBQUksQ0FBQyxhQUFhLDBDQUFFLFdBQVcsQ0FBQSxDQUFDO0lBQzNDLENBQUM7SUFRRCxJQUFZLE1BQU07UUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFZLFVBQVU7UUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEMsSUFBSSxFQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOzs7OztZQWhDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFlBQVk7WUFPWixnQkFBZ0I7WUFEaEIsZUFBZTs0Q0FjbkIsTUFBTSxTQUFDLGFBQWEsY0FBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkQXBpU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvYXBpJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgeyBFeHBvcnRUb0NzdiB9IGZyb20gJ2V4cG9ydC10by1jc3YnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBFeHBvcnRUZW1wbGF0ZSwgSUV4cG9ydENvbmZpZ3VyYXRpb24sIEVYUE9SVF9DT05GSUcsIElFeHBvcnRPcHRpb24sIEFQSSwgU2RFeHBvcnRGaWxlIH0gZnJvbSAnLi9leHBvcnQubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE5vdGlmeVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcbmltcG9ydCB7IFNkVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3V0aWxpdHknO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFeHBvcnRTZXJ2aWNlIHtcclxuICBnZXQgaGFzQ29uZmlndXJhdGlvbigpIHtcclxuICAgIHJldHVybiAhIXRoaXMuY29uZmlndXJhdGlvbj8uZmlyZWJhc2VVcmw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBTZEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBTZFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KEVYUE9SVF9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUV4cG9ydENvbmZpZ3VyYXRpb24pIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBpZiAodHlwZW9mIChmb2xkZXIpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgdXNlckZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgdXNlciB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKCF1c2VyPy5mb2xkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IHVzZXI7XHJcbiAgICBpZiAodHlwZW9mIChmb2xkZXIpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgI2RpcmVjdG9yeSA9IChrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IGhhc2hlZEZvbGRlciA9IGhhc2goe1xyXG4gICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyLFxyXG4gICAgICB1c2VyRm9sZGVyOiB0aGlzLnVzZXJGb2xkZXJcclxuICAgIH0pO1xyXG4gICAgaWYgKCFncm91cCkge1xyXG4gICAgICByZXR1cm4gYGRpcjE9JHt0aGlzLmZvbGRlcn0mZGlyMj1VLSR7aGFzaGVkRm9sZGVyfSZkaXIzPSR7a2V5IHx8ICcnfWA7XHJcbiAgICB9XHJcbiAgICBoYXNoZWRGb2xkZXIgPSBoYXNoKHtcclxuICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcixcclxuICAgICAgZ3JvdXBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9Ry0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICh0ZW1wbGF0ZTogRXhwb3J0VGVtcGxhdGUpID0+IHtcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RHZW5lcmF0ZVRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkR2VuZXJhdGVUZW1wbGF0ZX1gO1xyXG4gICAgLy8gY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgdGVtcGxhdGUpO1xyXG4gICAgLy8gcmV0dXJuIHsgZmlsZVBhdGgsIGZpbGVOYW1lIH07XHJcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh1cmwsIHRlbXBsYXRlLCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCwnIH0pO1xyXG4gICAgdGhpcy4jYmxvYlRvU2F2ZUFzKGJsb2IsIHRlbXBsYXRlLmZpbGVOYW1lIHx8ICdUZW1wbGF0ZScpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICAgIHZhbGlkYXRvcj86IChmaWxlTmFtZTogc3RyaW5nKSA9PiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTxTZEV4cG9ydEZpbGU+ID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCBncm91cCwgdmFsaWRhdG9yIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyB1cGxvYWRUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHt1cGxvYWRUZW1wbGF0ZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9YDtcclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLnV0aWxpdHlTZXJ2aWNlLnVwbG9hZCh7XHJcbiAgICAgIGV4dGVuc2lvbnM6IFsneGxzeCddLFxyXG4gICAgICBtYXhTaXplSW5NYjogMC4xLFxyXG4gICAgICB2YWxpZGF0b3JcclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS51cGxvYWQodXJsLCBmaWxlKS5jYXRjaCgoZXJyOiBFcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhlcnI/Lm1lc3NhZ2UpO1xyXG4gICAgICAgIHRocm93IGVycjtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZVBhdGgsXHJcbiAgICAgICAgZmlsZU5hbWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0ZW1wbGF0ZTogRXhwb3J0VGVtcGxhdGU7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgdGVtcGxhdGUsIGdyb3VwIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke2dlbmVyYXRlVXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCBncm91cCwgZmlsZU5hbWUgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IHJlbW92ZUZpbGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7cmVtb3ZlRmlsZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9Jm5hbWU9JHtmaWxlTmFtZX1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsKTtcclxuICB9XHJcblxyXG4gIGZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KTogUHJvbWlzZTxTZEV4cG9ydEZpbGVbXT4gPT4ge1xyXG4gICAgaW50ZXJmYWNlIEZpbGVzSW5Gb2xkZXJSZXMge1xyXG4gICAgICBkaXJlY3Rvcnk6IHN0cmluZztcclxuICAgICAgZmlsZXM6IHtcclxuICAgICAgICBwdWJsaWNVcmw6IHN0cmluZywgZnVsbFBhdGg6IHN0cmluZywgbmFtZTogc3RyaW5nXHJcbiAgICAgIH1bXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsga2V5LCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgZmlsZXNJbkZvbGRlciB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtmaWxlc0luRm9sZGVyfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldDxGaWxlc0luRm9sZGVyUmVzPih1cmwpO1xyXG4gICAgcmV0dXJuIHJlcy5maWxlcz8ubWFwKGUgPT4gKHtcclxuICAgICAgZmlsZVBhdGg6IGUucHVibGljVXJsLFxyXG4gICAgICBmaWxlTmFtZTogZS5uYW1lXHJcbiAgICB9KSkgfHwgW107XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCA9IChmaWxlUGF0aDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGAke2ZpbGVOYW1lIHx8IHV1aWQudjQoKX0ueGxzeGA7XHJcbiAgICBsaW5rLmhyZWYgPSBmaWxlUGF0aDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QnlUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxyXG4gICAgY29sdW1uczogYW55W10sXHJcbiAgICBpdGVtczogYW55W10sXHJcbiAgICBmaWxlTmFtZT86IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZVBhdGgsIGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RFeHBvcnRCeVRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkRXhwb3J0QnlUZW1wbGF0ZX1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB7XHJcbiAgICAgIGZpbGVQYXRoLFxyXG4gICAgICBjb2x1bW5zLFxyXG4gICAgICBpdGVtcyxcclxuICAgICAgZmlsZU5hbWVcclxuICAgIH0sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKG9wdGlvbjogSUV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBzZEV4cG9ydCB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtzZEV4cG9ydH1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCBvcHRpb24sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgb3B0aW9uPy5maWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvLyBleHBvcnRDU1YgPSBhc3luYyAob3B0aW9uOiBJRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgLy8gICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gIC8vICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAvLyAgICAgZmllbGRTZXBhcmF0b3I6ICcsJyxcclxuICAvLyAgICAgcXVvdGVTdHJpbmdzOiAnXCInLFxyXG4gIC8vICAgICBkZWNpbWFsc2VwYXJhdG9yOiAnLicsXHJcbiAgLy8gICAgIHNob3dMYWJlbHM6IHRydWUsXHJcbiAgLy8gICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgLy8gICAgIHRpdGxlOiBmaWxlTmFtZSB8fCAnQ1NWJyxcclxuICAvLyAgICAgdXNlQm9tOiB0cnVlLFxyXG4gIC8vICAgICBub0Rvd25sb2FkOiBmYWxzZSxcclxuICAvLyAgICAgdXNlSGVhZGVyOiBmYWxzZSxcclxuICAvLyAgICAgbnVsbFRvRW1wdHlTdHJpbmc6IHRydWUsXHJcbiAgLy8gICB9O1xyXG4gIC8vICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgLy8gICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgLy8gICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG5ldyBBbmd1bGFyQ3N2KFsuLi5baGVhZGVyQ1NWXSwgLi4uaXRlbXNdLCBgJHtmaWxlTmFtZSB8fCAnQ1NWJ31fJHtEYXRlLnRvRm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkLUhILW1tLXNzJyl9YCwgb3B0aW9ucyk7XHJcbiAgLy8gfVxyXG5cclxuICBleHBvcnRDU1YgPSBhc3luYyAob3B0aW9uOiBJRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3N2RXhwb3J0ZXIgPSBuZXcgRXhwb3J0VG9Dc3Yoe1xyXG4gICAgICBmaWxlbmFtZTogYCR7ZmlsZU5hbWUgfHwgJ0NTVid9XyR7RGF0ZS50b0Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZC1ISC1tbS1zcycpfWAsXHJcbiAgICAgIGZpZWxkU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgIHF1b3RlU3RyaW5nczogJ1wiJyxcclxuICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICB0aXRsZTogZmlsZU5hbWUgfHwgJ0NTVicsXHJcbiAgICAgIHVzZUJvbTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY3N2RXhwb3J0ZXIuZ2VuZXJhdGVDc3YoW2hlYWRlckNTViwgLi4uaXRlbXNdKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEV4Y2VsUmF3ID0gYXN5bmMgKG9wdGlvbjogSUV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUgfSA9IG9wdGlvbjtcclxuICAgIGNvbnN0IGhlYWRlciA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBoZWFkZXJbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi50aXRsZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChbaGVhZGVyLCAuLi5pdGVtc10pO1xyXG4gICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSB7IFNoZWV0czogeyBkYXRhOiB3cyB9LCBTaGVldE5hbWVzOiBbJ2RhdGEnXSB9O1xyXG4gICAgY29uc3QgZXhjZWxCdWZmZXI6IGFueSA9IFhMU1gud3JpdGUod2IsIHsgYm9va1R5cGU6ICd4bHN4JywgdHlwZTogJ2FycmF5JyB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZXhjZWxCdWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtjaGFyc2V0PVVURi04JyB9KTtcclxuICAgIHRoaXMuI2Jsb2JUb1NhdmVBcyhibG9iLCBmaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBtZXJnZVBERiA9IGFzeW5jICh1cmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBzZE1lcmdlUERGIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkTWVyZ2VQREZ9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwge1xyXG4gICAgICB1cmxzXHJcbiAgICB9LCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgYCR7dXVpZC52NCgpfWApO1xyXG4gIH1cclxuXHJcbiAgI2Jsb2JUb1NhdmVBcyA9IChibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nID0gJ0V4cG9ydCcpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoLy54bHN4L2ksICcnKTtcclxuICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8ucGRmL2ksICcnKTtcclxuICAgICAgaWYgKGxpbmsuZG93bmxvYWQgIT09IHVuZGVmaW5lZCkgeyAvLyBmZWF0dXJlIGRldGVjdGlvblxyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBgJHtmaWxlTmFtZX1fJHtuZXcgRGF0ZSgpLnRvRm9ybWF0KCd5eXl5X01NX2RkX0hIX21tJyl9YCk7XHJcbiAgICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdCbG9iVG9TYXZlQXMgZXJyb3InLCBlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4cG9ydEluZm8ge1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIHNoZWV0TmFtZT86IHN0cmluZztcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- var _getExportableColumns, _getExportableGroups, _initTemplate;
1
+ var _getExportableColumns, _getExportableGroups, _getExportColumns, _initTemplate;
2
2
  import { __awaiter, __classPrivateFieldGet } from "tslib";
3
3
  import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';
4
4
  import { SdNotifyService } from '@sd-angular/core/notify';
@@ -82,24 +82,36 @@ export class SdPopupExport {
82
82
  this.modal.open();
83
83
  this.ref.detectChanges();
84
84
  });
85
- this.exportDefault = (isCSV = false) => {
85
+ _getExportColumns.set(this, () => {
86
86
  if (this.configuration) {
87
87
  const { firstColumns, secondColumns } = this.configuration;
88
- const columns = [...firstColumns, ...secondColumns].map(e => (Object.assign(Object.assign({}, e), { data: this.columns.find(e1 => e1.field === e.field) }))).filter(e => !!e.data)
88
+ return [...firstColumns, ...secondColumns].map(e => (Object.assign(Object.assign({}, e), { data: this.columns.find(e1 => e1.field === e.field) }))).filter(e => !!e.data)
89
89
  .map(e => e.data);
90
- this.export.emit({
91
- file: null,
92
- columns,
93
- isCSV
94
- });
95
90
  }
96
91
  else {
97
- this.export.emit({
98
- file: null,
99
- columns: this.columns,
100
- isCSV
101
- });
92
+ return this.columns;
102
93
  }
94
+ });
95
+ this.exportDefault = () => {
96
+ this.export.emit({
97
+ file: null,
98
+ columns: __classPrivateFieldGet(this, _getExportColumns).call(this),
99
+ isCSV: false
100
+ });
101
+ };
102
+ this.exportCSV = () => {
103
+ this.export.emit({
104
+ file: null,
105
+ columns: __classPrivateFieldGet(this, _getExportColumns).call(this),
106
+ isCSV: true
107
+ });
108
+ };
109
+ this.exportRaw = () => {
110
+ this.export.emit({
111
+ file: null,
112
+ columns: __classPrivateFieldGet(this, _getExportColumns).call(this),
113
+ isRaw: true
114
+ });
103
115
  };
104
116
  this.loadFiles = (group = null) => __awaiter(this, void 0, void 0, function* () {
105
117
  this.selectedGroup = this.groups.find(e => e.code === group);
@@ -283,7 +295,7 @@ export class SdPopupExport {
283
295
  ngAfterViewInit() {
284
296
  }
285
297
  }
286
- _getExportableColumns = new WeakMap(), _getExportableGroups = new WeakMap(), _initTemplate = new WeakMap();
298
+ _getExportableColumns = new WeakMap(), _getExportableGroups = new WeakMap(), _getExportColumns = new WeakMap(), _initTemplate = new WeakMap();
287
299
  SdPopupExport.decorators = [
288
300
  { type: Component, args: [{
289
301
  selector: 'sd-popup-export',
@@ -306,4 +318,4 @@ SdPopupExport.propDecorators = {
306
318
  _gridOption: [{ type: Input, args: ['gridOption',] }],
307
319
  configuration: [{ type: Input }]
308
320
  };
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlySixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBSS9CLE9BQU8sRUFBZ0IsZUFBZSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVMzQyxNQUFNLE9BQU8sYUFBYTtJQStFeEIsWUFDVSxHQUFzQixFQUN0QixjQUFnQyxFQUNoQyxhQUE4QixFQUM5QixhQUE4QixFQUM5QixnQkFBb0M7UUFKcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQWxGOUMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFFN0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFJdkIsYUFBUSxHQUVKLEVBQUUsQ0FBQztRQUNQLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBR2pCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBc0UsQ0FBQztRQUMxRyxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFtQnpCLGdDQUF3QixHQUFxQixFQUFFOztZQUM3QyxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsUUFBQyxDQUFDLENBQUMsTUFBTSwwQ0FBRSxRQUFRLENBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7O2dCQUN4RSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO29CQUMzQixPQUFPO2lCQUNSO2dCQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQzlCLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQUMsT0FBQSxRQUFDLENBQUMsQ0FBQyxNQUFNLDBDQUFFLFFBQVEsQ0FBQSxDQUFBLEVBQUEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQ3RFLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ2hDLE9BQU87eUJBQ1I7d0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUIsQ0FBQyxFQUFFO29CQUNILE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtvQkFDbEMsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBQyxPQUFBLFFBQUMsQ0FBQyxDQUFDLE1BQU0sMENBQUUsUUFBUSxDQUFBLENBQUEsRUFBQSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDdEUsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsT0FBTzt5QkFDUjt3QkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM1QixDQUFDLEVBQUU7b0JBQ0gsT0FBTztpQkFDUjtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQyxhQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSwwQ0FBRSxPQUFPLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsUUFBQyxDQUFDLENBQUMsTUFBTSwwQ0FBRSxRQUFRLENBQUEsQ0FBQSxFQUFBLE1BQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztnQkFDMUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLEVBQUE7UUFFRCwrQkFBdUIsR0FBRyxFQUFFOztZQUMxQixPQUFPLG1CQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsTUFBTSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsRUFBRTtvQkFDdEMsT0FBTyxVQUFVLEVBQUUsQ0FBQztpQkFDckI7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxNQUFLLEVBQUUsQ0FBQztRQUNYLENBQUMsRUFBQTtRQWdCRCxTQUFJLEdBQUcsR0FBUyxFQUFFOztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxpQkFBSSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLGVBQWUsQ0FBQSxFQUFFO2dCQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QjtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUEsQ0FBQTtRQUVELGtCQUFhLEdBQUcsQ0FBQyxRQUFpQixLQUFLLEVBQUUsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDM0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlDQUN4RCxDQUFDLEtBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQ25ELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztxQkFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDZixJQUFJLEVBQUUsSUFBSTtvQkFDVixPQUFPO29CQUNQLEtBQUs7aUJBQ04sQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ2YsSUFBSSxFQUFFLElBQUk7b0JBQ1YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixLQUFLO2lCQUNOLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFBO1FBR0QsY0FBUyxHQUFHLENBQU8sUUFBZ0IsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSzthQUNOLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFBLENBQUE7UUFFRCx3QkFBZ0IsQ0FBTyxRQUFpQixFQUFFLEVBQUU7O1lBQzFDLE1BQU0sTUFBTSxHQUlOLEVBQUUsQ0FBQztZQUNULElBQUksS0FBSyxDQUFDLE9BQU8sYUFBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNsRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDakQsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTt3QkFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQztnQ0FDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQ0FDbEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzZCQUNyQixDQUFDLENBQUM7eUJBQ0o7NkJBQU07NEJBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQztnQ0FDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0NBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTs2QkFDckIsQ0FBQyxDQUFDO3lCQUNKO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDL0MsUUFBUSxFQUFFLFFBQVEsaUJBQUksSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxRQUFRLENBQUE7Z0JBQ3ZELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsTUFBTTthQUNQLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQSxFQUFBO1FBRUQscUJBQWdCLEdBQUcsR0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsTUFBTSxpREFBQSxJQUFJLENBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFBLENBQUE7UUFFRCw4QkFBeUIsR0FBRyxDQUFPLFFBQWlCLEVBQUUsRUFBRTs7WUFDdEQsTUFBTSxNQUFNLEdBSU4sRUFBRSxDQUFDO1lBQ1QsSUFBSSxLQUFLLENBQUMsT0FBTyxhQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2xELEtBQUssTUFBTSxLQUFLLGdCQUFJLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxFQUFFO29CQUNuRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO3dCQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDO2dDQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dDQUNsQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07NkJBQ3JCLENBQUMsQ0FBQzt5QkFDSjs2QkFBTTs0QkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDO2dDQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRTtnQ0FDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzZCQUNyQixDQUFDLENBQUM7eUJBQ0o7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDO2dCQUNyRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsUUFBUSxFQUFFO29CQUNSLFFBQVEsRUFBRSxRQUFRLGlCQUFJLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsUUFBUSxDQUFBO29CQUN2RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekQsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLFFBQUUsSUFBSSxDQUFDLGFBQWEsMENBQUUsSUFBSTthQUNoQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUEsQ0FBQTtRQUVELGFBQVEsR0FBRyxDQUFDLElBQWtCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJO2dCQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQTtRQUVELG1CQUFjLEdBQUcsR0FBUyxFQUFFOztZQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO2dCQUNuRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSyxRQUFFLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUk7Z0JBQy9CLFNBQVMsY0FBRSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLFVBQVU7YUFDL0MsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQSxDQUFBO1FBRUQsZUFBVSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7O2dCQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztvQkFDNUIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO29CQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsS0FBSyxFQUFFLE9BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsSUFBSSxLQUFJLElBQUk7aUJBQ3hDLENBQUMsQ0FBQztnQkFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUE7UUFFRCxtQkFBYyxHQUFHLEdBQVMsRUFBRTs7WUFDMUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzdCLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzdDLElBQUk7Z0JBQ0Ysc0JBQUksSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxVQUFVLG1EQUFHLFFBQVEsR0FBRztvQkFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxhQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNqRixPQUFPO2lCQUNSO2dCQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUU7b0JBQ3BCLE1BQU0sSUFBSSxHQUFpQjt3QkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO3dCQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7cUJBQzFCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO29CQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUMxQjthQUNGO29CQUFTO2dCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUEsQ0FBQTtRQUVELGtCQUFhLEdBQUcsR0FBRyxFQUFFOztZQUNuQixJQUFJLENBQUMsU0FBUyxtQkFBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxlQUFlLDBDQUFFLFFBQVEsQ0FBQyxDQUFDLDJDQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QyxNQUFNLEtBQUssR0FBRywyQ0FBMkMsQ0FBQztZQUMxRCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7YUFDckQ7WUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO2dCQUNuQixPQUFPLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7YUFDN0U7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQTtJQXJORyxDQUFDO0lBbkVMLElBQXlCLFdBQVcsQ0FBQyxNQUE0QjtRQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLHlEQUFBLElBQUksQ0FBd0IsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLHdEQUFBLElBQUksQ0FBdUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBWSxHQUFHOztRQUNiLE1BQU0sTUFBTSxHQUFHLHNDQUFzQyxDQUFDO1FBQ3RELElBQUksY0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLEdBQUcsQ0FBQSxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQztZQUNWLE1BQU07WUFDTixHQUFHLGNBQUUsSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxHQUFHO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFzREQsUUFBUTtJQUNSLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQzs7OztZQWpHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IseXpMQUE0QztnQkFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE3QmtGLGlCQUFpQjtZQVNsRyxnQkFBZ0I7WUFVSyxlQUFlO1lBZHBDLGVBQWU7WUFRZixrQkFBa0I7OztvQkF1QmpCLFNBQVMsU0FBQyxPQUFPO3lCQUNqQixTQUFTLFNBQUMsWUFBWTtxQkFRdEIsTUFBTTswQkFHTixLQUFLLFNBQUMsWUFBWTs0QkFLbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZE5vdGlmeVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTG9hZGluZ1NlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFRyYW5zbGF0ZVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydFNlcnZpY2UsIFNkRXhwb3J0Q29sdW1uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZEdyb3VwRXhwb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtcG9wdXAtZXhwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wb3B1cC1leHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RQb3B1cEV4cG9ydCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb247XHJcbiAgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSA9IFtdO1xyXG4gIGdyb3VwczogU2RHcm91cEV4cG9ydFtdID0gW107XHJcbiAgdGVtcGxhdGVOYW1lOiBzdHJpbmc7XHJcbiAgZW5hYmxlQ3JlYXRpbmcgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpc3RHcm91cHMnKSBsaXN0R3JvdXBzOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG5cclxuICBzZWxlY3RlZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gIH0gPSB7fTtcclxuICBmaWxlczogU2RFeHBvcnRGaWxlW10gPSBbXTtcclxuICBzZWxlY3RlZEdyb3VwOiBTZEdyb3VwRXhwb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgZXhwb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpbGU6IFNkRXhwb3J0RmlsZSwgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSwgaXNDU1Y/OiBib29sZWFuIH0+KCk7XHJcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICBASW5wdXQoJ2dyaWRPcHRpb24nKSBzZXQgX2dyaWRPcHRpb24ob3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbikge1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy4jZ2V0RXhwb3J0YWJsZUNvbHVtbnMoKTtcclxuICAgIHRoaXMuZ3JvdXBzID0gdGhpcy4jZ2V0RXhwb3J0YWJsZUdyb3VwcygpO1xyXG4gIH1cclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uOiBTZEdyaWRDb25maWd1cmF0aW9uUmVzdWx0O1xyXG4gIHByaXZhdGUgZ2V0IGtleSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJlZml4ID0gJzkzODg5ZTc4LWY5NzEtNGExZC04YzczLWZlMjMyMWFmOTIzMyc7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5rZXkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGFzaCh7XHJcbiAgICAgIHByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8ua2V5XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICNnZXRFeHBvcnRhYmxlQ29sdW1ucyA9ICgpOiBTZEV4cG9ydENvbHVtbltdID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgIGNvbHVtbi5jaGlsZHJlbj8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbi1jb2wnKSB7XHJcbiAgICAgICAgY29sdW1uLmNoaWxkcmVuPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKS5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gWy4uLmNvbHVtbnMsIC4uLih0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5jb2x1bW5zPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKSB8fCBbXSldLm1hcChlID0+ICh7XHJcbiAgICAgIGZpZWxkOiBlLmZpZWxkLFxyXG4gICAgICB0aXRsZTogZS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IGUuZGVzY3JpcHRpb24sXHJcbiAgICAgIHdpZHRoOiBlLndpZHRoXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RXhwb3J0YWJsZUdyb3VwcyA9ICgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZ3JvdXBzPy5maWx0ZXIoZSA9PiB7XHJcbiAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSBlLnBlcm1pc3Npb247XHJcbiAgICAgIGlmICh0eXBlb2YgKHBlcm1pc3Npb24pID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb24oKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcGVybWlzc2lvbjtcclxuICAgIH0pIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBTZExvYWRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBTZEV4cG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmtleSkge1xyXG4gICAgICB0aGlzLmV4cG9ydERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZ3JvdXBzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uaGlkZU15VGVtcGxhdGVzKSB7XHJcbiAgICAgIHRoaXMubG9hZEZpbGVzKHRoaXMuZ3JvdXBzWzBdLmNvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkRmlsZXMobnVsbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XHJcbiAgICB0aGlzLm1vZGFsLm9wZW4oKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydERlZmF1bHQgPSAoaXNDU1Y6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbikge1xyXG4gICAgICBjb25zdCB7IGZpcnN0Q29sdW1ucywgc2Vjb25kQ29sdW1ucyB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgICBjb25zdCBjb2x1bW5zID0gWy4uLmZpcnN0Q29sdW1ucywgLi4uc2Vjb25kQ29sdW1uc10ubWFwKGUgPT4gKHtcclxuICAgICAgICAuLi5lLFxyXG4gICAgICAgIGRhdGE6IHRoaXMuY29sdW1ucy5maW5kKGUxID0+IGUxLmZpZWxkID09PSBlLmZpZWxkKVxyXG4gICAgICB9KSkuZmlsdGVyKGUgPT4gISFlLmRhdGEpXHJcbiAgICAgICAgLm1hcChlID0+IGUuZGF0YSk7XHJcbiAgICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgY29sdW1ucyxcclxuICAgICAgICBpc0NTVlxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGlzQ1NWXHJcbiAgICAgIH0pO1xyXG4gICAgfSAgICAgIFxyXG4gIH1cclxuXHJcblxyXG4gIGxvYWRGaWxlcyA9IGFzeW5jIChncm91cDogc3RyaW5nID0gbnVsbCkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwID0gdGhpcy5ncm91cHMuZmluZChlID0+IGUuY29kZSA9PT0gZ3JvdXApO1xyXG4gICAgdGhpcy5maWxlcyA9IGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5maWxlc0luRm9sZGVyKHtcclxuICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgZ3JvdXBcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAjaW5pdFRlbXBsYXRlID0gYXN5bmMgKGZpbGVOYW1lPzogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICBpdGVtczogYW55W10sXHJcbiAgICAgIGZpZWxkczogc3RyaW5nW11cclxuICAgIH1bXSA9IFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0LnNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRlbXBsYXRlKHtcclxuICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZSxcclxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzaGVldHNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGF3YWl0IHRoaXMuI2luaXRUZW1wbGF0ZSgpLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQW5kVXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgICAgZmllbGRzOiBzdHJpbmdbXVxyXG4gICAgfVtdID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSh7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgIHRlbXBsYXRlOiB7XHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZSxcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMuZmlsdGVyKGUgPT4gdGhpcy5zZWxlY3RlZFtlLmZpZWxkXSksXHJcbiAgICAgICAgc2hlZXRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGdyb3VwOiB0aGlzLnNlbGVjdGVkR3JvdXA/LmNvZGVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FeHBvcnQgPSAoZmlsZTogU2RFeHBvcnRGaWxlKSA9PiB7XHJcbiAgICB0aGlzLmV4cG9ydC5lbWl0KHtcclxuICAgICAgZmlsZSxcclxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS51cGxvYWRUZW1wbGF0ZSh7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgIGdyb3VwOiB0aGlzLnNlbGVjdGVkR3JvdXA/LmNvZGUsXHJcbiAgICAgIHZhbGlkYXRvcjogdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnZhbGlkYXRvcnNcclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCBmaWxlXTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmlsZSA9IChmaWxlOiBTZEV4cG9ydEZpbGUpID0+IHtcclxuICAgIHRoaXMubm90aWZ5U2VydmljZS5jb25maXJtKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ1JlbW92ZSB0ZW1wbGF0ZScpKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLnJlbW92ZUZpbGUoe1xyXG4gICAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGUuZmlsZU5hbWUsXHJcbiAgICAgICAgZ3JvdXA6IHRoaXMuc2VsZWN0ZWRHcm91cD8uY29kZSB8fCBudWxsXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBpZHggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XHJcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlc107XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jb2x1bW5zLnNvbWUoZSA9PiB0aGlzLnNlbGVjdGVkW2UuZmllbGRdKSkge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcodHJhbnNsYXRlKCdQbGVhc2Ugc2VsZWN0IGNvbHVtbnMnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy50ZW1wbGF0ZU5hbWUgKyAnLnhsc3gnO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py52YWxpZGF0b3JzPy4oZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py52YWxpZGF0b3JzKGZpbGVOYW1lKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVBbmRVcGxvYWRUZW1wbGF0ZShmaWxlTmFtZSk7XHJcbiAgICAgIGlmIChyZXN1bHQ/LmZpbGVQYXRoKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZTogU2RFeHBvcnRGaWxlID0ge1xyXG4gICAgICAgICAgZmlsZVBhdGg6IHJlc3VsdC5maWxlUGF0aCxcclxuICAgICAgICAgIGZpbGVOYW1lOiByZXN1bHQuZmlsZU5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMub25FeHBvcnQoZmlsZSk7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZU5hbWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZW5hYmxlQ3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXMsIGZpbGVdO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUdyb3VwID0gKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkRmlsZXModGhpcy5saXN0R3JvdXBzPy5zZWxlY3RlZE9wdGlvbnM/LnNlbGVjdGVkWzBdPy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0b3JUZW1wbGF0ZU5hbWUgPSAodmFsOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICBjb25zdCByZWdleCA9IC9eW0EtWmEtejAtOSBfXSpbQS1aYS16MC05XVtBLVphLXowLTkgX10qJC87XHJcbiAgICBpZiAoIXZhbCkge1xyXG4gICAgICByZXR1cm4gdHJhbnNsYXRlKCdQbGVhc2UgZW50ZXIgeW91ciB0ZW1wbGF0ZSBuYW1lJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsLmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1RlbXBsYXRlIG5hbWUgaXMgdG9vIGxvbmcnKTtcclxuICAgIH1cclxuICAgIGlmICghcmVnZXgudGVzdCh2YWwpKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1RlbXBsYXRlIG5hbWUgb25seSBjb250YWlucyBsZXR0ZXJzLCBudW1iZXJzIGFuZCBzcGFjZXMnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlySixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBSS9CLE9BQU8sRUFBZ0IsZUFBZSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVMzQyxNQUFNLE9BQU8sYUFBYTtJQStFeEIsWUFDVSxHQUFzQixFQUN0QixjQUFnQyxFQUNoQyxhQUE4QixFQUM5QixhQUE4QixFQUM5QixnQkFBb0M7UUFKcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQWxGOUMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFFN0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFJdkIsYUFBUSxHQUVKLEVBQUUsQ0FBQztRQUNQLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBR2pCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBdUYsQ0FBQztRQUMzSCxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFtQnpCLGdDQUF3QixHQUFxQixFQUFFOztZQUM3QyxNQUFNLE9BQU8sR0FBcUIsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsUUFBQyxDQUFDLENBQUMsTUFBTSwwQ0FBRSxRQUFRLENBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7O2dCQUN4RSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO29CQUMzQixPQUFPO2lCQUNSO2dCQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQzlCLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQUMsT0FBQSxRQUFDLENBQUMsQ0FBQyxNQUFNLDBDQUFFLFFBQVEsQ0FBQSxDQUFBLEVBQUEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQ3RFLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ2hDLE9BQU87eUJBQ1I7d0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDNUIsQ0FBQyxFQUFFO29CQUNILE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtvQkFDbEMsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBQyxPQUFBLFFBQUMsQ0FBQyxDQUFDLE1BQU0sMENBQUUsUUFBUSxDQUFBLENBQUEsRUFBQSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDdEUsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsT0FBTzt5QkFDUjt3QkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM1QixDQUFDLEVBQUU7b0JBQ0gsT0FBTztpQkFDUjtnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQyxhQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSwwQ0FBRSxPQUFPLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsUUFBQyxDQUFDLENBQUMsTUFBTSwwQ0FBRSxRQUFRLENBQUEsQ0FBQSxFQUFBLE1BQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztnQkFDMUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLEVBQUE7UUFFRCwrQkFBdUIsR0FBRyxFQUFFOztZQUMxQixPQUFPLG1CQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsTUFBTSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFVBQVUsRUFBRTtvQkFDdEMsT0FBTyxVQUFVLEVBQUUsQ0FBQztpQkFDckI7Z0JBQ0QsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxNQUFLLEVBQUUsQ0FBQztRQUNYLENBQUMsRUFBQTtRQWdCRCxTQUFJLEdBQUcsR0FBUyxFQUFFOztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxpQkFBSSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLGVBQWUsQ0FBQSxFQUFFO2dCQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QjtZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUEsQ0FBQTtRQUVELDRCQUFvQixHQUFHLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQzNELE9BQU8sQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlDQUMvQyxDQUFDLEtBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQ25ELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztxQkFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQjtRQUNILENBQUMsRUFBQTtRQUVELGtCQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNmLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRSxxREFBQSxJQUFJLENBQW9CO2dCQUNqQyxLQUFLLEVBQUUsS0FBSzthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUUscURBQUEsSUFBSSxDQUFvQjtnQkFDakMsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUE7UUFFRCxjQUFTLEdBQUcsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLHFEQUFBLElBQUksQ0FBb0I7Z0JBQ2pDLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsY0FBUyxHQUFHLENBQU8sUUFBZ0IsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUNsRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSzthQUNOLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFBLENBQUE7UUFFRCx3QkFBZ0IsQ0FBTyxRQUFpQixFQUFFLEVBQUU7O1lBQzFDLE1BQU0sTUFBTSxHQUlOLEVBQUUsQ0FBQztZQUNULElBQUksS0FBSyxDQUFDLE9BQU8sYUFBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNsRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDakQsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTt3QkFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQztnQ0FDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQ0FDbEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzZCQUNyQixDQUFDLENBQUM7eUJBQ0o7NkJBQU07NEJBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQztnQ0FDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0NBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTs2QkFDckIsQ0FBQyxDQUFDO3lCQUNKO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDL0MsUUFBUSxFQUFFLFFBQVEsaUJBQUksSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxRQUFRLENBQUE7Z0JBQ3ZELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsTUFBTTthQUNQLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQSxFQUFBO1FBRUQscUJBQWdCLEdBQUcsR0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsTUFBTSxpREFBQSxJQUFJLENBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFBLENBQUE7UUFFRCw4QkFBeUIsR0FBRyxDQUFPLFFBQWlCLEVBQUUsRUFBRTs7WUFDdEQsTUFBTSxNQUFNLEdBSU4sRUFBRSxDQUFDO1lBQ1QsSUFBSSxLQUFLLENBQUMsT0FBTyxhQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2xELEtBQUssTUFBTSxLQUFLLGdCQUFJLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxFQUFFO29CQUNuRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO3dCQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDO2dDQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dDQUNsQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07NkJBQ3JCLENBQUMsQ0FBQzt5QkFDSjs2QkFBTTs0QkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDO2dDQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRTtnQ0FDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNOzZCQUNyQixDQUFDLENBQUM7eUJBQ0o7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDO2dCQUNyRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsUUFBUSxFQUFFO29CQUNSLFFBQVEsRUFBRSxRQUFRLGlCQUFJLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsUUFBUSxDQUFBO29CQUN2RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekQsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLFFBQUUsSUFBSSxDQUFDLGFBQWEsMENBQUUsSUFBSTthQUNoQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUEsQ0FBQTtRQUVELGFBQVEsR0FBRyxDQUFDLElBQWtCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJO2dCQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQTtRQUVELG1CQUFjLEdBQUcsR0FBUyxFQUFFOztZQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO2dCQUNuRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsS0FBSyxRQUFFLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUk7Z0JBQy9CLFNBQVMsY0FBRSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLFVBQVU7YUFDL0MsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQSxDQUFBO1FBRUQsZUFBVSxHQUFHLENBQUMsSUFBa0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7O2dCQUN2RixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztvQkFDNUIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO29CQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsS0FBSyxFQUFFLE9BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsSUFBSSxLQUFJLElBQUk7aUJBQ3hDLENBQUMsQ0FBQztnQkFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUE7UUFFRCxtQkFBYyxHQUFHLEdBQVMsRUFBRTs7WUFDMUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzdCLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1lBQzdDLElBQUk7Z0JBQ0Ysc0JBQUksSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxVQUFVLG1EQUFHLFFBQVEsR0FBRztvQkFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxhQUFDLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sMENBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNqRixPQUFPO2lCQUNSO2dCQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUU7b0JBQ3BCLE1BQU0sSUFBSSxHQUFpQjt3QkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO3dCQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7cUJBQzFCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO29CQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUMxQjthQUNGO29CQUFTO2dCQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUEsQ0FBQTtRQUVELGtCQUFhLEdBQUcsR0FBRyxFQUFFOztZQUNuQixJQUFJLENBQUMsU0FBUyxtQkFBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxlQUFlLDBDQUFFLFFBQVEsQ0FBQyxDQUFDLDJDQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQTtRQUVELDBCQUFxQixHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QyxNQUFNLEtBQUssR0FBRywyQ0FBMkMsQ0FBQztZQUMxRCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU8sU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7YUFDckQ7WUFDRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO2dCQUNuQixPQUFPLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7YUFDN0U7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQTtJQW5PRyxDQUFDO0lBbkVMLElBQXlCLFdBQVcsQ0FBQyxNQUE0QjtRQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLHlEQUFBLElBQUksQ0FBd0IsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLHdEQUFBLElBQUksQ0FBdUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBWSxHQUFHOztRQUNiLE1BQU0sTUFBTSxHQUFHLHNDQUFzQyxDQUFDO1FBQ3RELElBQUksY0FBQyxJQUFJLENBQUMsVUFBVSwwQ0FBRSxNQUFNLDBDQUFFLEdBQUcsQ0FBQSxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQztZQUNWLE1BQU07WUFDTixHQUFHLGNBQUUsSUFBSSxDQUFDLFVBQVUsMENBQUUsTUFBTSwwQ0FBRSxHQUFHO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFzREQsUUFBUTtJQUNSLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQzs7OztZQWpHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IseXpMQUE0QztnQkFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE3QmtGLGlCQUFpQjtZQVNsRyxnQkFBZ0I7WUFVSyxlQUFlO1lBZHBDLGVBQWU7WUFRZixrQkFBa0I7OztvQkF1QmpCLFNBQVMsU0FBQyxPQUFPO3lCQUNqQixTQUFTLFNBQUMsWUFBWTtxQkFRdEIsTUFBTTswQkFHTixLQUFLLFNBQUMsWUFBWTs0QkFLbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZE5vdGlmeVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTG9hZGluZ1NlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFRyYW5zbGF0ZVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydFNlcnZpY2UsIFNkRXhwb3J0Q29sdW1uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZEdyb3VwRXhwb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtcG9wdXAtZXhwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wb3B1cC1leHBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RQb3B1cEV4cG9ydCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb247XHJcbiAgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSA9IFtdO1xyXG4gIGdyb3VwczogU2RHcm91cEV4cG9ydFtdID0gW107XHJcbiAgdGVtcGxhdGVOYW1lOiBzdHJpbmc7XHJcbiAgZW5hYmxlQ3JlYXRpbmcgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpc3RHcm91cHMnKSBsaXN0R3JvdXBzOiBNYXRTZWxlY3Rpb25MaXN0O1xyXG5cclxuICBzZWxlY3RlZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gIH0gPSB7fTtcclxuICBmaWxlczogU2RFeHBvcnRGaWxlW10gPSBbXTtcclxuICBzZWxlY3RlZEdyb3VwOiBTZEdyb3VwRXhwb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgZXhwb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpbGU6IFNkRXhwb3J0RmlsZSwgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSwgaXNDU1Y/OiBib29sZWFuLCBpc1Jhdz86IGJvb2xlYW4gfT4oKTtcclxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gIEBJbnB1dCgnZ3JpZE9wdGlvbicpIHNldCBfZ3JpZE9wdGlvbihvcHRpb246IFNkR3JpZE1hdGVyaWFsT3B0aW9uKSB7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24gPSBvcHRpb247XHJcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLiNnZXRFeHBvcnRhYmxlQ29sdW1ucygpO1xyXG4gICAgdGhpcy5ncm91cHMgPSB0aGlzLiNnZXRFeHBvcnRhYmxlR3JvdXBzKCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb246IFNkR3JpZENvbmZpZ3VyYXRpb25SZXN1bHQ7XHJcbiAgcHJpdmF0ZSBnZXQga2V5KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwcmVmaXggPSAnOTM4ODllNzgtZjk3MS00YTFkLThjNzMtZmUyMzIxYWY5MjMzJztcclxuICAgIGlmICghdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmtleSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBoYXNoKHtcclxuICAgICAgcHJlZml4LFxyXG4gICAgICBrZXk6IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5rZXlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgI2dldEV4cG9ydGFibGVDb2x1bW5zID0gKCk6IFNkRXhwb3J0Q29sdW1uW10gPT4ge1xyXG4gICAgY29uc3QgY29sdW1uczogU2RFeHBvcnRDb2x1bW5bXSA9IFtdO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMuZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgY29sdW1uLmNoaWxkcmVuPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKS5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuLWNvbCcpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29sdW1ucy5wdXNoKGNoaWxkQ29sdW1uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBbLi4uY29sdW1ucywgLi4uKHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/LmNvbHVtbnM/LmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpIHx8IFtdKV0ubWFwKGUgPT4gKHtcclxuICAgICAgZmllbGQ6IGUuZmllbGQsXHJcbiAgICAgIHRpdGxlOiBlLnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZS5kZXNjcmlwdGlvbixcclxuICAgICAgd2lkdGg6IGUud2lkdGhcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gICNnZXRFeHBvcnRhYmxlR3JvdXBzID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5ncm91cHM/LmZpbHRlcihlID0+IHtcclxuICAgICAgY29uc3QgcGVybWlzc2lvbiA9IGUucGVybWlzc2lvbjtcclxuICAgICAgaWYgKHR5cGVvZiAocGVybWlzc2lvbikgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbigpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uO1xyXG4gICAgfSkgfHwgW107XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IFNkRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG9wZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID09PSAxICYmIHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5oaWRlTXlUZW1wbGF0ZXMpIHtcclxuICAgICAgdGhpcy5sb2FkRmlsZXModGhpcy5ncm91cHNbMF0uY29kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRGaWxlcyhudWxsKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgI2dldEV4cG9ydENvbHVtbnMgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHsgZmlyc3RDb2x1bW5zLCBzZWNvbmRDb2x1bW5zIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICAgIHJldHVybiBbLi4uZmlyc3RDb2x1bW5zLCAuLi5zZWNvbmRDb2x1bW5zXS5tYXAoZSA9PiAoe1xyXG4gICAgICAgIC4uLmUsXHJcbiAgICAgICAgZGF0YTogdGhpcy5jb2x1bW5zLmZpbmQoZTEgPT4gZTEuZmllbGQgPT09IGUuZmllbGQpXHJcbiAgICAgIH0pKS5maWx0ZXIoZSA9PiAhIWUuZGF0YSlcclxuICAgICAgICAubWFwKGUgPT4gZS5kYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbnM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREZWZhdWx0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5leHBvcnQuZW1pdCh7XHJcbiAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuI2dldEV4cG9ydENvbHVtbnMoKSxcclxuICAgICAgaXNDU1Y6IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENTViA9ICgpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCksXHJcbiAgICAgIGlzQ1NWOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFJhdyA9ICgpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCksXHJcbiAgICAgIGlzUmF3OiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRGaWxlcyA9IGFzeW5jIChncm91cDogc3RyaW5nID0gbnVsbCkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwID0gdGhpcy5ncm91cHMuZmluZChlID0+IGUuY29kZSA9PT0gZ3JvdXApO1xyXG4gICAgdGhpcy5maWxlcyA9IGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5maWxlc0luRm9sZGVyKHtcclxuICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgZ3JvdXBcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAjaW5pdFRlbXBsYXRlID0gYXN5bmMgKGZpbGVOYW1lPzogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICBpdGVtczogYW55W10sXHJcbiAgICAgIGZpZWxkczogc3RyaW5nW11cclxuICAgIH1bXSA9IFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLmdyaWRPcHRpb24uZXhwb3J0LnNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVRlbXBsYXRlKHtcclxuICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZSxcclxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzaGVldHNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGF3YWl0IHRoaXMuI2luaXRUZW1wbGF0ZSgpLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQW5kVXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgICAgZmllbGRzOiBzdHJpbmdbXVxyXG4gICAgfVtdID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSh7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgIHRlbXBsYXRlOiB7XHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lIHx8IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5maWxlTmFtZSxcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMuZmlsdGVyKGUgPT4gdGhpcy5zZWxlY3RlZFtlLmZpZWxkXSksXHJcbiAgICAgICAgc2hlZXRzXHJcbiAgICAgIH0sXHJcbiAgICAgIGdyb3VwOiB0aGlzLnNlbGVjdGVkR3JvdXA/LmNvZGVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FeHBvcnQgPSAoZmlsZTogU2RFeHBvcnRGaWxlKSA9PiB7XHJcbiAgICB0aGlzLmV4cG9ydC5lbWl0KHtcclxuICAgICAgZmlsZSxcclxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS51cGxvYWRUZW1wbGF0ZSh7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgIGdyb3VwOiB0aGlzLnNlbGVjdGVkR3JvdXA/LmNvZGUsXHJcbiAgICAgIHZhbGlkYXRvcjogdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnZhbGlkYXRvcnNcclxuICAgIH0pO1xyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCBmaWxlXTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRmlsZSA9IChmaWxlOiBTZEV4cG9ydEZpbGUpID0+IHtcclxuICAgIHRoaXMubm90aWZ5U2VydmljZS5jb25maXJtKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ1JlbW92ZSB0ZW1wbGF0ZScpKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLnJlbW92ZUZpbGUoe1xyXG4gICAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgICAgZmlsZU5hbWU6IGZpbGUuZmlsZU5hbWUsXHJcbiAgICAgICAgZ3JvdXA6IHRoaXMuc2VsZWN0ZWRHcm91cD8uY29kZSB8fCBudWxsXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBpZHggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XHJcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlc107XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jb2x1bW5zLnNvbWUoZSA9PiB0aGlzLnNlbGVjdGVkW2UuZmllbGRdKSkge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcodHJhbnNsYXRlKCdQbGVhc2Ugc2VsZWN0IGNvbHVtbnMnKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy50ZW1wbGF0ZU5hbWUgKyAnLnhsc3gnO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py52YWxpZGF0b3JzPy4oZmlsZU5hbWUpKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py52YWxpZGF0b3JzKGZpbGVOYW1lKSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVBbmRVcGxvYWRUZW1wbGF0ZShmaWxlTmFtZSk7XHJcbiAgICAgIGlmIChyZXN1bHQ/LmZpbGVQYXRoKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZTogU2RFeHBvcnRGaWxlID0ge1xyXG4gICAgICAgICAgZmlsZVBhdGg6IHJlc3VsdC5maWxlUGF0aCxcclxuICAgICAgICAgIGZpbGVOYW1lOiByZXN1bHQuZmlsZU5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMub25FeHBvcnQoZmlsZSk7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZU5hbWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZW5hYmxlQ3JlYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXMsIGZpbGVdO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUdyb3VwID0gKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkRmlsZXModGhpcy5saXN0R3JvdXBzPy5zZWxlY3RlZE9wdGlvbnM/LnNlbGVjdGVkWzBdPy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0b3JUZW1wbGF0ZU5hbWUgPSAodmFsOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICBjb25zdCByZWdleCA9IC9eW0EtWmEtejAtOSBfXSpbQS1aYS16MC05XVtBLVphLXowLTkgX10qJC87XHJcbiAgICBpZiAoIXZhbCkge1xyXG4gICAgICByZXR1cm4gdHJhbnNsYXRlKCdQbGVhc2UgZW50ZXIgeW91ciB0ZW1wbGF0ZSBuYW1lJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsLmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1RlbXBsYXRlIG5hbWUgaXMgdG9vIGxvbmcnKTtcclxuICAgIH1cclxuICAgIGlmICghcmVnZXgudGVzdCh2YWwpKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1RlbXBsYXRlIG5hbWUgb25seSBjb250YWlucyBsZXR0ZXJzLCBudW1iZXJzIGFuZCBzcGFjZXMnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=