asp-lib 1.0.39 → 1.0.41

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.
@@ -65,6 +65,9 @@ export class HeaderComponent {
65
65
  this.isAuth$.subscribe(isAuthenticated => {
66
66
  if (isAuthenticated) {
67
67
  this.checkResource();
68
+ if (!this.isMobile) {
69
+ this.checkResourceByRole();
70
+ }
68
71
  }
69
72
  else {
70
73
  window.open('/', '_self');
@@ -209,6 +212,25 @@ export class HeaderComponent {
209
212
  console.log(err);
210
213
  });
211
214
  }
215
+ checkResourceByRole() {
216
+ const path = this.getPath();
217
+ if (path != '/home') {
218
+ this.services.getResourcesByRoleUser(this.servicesConfig.baseUrl, path).subscribe((data) => {
219
+ if (data) {
220
+ if (data.load == false) {
221
+ window.open('/home', '_self');
222
+ }
223
+ }
224
+ else {
225
+ }
226
+ }, (err) => {
227
+ console.log(err);
228
+ });
229
+ }
230
+ }
231
+ getPath() {
232
+ return this.router.url.split('?')[0];
233
+ }
212
234
  getModules() {
213
235
  this.services.getModules(this.servicesConfig.baseUrl).subscribe((data) => {
214
236
  if (data.load) {
@@ -291,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
291
313
  }], lastOption: [{
292
314
  type: Output
293
315
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGtDQUFrQyxDQUFDO0FBSTFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBbUJ0QyxNQUFNLE9BQU8sZUFBZTtJQWlEMUIsWUFBb0IsUUFBeUIsRUFBUyxNQUFjO1FBQWhELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWhEM0QsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixVQUFLLEdBQVcsU0FBUyxDQUFDO1FBQzFCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGFBQVEsR0FBUyxFQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUNsQyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFtQjtZQUN4QyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFDTyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGdCQUFXLEdBQUcs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Q0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkcm9wZG93bkNvbXBhbmllc09wdGlvbnMsIGRyb3Bkb3duTm90aWZpY2F0aW9uT3B0aW9ucywgZHJvcGRvd25SZWNlbnRPcHRpb25zLCBtZW51RGF0YSB9IGZyb20gJy4uL2Fzc2V0cy9tZW51LWRhdGEvbWVudURhdGFUZXN0JztcclxuaW1wb3J0IHsgRGF0YSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU2VydmljZXNDb25maWcgfSBmcm9tICcuLi91dGlscy9tb2RlbHMvU2VydmljZXNDb25maWcnO1xyXG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2VzIH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZXMvU2VjdXJpdHlTZXJ2aWNlc0RlZmF1bHQnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duT3B0aW9ucyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHBhcmVudElkOiBhbnk7XHJcbiAgb3B0aW9uczogRHJvcGRvd25PcHRpb25DYXRlcmdvcnlbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93bk9wdGlvbkNhdGVyZ29yeSB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCcuL2hlYWRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGFwcExvZ286IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1lbnVEYXRhOiBEYXRhID0ge2NhdGVnb3JpZXM6IFtdfTtcclxuICBASW5wdXQoKSByZWNlbnRPcHRpb25zIDphbnkgPSBbXTtcclxuICBASW5wdXQoKSBjb21wYW5pZXMgOmFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIG1vZHVsZUxpc3Q6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGF1dG86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXJ2aWNlc0NvbmZpZzogU2VydmljZXNDb25maWcgPSB7XHJcbiAgICBiYXNlVXJsOiAnJ1xyXG4gIH07XHJcbiAgQElucHV0KCkgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcmV0dXJuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBtZW51TmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcmVjZW50TmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTsgIFxyXG4gIEBPdXRwdXQoKSBtb2R1bGVTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgbGFzdE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIFxyXG4gIGlzQXV0aCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCB1bmRlZmluZWQ7XHJcbiAgZHJvcGRvd25PcHRpb25zID0gZHJvcGRvd25SZWNlbnRPcHRpb25zO1xyXG4gIG5vdGlmaWNhdGlvbk9wdGlvbnMgPSBkcm9wZG93bk5vdGlmaWNhdGlvbk9wdGlvbnM7XHJcbiAgY29tcGFuaWVzRHJvcGRvd24gPSBkcm9wZG93bkNvbXBhbmllc09wdGlvbnM7XHJcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcclxuICBkcm9wZG93bk9wdGlvbnNNZW51OiBEcm9wZG93bk9wdGlvbnNbXSA9IFsgXHJcbiAgICB7XHJcbiAgICAgIGlkOiAwLFxyXG4gICAgICBsYWJlbDogJ0xvcmVtIElwc3VtJyxcclxuICAgICAgcGFyZW50SWQ6IG51bGwsXHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtY29uZmlndXJhdGlvbicgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtYnVzLWdhdmlvdGEnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLXNhdGVsaXRlJyB9LFxyXG4gICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogMCxcclxuICAgICAgbGFiZWw6ICdMb3JlbSBJcHN1bScsXHJcbiAgICAgIHBhcmVudElkOiBudWxsLFxyXG4gICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLXZpZGVvJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1ydXRlJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1jYWxlbmRhcicgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtZGFzaGJvYXJkJyB9LCAgXHJcbiAgICAgIF1cclxuICAgIH1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2VzOlNlY3VyaXR5U2VydmljZXMscHJpdmF0ZSByb3V0ZXI6IFJvdXRlcil7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgaWYodGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5pc0F1dGgkID0gdGhpcy5pc0F1dGgoKTtcclxuICAgICAgdGhpcy5pc0F1dGgkLnN1YnNjcmliZShpc0F1dGhlbnRpY2F0ZWQgPT4ge1xyXG4gICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tSZXNvdXJjZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB3aW5kb3cub3BlbignLycsICdfc2VsZicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7ICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0F1dGgoKXtcclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmlzQXV0aGVudGljYXRlZCh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnBpcGUoXHJcbiAgICAgIG1hcChyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgeyAgICAgICAgICBcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9wdGlvblNlbGVjdGVkKG9wdGlvbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgaWYoIXRoaXMuYXV0byl7XHJcbiAgICAgIHRoaXMucmVjZW50TmF2aWdhdGUuZW1pdChvcHRpb24pO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIG9uSXRlbUNsaWNrKHVybDogYW55KSB7XHJcbiAgICBpZighdGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5tZW51TmF2aWdhdGUuZW1pdCh1cmwpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGNvbnN0IHVybE9iaiA9IHVybC51cmxTZW5kO1xyXG4gICAgICBjb25zdCBldmVudCA9IHVybC5ldmVudDtcclxuICAgIFxyXG4gICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICBcclxuICAgICAgaWYodXJsT2JqLnVybCl7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5zYXZlSGlzdG9yeSh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwse29wdGlvbklkOiB1cmxPYmouaWR9KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1cmxPYmoubmV3ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5pc01vYmlsZSl7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld1dpbmRvdy5vcGVuZXIgPSBudWxsOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1dpbmRvdyA9IHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfYmxhbmsnKTtcclxuICAgICAgICAgICAgICAgIGlmIChuZXdXaW5kb3cpIHtcclxuICAgICAgICAgICAgICAgICAgbmV3V2luZG93Lm9wZW5lciA9IG51bGw7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZih0aGlzLmlzTW9iaWxlKXtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfc2VsZicpO1xyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsT2JqLnVybCwgJ19zZWxmJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLypcclxuICAgICAgdGhpcy5pbmJveFNlcnZpY2Uuc2F2ZUhpc3Rvcnkoe29wdGlvbklkOiB1cmxPYmouaWR9KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4geyAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgKi9cclxuICAgIH0gIFxyXG4gIH1cclxuXHJcbiAgYXJyb3dDbGljaygkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmKCF0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLnJldHVybkNsaWNrLmVtaXQoJGV2ZW50KTtcclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBvbkl0ZW1Nb2R1bGVTZWxlY3RlZChldmVudDogYW55KXtcclxuICAgIGlmKCF0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLm1vZHVsZVNlbGVjdC5lbWl0KGV2ZW50LmlkKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmN1cnJlbnRNb2R1bGUoZXZlbnQuaWQpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnZXRDb21wYW5pZXMoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0Q29tcGFuaWVzSW5mbyh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZihkYXRhLmxvYWQpe1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhYyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDQUMnKTtcclxuICAgICAgICAgICAgICBjb25zdCBjY2MgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ0NDJyk7XHJcbiAgICAgICAgICAgICAgaWYoY2FjICYmIGNjYyl7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmxvYWQuZm9yRWFjaCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGMuYWdlbmNpZXMuZm9yRWFjaCgoYTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoYS5hZ2VuY3lDb2RlID09IGNhYyAmJiBjLmNvbXBhbnlDb2RlID09IGNjYyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIHRoaXMuY29tcGFuaWVzID0gZGF0YS5sb2FkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SGlzdG9yeSgpe1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5nZXRIaXN0b3J5KHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIGlmKGRhdGEubG9hZCl7XHJcbiAgICAgICAgICAgIHRoaXMucmVjZW50T3B0aW9ucyA9IGRhdGEubG9hZDtcclxuICAgICAgICAgICAgaWYodGhpcy5yZWNlbnRPcHRpb25zLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibGFzdCBvcHRpb24gZW1pdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLmxhc3RPcHRpb24uZW1pdCh0aGlzLnJlY2VudE9wdGlvbnNbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5nZXRNb2R1bGVzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjaGVja1Jlc291cmNlKCl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLmdldFJlc291cmNlc0J5VXNlcih0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZihkYXRhLmxvYWQpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLmxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLmdldEhpc3RvcnkoKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRDb21wYW5pZXMoKTtcclxuICAgICAgICAgIH0gICAgICAgICAgXHJcbiAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldE1vZHVsZXMoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0TW9kdWxlcyh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxvYWQpIHtcclxuICAgICAgICAgIHRoaXMubW9kdWxlTGlzdCA9IGRhdGEubG9hZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucmVjZW50T3B0aW9ucyAmJiB0aGlzLnJlY2VudE9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYodGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpe1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb2R1bGUodGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZHVsZSh0aGlzLm1vZHVsZUxpc3RbMF0uaWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kdWxlKHRoaXMubW9kdWxlTGlzdFswXS5pZClcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8qXHJcbiAgICBpZiAodGhpcy5yZWNlbnREYXRhKSB7XHJcbiAgICAgIHRoaXMubW9kdWxlU2VsZWN0KHRoaXMucmVjZW50RGF0YVswXS5hcHBsaWNhdGlvbklkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCB0aGlzLmRyb3Bkb3duT3B0aW9uc01lbnUpXHJcbiAgICAgIC8vIGNvbnN0IGZpcnN0T3B0aW9uSWQgPSB0aGlzLmRyb3Bkb3duT3B0aW9uc01lbnU/LlswXT8uaWQ7XHJcbiAgICAgIC8vIGlmIChmaXJzdE9wdGlvbklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gICB0aGlzLm1vZHVsZVNlbGVjdChmaXJzdE9wdGlvbklkKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgKi9cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY3VycmVudE1vZHVsZShldmVudDogYW55KXtcclxuICAgIHRoaXMuc2VydmljZXMubWVudU1vZHVsZVNlbGVjdGVkKHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCxldmVudCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubG9hZCkge1xyXG4gICAgICAgICAgY29uc3QgbWVudURhdGEgPSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFxyXG4gICAgICAgICAgICAgIGRhdGEubG9hZFxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMubWVudURhdGEgPSBtZW51RGF0YTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGhlYWRlciBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCIgKG1lbnVJdGVtQ2xpY2spPVwibWVudUl0ZW1DbGlja1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbWVudS1kYXNoYm9hcmQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0JhY2tCdXR0b25cIiBjbGFzcz1cImhlYWRlci1idXR0b25cIiAoY2xpY2spPVwiYXJyb3dDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwibWVudS1hcnJvdy1sZWZ0XCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bGliLW1lbnUgY2xhc3M9XCJoZWFkZXItbWVudS1saWJcIiBbZGF0YV09XCJtZW51RGF0YVwiIFt0aGVtZV09XCJ0aGVtZVwiXHJcbiAgICAgIFtkcm9wZG93bk9wdGlvbnNdPVwibW9kdWxlTGlzdFwiIChtZW51SXRlbUNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIiAobW9kdWxlU2VsZWN0ZWQpPVwib25JdGVtTW9kdWxlU2VsZWN0ZWQoJGV2ZW50KVwiIFtpc01vYmlsZV09XCJpc01vYmlsZVwiPjwvbGliLW1lbnU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1sb2dvXCI+XHJcbiAgICA8c3BhbiBbY2xhc3NdPVwiYXBwTG9nb1wiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtcmVjZW50cy1jb250YWluZXJcIj5cclxuICAgICAgPGxpYi1yZWNlbnRzLWRyb3Bkb3duIFtvcHRpb25zXT1cInJlY2VudE9wdGlvbnNcIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPjwvbGliLXJlY2VudHMtZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPCEtLVxyXG4gICAgICA8bGliLW5vdGlmaWNhdGlvbnMgW29wdGlvbnNdPVwibm90aWZpY2F0aW9uT3B0aW9uc1wiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+PC9saWItbm90aWZpY2F0aW9ucz5cclxuICAgICAgLS0+XHJcbiAgICBcclxuXHJcbiAgICA8bGliLWNvbXBhbnktZHJvcGRvd24gW2NvbXBhbmllc109XCJjb21wYW5pZXNcIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPjwvbGliLWNvbXBhbnktZHJvcGRvd24+XHJcblxyXG4gICAgPGxpYi11c2VyLWRyb3Bkb3duIFtiYXNlVXJsXT1cInNlcnZpY2VzQ29uZmlnLmJhc2VVcmxcIiBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIj48L2xpYi11c2VyLWRyb3Bkb3duPlxyXG4gIDwvZGl2PlxyXG48L2hlYWRlcj4iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBWSxNQUFNLGtDQUFrQyxDQUFDO0FBSTFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBbUJ0QyxNQUFNLE9BQU8sZUFBZTtJQWlEMUIsWUFBb0IsUUFBeUIsRUFBUyxNQUFjO1FBQWhELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWhEM0QsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixVQUFLLEdBQVcsU0FBUyxDQUFDO1FBQzFCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGFBQVEsR0FBUyxFQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUNsQyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixtQkFBYyxHQUFtQjtZQUN4QyxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFDTyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGdCQUFXLEdBQUcs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RTtZQUNaLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDYixNQUFNLFFBQVEsR0FBRztvQkFDZixVQUFVLEVBQ1IsSUFBSSxDQUFDLElBQUk7aUJBQ1osQ0FBQTtnQkFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzthQUMxQjtpQkFBTTthQUNOO1FBQ0gsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7UUFFUixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBcFRVLGVBQWU7bUdBQWYsZUFBZSxtZkN6QjVCLG0xQ0E0QlM7OzRGREhJLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWTs0SEFLYixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRyb3Bkb3duQ29tcGFuaWVzT3B0aW9ucywgZHJvcGRvd25Ob3RpZmljYXRpb25PcHRpb25zLCBkcm9wZG93blJlY2VudE9wdGlvbnMsIG1lbnVEYXRhIH0gZnJvbSAnLi4vYXNzZXRzL21lbnUtZGF0YS9tZW51RGF0YVRlc3QnO1xyXG5pbXBvcnQgeyBEYXRhLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTZXJ2aWNlc0NvbmZpZyB9IGZyb20gJy4uL3V0aWxzL21vZGVscy9TZXJ2aWNlc0NvbmZpZyc7XHJcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZXMgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlcy9TZWN1cml0eVNlcnZpY2VzRGVmYXVsdCc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25PcHRpb25zIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgcGFyZW50SWQ6IGFueTtcclxuICBvcHRpb25zOiBEcm9wZG93bk9wdGlvbkNhdGVyZ29yeVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duT3B0aW9uQ2F0ZXJnb3J5IHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi4vYXNzZXRzL2ZvbnRzL3N0eWxlLmNzcycsICcuLi9hc3NldHMvdGhlbWUuc2NzcycsJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgYXBwTG9nbzogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBzaG93QmFja0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbWVudURhdGE6IERhdGEgPSB7Y2F0ZWdvcmllczogW119O1xyXG4gIEBJbnB1dCgpIHJlY2VudE9wdGlvbnMgOmFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGNvbXBhbmllcyA6YW55ID0gW107XHJcbiAgQElucHV0KCkgbW9kdWxlTGlzdDogYW55ID0gW107XHJcbiAgQElucHV0KCkgYXV0bzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2VzQ29uZmlnOiBTZXJ2aWNlc0NvbmZpZyA9IHtcclxuICAgIGJhc2VVcmw6ICcnXHJcbiAgfTtcclxuICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSByZXR1cm5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBtZW51SXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG1lbnVOYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSByZWNlbnROYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAgXHJcbiAgQE91dHB1dCgpIG1vZHVsZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBsYXN0T3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgXHJcbiAgaXNBdXRoJDogT2JzZXJ2YWJsZTxib29sZWFuPiB8IHVuZGVmaW5lZDtcclxuICBkcm9wZG93bk9wdGlvbnMgPSBkcm9wZG93blJlY2VudE9wdGlvbnM7XHJcbiAgbm90aWZpY2F0aW9uT3B0aW9ucyA9IGRyb3Bkb3duTm90aWZpY2F0aW9uT3B0aW9ucztcclxuICBjb21wYW5pZXNEcm9wZG93biA9IGRyb3Bkb3duQ29tcGFuaWVzT3B0aW9ucztcclxuICBzZWxlY3RlZE9wdGlvbjogYW55O1xyXG4gIGRyb3Bkb3duT3B0aW9uc01lbnU6IERyb3Bkb3duT3B0aW9uc1tdID0gWyBcclxuICAgIHtcclxuICAgICAgaWQ6IDAsXHJcbiAgICAgIGxhYmVsOiAnTG9yZW0gSXBzdW0nLFxyXG4gICAgICBwYXJlbnRJZDogbnVsbCxcclxuICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1jb25maWd1cmF0aW9uJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1idXMtZ2F2aW90YScgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtc2F0ZWxpdGUnIH0sXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiAwLFxyXG4gICAgICBsYWJlbDogJ0xvcmVtIElwc3VtJyxcclxuICAgICAgcGFyZW50SWQ6IG51bGwsXHJcbiAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICB7IGxhYmVsOiAnTG9yZW0gSXBzdW0nLCBpY29uOiAnYnJhc2lsaWEtdmlkZW8nIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLXJ1dGUnIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xvcmVtIElwc3VtJywgaWNvbjogJ2JyYXNpbGlhLWNhbGVuZGFyJyB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMb3JlbSBJcHN1bScsIGljb246ICdicmFzaWxpYS1kYXNoYm9hcmQnIH0sICBcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZXM6U2VjdXJpdHlTZXJ2aWNlcyxwcml2YXRlIHJvdXRlcjogUm91dGVyKXtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgXHJcbiAgICBpZih0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLmlzQXV0aCQgPSB0aGlzLmlzQXV0aCgpO1xyXG4gICAgICB0aGlzLmlzQXV0aCQuc3Vic2NyaWJlKGlzQXV0aGVudGljYXRlZCA9PiB7XHJcbiAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja1Jlc291cmNlKCk7XHJcbiAgICAgICAgICBpZighdGhpcy5pc01vYmlsZSl7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSZXNvdXJjZUJ5Um9sZSgpO1xyXG4gICAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgd2luZG93Lm9wZW4oJy8nLCAnX3NlbGYnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBdXRoKCl7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlcy5pc0F1dGhlbnRpY2F0ZWQodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5waXBlKFxyXG4gICAgICBtYXAocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgXHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPcHRpb25TZWxlY3RlZChvcHRpb246IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIGlmKCF0aGlzLmF1dG8pe1xyXG4gICAgICB0aGlzLnJlY2VudE5hdmlnYXRlLmVtaXQob3B0aW9uKTtcclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGljayh1cmw6IGFueSkge1xyXG4gICAgaWYoIXRoaXMuYXV0byl7XHJcbiAgICAgIHRoaXMubWVudU5hdmlnYXRlLmVtaXQodXJsKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zdCB1cmxPYmogPSB1cmwudXJsU2VuZDtcclxuICAgICAgY29uc3QgZXZlbnQgPSB1cmwuZXZlbnQ7XHJcbiAgICBcclxuICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgIGlmKHVybE9iai51cmwpe1xyXG4gICAgICAgIHRoaXMuc2VydmljZXMuc2F2ZUhpc3RvcnkodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsLHtvcHRpb25JZDogdXJsT2JqLmlkfSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodXJsT2JqLm5ldyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGlmKHRoaXMuaXNNb2JpbGUpe1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3V2luZG93ID0gd2luZG93Lm9wZW4odXJsT2JqLnVybCwgJ19ibGFuaycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXaW5kb3cgPSB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX2JsYW5rJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93KSB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld1dpbmRvdy5vcGVuZXIgPSBudWxsOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy5pc01vYmlsZSl7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmxPYmoudXJsLCAnX3NlbGYnKTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybE9iai51cmwsICdfc2VsZicpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8qXHJcbiAgICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnNhdmVIaXN0b3J5KHtvcHRpb25JZDogdXJsT2JqLmlkfSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHsgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgICovXHJcbiAgICB9ICBcclxuICB9XHJcblxyXG4gIGFycm93Q2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZighdGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5yZXR1cm5DbGljay5lbWl0KCRldmVudCk7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgb25JdGVtTW9kdWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSl7XHJcbiAgICBpZighdGhpcy5hdXRvKXtcclxuICAgICAgdGhpcy5tb2R1bGVTZWxlY3QuZW1pdChldmVudC5pZCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5jdXJyZW50TW9kdWxlKGV2ZW50LmlkKTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGFuaWVzKCl7XHJcbiAgICB0aGlzLnNlcnZpY2VzLmdldENvbXBhbmllc0luZm8odGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgaWYoZGF0YS5sb2FkKXtcclxuICAgICAgICAgICAgICBjb25zdCBjYWMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ0FDJyk7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2NjID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NDQycpO1xyXG4gICAgICAgICAgICAgIGlmKGNhYyAmJiBjY2Mpe1xyXG4gICAgICAgICAgICAgICAgZGF0YS5sb2FkLmZvckVhY2goKGM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjLmFnZW5jaWVzLmZvckVhY2goKGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGEuYWdlbmN5Q29kZSA9PSBjYWMgJiYgYy5jb21wYW55Q29kZSA9PSBjY2Mpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgYy5pc09wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB0aGlzLmNvbXBhbmllcyA9IGRhdGEubG9hZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEhpc3RvcnkoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0SGlzdG9yeSh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZihkYXRhLmxvYWQpe1xyXG4gICAgICAgICAgICB0aGlzLnJlY2VudE9wdGlvbnMgPSBkYXRhLmxvYWQ7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVjZW50T3B0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImxhc3Qgb3B0aW9uIGVtaXRcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5sYXN0T3B0aW9uLmVtaXQodGhpcy5yZWNlbnRPcHRpb25zWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZ2V0TW9kdWxlcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSZXNvdXJjZSgpe1xyXG4gICAgdGhpcy5zZXJ2aWNlcy5nZXRSZXNvdXJjZXNCeVVzZXIodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgaWYoZGF0YS5sb2FkKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5sb2FkKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRIaXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29tcGFuaWVzKCk7XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjaGVja1Jlc291cmNlQnlSb2xlKCl7XHJcbiAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRQYXRoKCk7XHJcbiAgICBpZihwYXRoICE9ICcvaG9tZScpe1xyXG4gICAgICB0aGlzLnNlcnZpY2VzLmdldFJlc291cmNlc0J5Um9sZVVzZXIodGhpcy5zZXJ2aWNlc0NvbmZpZy5iYXNlVXJsLHBhdGgpLnN1YnNjcmliZShcclxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBpZihkYXRhLmxvYWQgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKCcvaG9tZScsICdfc2VsZicpO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGdldFBhdGgoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuICB9XHJcblxyXG4gIGdldE1vZHVsZXMoKXtcclxuICAgIHRoaXMuc2VydmljZXMuZ2V0TW9kdWxlcyh0aGlzLnNlcnZpY2VzQ29uZmlnLmJhc2VVcmwpLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxvYWQpIHtcclxuICAgICAgICAgIHRoaXMubW9kdWxlTGlzdCA9IGRhdGEubG9hZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucmVjZW50T3B0aW9ucyAmJiB0aGlzLnJlY2VudE9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgaWYodGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpe1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb2R1bGUodGhpcy5yZWNlbnRPcHRpb25zWzBdLmFwcGxpY2F0aW9uSWQpO1xyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vZHVsZSh0aGlzLm1vZHVsZUxpc3RbMF0uaWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kdWxlKHRoaXMubW9kdWxlTGlzdFswXS5pZClcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8qXHJcbiAgICBpZiAodGhpcy5yZWNlbnREYXRhKSB7XHJcbiAgICAgIHRoaXMubW9kdWxlU2VsZWN0KHRoaXMucmVjZW50RGF0YVswXS5hcHBsaWNhdGlvbklkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCB0aGlzLmRyb3Bkb3duT3B0aW9uc01lbnUpXHJcbiAgICAgIC8vIGNvbnN0IGZpcnN0T3B0aW9uSWQgPSB0aGlzLmRyb3Bkb3duT3B0aW9uc01lbnU/LlswXT8uaWQ7XHJcbiAgICAgIC8vIGlmIChmaXJzdE9wdGlvbklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gICB0aGlzLm1vZHVsZVNlbGVjdChmaXJzdE9wdGlvbklkKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gICAgKi9cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY3VycmVudE1vZHVsZShldmVudDogYW55KXtcclxuICAgIHRoaXMuc2VydmljZXMubWVudU1vZHVsZVNlbGVjdGVkKHRoaXMuc2VydmljZXNDb25maWcuYmFzZVVybCxldmVudCkuc3Vic2NyaWJlKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubG9hZCkge1xyXG4gICAgICAgICAgY29uc3QgbWVudURhdGEgPSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFxyXG4gICAgICAgICAgICAgIGRhdGEubG9hZFxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMubWVudURhdGEgPSBtZW51RGF0YTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGhlYWRlciBbYXR0ci5kYXRhLXRoZW1lXT1cInRoZW1lXCIgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCIgKG1lbnVJdGVtQ2xpY2spPVwibWVudUl0ZW1DbGlja1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItbWVudS1kYXNoYm9hcmQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0JhY2tCdXR0b25cIiBjbGFzcz1cImhlYWRlci1idXR0b25cIiAoY2xpY2spPVwiYXJyb3dDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwibWVudS1hcnJvdy1sZWZ0XCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bGliLW1lbnUgY2xhc3M9XCJoZWFkZXItbWVudS1saWJcIiBbZGF0YV09XCJtZW51RGF0YVwiIFt0aGVtZV09XCJ0aGVtZVwiXHJcbiAgICAgIFtkcm9wZG93bk9wdGlvbnNdPVwibW9kdWxlTGlzdFwiIChtZW51SXRlbUNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudClcIiAobW9kdWxlU2VsZWN0ZWQpPVwib25JdGVtTW9kdWxlU2VsZWN0ZWQoJGV2ZW50KVwiIFtpc01vYmlsZV09XCJpc01vYmlsZVwiPjwvbGliLW1lbnU+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1sb2dvXCI+XHJcbiAgICA8c3BhbiBbY2xhc3NdPVwiYXBwTG9nb1wiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlci1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnUtcmVjZW50cy1jb250YWluZXJcIj5cclxuICAgICAgPGxpYi1yZWNlbnRzLWRyb3Bkb3duIFtvcHRpb25zXT1cInJlY2VudE9wdGlvbnNcIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPjwvbGliLXJlY2VudHMtZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPCEtLVxyXG4gICAgICA8bGliLW5vdGlmaWNhdGlvbnMgW29wdGlvbnNdPVwibm90aWZpY2F0aW9uT3B0aW9uc1wiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJoYW5kbGVPcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+PC9saWItbm90aWZpY2F0aW9ucz5cclxuICAgICAgLS0+XHJcbiAgICBcclxuXHJcbiAgICA8bGliLWNvbXBhbnktZHJvcGRvd24gW2NvbXBhbmllc109XCJjb21wYW5pZXNcIlxyXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaGFuZGxlT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiPjwvbGliLWNvbXBhbnktZHJvcGRvd24+XHJcblxyXG4gICAgPGxpYi11c2VyLWRyb3Bkb3duIFtiYXNlVXJsXT1cInNlcnZpY2VzQ29uZmlnLmJhc2VVcmxcIiBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIj48L2xpYi11c2VyLWRyb3Bkb3duPlxyXG4gIDwvZGl2PlxyXG48L2hlYWRlcj4iXX0=
@@ -35,21 +35,24 @@ export class MenuAdminComponent {
35
35
  this.newNodeIdSubject = new Subject();
36
36
  this.search.valueChanges.pipe(debounceTime(300)).subscribe({
37
37
  next: (newSearch) => {
38
- let newFiltered = new Set();
39
- this.editedTree.forEach(node => {
40
- if (node.label?.toLowerCase().includes(newSearch?.toLowerCase() ?? '')) {
41
- [...(node.ancestorIds ?? []), node.id].forEach(nodeId => newFiltered.add(nodeId));
42
- }
43
- });
44
- this.filterNodes = newFiltered;
45
- if (Boolean(newSearch)) {
46
- this.expandedNodes = new Set(Array.from(newFiltered));
47
- }
48
- else {
49
- this.expandedNodes = new Set();
50
- }
38
+ this.searchFilter(newSearch);
39
+ }
40
+ });
41
+ }
42
+ searchFilter(newSearch) {
43
+ let newFiltered = new Set();
44
+ this.editedTree.forEach(node => {
45
+ if (node.label?.toLowerCase().includes(newSearch?.toLowerCase() ?? '')) {
46
+ [...(node.ancestorIds ?? []), node.id].forEach(nodeId => newFiltered.add(nodeId));
51
47
  }
52
48
  });
49
+ this.filterNodes = newFiltered;
50
+ if (Boolean(newSearch)) {
51
+ this.expandedNodes = new Set(Array.from(newFiltered));
52
+ }
53
+ else {
54
+ this.expandedNodes = new Set();
55
+ }
53
56
  }
54
57
  onKeyUp($event) {
55
58
  }
@@ -120,6 +123,7 @@ export class MenuAdminComponent {
120
123
  if (response.responseCode === 200) {
121
124
  successCount++;
122
125
  changes = changes.map(opt => ({ ...opt, parentId: opt['parentId'] === parentTempId ? response.load.id : opt['parentId'] }));
126
+ option['id'] = response.load.id;
123
127
  }
124
128
  else {
125
129
  errorCount--;
@@ -130,6 +134,7 @@ export class MenuAdminComponent {
130
134
  }
131
135
  }
132
136
  this.validSuccess("Cambios Guardados", "Ocurrió un error al guardar los cambios", successCount, errorCount, changes.length);
137
+ this.searchFilter(null);
133
138
  // changes.forEach((option, index) => {
134
139
  // this.securityAdminService.saveMenuOption(option).subscribe({
135
140
  // next: (response: any) => {
@@ -278,4 +283,4 @@ function flattenTree(tree, mapNode = (node) => node, level = 0, prevAncestors =
278
283
  function unFlatten(flatTree) {
279
284
  let response = flatTree.reduce((acc, current) => [...acc,], []);
280
285
  }
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hZG1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3AtbGliL3NyYy9saWIvbWVudS1hZG1pbi9tZW51LWFkbWluLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9tZW51LWFkbWluL21lbnUtYWRtaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU83QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7OztBQWlCeEYsQ0FBQztBQVFGLE1BQU0sT0FBTyxrQkFBa0I7SUFVOUIsSUFBSSx1QkFBdUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFDLENBQUM7SUFHMUYsWUFBb0IsSUFBZ0IsRUFBVSxvQkFBMEMsRUFBVSxRQUF5QixFQUFVLGFBQTRCLEVBQVUsTUFBaUI7UUFBeEssU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVpuTCxVQUFLLEdBQVcsU0FBUyxDQUFDO1FBQ25DLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGtC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Q0FBQyxFQUFFLGdCQUFtQyxFQUFFO0lBQzVJLElBQUksUUFBUSxHQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVLLE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUM7QUFHRCxTQUFTLFNBQVMsQ0FBQyxRQUFvQjtJQUV0QyxJQUFJLFFBQVEsR0FBZSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIENka0Ryb3BMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFNlY3VyaXR5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2VjdXJpdHktYWRtaW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGxhc3RWYWx1ZUZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTW92ZU1lbnVPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9tb3ZlLW1lbnUtb3B0aW9uL21vdmUtbWVudS1vcHRpb24uY29tcG9uZW50JztcclxuXHJcblxyXG5pbnRlcmZhY2UgVHJlZU5vZGUge1xyXG5cdGlkOiBudW1iZXIgfCBudWxsLFxyXG5cdHBhcmVudElkOiBudW1iZXIgfCBudWxsO1xyXG5cdGFuY2VzdG9ySWRzOiAobnVtYmVyIHwgbnVsbClbXTtcclxuXHRsYWJlbD86IHN0cmluZyxcclxuXHRuYW1lPzogc3RyaW5nLFxyXG5cdGNoaWxkcmVuOiBUcmVlTm9kZVtdO1xyXG5cdGxldmVsPzogbnVtYmVyO1xyXG59XHJcblxyXG5cclxuaW50ZXJmYWNlIE5vZGVGb3JtIHtcclxuXHR0aXRsZTogeyB0ZXh0OiBzdHJpbmcsIHN0eWxlPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB9LFxyXG5cdGZpZWxkczogRm9ybUZpZWxkW11cclxufTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1tZW51LWFkbWluJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vbWVudS1hZG1pbi5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4uL2Fzc2V0cy9mb250cy9zdHlsZS5jc3MnLCAnLi4vYXNzZXRzL3RoZW1lLnNjc3MnLCAnLi9tZW51LWFkbWluLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1lbnVBZG1pbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgdGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuXHR0cmVlRGF0YTogYW55W10gPSBbXTtcclxuXHR1bmZsYXR0ZW5lZFRyZWU6IGFueVtdID0gW107XHJcblx0c2VhcmNoID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xyXG5cdGxvYWRpbmdTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRlZGl0ZWRUcmVlOiBUcmVlTm9kZVtdID0gW107XHJcblx0c2VsZWN0ZWROb2RlOiBUcmVlTm9kZSA9IHsgaWQ6IC0xLCBwYXJlbnRJZDogbnVsbCwgbGFiZWw6ICcnLCBjaGlsZHJlbjogW10sIGFuY2VzdG9ySWRzOiBbXSB9O1xyXG5cdGV4cGFuZGVkTm9kZXMgPSBuZXcgU2V0KCk7XHJcblx0ZmlsdGVyTm9kZXMgPSBuZXcgU2V0KCk7XHJcblx0Z2V0IG1lbnVPcHRpb25Gb3JtQ29tcG9uZW50KCkgeyByZXR1cm4gdGhpcy5zZWN1cml0eUFkbWluU2VydmljZS5tZW51T3B0aW9uRm9ybUNvbXBvbmVudCB9XHJcblxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgc2VjdXJpdHlBZG1pblNlcnZpY2U6IFNlY3VyaXR5QWRtaW5TZXJ2aWNlLCBwcml2YXRlIHNuYWNrYmFyOiBTbmFja2JhclNlcnZpY2UsIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge1xyXG5cdFx0dGhpcy5zZWFyY2gudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChuZXdTZWFyY2gpID0+IHtcclxuXHRcdFx0XHRsZXQgbmV3RmlsdGVyZWQgPSBuZXcgU2V0KCk7XHJcblx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlLmZvckVhY2gobm9kZSA9PiB7XHJcblx0XHRcdFx0XHRpZiAobm9kZS5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZXdTZWFyY2g/LnRvTG93ZXJDYXNlKCkgPz8gJycpKSB7XHJcblx0XHRcdFx0XHRcdFsuLi4obm9kZS5hbmNlc3RvcklkcyA/PyBbXSksIG5vZGUuaWRdLmZvckVhY2gobm9kZUlkID0+IG5ld0ZpbHRlcmVkLmFkZChub2RlSWQpKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyTm9kZXMgPSBuZXdGaWx0ZXJlZDtcclxuXHRcdFx0XHRpZiAoQm9vbGVhbihuZXdTZWFyY2gpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4cGFuZGVkTm9kZXMgPSBuZXcgU2V0KEFycmF5LmZyb20obmV3RmlsdGVyZWQpKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5leHBhbmRlZE5vZGVzID0gbmV3IFNldCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdG9uS2V5VXAgKCRldmVudDogYW55KSB7XHJcblx0fVxyXG5cclxuXHRsb2FkVHJlZSgpIHtcclxuXHRcdHRoaXMubG9hZGluZ1N0YXR1cyA9IHRydWU7XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmdldE1lbnVUcmVlKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcG9uc2UucmVzcG9uc2VDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdFx0XHRcdHRoaXMudHJlZURhdGEgPSBmbGF0dGVuVHJlZShyZXNwb25zZS5sb2FkKVxyXG5cdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gZmxhdHRlblRyZWUocmVzcG9uc2UubG9hZCwgY29tcGxldGVOb2RlKTtcclxuXHRcdFx0XHRcdHRoaXMudW5mbGF0dGVuZWRUcmVlID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHRcdC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRuZXdOb2RlSWQ6IG51bWJlciA9IC0yO1xyXG5cdG5ld05vZGVJZFN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmxvYWRUcmVlKCk7XHJcblx0XHR0aGlzLm5ld05vZGVJZFN1YmplY3Quc3Vic2NyaWJlKHsgbmV4dDogKHZhbHVlOiBudW1iZXIpID0+IHRoaXMubmV3Tm9kZUlkID0gdmFsdWUgfSlcclxuXHR9XHJcblxyXG5cdGFkZE5vZGVUb0N1cnJlbnQoKSB7XHJcblx0XHRsZXQgbmV3Tm9kZTogVHJlZU5vZGUgPSB7IGlkOiB0aGlzLm5ld05vZGVJZCwgbGFiZWw6ICdOdWV2bycsIHBhcmVudElkOiBudWxsLCBhbmNlc3RvcklkczogW10sIGNoaWxkcmVuOiBbXSB9XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE5vZGUuaWQgPT09IC0xKSB7XHJcblx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IFtuZXdOb2RlLCAuLi50aGlzLmVkaXRlZFRyZWVdXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsZXQgZm91bmRJZHggPSB0aGlzLmVkaXRlZFRyZWUuZmluZEluZGV4KG5vZGUgPT4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpO1xyXG5cdFx0XHR0aGlzLmVkaXRlZFRyZWUgPSBbXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKDAsIGZvdW5kSWR4ICsgMSksXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0Li4ubmV3Tm9kZSxcclxuXHRcdFx0XHRcdHBhcmVudElkOiB0aGlzLnNlbGVjdGVkTm9kZS5pZCxcclxuXHRcdFx0XHRcdGxldmVsOiAodGhpcy5zZWxlY3RlZE5vZGUubGV2ZWwgPz8gMCkgKyAxLFxyXG5cdFx0XHRcdFx0YW5jZXN0b3JJZHM6IFsuLi4odGhpcy5zZWxlY3RlZE5vZGUuYW5jZXN0b3JJZHMgPz8gW10pLCB0aGlzLnNlbGVjdGVkTm9kZS5pZCA/PyBudWxsXVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKGZvdW5kSWR4ICsgMSlcclxuXHRcdFx0XVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5uZXdOb2RlSWRTdWJqZWN0Lm5leHQodGhpcy5uZXdOb2RlSWQgLSAxKTtcclxuXHRcdHRoaXMuZmlsdGVyTm9kZXMuYWRkKG5ld05vZGUuaWQpO1xyXG5cdFx0dGhpcy5leHBhbmRlZE5vZGVzLmFkZCh0aGlzLnNlbGVjdGVkTm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHR2YWxpZFN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2U6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcsIHN1Y2Nlc3NDb3VudDogbnVtYmVyLCBmYWlsQ291bnQ6IG51bWJlciwgdGFyZ2V0Q291bnQ6IG51bWJlciwgdGFyZ2V0PzogYW55KSB7XHJcblx0XHRpZiAoKHN1Y2Nlc3NDb3VudCArIGZhaWxDb3VudCkgPT09IHRhcmdldENvdW50KSB7XHJcblx0XHRcdGlmIChmYWlsQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zbmFja2Jhci53YXJuaW5nKGVycm9yTWVzc2FnZSlcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNuYWNrYmFyLnN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNhdmVDaGFuZ2VzKCkge1xyXG5cdFx0dGhpcy5zbmFja2Jhci5pbmZvKCdHdWFyZGFuZG8uLi4nKTtcclxuXHRcdGxldCBjaGFuZ2VzID0gY2hhbmdlZEl0ZW1zKHRoaXMudHJlZURhdGEsIHRoaXMuZWRpdGVkVHJlZSlcclxuXHRcdGxldCBzdWNjZXNzQ291bnQgPSAwO1xyXG5cdFx0bGV0IGVycm9yQ291bnQgPSAwO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvcHRpb24gPSBjaGFuZ2VzW2ldO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGxldCBwYXJlbnRUZW1wSWQgPSBvcHRpb25bJ2lkJ107XHJcblx0XHRcdFx0bGV0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2Uuc2F2ZU1lbnVPcHRpb24ob3B0aW9uKSk7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRzdWNjZXNzQ291bnQrKztcclxuXHRcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRUZW1wSWQgPyByZXNwb25zZS5sb2FkLmlkIDogb3B0WydwYXJlbnRJZCddIH0pKVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRlcnJvckNvdW50LS07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdGVycm9yQ291bnQtLTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy52YWxpZFN1Y2Nlc3MoXCJDYW1iaW9zIEd1YXJkYWRvc1wiLCBcIk9jdXJyacOzIHVuIGVycm9yIGFsIGd1YXJkYXIgbG9zIGNhbWJpb3NcIiwgc3VjY2Vzc0NvdW50LCBlcnJvckNvdW50LCBjaGFuZ2VzLmxlbmd0aClcclxuXHJcblxyXG5cclxuXHRcdC8vIGNoYW5nZXMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG5cdFx0Ly8gXHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnNhdmVNZW51T3B0aW9uKG9wdGlvbikuc3Vic2NyaWJlKHtcclxuXHRcdC8vIFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0Ly8gXHRcdFx0bGV0IHBhcmVudFJlbGF0aW9uID0gb3B0aW9uWydpZCddO1xyXG5cdFx0Ly8gXHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHQvLyBcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRSZWxhdGlvbiA/IHJlc3BvbnNlLmxvYWQuaWQgOiBvcHRbJ3BhcmVudElkJ10gfSkpXHJcblx0XHQvLyBcdFx0XHRcdHN1Y2Nlc3NDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fSBlbHNlIHtcclxuXHRcdC8vIFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fVxyXG5cdFx0Ly8gXHRcdFx0dGhpcy52YWxpZFN1Y2Nlc3MoXCJDYW1iaW9zIEd1YXJkYWRvc1wiLCBcIk9jdXJyacOzIHVuIGVycm9yIGFsIGd1YXJkYXIgbG9zIGNhbWJpb3NcIiwgc3VjY2Vzc0NvdW50LCBlcnJvckNvdW50LCBjaGFuZ2VzLmxlbmd0aClcclxuXHRcdC8vIFx0XHR9LFxyXG5cdFx0Ly8gXHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHQvLyBcdFx0XHRlcnJvckNvdW50Kys7XHJcblx0XHQvLyBcdFx0XHR0aGlzLnZhbGlkU3VjY2VzcyhcIkNhbWJpb3MgR3VhcmRhZG9zXCIsIFwiT2N1cnJpw7MgdW4gZXJyb3IgYWwgZ3VhcmRhciBsb3MgY2FtYmlvc1wiLCBzdWNjZXNzQ291bnQsIGVycm9yQ291bnQsIGNoYW5nZXMubGVuZ3RoKVxyXG5cdFx0Ly8gXHRcdH1cclxuXHRcdC8vIFx0fSlcclxuXHRcdC8vIH0pXHJcblxyXG5cdH1cclxuXHJcblx0ZGVsZXRlT3B0aW9uKG9wdGlvbjogVHJlZU5vZGUpIHtcclxuXHRcdHRoaXMuc25hY2tiYXIuaW5mbygnRWxpbWluYW5kby4uLicpXHJcblx0XHRpZiAodGhpcy5lZGl0ZWRUcmVlLnNvbWUobm9kZSA9PiAoKG5vZGUuaWQgPz8gLSAyKSA+IC0xKSAmJiBub2RlLnBhcmVudElkID09PSBvcHRpb24uaWQpKSB7XHJcblx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhgTm8gc2UgcHVlZGUgZWxpbWluYXIgXCIke29wdGlvbi5sYWJlbH1cIiBwb3JxdWUgY29udGllbmUgbcOhcyBvcGNpb25lc2AsIDUwMDApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmRlbGV0ZU1lbnVPcHRpb24ob3B0aW9uKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHN3aXRjaCAocmVzcG9uc2UucmVzcG9uc2VDb2RlKSB7XHJcblx0XHRcdFx0XHRjYXNlIDIwMDpcclxuXHRcdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gdGhpcy5lZGl0ZWRUcmVlLmZpbHRlcihub2RlID0+IChub2RlLmlkICE9PSBvcHRpb24uaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyhvcHRpb24uaWQpKSlcclxuXHRcdFx0XHRcdFx0dGhpcy5zbmFja2Jhci5zdWNjZXNzKGBPcGNpw7NuIFwiJHtvcHRpb24ubGFiZWx9XCIgZWxpbWluYWRhYCk7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgMjA3OlxyXG5cdFx0XHRcdFx0XHR0aGlzLnNuYWNrYmFyLndhcm5pbmcoYE5vIHNlIHB1ZWRlIGVsaW1pbmFyIFwiJHtvcHRpb24ubGFiZWx9XCIgcG9ycXVlIGNvbnRpZW5lIG3DoXMgb3BjaW9uZXNgLCA1MDAwKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhcIk9jdXJyacOzIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIG9wY2nDs25cIilcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogXyA9PiB0aGlzLnNuYWNrYmFyLndhcm5pbmcoXCJPY3VycmnDsyB1biBlcnJvciBhbCBlbGltaW5hciBsYSBvcGNpw7NuXCIpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUN1cnJlbnROb2RlKCkge1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWROb2RlLmlkICE9PSAtMSkge1xyXG5cdFx0XHRpZiAoKHRoaXMuc2VsZWN0ZWROb2RlLmlkID8/IC0xKSA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm11bHRpT3B0aW9uKHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6IGDCv0Rlc2VhcyBlbGltaW5hciBcIiR7dGhpcy5zZWxlY3RlZE5vZGUubGFiZWx9XCI/YCxcclxuXHRcdFx0XHRcdHRoZW1lOiB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnRoZW1lLFxyXG5cdFx0XHRcdFx0b3B0aW9uczogW1xyXG5cdFx0XHRcdFx0XHR7IGxhYmVsOiAnRWxpbWluYXInLCBjYWxsYmFjazogKCkgPT4gdGhpcy5kZWxldGVPcHRpb24odGhpcy5zZWxlY3RlZE5vZGUpLCB0eXBlOiAncHJpbWFyeScgfSxcclxuXHRcdFx0XHRcdFx0eyBsYWJlbDogJ0NhbmNlbGFyJywgY2FsbGJhY2s6ICgpID0+IHsgfSwgdHlwZTogJ3NlY29uZGFyeScgfVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZSA9PiAobm9kZS5pZCAhPT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTm9kZS5pZCkpKVxyXG5cdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWxlY3RlZENsYXNzKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQgPyAnc2VsZWN0ZWQnIDogJyc7XHJcblx0fVxyXG5cclxuXHRzZWxlY3ROb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcblx0fVxyXG5cclxuXHRyZXNldFNlbGVjdGVkTm9kZSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0Tm9kZSh7IGlkOiAtMSwgcGFyZW50SWQ6IG51bGwsIGxhYmVsOiAnJywgY2hpbGRyZW46IFtdLCBhbmNlc3RvcklkczogW10gfSk7XHJcblx0fVxyXG5cclxuXHRpc0V4cGFuZGVkKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5leHBhbmRlZE5vZGVzLmhhcyhub2RlLmlkKTtcclxuXHR9XHJcblxyXG5cdGdldExldmVsKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5hbmNlc3Rvcklkcy5sZW5ndGg7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVOb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGUuaWQpID8gdGhpcy5leHBhbmRlZE5vZGVzLmRlbGV0ZShub2RlLmlkKSA6IHRoaXMuZXhwYW5kZWROb2Rlcy5hZGQobm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHRoYXNDaGlsZHJlbihub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZV8gPT4gbm9kZV8ucGFyZW50SWQgPT09IG5vZGUuaWQpLmxlbmd0aCA+IDA7XHJcblx0fVxyXG5cclxuXHRub2RlQ29udGFpbmVyU3R5bGUobm9kZTogVHJlZU5vZGUpIHtcclxuXHRcdHJldHVybiB7ICdwYWRkaW5nLWxlZnQnOiBgJHsyMCAqIChub2RlLmxldmVsID8/IDApfXB4YCB9XHJcblx0fVxyXG5cclxuXHRoaWRlTm9kZShub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIChub2RlLnBhcmVudElkICE9PSBudWxsKSAmJiAoIShub2RlLmFuY2VzdG9ySWRzLmV2ZXJ5KG5vZGVJZCA9PiB0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGVJZCkpKSkgfHwgISh0aGlzLmZpbHRlck5vZGVzLmhhcyhub2RlLmlkKSk7XHJcblx0fVxyXG5cclxuXHRnZXQgZm9ybUNvbXBvbmVudElucHV0cygpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdG9wdGlvbjogdGhpcy5zZWxlY3RlZE5vZGUsXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRtb3ZlT3B0aW9uKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKE1vdmVNZW51T3B0aW9uQ29tcG9uZW50LHtcclxuXHRcdFx0ZGF0YTp7XHJcblx0XHRcdFx0b3B0aW9uOiBub2RlLFxyXG5cdFx0XHRcdHRyZWU6IHRoaXMudW5mbGF0dGVuZWRUcmVlXHJcblx0XHRcdH1cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0aWYgKHZhbHVlPy5yZWxvYWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZFRyZWUoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoYW5nZWRJdGVtcyhwcmV2aW91czogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdLCBjdXJyZW50OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10pIHtcclxuXHRsZXQgY2hhbmdlZDogeyBba2V5OiBzdHJpbmddOiBhbnk7IH1bXSA9IFtdO1xyXG5cdGN1cnJlbnQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdGxldCBwcmV2aW91c0l0ZW0gPSBwcmV2aW91cy5maW5kKGkgPT4gaVsnaWQnXSA9PT0gaXRlbVsnaWQnXSk7XHJcblx0XHQvL2NvbnNvbGUuZXJyb3IoJyBmb3IgbG9vcCcsIHByZXZpb3VzSXRlbSwgaXRlbSk7XHJcblx0XHRpZiAocHJldmlvdXNJdGVtKSB7XHJcblx0XHRcdGZvciAobGV0IGtleSBpbiBwcmV2aW91c0l0ZW0pIHtcclxuXHRcdFx0XHRpZiAocHJldmlvdXNJdGVtW2tleV0gIT09IGl0ZW1ba2V5XSkge1xyXG5cdFx0XHRcdFx0Y2hhbmdlZC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjaGFuZ2VkLnB1c2goaXRlbSk7XHJcblx0XHR9XHJcblxyXG5cdH0pXHJcblx0cmV0dXJuIGNoYW5nZWQ7XHJcbn1cclxuXHJcbmNvbnN0IGNvbXBsZXRlTm9kZSA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlciwgcHJldkFuY2VzdG9yczogKG51bWJlciB8IG51bGwpW10pID0+ICh7XHJcblx0Li4ubm9kZSxcclxuXHRsZXZlbDogbGV2ZWwsXHJcblx0YW5jZXN0b3JJZHM6IChub2RlLnBhcmVudElkID09PSBudWxsKSA/IFtdIDogWy4uLnByZXZBbmNlc3RvcnNdLFxyXG59KVxyXG5cclxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZTogVHJlZU5vZGVbXSwgbWFwTm9kZTogRnVuY3Rpb24gPSAobm9kZTogVHJlZU5vZGUpID0+IG5vZGUsIGxldmVsOiBudW1iZXIgPSAwLCBwcmV2QW5jZXN0b3JzOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdKSB7XHJcblx0bGV0IHJlc3BvbnNlOiBUcmVlTm9kZVtdID0gdHJlZS5mbGF0TWFwKG5vZGUgPT4gW21hcE5vZGUobm9kZSwgbGV2ZWwsIHByZXZBbmNlc3RvcnMpLCAuLi5mbGF0dGVuVHJlZShub2RlLmNoaWxkcmVuID8/IFtdLCBtYXBOb2RlLCBsZXZlbCArIDEsIFsuLi5wcmV2QW5jZXN0b3JzLCBub2RlLmlkXSldKVxyXG5cdHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIHVuRmxhdHRlbihmbGF0VHJlZTogVHJlZU5vZGVbXSkge1xyXG5cclxuXHRsZXQgcmVzcG9uc2U6IFRyZWVOb2RlW10gPSBmbGF0VHJlZS5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gWy4uLmFjYyxdLCBbXSlcclxufVxyXG4iLCI8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImxpc3RcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidGl0bGUtaW5mby1oZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0aXRsZS1pbmZvXCI+XHJcblx0XHRcdDxpIGNsYXNzPVwibWVudS1saXN0XCI+PC9pPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3snTWVudScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJ1dHRvbnMtc2VjdGlvblwiPlxyXG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJhZGROb2RlVG9DdXJyZW50KClcIj48aSBjbGFzcz1cIm1lbnUtcGx1c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQ3VycmVudE5vZGUoKVwiPjxpIGNsYXNzPVwibWVudS1taW51c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwic2F2ZUNoYW5nZXMoKVwiPjxpIGNsYXNzPVwibWVudS1zYXZlXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGlhbmVyLW5vdGlmaWNhdGlvblwiPlxyXG5cdFx0PGxpYi1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJzZWFyY2hcIiBuYW1lPVwic2VhcmNoXCIgW2xhYmVsXT1cIidTZWFyY2guLi4nIHwgdHJhbnNsYXRlXCIgW2NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG5cdFx0XHRpY29uPVwibWVudS1zZWFyY2hcIiBbdGhlbWVdPVwidGhlbWVcIj48L2xpYi1pbnB1dD5cclxuXHQ8L2Rpdj5cclxuXHQ8bGliLWxvYWRlciBbdGhlbWVdPVwidGhlbWVcIiBbdHlwZV09XCInYmFyJ1wiIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0dXNcIj48L2xpYi1sb2FkZXI+XHJcblx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHQ8IS0tIDxsaWItdHJlZSBbdHJlZV09XCJ0cmVlRGF0YVwiPjwvbGliLXRyZWU+IC0tPlxyXG5cdFx0PGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiBlZGl0ZWRUcmVlXCIgW2NsYXNzXT1cIlsnbm9kZS1jb250YWluZXInLCBoaWRlTm9kZShub2RlKSA/ICdoaWRlJyA6ICcnXVwiXHJcblx0XHRcdFtzdHlsZV09XCJub2RlQ29udGFpbmVyU3R5bGUobm9kZSlcIj5cclxuXHRcdFx0PGRpdiBbY2xhc3NdPVwiWydub2RlJywgc2VsZWN0ZWRDbGFzcyhub2RlKV1cIiAoY2xpY2spPVwic2VsZWN0Tm9kZShub2RlKVwiPlxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJoYXNDaGlsZHJlbihub2RlKVwiIChjbGljayk9XCJ0b2dnbGVOb2RlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtjbGFzc109XCJbJ3RyZWUtdG9nZ2xlJywgaXNFeHBhbmRlZChub2RlKSA/ICcnOiAncm90YXRlZCddXCI+XHJcblx0XHRcdFx0XHQ8aSBbY2xhc3NdPVwiWydtZW51LWFycm93LWRvd24nXVwiPjwvaT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWhhc0NoaWxkcmVuKG5vZGUpXCIgY2xhc3M9XCJ0cmVlLXRvZ2dsZVwiPlxyXG5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCAjbm9kZU5hbWVJbnB1dCBuZ0RlZmF1bHRDb250cm9sIFsobmdNb2RlbCldPVwibm9kZS5sYWJlbFwiIC8+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJlZS1uYW1lXCIgKGNsaWNrKT1cIm5vZGVOYW1lSW5wdXQuZm9jdXMoKVwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiZ2V0TGV2ZWwobm9kZSkgPiAwXCIgY2xhc3M9XCJub2RlLW9wdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gKGNsaWNrKT1cIm1vdmVPcHRpb24obm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm1lbnUtZm9sZGVyLXNlbmRcIiAqbmdJZj1cImdldExldmVsKG5vZGUpID4gMFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDxzcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibWVudS1tb3ZlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+IC0tPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImVkaXRvci1wYW5lbFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJlZGl0b3ItdGl0bGVcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbGFiZWxcIj5FZGl0YXIgT3BjacOzbjwvc3Bhbj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbmFtZVwiPnt7c2VsZWN0ZWROb2RlLmxhYmVsID8/IHNlbGVjdGVkTm9kZS5uYW1lID8/ICcnfX08L3NwYW4+XHJcblx0PC9kaXY+XHJcblx0PCEtLSB7e2N1cnJlbnROb2RlLm5hbWUgPz8gY3VycmVudE5vZGUubGFiZWx9fSAtLT5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwibWVudU9wdGlvbkZvcm1Db21wb25lbnRcIj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwibWVudU9wdGlvbkZvcm1Db21wb25lbnQ7IGlucHV0czogZm9ybUNvbXBvbmVudElucHV0c1wiPlxyXG5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hZG1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3AtbGliL3NyYy9saWIvbWVudS1hZG1pbi9tZW51LWFkbWluLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9tZW51LWFkbWluL21lbnUtYWRtaW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU83QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7OztBQWlCeEYsQ0FBQztBQVFGLE1BQU0sT0FBTyxrQkFBa0I7SUFVOUIsSUFBSSx1QkFBdUIsS0FBSyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQSxDQUFDLENBQUM7SUFHMUYsWUFBb0IsSUFBZ0IsRUFBVSxvQkFBMEMsRUFBVSxRQUF5QixFQUFVLGFBQTRCLEVBQVUsTUFBaUI7UUFBeEssU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVpuTCxVQUFLLEdBQVcsU0FBUyxDQUFDO1FBQ25DLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFDNUIsaUJBQVksR0FBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDOUYsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQWdEeEIsY0FBUyxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUE1Q3hDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDMUQsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUIsQ0FBQztTQUNELENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsU0FBYTtRQUN6QixJQUFJLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUN2RSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7YUFDakY7UUFDRixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ3REO2FBQU07WUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7U0FDL0I7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFFLE1BQVc7SUFDcEIsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ2pELElBQUksRUFBRSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUN2QixJQUFJLFFBQVEsQ0FBQyxZQUFZLEtBQUssR0FBRyxFQUFFO29CQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUMzRCxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3JDLHdDQUF3QztpQkFDeEM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQztTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7SUFHRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2YsSUFBSSxPQUFPLEdBQWEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUE7UUFDN0csSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQy9DO2FBQU07WUFDTixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsVUFBVSxHQUFHO2dCQUNqQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QztvQkFDQyxHQUFHLE9BQU87b0JBQ1YsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDOUIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztvQkFDekMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztpQkFDckY7Z0JBQ0QsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2FBQ3RDLENBQUE7U0FDRDtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsWUFBWSxDQUFDLGNBQXNCLEVBQUUsWUFBb0IsRUFBRSxZQUFvQixFQUFFLFNBQWlCLEVBQUUsV0FBbUIsRUFBRSxNQUFZO1FBQ3BJLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQy9DLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7YUFDbkM7aUJBQU07Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUE7YUFDckM7U0FDRDtJQUNGLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuQyxJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSTtnQkFDSCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksUUFBUSxHQUFRLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxRQUFRLENBQUMsWUFBWSxLQUFLLEdBQUcsRUFBRTtvQkFDbEMsWUFBWSxFQUFFLENBQUM7b0JBQ2YsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzVILE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztpQkFDaEM7cUJBQU07b0JBQ04sVUFBVSxFQUFFLENBQUM7aUJBQ2I7YUFDRDtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNmLFVBQVUsRUFBRSxDQUFDO2FBQ2I7U0FDRDtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUseUNBQXlDLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFM0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4Qix1Q0FBdUM7UUFDdkMsZ0VBQWdFO1FBQ2hFLCtCQUErQjtRQUMvQix3Q0FBd0M7UUFDeEMsMENBQTBDO1FBQzFDLG9JQUFvSTtRQUNwSSxzQkFBc0I7UUFDdEIsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixPQUFPO1FBQ1AsaUlBQWlJO1FBQ2pJLE9BQU87UUFDUCxtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGlJQUFpSTtRQUNqSSxNQUFNO1FBQ04sTUFBTTtRQUNOLEtBQUs7SUFFTixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWdCO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ25DLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMseUJBQXlCLE1BQU0sQ0FBQyxLQUFLLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25HLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDNUQsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3ZCLFFBQVEsUUFBUSxDQUFDLFlBQVksRUFBRTtvQkFDOUIsS0FBSyxHQUFHO3dCQUNQLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO3dCQUNwSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLE1BQU0sQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDO3dCQUM1RCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTt3QkFDeEIsTUFBTTtvQkFDUCxLQUFLLEdBQUc7d0JBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMseUJBQXlCLE1BQU0sQ0FBQyxLQUFLLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUNsRyxNQUFNO29CQUNQO3dCQUNDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLENBQUE7d0JBQy9ELE1BQU07aUJBQ1A7WUFDRixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUM7U0FDM0UsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQjtRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLHFCQUFxQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSTtvQkFDekQsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLO29CQUN0QyxPQUFPLEVBQUU7d0JBQ1IsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3dCQUM1RixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO3FCQUM3RDtpQkFDRCxDQUFDLENBQUM7YUFDSDtpQkFBTTtnQkFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMxSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTthQUN4QjtTQUNEO0lBQ0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFjO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFjO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQkFBaUI7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFjO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFjO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFjO1FBQ2hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQWM7UUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUksQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3RCLE9BQU87WUFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDekIsQ0FBQTtJQUNGLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBYztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBQztZQUN4QyxJQUFJLEVBQUM7Z0JBQ0osTUFBTSxFQUFFLElBQUk7Z0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlO2FBQzFCO1NBQ0QsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUMxQixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDaEI7WUFDRixDQUFDO1NBQ0QsQ0FBQyxDQUFBO0lBQ0gsQ0FBQzsrR0FqUFcsa0JBQWtCO21HQUFsQixrQkFBa0Isa0ZDckMvQiwydEZBNERNOzs0RkR2Qk8sa0JBQWtCO2tCQUw5QixTQUFTOytCQUNDLGdCQUFnQjtzTkFLakIsS0FBSztzQkFBYixLQUFLOztBQXFQUCxTQUFTLFlBQVksQ0FBQyxRQUFrQyxFQUFFLE9BQWlDO0lBQzFGLElBQUksT0FBTyxHQUE4QixFQUFFLENBQUM7SUFDNUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMvQixJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELGlEQUFpRDtRQUNqRCxJQUFJLFlBQVksRUFBRTtZQUNqQixLQUFLLElBQUksR0FBRyxJQUFJLFlBQVksRUFBRTtnQkFDN0IsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQixNQUFNO2lCQUNOO2FBQ0Q7U0FDRDthQUFNO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtJQUVGLENBQUMsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBYyxFQUFFLEtBQWEsRUFBRSxhQUFnQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLEdBQUcsSUFBSTtJQUNQLEtBQUssRUFBRSxLQUFLO0lBQ1osV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO0NBQy9ELENBQUMsQ0FBQTtBQUVGLFNBQVMsV0FBVyxDQUFDLElBQWdCLEVBQUUsVUFBb0IsQ0FBQyxJQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFnQixDQUFDLEVBQUUsZ0JBQW1DLEVBQUU7SUFDNUksSUFBSSxRQUFRLEdBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUssT0FBTyxRQUFRLENBQUM7QUFDakIsQ0FBQztBQUdELFNBQVMsU0FBUyxDQUFDLFFBQW9CO0lBRXRDLElBQUksUUFBUSxHQUFlLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU2VjdXJpdHlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbGFzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNb3ZlTWVudU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL21vdmUtbWVudS1vcHRpb24vbW92ZS1tZW51LW9wdGlvbi5jb21wb25lbnQnO1xyXG5cclxuXHJcbmludGVyZmFjZSBUcmVlTm9kZSB7XHJcblx0aWQ6IG51bWJlciB8IG51bGwsXHJcblx0cGFyZW50SWQ6IG51bWJlciB8IG51bGw7XHJcblx0YW5jZXN0b3JJZHM6IChudW1iZXIgfCBudWxsKVtdO1xyXG5cdGxhYmVsPzogc3RyaW5nLFxyXG5cdG5hbWU/OiBzdHJpbmcsXHJcblx0Y2hpbGRyZW46IFRyZWVOb2RlW107XHJcblx0bGV2ZWw/OiBudW1iZXI7XHJcbn1cclxuXHJcblxyXG5pbnRlcmZhY2UgTm9kZUZvcm0ge1xyXG5cdHRpdGxlOiB7IHRleHQ6IHN0cmluZywgc3R5bGU/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0sXHJcblx0ZmllbGRzOiBGb3JtRmllbGRbXVxyXG59O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLW1lbnUtYWRtaW4nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9tZW51LWFkbWluLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi4vYXNzZXRzL2ZvbnRzL3N0eWxlLmNzcycsICcuLi9hc3NldHMvdGhlbWUuc2NzcycsICcuL21lbnUtYWRtaW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUFkbWluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRASW5wdXQoKSB0aGVtZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG5cdHRyZWVEYXRhOiBhbnlbXSA9IFtdO1xyXG5cdHVuZmxhdHRlbmVkVHJlZTogYW55W10gPSBbXTtcclxuXHRzZWFyY2ggPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XHJcblx0bG9hZGluZ1N0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGVkaXRlZFRyZWU6IFRyZWVOb2RlW10gPSBbXTtcclxuXHRzZWxlY3RlZE5vZGU6IFRyZWVOb2RlID0geyBpZDogLTEsIHBhcmVudElkOiBudWxsLCBsYWJlbDogJycsIGNoaWxkcmVuOiBbXSwgYW5jZXN0b3JJZHM6IFtdIH07XHJcblx0ZXhwYW5kZWROb2RlcyA9IG5ldyBTZXQoKTtcclxuXHRmaWx0ZXJOb2RlcyA9IG5ldyBTZXQoKTtcclxuXHRnZXQgbWVudU9wdGlvbkZvcm1Db21wb25lbnQoKSB7IHJldHVybiB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLm1lbnVPcHRpb25Gb3JtQ29tcG9uZW50IH1cclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzZWN1cml0eUFkbWluU2VydmljZTogU2VjdXJpdHlBZG1pblNlcnZpY2UsIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrYmFyU2VydmljZSwgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XHJcblx0XHR0aGlzLnNlYXJjaC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMzAwKSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKG5ld1NlYXJjaCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoRmlsdGVyKG5ld1NlYXJjaCk7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRzZWFyY2hGaWx0ZXIobmV3U2VhcmNoOmFueSl7XHJcblx0XHRsZXQgbmV3RmlsdGVyZWQgPSBuZXcgU2V0KCk7XHJcblx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlLmZvckVhY2gobm9kZSA9PiB7XHJcblx0XHRcdFx0XHRpZiAobm9kZS5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuZXdTZWFyY2g/LnRvTG93ZXJDYXNlKCkgPz8gJycpKSB7XHJcblx0XHRcdFx0XHRcdFsuLi4obm9kZS5hbmNlc3RvcklkcyA/PyBbXSksIG5vZGUuaWRdLmZvckVhY2gobm9kZUlkID0+IG5ld0ZpbHRlcmVkLmFkZChub2RlSWQpKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyTm9kZXMgPSBuZXdGaWx0ZXJlZDtcclxuXHRcdFx0XHRpZiAoQm9vbGVhbihuZXdTZWFyY2gpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4cGFuZGVkTm9kZXMgPSBuZXcgU2V0KEFycmF5LmZyb20obmV3RmlsdGVyZWQpKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5leHBhbmRlZE5vZGVzID0gbmV3IFNldCgpO1xyXG5cdFx0XHRcdH1cclxuXHR9XHJcblxyXG5cdG9uS2V5VXAgKCRldmVudDogYW55KSB7XHJcblx0fVxyXG5cclxuXHRsb2FkVHJlZSgpIHtcclxuXHRcdHRoaXMubG9hZGluZ1N0YXR1cyA9IHRydWU7XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmdldE1lbnVUcmVlKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHRpZiAocmVzcG9uc2UucmVzcG9uc2VDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VhcmNoLnNldFZhbHVlKCcnKTtcclxuXHRcdFx0XHRcdHRoaXMudHJlZURhdGEgPSBmbGF0dGVuVHJlZShyZXNwb25zZS5sb2FkKVxyXG5cdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gZmxhdHRlblRyZWUocmVzcG9uc2UubG9hZCwgY29tcGxldGVOb2RlKTtcclxuXHRcdFx0XHRcdHRoaXMudW5mbGF0dGVuZWRUcmVlID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHRcdC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gcmVzcG9uc2UubG9hZDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nU3RhdHVzID0gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHRuZXdOb2RlSWQ6IG51bWJlciA9IC0yO1xyXG5cdG5ld05vZGVJZFN1YmplY3QgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmxvYWRUcmVlKCk7XHJcblx0XHR0aGlzLm5ld05vZGVJZFN1YmplY3Quc3Vic2NyaWJlKHsgbmV4dDogKHZhbHVlOiBudW1iZXIpID0+IHRoaXMubmV3Tm9kZUlkID0gdmFsdWUgfSlcclxuXHR9XHJcblxyXG5cdGFkZE5vZGVUb0N1cnJlbnQoKSB7XHJcblx0XHRsZXQgbmV3Tm9kZTogVHJlZU5vZGUgPSB7IGlkOiB0aGlzLm5ld05vZGVJZCwgbGFiZWw6ICdOdWV2bycsIHBhcmVudElkOiBudWxsLCBhbmNlc3RvcklkczogW10sIGNoaWxkcmVuOiBbXSB9XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZE5vZGUuaWQgPT09IC0xKSB7XHJcblx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IFtuZXdOb2RlLCAuLi50aGlzLmVkaXRlZFRyZWVdXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRsZXQgZm91bmRJZHggPSB0aGlzLmVkaXRlZFRyZWUuZmluZEluZGV4KG5vZGUgPT4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpO1xyXG5cdFx0XHR0aGlzLmVkaXRlZFRyZWUgPSBbXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKDAsIGZvdW5kSWR4ICsgMSksXHJcblx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0Li4ubmV3Tm9kZSxcclxuXHRcdFx0XHRcdHBhcmVudElkOiB0aGlzLnNlbGVjdGVkTm9kZS5pZCxcclxuXHRcdFx0XHRcdGxldmVsOiAodGhpcy5zZWxlY3RlZE5vZGUubGV2ZWwgPz8gMCkgKyAxLFxyXG5cdFx0XHRcdFx0YW5jZXN0b3JJZHM6IFsuLi4odGhpcy5zZWxlY3RlZE5vZGUuYW5jZXN0b3JJZHMgPz8gW10pLCB0aGlzLnNlbGVjdGVkTm9kZS5pZCA/PyBudWxsXVxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Li4udGhpcy5lZGl0ZWRUcmVlLnNsaWNlKGZvdW5kSWR4ICsgMSlcclxuXHRcdFx0XVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5uZXdOb2RlSWRTdWJqZWN0Lm5leHQodGhpcy5uZXdOb2RlSWQgLSAxKTtcclxuXHRcdHRoaXMuZmlsdGVyTm9kZXMuYWRkKG5ld05vZGUuaWQpO1xyXG5cdFx0dGhpcy5leHBhbmRlZE5vZGVzLmFkZCh0aGlzLnNlbGVjdGVkTm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHR2YWxpZFN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2U6IHN0cmluZywgZXJyb3JNZXNzYWdlOiBzdHJpbmcsIHN1Y2Nlc3NDb3VudDogbnVtYmVyLCBmYWlsQ291bnQ6IG51bWJlciwgdGFyZ2V0Q291bnQ6IG51bWJlciwgdGFyZ2V0PzogYW55KSB7XHJcblx0XHRpZiAoKHN1Y2Nlc3NDb3VudCArIGZhaWxDb3VudCkgPT09IHRhcmdldENvdW50KSB7XHJcblx0XHRcdGlmIChmYWlsQ291bnQgPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zbmFja2Jhci53YXJuaW5nKGVycm9yTWVzc2FnZSlcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNuYWNrYmFyLnN1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNhdmVDaGFuZ2VzKCkge1xyXG5cdFx0dGhpcy5zbmFja2Jhci5pbmZvKCdHdWFyZGFuZG8uLi4nKTtcclxuXHRcdGxldCBjaGFuZ2VzID0gY2hhbmdlZEl0ZW1zKHRoaXMudHJlZURhdGEsIHRoaXMuZWRpdGVkVHJlZSlcclxuXHRcdGxldCBzdWNjZXNzQ291bnQgPSAwO1xyXG5cdFx0bGV0IGVycm9yQ291bnQgPSAwO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGxldCBvcHRpb24gPSBjaGFuZ2VzW2ldO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGxldCBwYXJlbnRUZW1wSWQgPSBvcHRpb25bJ2lkJ107XHJcblx0XHRcdFx0bGV0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuc2VjdXJpdHlBZG1pblNlcnZpY2Uuc2F2ZU1lbnVPcHRpb24ob3B0aW9uKSk7XHJcblx0XHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRzdWNjZXNzQ291bnQrKztcclxuXHRcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRUZW1wSWQgPyByZXNwb25zZS5sb2FkLmlkIDogb3B0WydwYXJlbnRJZCddIH0pKTtcclxuXHRcdFx0XHRcdG9wdGlvblsnaWQnXSA9IHJlc3BvbnNlLmxvYWQuaWQ7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGVycm9yQ291bnQtLTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0ZXJyb3JDb3VudC0tO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0aGlzLnZhbGlkU3VjY2VzcyhcIkNhbWJpb3MgR3VhcmRhZG9zXCIsIFwiT2N1cnJpw7MgdW4gZXJyb3IgYWwgZ3VhcmRhciBsb3MgY2FtYmlvc1wiLCBzdWNjZXNzQ291bnQsIGVycm9yQ291bnQsIGNoYW5nZXMubGVuZ3RoKVxyXG5cclxuXHRcdHRoaXMuc2VhcmNoRmlsdGVyKG51bGwpO1xyXG5cclxuXHRcdC8vIGNoYW5nZXMuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xyXG5cdFx0Ly8gXHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnNhdmVNZW51T3B0aW9uKG9wdGlvbikuc3Vic2NyaWJlKHtcclxuXHRcdC8vIFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0Ly8gXHRcdFx0bGV0IHBhcmVudFJlbGF0aW9uID0gb3B0aW9uWydpZCddO1xyXG5cdFx0Ly8gXHRcdFx0aWYgKHJlc3BvbnNlLnJlc3BvbnNlQ29kZSA9PT0gMjAwKSB7XHJcblx0XHQvLyBcdFx0XHRcdGNoYW5nZXMgPSBjaGFuZ2VzLm1hcChvcHQgPT4gKHsgLi4ub3B0LCBwYXJlbnRJZDogb3B0WydwYXJlbnRJZCddID09PSBwYXJlbnRSZWxhdGlvbiA/IHJlc3BvbnNlLmxvYWQuaWQgOiBvcHRbJ3BhcmVudElkJ10gfSkpXHJcblx0XHQvLyBcdFx0XHRcdHN1Y2Nlc3NDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fSBlbHNlIHtcclxuXHRcdC8vIFx0XHRcdFx0ZXJyb3JDb3VudCsrO1xyXG5cdFx0Ly8gXHRcdFx0fVxyXG5cdFx0Ly8gXHRcdFx0dGhpcy52YWxpZFN1Y2Nlc3MoXCJDYW1iaW9zIEd1YXJkYWRvc1wiLCBcIk9jdXJyacOzIHVuIGVycm9yIGFsIGd1YXJkYXIgbG9zIGNhbWJpb3NcIiwgc3VjY2Vzc0NvdW50LCBlcnJvckNvdW50LCBjaGFuZ2VzLmxlbmd0aClcclxuXHRcdC8vIFx0XHR9LFxyXG5cdFx0Ly8gXHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHQvLyBcdFx0XHRlcnJvckNvdW50Kys7XHJcblx0XHQvLyBcdFx0XHR0aGlzLnZhbGlkU3VjY2VzcyhcIkNhbWJpb3MgR3VhcmRhZG9zXCIsIFwiT2N1cnJpw7MgdW4gZXJyb3IgYWwgZ3VhcmRhciBsb3MgY2FtYmlvc1wiLCBzdWNjZXNzQ291bnQsIGVycm9yQ291bnQsIGNoYW5nZXMubGVuZ3RoKVxyXG5cdFx0Ly8gXHRcdH1cclxuXHRcdC8vIFx0fSlcclxuXHRcdC8vIH0pXHJcblxyXG5cdH1cclxuXHJcblx0ZGVsZXRlT3B0aW9uKG9wdGlvbjogVHJlZU5vZGUpIHtcclxuXHRcdHRoaXMuc25hY2tiYXIuaW5mbygnRWxpbWluYW5kby4uLicpXHJcblx0XHRpZiAodGhpcy5lZGl0ZWRUcmVlLnNvbWUobm9kZSA9PiAoKG5vZGUuaWQgPz8gLSAyKSA+IC0xKSAmJiBub2RlLnBhcmVudElkID09PSBvcHRpb24uaWQpKSB7XHJcblx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhgTm8gc2UgcHVlZGUgZWxpbWluYXIgXCIke29wdGlvbi5sYWJlbH1cIiBwb3JxdWUgY29udGllbmUgbcOhcyBvcGNpb25lc2AsIDUwMDApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLmRlbGV0ZU1lbnVPcHRpb24ob3B0aW9uKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHN3aXRjaCAocmVzcG9uc2UucmVzcG9uc2VDb2RlKSB7XHJcblx0XHRcdFx0XHRjYXNlIDIwMDpcclxuXHRcdFx0XHRcdFx0dGhpcy5lZGl0ZWRUcmVlID0gdGhpcy5lZGl0ZWRUcmVlLmZpbHRlcihub2RlID0+IChub2RlLmlkICE9PSBvcHRpb24uaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyhvcHRpb24uaWQpKSlcclxuXHRcdFx0XHRcdFx0dGhpcy5zbmFja2Jhci5zdWNjZXNzKGBPcGNpw7NuIFwiJHtvcHRpb24ubGFiZWx9XCIgZWxpbWluYWRhYCk7XHJcblx0XHRcdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgMjA3OlxyXG5cdFx0XHRcdFx0XHR0aGlzLnNuYWNrYmFyLndhcm5pbmcoYE5vIHNlIHB1ZWRlIGVsaW1pbmFyIFwiJHtvcHRpb24ubGFiZWx9XCIgcG9ycXVlIGNvbnRpZW5lIG3DoXMgb3BjaW9uZXNgLCA1MDAwKVxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdHRoaXMuc25hY2tiYXIud2FybmluZyhcIk9jdXJyacOzIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIG9wY2nDs25cIilcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogXyA9PiB0aGlzLnNuYWNrYmFyLndhcm5pbmcoXCJPY3VycmnDsyB1biBlcnJvciBhbCBlbGltaW5hciBsYSBvcGNpw7NuXCIpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUN1cnJlbnROb2RlKCkge1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0ZWROb2RlLmlkICE9PSAtMSkge1xyXG5cdFx0XHRpZiAoKHRoaXMuc2VsZWN0ZWROb2RlLmlkID8/IC0xKSA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm11bHRpT3B0aW9uKHtcclxuXHRcdFx0XHRcdG1lc3NhZ2U6IGDCv0Rlc2VhcyBlbGltaW5hciBcIiR7dGhpcy5zZWxlY3RlZE5vZGUubGFiZWx9XCI/YCxcclxuXHRcdFx0XHRcdHRoZW1lOiB0aGlzLnNlY3VyaXR5QWRtaW5TZXJ2aWNlLnRoZW1lLFxyXG5cdFx0XHRcdFx0b3B0aW9uczogW1xyXG5cdFx0XHRcdFx0XHR7IGxhYmVsOiAnRWxpbWluYXInLCBjYWxsYmFjazogKCkgPT4gdGhpcy5kZWxldGVPcHRpb24odGhpcy5zZWxlY3RlZE5vZGUpLCB0eXBlOiAncHJpbWFyeScgfSxcclxuXHRcdFx0XHRcdFx0eyBsYWJlbDogJ0NhbmNlbGFyJywgY2FsbGJhY2s6ICgpID0+IHsgfSwgdHlwZTogJ3NlY29uZGFyeScgfVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuZWRpdGVkVHJlZSA9IHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZSA9PiAobm9kZS5pZCAhPT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQpICYmICghbm9kZS5hbmNlc3Rvcklkcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTm9kZS5pZCkpKVxyXG5cdFx0XHRcdHRoaXMucmVzZXRTZWxlY3RlZE5vZGUoKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWxlY3RlZENsYXNzKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5pZCA9PT0gdGhpcy5zZWxlY3RlZE5vZGUuaWQgPyAnc2VsZWN0ZWQnIDogJyc7XHJcblx0fVxyXG5cclxuXHRzZWxlY3ROb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGU7XHJcblx0fVxyXG5cclxuXHRyZXNldFNlbGVjdGVkTm9kZSgpIHtcclxuXHRcdHRoaXMuc2VsZWN0Tm9kZSh7IGlkOiAtMSwgcGFyZW50SWQ6IG51bGwsIGxhYmVsOiAnJywgY2hpbGRyZW46IFtdLCBhbmNlc3RvcklkczogW10gfSk7XHJcblx0fVxyXG5cclxuXHRpc0V4cGFuZGVkKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5leHBhbmRlZE5vZGVzLmhhcyhub2RlLmlkKTtcclxuXHR9XHJcblxyXG5cdGdldExldmVsKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHRyZXR1cm4gbm9kZS5hbmNlc3Rvcklkcy5sZW5ndGg7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVOb2RlKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGUuaWQpID8gdGhpcy5leHBhbmRlZE5vZGVzLmRlbGV0ZShub2RlLmlkKSA6IHRoaXMuZXhwYW5kZWROb2Rlcy5hZGQobm9kZS5pZCk7XHJcblx0fVxyXG5cclxuXHRoYXNDaGlsZHJlbihub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWRpdGVkVHJlZS5maWx0ZXIobm9kZV8gPT4gbm9kZV8ucGFyZW50SWQgPT09IG5vZGUuaWQpLmxlbmd0aCA+IDA7XHJcblx0fVxyXG5cclxuXHRub2RlQ29udGFpbmVyU3R5bGUobm9kZTogVHJlZU5vZGUpIHtcclxuXHRcdHJldHVybiB7ICdwYWRkaW5nLWxlZnQnOiBgJHsyMCAqIChub2RlLmxldmVsID8/IDApfXB4YCB9XHJcblx0fVxyXG5cclxuXHRoaWRlTm9kZShub2RlOiBUcmVlTm9kZSkge1xyXG5cdFx0cmV0dXJuIChub2RlLnBhcmVudElkICE9PSBudWxsKSAmJiAoIShub2RlLmFuY2VzdG9ySWRzLmV2ZXJ5KG5vZGVJZCA9PiB0aGlzLmV4cGFuZGVkTm9kZXMuaGFzKG5vZGVJZCkpKSkgfHwgISh0aGlzLmZpbHRlck5vZGVzLmhhcyhub2RlLmlkKSk7XHJcblx0fVxyXG5cclxuXHRnZXQgZm9ybUNvbXBvbmVudElucHV0cygpIHtcclxuXHRcdHJldHVybiB7XHJcblx0XHRcdG9wdGlvbjogdGhpcy5zZWxlY3RlZE5vZGUsXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRtb3ZlT3B0aW9uKG5vZGU6IFRyZWVOb2RlKSB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKE1vdmVNZW51T3B0aW9uQ29tcG9uZW50LHtcclxuXHRcdFx0ZGF0YTp7XHJcblx0XHRcdFx0b3B0aW9uOiBub2RlLFxyXG5cdFx0XHRcdHRyZWU6IHRoaXMudW5mbGF0dGVuZWRUcmVlXHJcblx0XHRcdH1cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0aWYgKHZhbHVlPy5yZWxvYWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZFRyZWUoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoYW5nZWRJdGVtcyhwcmV2aW91czogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdLCBjdXJyZW50OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10pIHtcclxuXHRsZXQgY2hhbmdlZDogeyBba2V5OiBzdHJpbmddOiBhbnk7IH1bXSA9IFtdO1xyXG5cdGN1cnJlbnQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuXHRcdGxldCBwcmV2aW91c0l0ZW0gPSBwcmV2aW91cy5maW5kKGkgPT4gaVsnaWQnXSA9PT0gaXRlbVsnaWQnXSk7XHJcblx0XHQvL2NvbnNvbGUuZXJyb3IoJyBmb3IgbG9vcCcsIHByZXZpb3VzSXRlbSwgaXRlbSk7XHJcblx0XHRpZiAocHJldmlvdXNJdGVtKSB7XHJcblx0XHRcdGZvciAobGV0IGtleSBpbiBwcmV2aW91c0l0ZW0pIHtcclxuXHRcdFx0XHRpZiAocHJldmlvdXNJdGVtW2tleV0gIT09IGl0ZW1ba2V5XSkge1xyXG5cdFx0XHRcdFx0Y2hhbmdlZC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjaGFuZ2VkLnB1c2goaXRlbSk7XHJcblx0XHR9XHJcblxyXG5cdH0pXHJcblx0cmV0dXJuIGNoYW5nZWQ7XHJcbn1cclxuXHJcbmNvbnN0IGNvbXBsZXRlTm9kZSA9IChub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlciwgcHJldkFuY2VzdG9yczogKG51bWJlciB8IG51bGwpW10pID0+ICh7XHJcblx0Li4ubm9kZSxcclxuXHRsZXZlbDogbGV2ZWwsXHJcblx0YW5jZXN0b3JJZHM6IChub2RlLnBhcmVudElkID09PSBudWxsKSA/IFtdIDogWy4uLnByZXZBbmNlc3RvcnNdLFxyXG59KVxyXG5cclxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZTogVHJlZU5vZGVbXSwgbWFwTm9kZTogRnVuY3Rpb24gPSAobm9kZTogVHJlZU5vZGUpID0+IG5vZGUsIGxldmVsOiBudW1iZXIgPSAwLCBwcmV2QW5jZXN0b3JzOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdKSB7XHJcblx0bGV0IHJlc3BvbnNlOiBUcmVlTm9kZVtdID0gdHJlZS5mbGF0TWFwKG5vZGUgPT4gW21hcE5vZGUobm9kZSwgbGV2ZWwsIHByZXZBbmNlc3RvcnMpLCAuLi5mbGF0dGVuVHJlZShub2RlLmNoaWxkcmVuID8/IFtdLCBtYXBOb2RlLCBsZXZlbCArIDEsIFsuLi5wcmV2QW5jZXN0b3JzLCBub2RlLmlkXSldKVxyXG5cdHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIHVuRmxhdHRlbihmbGF0VHJlZTogVHJlZU5vZGVbXSkge1xyXG5cclxuXHRsZXQgcmVzcG9uc2U6IFRyZWVOb2RlW10gPSBmbGF0VHJlZS5yZWR1Y2UoKGFjYywgY3VycmVudCkgPT4gWy4uLmFjYyxdLCBbXSlcclxufVxyXG4iLCI8ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImxpc3RcIj5cclxuXHQ8ZGl2IGNsYXNzPVwidGl0bGUtaW5mby1oZWFkZXJcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0aXRsZS1pbmZvXCI+XHJcblx0XHRcdDxpIGNsYXNzPVwibWVudS1saXN0XCI+PC9pPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3snTWVudScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJ1dHRvbnMtc2VjdGlvblwiPlxyXG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJhZGROb2RlVG9DdXJyZW50KClcIj48aSBjbGFzcz1cIm1lbnUtcGx1c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlQ3VycmVudE5vZGUoKVwiPjxpIGNsYXNzPVwibWVudS1taW51c1wiPjwvaT48L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwic2F2ZUNoYW5nZXMoKVwiPjxpIGNsYXNzPVwibWVudS1zYXZlXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGlhbmVyLW5vdGlmaWNhdGlvblwiPlxyXG5cdFx0PGxpYi1pbnB1dCBuZ0RlZmF1bHRDb250cm9sIFtmb3JtQ29udHJvbF09XCJzZWFyY2hcIiBuYW1lPVwic2VhcmNoXCIgW2xhYmVsXT1cIidTZWFyY2guLi4nIHwgdHJhbnNsYXRlXCIgW2NsZWFyQnV0dG9uXT1cInRydWVcIlxyXG5cdFx0XHRpY29uPVwibWVudS1zZWFyY2hcIiBbdGhlbWVdPVwidGhlbWVcIj48L2xpYi1pbnB1dD5cclxuXHQ8L2Rpdj5cclxuXHQ8bGliLWxvYWRlciBbdGhlbWVdPVwidGhlbWVcIiBbdHlwZV09XCInYmFyJ1wiIFtsb2FkaW5nXT1cImxvYWRpbmdTdGF0dXNcIj48L2xpYi1sb2FkZXI+XHJcblx0PGRpdiBjbGFzcz1cInRyZWUtY29udGFpbmVyXCI+XHJcblx0XHQ8IS0tIDxsaWItdHJlZSBbdHJlZV09XCJ0cmVlRGF0YVwiPjwvbGliLXRyZWU+IC0tPlxyXG5cdFx0PGRpdiAqbmdGb3I9XCJsZXQgbm9kZSBvZiBlZGl0ZWRUcmVlXCIgW2NsYXNzXT1cIlsnbm9kZS1jb250YWluZXInLCBoaWRlTm9kZShub2RlKSA/ICdoaWRlJyA6ICcnXVwiXHJcblx0XHRcdFtzdHlsZV09XCJub2RlQ29udGFpbmVyU3R5bGUobm9kZSlcIj5cclxuXHRcdFx0PGRpdiBbY2xhc3NdPVwiWydub2RlJywgc2VsZWN0ZWRDbGFzcyhub2RlKV1cIiAoY2xpY2spPVwic2VsZWN0Tm9kZShub2RlKVwiPlxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJoYXNDaGlsZHJlbihub2RlKVwiIChjbGljayk9XCJ0b2dnbGVOb2RlKG5vZGUpXCJcclxuXHRcdFx0XHRcdFtjbGFzc109XCJbJ3RyZWUtdG9nZ2xlJywgaXNFeHBhbmRlZChub2RlKSA/ICcnOiAncm90YXRlZCddXCI+XHJcblx0XHRcdFx0XHQ8aSBbY2xhc3NdPVwiWydtZW51LWFycm93LWRvd24nXVwiPjwvaT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWhhc0NoaWxkcmVuKG5vZGUpXCIgY2xhc3M9XCJ0cmVlLXRvZ2dsZVwiPlxyXG5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidHJlZS1ub2RlXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcblx0XHRcdFx0XHRcdDxpbnB1dCAjbm9kZU5hbWVJbnB1dCBuZ0RlZmF1bHRDb250cm9sIFsobmdNb2RlbCldPVwibm9kZS5sYWJlbFwiIC8+XHJcblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwidHJlZS1uYW1lXCIgKGNsaWNrKT1cIm5vZGVOYW1lSW5wdXQuZm9jdXMoKVwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiZ2V0TGV2ZWwobm9kZSkgPiAwXCIgY2xhc3M9XCJub2RlLW9wdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0PHNwYW4gKGNsaWNrKT1cIm1vdmVPcHRpb24obm9kZSlcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aSBjbGFzcz1cIm1lbnUtZm9sZGVyLXNlbmRcIiAqbmdJZj1cImdldExldmVsKG5vZGUpID4gMFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8IS0tIDxzcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDxpIGNsYXNzPVwibWVudS1tb3ZlXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHQ8L3NwYW4+IC0tPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IFthdHRyLmRhdGEtdGhlbWVdPVwidGhlbWVcIiBjbGFzcz1cImVkaXRvci1wYW5lbFwiPlxyXG5cdDxkaXYgY2xhc3M9XCJlZGl0b3ItdGl0bGVcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbGFiZWxcIj5FZGl0YXIgT3BjacOzbjwvc3Bhbj5cclxuXHRcdDxzcGFuIGNsYXNzPVwidGl0bGUtbmFtZVwiPnt7c2VsZWN0ZWROb2RlLmxhYmVsID8/IHNlbGVjdGVkTm9kZS5uYW1lID8/ICcnfX08L3NwYW4+XHJcblx0PC9kaXY+XHJcblx0PCEtLSB7e2N1cnJlbnROb2RlLm5hbWUgPz8gY3VycmVudE5vZGUubGFiZWx9fSAtLT5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwibWVudU9wdGlvbkZvcm1Db21wb25lbnRcIj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwibWVudU9wdGlvbkZvcm1Db21wb25lbnQ7IGlucHV0czogZm9ybUNvbXBvbmVudElucHV0c1wiPlxyXG5cclxuXHRcdDwvbmctY29udGFpbmVyPlxyXG5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19