ctt-babylon 0.18.34 → 0.18.39

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.
@@ -32,14 +32,25 @@ export class BabylonEngineComponent {
32
32
  if (this.guestsValueSeparates.adults) {
33
33
  params.append('adultos', this.guestsValueSeparates.adults.toString());
34
34
  }
35
+ //TODO: Reset when add teenagers
35
36
  if (this.guestsValueSeparates.kids.code) {
36
- params.append('children', this.guestsValueSeparates.kids.code.toString());
37
+ if (this.isAnException()) {
38
+ params.append('teenagers', this.guestsValueSeparates.kids.code.toString());
39
+ }
40
+ else {
41
+ params.append('children', this.guestsValueSeparates.kids.code.toString());
42
+ }
37
43
  }
38
44
  else {
39
45
  params.append('children', '0');
40
46
  }
41
47
  if (this.guestsValueSeparates.infants) {
42
- params.append('babies', this.guestsValueSeparates.infants.toString());
48
+ if (this.isAnException()) {
49
+ params.append('children', this.guestsValueSeparates.infants.toString());
50
+ }
51
+ else {
52
+ params.append('babies', this.guestsValueSeparates.infants.toString());
53
+ }
43
54
  }
44
55
  else {
45
56
  params.append('babies', '0');
@@ -83,6 +94,10 @@ export class BabylonEngineComponent {
83
94
  this.unsubscribe$ = new Subject();
84
95
  this.platformId = inject(PLATFORM_ID);
85
96
  this.engineState = inject(BabylonEngineStateService);
97
+ //TODO: Delete when add teenagers
98
+ this.isAnException = () => {
99
+ return this.button?.url?.includes('nicecamps');
100
+ };
86
101
  }
87
102
  ngOnInit() {
88
103
  this.minDate.setHours(0, 0, 0, 0);
@@ -323,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
323
338
  }], openModalMultMotors: [{
324
339
  type: Output
325
340
  }] } });
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1lbmdpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWVuZ2luZS9iYWJ5bG9uLWVuZ2luZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lL2JhYnlsb24tZW5naW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFDSCwyQkFBMkIsR0FFOUIsTUFBTSx3REFBd0QsQ0FBQztBQUVoRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7QUFrQm5GLE1BQU0sT0FBTyxzQkFBc0I7SUEwRHZCLGdCQUFnQjtRQUNwQixNQUFNLFVB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O3NCQUFkLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXIsIENhbGVuZGFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBEcm9wZG93biwgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tYnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSW5wdXRJIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWlucHV0LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25HdWVzdHNQb3B1cENvbXBvbmVudCxcbiAgICBndWVzdHNWYWx1ZSxcbn0gZnJvbSAnLi4vYmFieWxvbi1ndWVzdHMtcG9wdXAvYmFieWxvbi1ndWVzdHMtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25HdWVzdHNQb3B1cEkgfSBmcm9tICcuLi9iYWJ5bG9uLWd1ZXN0cy1wb3B1cC9iYWJ5bG9uLWd1ZXN0cy1wb3B1cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkVuZ2luZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VuZ2luZS1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1lbmdpbmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgICAgIEJhYnlsb25HdWVzdHNQb3B1cENvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nTW9kdWxlLFxuICAgICAgICBEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhYnlsb24tZW5naW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1lbmdpbmUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uRW5naW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdkYXRlcGlja2VyJykgZGF0ZXBpY2tlciE6IENhbGVuZGFyO1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJJbicpIGRhdGVwaWNrZXJJbiE6IENhbGVuZGFyO1xuICAgIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJPdXQnKSBkYXRlcGlja2VyT3V0ITogQ2FsZW5kYXI7XG4gICAgQFZpZXdDaGlsZCgnaG90ZWxzRHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgaG90ZWxzRHJvcGRvd24hOiBEcm9wZG93bjtcblxuICAgIEBJbnB1dCgpIG1vZGFsPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkYXRlcGlja2VyRGF0YT86IEJhYnlsb25JbnB1dEk7XG4gICAgQElucHV0KCkgZ3Vlc3RzSW5wdXQ/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIHByb21vSW5wdXQ/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGd1ZXN0cz86IEJhYnlsb25HdWVzdHNQb3B1cEk7XG4gICAgQElucHV0KCkgYnV0dG9uPzogQmFieWxvbkJ1dHRvbkk7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdXJsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBsYW5nPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGdsVmFsdWU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb25seUFkdWx0cz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2hvd0FnZXMgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRCdXR0b24/OiBCYWJ5bG9uQnV0dG9uSTtcbiAgICBASW5wdXQoKSBob3RlbHNJbnB1dD86IEJhYnlsb25JbnB1dEk7XG4gICAgQElucHV0KCkgaG90ZWxzPzogQmFieWxvbkhvdGVsc0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBob3RlbHNQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcGVuSW5OZXdXaW5kb3c/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG11bHRpcGxlTW90b3JzTW9kYWw/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRQcm9tb0NvZGU/OiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICBAT3V0cHV0KCkgb3Blbk1vZGFsTXVsdE1vdG9ycyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGhvdGVsc1ZhbHVlOiBhbnk7XG4gICAgZGF0ZXBpY2tlclZhbHVlID0gJyc7XG4gICAgbWluRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGhvdGVsczogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZGF0ZXM6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRhdGVwaWNrZXJWYWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZ3Vlc3RzOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIHByb21vOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgfSk7XG5cbiAgICBndWVzdHNWYWx1ZSA9ICcnO1xuICAgIGd1ZXN0c1ZhbHVlU2VwYXJhdGVzOiBCYWJ5bG9uR3Vlc3RWYWx1ZUkgPSB7XG4gICAgICAgIGFkdWx0czogMixcbiAgICAgICAga2lkczoge1xuICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgIGNvZGVBZ2VzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5mYW50czogMCxcbiAgICB9O1xuICAgIHNob3dpbmdHdWVzdHMgPSBmYWxzZTtcbiAgICBnZW5lcmF0ZWRVcmw6IHN0cmluZyA9ICcnO1xuICAgIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSBlbmdpbmVTdGF0ZSA9IGluamVjdChCYWJ5bG9uRW5naW5lU3RhdGVTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgYnVpbGRRdWVyeVBhcmFtcygpOiBVUkxTZWFyY2hQYXJhbXMge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudXJsKSB7XG4gICAgICAgICAgICBjb25zdCBpc01vYmlsZSA9XG4gICAgICAgICAgICAgICAgL01vYml8QW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfFdpbmRvd3MgUGhvbmUvaS50ZXN0KFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFmZmlsaWF0ZSA9IGAke3RoaXMuY29kaWdvfV8ke3RoaXMubGFuZ31fJHtcbiAgICAgICAgICAgICAgICBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ1BDJ1xuICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZmZpbGlhdGUnLCBhZmZpbGlhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlcy5kYXRlcykgJiYgZm9ybVZhbHVlcy5kYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IFtkYXRlaW4sIGRhdGVvdXRdID0gZm9ybVZhbHVlcy5kYXRlcy5tYXAoKGRhdGU6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoZGF0ZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGF0ZWluJywgZGF0ZWluKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RhdGVvdXQnLCBkYXRlb3V0KTtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoZGF0ZWluLCBkYXRlb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cykge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnYWR1bHRvcycsXG4gICAgICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMudG9TdHJpbmcoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZSkge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnY2hpbGRyZW4nLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdjaGlsZHJlbicsICcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdiYWJpZXMnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnYmFiaWVzJywgJzAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwZW5kR3Vlc3RBZ2VzKHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKGZvcm1WYWx1ZXMucHJvbW8pIHtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3Byb20nLCBmb3JtVmFsdWVzLnByb21vKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3Byb21fY2xlYW4nLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcxJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nbFZhbHVlKSBwYXJhbXMuYXBwZW5kKCdfZ2wnLCB0aGlzLmdsVmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWluRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZSA9ICcyJztcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0UHJvbW9Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9tbycpPy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRQcm9tb0NvZGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmxvYWRFbmdpbmVEYXRhKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlSG90ZWxzRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhvdGVsc0Ryb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmhvdGVsc0Ryb3Bkb3duLnNob3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZURyb3Bkb3duQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3RlbHNWYWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5ob3RlbHNWYWx1ZT8uaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZVNob3dpbmdHdWVzdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd2luZ0d1ZXN0cyA9ICF0aGlzLnNob3dpbmdHdWVzdHM7XG4gICAgfVxuXG4gICAgZ3Vlc3RzQ2hhbmdlKGRhdGE6IGd1ZXN0c1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzID0gTnVtYmVyKGRhdGEuYWR1bHRzVmFsdWU/LmNvZGUpO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZSA9IE51bWJlcihkYXRhLmtpZHNWYWx1ZT8uY29kZSk7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlQWdlcyA9IGRhdGEua2lkc1ZhbHVlPy5hZ2VzPy5tYXAoXG4gICAgICAgICAgICAoYWdlOiBhbnkpID0+IE51bWJlcihhZ2UuY29kZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzID0gTnVtYmVyKGRhdGEuaW5mYW50c1ZhbHVlPy5jb2RlKTtcblxuICAgICAgICBjb25zdCB0b3RhbEd1ZXN0cyA9XG4gICAgICAgICAgICAoTnVtYmVyKGRhdGEuYWR1bHRzVmFsdWU/LmNvZGUpXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIoZGF0YS5hZHVsdHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA6IDApICtcbiAgICAgICAgICAgIChOdW1iZXIoZGF0YS5raWRzVmFsdWU/LmNvZGUpID8gTnVtYmVyKGRhdGEua2lkc1ZhbHVlPy5jb2RlKSA6IDApICtcbiAgICAgICAgICAgIChOdW1iZXIoZGF0YS5pbmZhbnRzVmFsdWU/LmNvZGUpXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIoZGF0YS5pbmZhbnRzVmFsdWU/LmNvZGUpXG4gICAgICAgICAgICAgICAgOiAwKTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZSA9XG4gICAgICAgICAgICB0b3RhbEd1ZXN0cyA8IDEwXG4gICAgICAgICAgICAgICAgPyAnMCcgKyB0b3RhbEd1ZXN0cy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgOiB0b3RhbEd1ZXN0cy50b1N0cmluZygpO1xuXG4gICAgICAgIHRoaXMuZm9ybT8uZ2V0KCdndWVzdHMnKT8uc2V0VmFsdWUodGhpcy5ndWVzdHNWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy50b2dnbGVTaG93aW5nR3Vlc3RzKCk7XG5cbiAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgIH1cblxuICAgIGJ0bkNsaWNrKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlLmVtaXQodGhpcy5mb3JtLnZhbHVlKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLmJ1dHRvbj8udXJsKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlZFVybCA9IHRoaXMuYnV0dG9uPy51cmwgfHwgJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmJ1aWxkUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZm9ybS52YWx1ZTtcblxuICAgICAgICBpZiAoZm9ybVZhbHVlcy5ob3RlbHMpIHtcbiAgICAgICAgICAgIHRoaXMuaG90ZWxzVmFsdWUgPSBmb3JtVmFsdWVzLmhvdGVscztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhvdGVsc1ZhbHVlICYmIGZvcm1WYWx1ZXMuaG90ZWxzKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlZFVybCA9IGAke3RoaXMuaG90ZWxzVmFsdWU/LnVybH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSBgJHt0aGlzLmJ1dHRvbj8udXJsfT8ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZEd1ZXN0QWdlcyhwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGluZmFudHMsIGtpZHMgfSA9IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXM7XG5cbiAgICAgICAgaWYgKGluZmFudHMpIHtcbiAgICAgICAgICAgIEFycmF5LmZyb20oeyBsZW5ndGg6IGluZmFudHMgfSkuZm9yRWFjaCgoKSA9PlxuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2d1ZXN0QWdlcycsICcwJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2lkcz8uY29kZUFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAga2lkcy5jb2RlQWdlcy5mb3JFYWNoKChhZ2UpID0+XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZ3Vlc3RBZ2VzJywgYWdlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZVxuICAgICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnZXMtRVMnLCB7XG4gICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnLScpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0R3Vlc3RzVmFsdWUoKTogZ3Vlc3RzVmFsdWUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR1bHRzVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUsXG4gICAgICAgICAgICAgICAgbmFtZTogU3RyaW5nKHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZ2VzOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZUFnZXM/Lm1hcCgoY29kZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogU3RyaW5nKGNvZGUpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZmFudHNWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9TZWN0aW9uKCkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2VjdGlvbiBleGlzdHMgYmVmb3JlIHNjcm9sbGluZ1xuICAgICAgICAvLyBVc2UgYSBtb3JlIHNwZWNpZmljIHNlbGVjdG9yIGlmIG5lZWRlZFxuICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgdGhlIHNlY3Rpb24gaGFzIGEgc3BlY2lmaWMgY2xhc3Mgb3IgSUQsIHVzZSB0aGF0XG4gICAgICAgIC8qXG4gICAgICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmFieWxvbl9fYWR2YW50YWdlcycpO1xuICAgICAgICBpZiAoc2VjdGlvbikge1xuICAgICAgICAgIHNlY3Rpb24uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH0gKi9cbiAgICB9XG5cbiAgICBzYXZlRW5naW5lRGF0YShkYXRlaW4/OiBzdHJpbmcsIGRhdGVvdXQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZERhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbmdpbmVEYXRhJyk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0RhdGEgPSBzdG9yZWREYXRhID8gSlNPTi5wYXJzZShzdG9yZWREYXRhKSA6IHt9O1xuXG4gICAgICAgICAgICBpZiAoZGF0ZWluICYmIGRhdGVvdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJ0c0luID0gZGF0ZWluLnNwbGl0KCctJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFydHNPdXQgPSBkYXRlb3V0LnNwbGl0KCctJyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpbkRhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzSW5bMl0pLFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNJblsxXSkgLSAxLFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNJblswXSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzT3V0WzJdKSxcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzT3V0WzFdKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c091dFswXSlcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKG91dERhdGUgPD0gaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluRGF0ZS5zZXREYXRlKGluRGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGQgPSBTdHJpbmcoaW5EYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoaW5EYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5eXl5ID0gaW5EYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVvdXQgPSBgJHtkZH0tJHttbX0tJHt5eXl5fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaG90ZWxJZCA9IHRoaXMuaG90ZWxzVmFsdWU/LmlkIHx8IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZURhdGEgPSB7XG4gICAgICAgICAgICAgICAgcGVyaW9kX2Zyb206IGRhdGVpblxuICAgICAgICAgICAgICAgICAgICA/IGRhdGVpbi5yZXBsYWNlKC8tL2csICcvJylcbiAgICAgICAgICAgICAgICAgICAgOiBwcmV2aW91c0RhdGEucGVyaW9kX2Zyb20sXG4gICAgICAgICAgICAgICAgcGVyaW9kX3RvOiBkYXRlb3V0XG4gICAgICAgICAgICAgICAgICAgID8gZGF0ZW91dC5yZXBsYWNlKC8tL2csICcvJylcbiAgICAgICAgICAgICAgICAgICAgOiBwcmV2aW91c0RhdGEucGVyaW9kX3RvLFxuICAgICAgICAgICAgICAgIGFkdWx0czogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMgfHwgMSxcbiAgICAgICAgICAgICAgICBraWRzOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZSB8fCAwLFxuICAgICAgICAgICAgICAgIGJhYmllczogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzIHx8IDAsXG4gICAgICAgICAgICAgICAgaG90ZWxJZDogaG90ZWxJZCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2VuZ2luZURhdGEnLCBKU09OLnN0cmluZ2lmeShlbmdpbmVEYXRhKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsb2FkRW5naW5lRGF0YSgpIHtcbiAgICAgICAgY29uc3Qgc3RvcmVkRGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VuZ2luZURhdGEnKTtcbiAgICAgICAgaWYgKCFzdG9yZWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuTW9kYWxNdWx0aXBsZU1vdG9ycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5idWlsZFF1ZXJ5UGFyYW1zKCkudG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5lbmdpbmVTdGF0ZS5zZXRRdWVyeVBhcmFtcyhwYXJhbXMpO1xuXG4gICAgICAgIHRoaXMub3Blbk1vZGFsTXVsdE1vdG9ycy5lbWl0KCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25Ib3RlbEkge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdGlja2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25HdWVzdFZhbHVlSSB7XG4gICAgYWR1bHRzOiBudW1iZXI7XG4gICAga2lkczoge1xuICAgICAgICBjb2RlPzogbnVtYmVyO1xuICAgICAgICBjb2RlQWdlcz86IG51bWJlcltdO1xuICAgIH07XG4gICAgaW5mYW50czogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25Ib3RlbHNEcm9wZG93bkkge1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIG9wdGlvbnM/OiBCYWJ5bG9uSG90ZWxEcm9wZG93bk9wdGlvbltdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHNtYWxsVGl0bGU/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkhvdGVsRHJvcGRvd25PcHRpb24ge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdGlja2VyPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbn1cbiIsIjwhLS1EZXNrdG9wIEVuZ2luZS0tPlxuPGRpdiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZSBiZ193aGl0ZVwiIFtuZ0NsYXNzXT1cInsgZW5naW5lX19jYWRlbmE6IGhvdGVscyB9XCI+XG4gICAgQGlmIChkZWZhdWx0QnV0dG9uKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZGVmYXVsdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBbbmFtZV09XCJkZWZhdWx0QnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1jYWxsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2Nyb2xsVG9TZWN0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGRlZmF1bHRCdXR0b24gfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGZvcm1cbiAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2Zvcm0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgPlxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgaG90ZWxzSW5wdXQgJiYgaG90ZWxzICYmIGhvdGVscy5vcHRpb25zICYmIGhvdGVscy5vcHRpb25zLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaG90ZWxzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cC1kcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJob3RlbHMub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhvdGVsc1wiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJob3RlbHNQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVEcm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgI2hvdGVsc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cblxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1ib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0td3JhcHBlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgW3Nob3dPdGhlck1vbnRoc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cImRkLW1tLXl5XCJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgICAgIFtudW1iZXJPZk1vbnRoc109XCIyXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlckRhdGE/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgI2RhdGVwaWNrZXJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHlJbnB1dF09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fcHJpbWFyeSBidG4tLWxpZ2h0IGJhYnlsb24tcGx1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2RhdGVwaWNrZXItLWljb24gYmFieWxvbi1hcnJvdy1ib3R0b21cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChndWVzdHNJbnB1dD8ucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImd1ZXN0LWluZm9cIlxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlciArICc6ICAnXCJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0IG5vLWNhcmV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZ3Vlc3RzXCJcbiAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1ib3R0b21cIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cC1kaWFsb2cgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2RpYWxvZ1wiIFsodmlzaWJsZSldPVwic2hvd2luZ0d1ZXN0c1wiPlxuICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cFxuICAgICAgICAgICAgICAgIFtvbmx5QWR1bHRzXT1cIm9ubHlBZHVsdHNcIlxuICAgICAgICAgICAgICAgIFtzaG93QWdlc109XCJzaG93QWdlc1wiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJkZWZhdWx0R3Vlc3RzVmFsdWVcIlxuICAgICAgICAgICAgICAgIFthZHVsdHNEcm9wZG93bl09XCJndWVzdHM/LmFkdWx0c0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBbYWdlc0Ryb3Bkb3duXT1cImd1ZXN0cz8uYWdlc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBbYWdlc0xhYmVsXT1cImd1ZXN0cz8uYWdlc0xhYmVsXCJcbiAgICAgICAgICAgICAgICBbYmFiaWVzRHJvcGRvd25dPVwiZ3Vlc3RzPy5iYWJpZXNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2tpZHNEcm9wZG93bl09XCJndWVzdHM/LmtpZHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2tpZHNEcm9wZG93bl09XCJndWVzdHM/LmtpZHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2J0bl09XCJndWVzdHM/LmJ0blwiXG4gICAgICAgICAgICAgICAgI2d1ZXN0cGlja2VyXG4gICAgICAgICAgICAgICAgKGFwcGx5KT1cImd1ZXN0c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbGliLWJhYnlsb24tZ3Vlc3RzLXBvcHVwPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJndWVzdHMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9wcmltYXJ5IGJ0bi0tbGlnaHQgYmFieWxvbi1wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dpbmdHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcC1kaWFsb2c+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dC0td3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHByb21vLWNvZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvbW9JbnB1dD8ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tdGFnXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgQGlmIChtdWx0aXBsZU1vdG9yc01vZGFsKSB7XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX2NhbGxcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImJ0bi1zdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk1vZGFsTXVsdGlwbGVNb3RvcnMoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdlbmVyYXRlZFVybFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJvcGVuSW5OZXdXaW5kb3cgPyAnX2JsYW5rJyA6ICdfc2VsZidcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX2NhbGxcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImJ0bi1zdWJtaXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1lbmdpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWVuZ2luZS9iYWJ5bG9uLWVuZ2luZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lL2JhYnlsb24tZW5naW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFDSCwyQkFBMkIsR0FFOUIsTUFBTSx3REFBd0QsQ0FBQztBQUVoRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7QUFrQm5GLE1BQU0sT0FBTyxzQkFBc0I7SUE4RHZCLGdCQUFnQjtRQUNwQixNQUFNLFVB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bkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhbGVuZGFyLCBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRHJvcGRvd24sIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25CdXR0b25JIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWJ1dHRvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbklucHV0SSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1pbnB1dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uR3Vlc3RzUG9wdXBDb21wb25lbnQsXG4gICAgZ3Vlc3RzVmFsdWUsXG59IGZyb20gJy4uL2JhYnlsb24tZ3Vlc3RzLXBvcHVwL2JhYnlsb24tZ3Vlc3RzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uR3Vlc3RzUG9wdXBJIH0gZnJvbSAnLi4vYmFieWxvbi1ndWVzdHMtcG9wdXAvYmFieWxvbi1ndWVzdHMtcG9wdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25FbmdpbmVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lbmdpbmUtc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWJhYnlsb24tZW5naW5lJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIENhbGVuZGFyTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uR3Vlc3RzUG9wdXBDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWJ5bG9uLWVuZ2luZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2JhYnlsb24tZW5naW5lLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkVuZ2luZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlcicpIGRhdGVwaWNrZXIhOiBDYWxlbmRhcjtcbiAgICBAVmlld0NoaWxkKCdkYXRlcGlja2VySW4nKSBkYXRlcGlja2VySW4hOiBDYWxlbmRhcjtcbiAgICBAVmlld0NoaWxkKCdkYXRlcGlja2VyT3V0JykgZGF0ZXBpY2tlck91dCE6IENhbGVuZGFyO1xuICAgIEBWaWV3Q2hpbGQoJ2hvdGVsc0Ryb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhvdGVsc0Ryb3Bkb3duITogRHJvcGRvd247XG5cbiAgICBASW5wdXQoKSBtb2RhbD86IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckRhdGE/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGd1ZXN0c0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBwcm9tb0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHM/OiBCYWJ5bG9uR3Vlc3RzUG9wdXBJO1xuICAgIEBJbnB1dCgpIGJ1dHRvbj86IEJhYnlsb25CdXR0b25JO1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHVybD86IHN0cmluZztcbiAgICBASW5wdXQoKSBjb2RpZ28/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGFuZz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9ubHlBZHVsdHM/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dBZ2VzID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBkZWZhdWx0QnV0dG9uPzogQmFieWxvbkJ1dHRvbkk7XG4gICAgQElucHV0KCkgaG90ZWxzSW5wdXQ/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGhvdGVscz86IEJhYnlsb25Ib3RlbHNEcm9wZG93bkk7XG4gICAgQElucHV0KCkgaG90ZWxzUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3BlbkluTmV3V2luZG93PzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBtdWx0aXBsZU1vdG9yc01vZGFsPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZWZhdWx0UHJvbW9Db2RlPzogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5Nb2RhbE11bHRNb3RvcnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBob3RlbHNWYWx1ZTogYW55O1xuICAgIGRhdGVwaWNrZXJWYWx1ZSA9ICcnO1xuICAgIG1pbkRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBob3RlbHM6IG5ldyBGb3JtQ29udHJvbCh1bmRlZmluZWQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIGRhdGVzOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5kYXRlcGlja2VyVmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIGd1ZXN0czogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgICBwcm9tbzogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIH0pO1xuXG4gICAgZ3Vlc3RzVmFsdWUgPSAnJztcbiAgICBndWVzdHNWYWx1ZVNlcGFyYXRlczogQmFieWxvbkd1ZXN0VmFsdWVJID0ge1xuICAgICAgICBhZHVsdHM6IDIsXG4gICAgICAgIGtpZHM6IHtcbiAgICAgICAgICAgIGNvZGU6IDAsXG4gICAgICAgICAgICBjb2RlQWdlczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGluZmFudHM6IDAsXG4gICAgfTtcbiAgICBzaG93aW5nR3Vlc3RzID0gZmFsc2U7XG4gICAgZ2VuZXJhdGVkVXJsOiBzdHJpbmcgPSAnJztcbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgZW5naW5lU3RhdGUgPSBpbmplY3QoQmFieWxvbkVuZ2luZVN0YXRlU2VydmljZSk7XG5cbiAgICAvL1RPRE86IERlbGV0ZSB3aGVuIGFkZCB0ZWVuYWdlcnNcbiAgICBpc0FuRXhjZXB0aW9uID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5idXR0b24/LnVybD8uaW5jbHVkZXMoJ25pY2VjYW1wcycpO1xuICAgIH1cbiAgICBwcml2YXRlIGJ1aWxkUXVlcnlQYXJhbXMoKTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgICAgIGlmICh0aGlzLnVybCkge1xuICAgICAgICAgICAgY29uc3QgaXNNb2JpbGUgPVxuICAgICAgICAgICAgICAgIC9Nb2JpfEFuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxXaW5kb3dzIFBob25lL2kudGVzdChcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBhZmZpbGlhdGUgPSBgJHt0aGlzLmNvZGlnb31fJHt0aGlzLmxhbmd9XyR7XG4gICAgICAgICAgICAgICAgaXNNb2JpbGUgPyAnbW9iaWxlJyA6ICdQQydcbiAgICAgICAgICAgIH1gO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnYWZmaWxpYXRlJywgYWZmaWxpYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1WYWx1ZXMuZGF0ZXMpICYmIGZvcm1WYWx1ZXMuZGF0ZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBbZGF0ZWluLCBkYXRlb3V0XSA9IGZvcm1WYWx1ZXMuZGF0ZXMubWFwKChkYXRlOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKGRhdGUpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RhdGVpbicsIGRhdGVpbik7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlb3V0JywgZGF0ZW91dCk7XG4gICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKGRhdGVpbiwgZGF0ZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMpIHtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoXG4gICAgICAgICAgICAgICAgJ2FkdWx0b3MnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvL1RPRE86IFJlc2V0IHdoZW4gYWRkIHRlZW5hZ2Vyc1xuICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQW5FeGNlcHRpb24oKSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICd0ZWVuYWdlcnMnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZS50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgJ2NoaWxkcmVuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdjaGlsZHJlbicsICcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0FuRXhjZXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAnY2hpbGRyZW4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICdiYWJpZXMnLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdiYWJpZXMnLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHBlbmRHdWVzdEFnZXMocGFyYW1zKTtcblxuICAgICAgICBpZiAoZm9ybVZhbHVlcy5wcm9tbykge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbScsIGZvcm1WYWx1ZXMucHJvbW8pO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcwJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwcm9tX2NsZWFuJywgJzEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdsVmFsdWUpIHBhcmFtcy5hcHBlbmQoJ19nbCcsIHRoaXMuZ2xWYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5taW5EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlID0gJzInO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdndWVzdHMnKT8uc2V0VmFsdWUodGhpcy5ndWVzdHNWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRQcm9tb0NvZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb21vJyk/LnNldFZhbHVlKHRoaXMuZGVmYXVsdFByb21vQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubG9hZEVuZ2luZURhdGEoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVIb3RlbHNEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaG90ZWxzRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaG90ZWxzRHJvcGRvd24uc2hvdygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlRHJvcGRvd25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdGVsc1ZhbHVlID0gZXZlbnQudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmhvdGVsc1ZhbHVlPy5pZCkge1xuICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlU2hvd2luZ0d1ZXN0cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93aW5nR3Vlc3RzID0gIXRoaXMuc2hvd2luZ0d1ZXN0cztcbiAgICB9XG5cbiAgICBndWVzdHNDaGFuZ2UoZGF0YTogZ3Vlc3RzVmFsdWUpIHtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMgPSBOdW1iZXIoZGF0YS5hZHVsdHNWYWx1ZT8uY29kZSk7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlID0gTnVtYmVyKGRhdGEua2lkc1ZhbHVlPy5jb2RlKTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGVBZ2VzID0gZGF0YS5raWRzVmFsdWU/LmFnZXM/Lm1hcChcbiAgICAgICAgICAgIChhZ2U6IGFueSkgPT4gTnVtYmVyKGFnZS5jb2RlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMgPSBOdW1iZXIoZGF0YS5pbmZhbnRzVmFsdWU/LmNvZGUpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsR3Vlc3RzID1cbiAgICAgICAgICAgIChOdW1iZXIoZGF0YS5hZHVsdHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcihkYXRhLmFkdWx0c1ZhbHVlPy5jb2RlKVxuICAgICAgICAgICAgICAgIDogMCkgK1xuICAgICAgICAgICAgKE51bWJlcihkYXRhLmtpZHNWYWx1ZT8uY29kZSkgPyBOdW1iZXIoZGF0YS5raWRzVmFsdWU/LmNvZGUpIDogMCkgK1xuICAgICAgICAgICAgKE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA6IDApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlID1cbiAgICAgICAgICAgIHRvdGFsR3Vlc3RzIDwgMTBcbiAgICAgICAgICAgICAgICA/ICcwJyArIHRvdGFsR3Vlc3RzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6IHRvdGFsR3Vlc3RzLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtPy5nZXQoJ2d1ZXN0cycpPy5zZXRWYWx1ZSh0aGlzLmd1ZXN0c1ZhbHVlKTtcblxuICAgICAgICB0aGlzLnRvZ2dsZVNob3dpbmdHdWVzdHMoKTtcblxuICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgfVxuXG4gICAgYnRuQ2xpY2soZTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2UuZW1pdCh0aGlzLmZvcm0udmFsdWUpO1xuICAgIH1cblxuICAgIHVwZGF0ZUdlbmVyYXRlZFVybCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuYnV0dG9uPy51cmwpIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVkVXJsID0gdGhpcy5idXR0b24/LnVybCB8fCAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuYnVpbGRRdWVyeVBhcmFtcygpO1xuICAgICAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5mb3JtLnZhbHVlO1xuXG4gICAgICAgIGlmIChmb3JtVmFsdWVzLmhvdGVscykge1xuICAgICAgICAgICAgdGhpcy5ob3RlbHNWYWx1ZSA9IGZvcm1WYWx1ZXMuaG90ZWxzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaG90ZWxzVmFsdWUgJiYgZm9ybVZhbHVlcy5ob3RlbHMpIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVkVXJsID0gYCR7dGhpcy5ob3RlbHNWYWx1ZT8udXJsfT8ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlZFVybCA9IGAke3RoaXMuYnV0dG9uPy51cmx9PyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXBwZW5kR3Vlc3RBZ2VzKHBhcmFtczogVVJMU2VhcmNoUGFyYW1zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgaW5mYW50cywga2lkcyB9ID0gdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcztcblxuICAgICAgICBpZiAoaW5mYW50cykge1xuICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogaW5mYW50cyB9KS5mb3JFYWNoKCgpID0+XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZ3Vlc3RBZ2VzJywgJzAnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChraWRzPy5jb2RlQWdlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBraWRzLmNvZGVBZ2VzLmZvckVhY2goKGFnZSkgPT5cbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdndWVzdEFnZXMnLCBhZ2UudG9TdHJpbmcoKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBkYXRlXG4gICAgICAgICAgICAudG9Mb2NhbGVEYXRlU3RyaW5nKCdlcy1FUycsIHtcbiAgICAgICAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwvL2csICctJyk7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHRHdWVzdHNWYWx1ZSgpOiBndWVzdHNWYWx1ZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZHVsdHNWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFN0cmluZyh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cykucGFkU3RhcnQoMiwgJzAnKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBraWRzVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUpLnBhZFN0YXJ0KFxuICAgICAgICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICAgICAgICAnMCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFnZXM6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlQWdlcz8ubWFwKChjb2RlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcoY29kZSkucGFkU3RhcnQoMiwgJzAnKSxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5mYW50c1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzLFxuICAgICAgICAgICAgICAgIG5hbWU6IFN0cmluZyh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMpLnBhZFN0YXJ0KFxuICAgICAgICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICAgICAgICAnMCdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzY3JvbGxUb1NlY3Rpb24oKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBzZWN0aW9uIGV4aXN0cyBiZWZvcmUgc2Nyb2xsaW5nXG4gICAgICAgIC8vIFVzZSBhIG1vcmUgc3BlY2lmaWMgc2VsZWN0b3IgaWYgbmVlZGVkXG4gICAgICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgc2VjdGlvbiBoYXMgYSBzcGVjaWZpYyBjbGFzcyBvciBJRCwgdXNlIHRoYXRcbiAgICAgICAgLypcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiYWJ5bG9uX19hZHZhbnRhZ2VzJyk7XG4gICAgICAgIGlmIChzZWN0aW9uKSB7XG4gICAgICAgICAgc2VjdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfSAqL1xuICAgIH1cblxuICAgIHNhdmVFbmdpbmVEYXRhKGRhdGVpbj86IHN0cmluZywgZGF0ZW91dD86IHN0cmluZykge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkRGF0YSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VuZ2luZURhdGEnKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzRGF0YSA9IHN0b3JlZERhdGEgPyBKU09OLnBhcnNlKHN0b3JlZERhdGEpIDoge307XG5cbiAgICAgICAgICAgIGlmIChkYXRlaW4gJiYgZGF0ZW91dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzSW4gPSBkYXRlaW4uc3BsaXQoJy0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJ0c091dCA9IGRhdGVvdXQuc3BsaXQoJy0nKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGluRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNJblsyXSksXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c0luWzFdKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c0luWzBdKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNPdXRbMl0pLFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNPdXRbMV0pIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzT3V0WzBdKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAob3V0RGF0ZSA8PSBpbkRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5EYXRlLnNldERhdGUoaW5EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhpbkRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtbSA9IFN0cmluZyhpbkRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHl5eXkgPSBpbkRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZW91dCA9IGAke2RkfS0ke21tfS0ke3l5eXl9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBob3RlbElkID0gdGhpcy5ob3RlbHNWYWx1ZT8uaWQgfHwgMTtcblxuICAgICAgICAgICAgY29uc3QgZW5naW5lRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBwZXJpb2RfZnJvbTogZGF0ZWluXG4gICAgICAgICAgICAgICAgICAgID8gZGF0ZWluLnJlcGxhY2UoLy0vZywgJy8nKVxuICAgICAgICAgICAgICAgICAgICA6IHByZXZpb3VzRGF0YS5wZXJpb2RfZnJvbSxcbiAgICAgICAgICAgICAgICBwZXJpb2RfdG86IGRhdGVvdXRcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRlb3V0LnJlcGxhY2UoLy0vZywgJy8nKVxuICAgICAgICAgICAgICAgICAgICA6IHByZXZpb3VzRGF0YS5wZXJpb2RfdG8sXG4gICAgICAgICAgICAgICAgYWR1bHRzOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyB8fCAxLFxuICAgICAgICAgICAgICAgIGtpZHM6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlIHx8IDAsXG4gICAgICAgICAgICAgICAgYmFiaWVzOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMgfHwgMCxcbiAgICAgICAgICAgICAgICBob3RlbElkOiBob3RlbElkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZW5naW5lRGF0YScsIEpTT04uc3RyaW5naWZ5KGVuZ2luZURhdGEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRFbmdpbmVEYXRhKCkge1xuICAgICAgICBjb25zdCBzdG9yZWREYXRhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW5naW5lRGF0YScpO1xuICAgICAgICBpZiAoIXN0b3JlZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5Nb2RhbE11bHRpcGxlTW90b3JzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmJ1aWxkUXVlcnlQYXJhbXMoKS50b1N0cmluZygpO1xuICAgICAgICB0aGlzLmVuZ2luZVN0YXRlLnNldFF1ZXJ5UGFyYW1zKHBhcmFtcyk7XG5cbiAgICAgICAgdGhpcy5vcGVuTW9kYWxNdWx0TW90b3JzLmVtaXQoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkhvdGVsSSB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0aWNrZXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkd1ZXN0VmFsdWVJIHtcbiAgICBhZHVsdHM6IG51bWJlcjtcbiAgICBraWRzOiB7XG4gICAgICAgIGNvZGU/OiBudW1iZXI7XG4gICAgICAgIGNvZGVBZ2VzPzogbnVtYmVyW107XG4gICAgfTtcbiAgICBpbmZhbnRzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkhvdGVsc0Ryb3Bkb3duSSB7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgb3B0aW9ucz86IEJhYnlsb25Ib3RlbERyb3Bkb3duT3B0aW9uW107XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgc21hbGxUaXRsZT86IHN0cmluZztcbiAgICBlcnJvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYWJ5bG9uSG90ZWxEcm9wZG93bk9wdGlvbiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0aWNrZXI/OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIGlkPzogbnVtYmVyO1xufVxuIiwiPCEtLURlc2t0b3AgRW5naW5lLS0+XG48ZGl2IGNsYXNzPVwiYmFieWxvbl9fZW5naW5lIGJnX3doaXRlXCIgW25nQ2xhc3NdPVwieyBlbmdpbmVfX2NhZGVuYTogaG90ZWxzIH1cIj5cbiAgICBAaWYgKGRlZmF1bHRCdXR0b24pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1kZWZhdWx0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFtuYW1lXT1cImRlZmF1bHRCdXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNhbGxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb1NlY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZGVmYXVsdEJ1dHRvbiB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8Zm9ybVxuICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZm9ybSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICA+XG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICBob3RlbHNJbnB1dCAmJiBob3RlbHMgJiYgaG90ZWxzLm9wdGlvbnMgJiYgaG90ZWxzLm9wdGlvbnMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBob3RlbHNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImhvdGVscy5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaG90ZWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImhvdGVsc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZURyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAjaG90ZWxzRHJvcGRvd25cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93LWJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19kYXRlcGlja2VyLS13cmFwcGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19kYXRlcGlja2VyXCJcbiAgICAgICAgICAgICAgICBbc2hvd090aGVyTW9udGhzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PVwiZGQtbW0teXlcIlxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgW251bWJlck9mTW9udGhzXT1cIjJcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyRGF0YT8ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGVzXCJcbiAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICAjZGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgIFtyZWFkb25seUlucHV0XT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9wcmltYXJ5IGJ0bi0tbGlnaHQgYmFieWxvbi1wbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5vdmVybGF5VmlzaWJsZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cblxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGF0ZXBpY2tlci0taWNvbiBiYWJ5bG9uLWFycm93LWJvdHRvbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlKClcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dC0td3JhcHBlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93aW5nR3Vlc3RzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0Py5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ3Vlc3RzSW5wdXQ/LnBsYWNlaG9sZGVyICsgJzogICdcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9faW5wdXQgbm8tY2FyZXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ3Vlc3RzSW5wdXQ/LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJndWVzdHNcIlxuICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93LWJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwLWRpYWxvZyBjbGFzcz1cImJhYnlsb25fX2VuZ2luZV9fZGlhbG9nXCIgWyh2aXNpYmxlKV09XCJzaG93aW5nR3Vlc3RzXCI+XG4gICAgICAgICAgICA8bGliLWJhYnlsb24tZ3Vlc3RzLXBvcHVwXG4gICAgICAgICAgICAgICAgW29ubHlBZHVsdHNdPVwib25seUFkdWx0c1wiXG4gICAgICAgICAgICAgICAgW3Nob3dBZ2VzXT1cInNob3dBZ2VzXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cImRlZmF1bHRHdWVzdHNWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2FkdWx0c0Ryb3Bkb3duXT1cImd1ZXN0cz8uYWR1bHRzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthZ2VzRHJvcGRvd25dPVwiZ3Vlc3RzPy5hZ2VzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthZ2VzTGFiZWxdPVwiZ3Vlc3RzPy5hZ2VzTGFiZWxcIlxuICAgICAgICAgICAgICAgIFtiYWJpZXNEcm9wZG93bl09XCJndWVzdHM/LmJhYmllc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBba2lkc0Ryb3Bkb3duXT1cImd1ZXN0cz8ua2lkc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBba2lkc0Ryb3Bkb3duXT1cImd1ZXN0cz8ua2lkc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBbYnRuXT1cImd1ZXN0cz8uYnRuXCJcbiAgICAgICAgICAgICAgICAjZ3Vlc3RwaWNrZXJcbiAgICAgICAgICAgICAgICAoYXBwbHkpPVwiZ3Vlc3RzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9saWItYmFieWxvbi1ndWVzdHMtcG9wdXA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1ZXN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLWRpYWxvZz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9tb0lucHV0Py5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi10YWdcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgICBAaWYgKG11bHRpcGxlTW90b3JzTW9kYWwpIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYnRuLXN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWxNdWx0aXBsZU1vdG9ycygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZ2VuZXJhdGVkVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIm9wZW5Jbk5ld1dpbmRvdyA/ICdfYmxhbmsnIDogJ19zZWxmJ1wiXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fY2FsbFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYnRuLXN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBidXR0b24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
@@ -42,6 +42,10 @@ export class BabylonEngineModalComponent {
42
42
  this.unsubscribe$ = new Subject();
43
43
  this.showingGuests = false;
44
44
  this.platformId = inject(PLATFORM_ID);
45
+ //TODO: Delete when add teenagers
46
+ this.isAnException = () => {
47
+ return this.button?.url?.includes('nicecamps');
48
+ };
45
49
  }
46
50
  ngOnInit() {
47
51
  this.minDate.setHours(0, 0, 0, 0);
@@ -126,13 +130,23 @@ export class BabylonEngineModalComponent {
126
130
  params.append('adultos', this.guestsValueSeparates.adults.toString());
127
131
  }
128
132
  if (this.guestsValueSeparates.kids.code) {
129
- params.append('children', this.guestsValueSeparates.kids.code.toString());
133
+ if (this.isAnException()) {
134
+ params.append('teenagers', this.guestsValueSeparates.kids.code.toString());
135
+ }
136
+ else {
137
+ params.append('children', this.guestsValueSeparates.kids.code.toString());
138
+ }
130
139
  }
131
140
  else {
132
141
  params.append('children', '0');
133
142
  }
134
143
  if (this.guestsValueSeparates.infants) {
135
- params.append('babies', this.guestsValueSeparates.infants.toString());
144
+ if (this.isAnException()) {
145
+ params.append('children', this.guestsValueSeparates.infants.toString());
146
+ }
147
+ else {
148
+ params.append('babies', this.guestsValueSeparates.infants.toString());
149
+ }
136
150
  }
137
151
  else {
138
152
  params.append('babies', '0');
@@ -293,4 +307,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
293
307
  }], close: [{
294
308
  type: Output
295
309
  }] } });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1lbmdpbmUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWVuZ2luZS1tb2RhbC9iYWJ5bG9uLWVuZ2luZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lLW1vZGFsL2JhYnlsb24tZW5naW5lLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFJN0YsT0FBTyxFQUNILDJCQUEyQixHQUU5QixNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7OztBQW1CaEUsTUFBTSxPQUFPLDJCQUEyQjtJQXNEcEMsWUFD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QXhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENhbGVuZGFyLCBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRHJvcGRvd24sIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tYnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSW5wdXRJIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWlucHV0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR3Vlc3RWYWx1ZUkgfSBmcm9tICcuLi9iYWJ5bG9uLWVuZ2luZS9iYWJ5bG9uLWVuZ2luZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uR3Vlc3RzUG9wdXBDb21wb25lbnQsXG4gICAgZ3Vlc3RzVmFsdWUsXG59IGZyb20gJy4uL2JhYnlsb24tZ3Vlc3RzLXBvcHVwL2JhYnlsb24tZ3Vlc3RzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uR3Vlc3RzUG9wdXBJIH0gZnJvbSAnLi4vYmFieWxvbi1ndWVzdHMtcG9wdXAvYmFieWxvbi1ndWVzdHMtcG9wdXAuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1lbmdpbmUtbW9kYWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgICAgIEJhYnlsb25HdWVzdHNQb3B1cENvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nTW9kdWxlLFxuICAgICAgICBEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFieWxvbi1lbmdpbmUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9iYWJ5bG9uLWVuZ2luZS1tb2RhbC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25FbmdpbmVNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlcicpIGRhdGVwaWNrZXIhOiBDYWxlbmRhcjtcbiAgICBAVmlld0NoaWxkKCdob3RlbHNEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBob3RlbHNEcm9wZG93biE6IERyb3Bkb3duO1xuXG4gICAgQElucHV0KCkgZGVmYXVsdFByb21vQ29kZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBtb2RhbD86IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckRhdGE/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGd1ZXN0c0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBwcm9tb0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBidXR0b24/OiBCYWJ5bG9uQnV0dG9uSTtcbiAgICBASW5wdXQoKSBndWVzdHM/OiBCYWJ5bG9uR3Vlc3RzUG9wdXBJO1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhbmc/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdXJsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9ubHlBZHVsdHM/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dBZ2VzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGhvdGVsc0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBob3RlbHM/OiBCYWJ5bG9uSG90ZWxzTW9kYWxEcm9wZG93bkk7XG4gICAgQElucHV0KCkgaG90ZWxzUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcGVuSW5OZXdXaW5kb3c/OiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBkYXRlcGlja2VyVmFsdWUgPSAnJztcbiAgICBtaW5EYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgICBob3RlbHNWYWx1ZTogYW55O1xuXG4gICAgZm9ybU1vZGFsID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGhvdGVsczogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZGF0ZXM6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRhdGVwaWNrZXJWYWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZ3Vlc3RzOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIHByb21vOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgfSk7XG5cbiAgICBndWVzdHNWYWx1ZSA9ICcnO1xuICAgIGd1ZXN0c1ZhbHVlU2VwYXJhdGVzOiBCYWJ5bG9uR3Vlc3RWYWx1ZUkgPSB7XG4gICAgICAgIGFkdWx0czogMixcbiAgICAgICAga2lkczoge1xuICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgIGNvZGVBZ2VzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5mYW50czogMCxcbiAgICB9O1xuICAgIGdlbmVyYXRlZFVybDogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHNob3dpbmdHdWVzdHMgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEJhYnlsb25FbmdpbmVNb2RhbENvbXBvbmVudD4sXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWUgPSAnMic7XG4gICAgICAgIHRoaXMuZm9ybU1vZGFsLmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0UHJvbW9Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Nb2RhbC5nZXQoJ3Byb21vJyk/LnNldFZhbHVlKHRoaXMuZGVmYXVsdFByb21vQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuZm9ybU1vZGFsLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2FkRW5naW5lRGF0YSgpO1xuICAgIH1cblxuICAgIHRvZ2dsZUhvdGVsc0Ryb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ob3RlbHNEcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5ob3RlbHNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVEcm9wZG93bkNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG90ZWxzVmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaG90ZWxzVmFsdWU/LmlkKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVTaG93aW5nR3Vlc3RzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dpbmdHdWVzdHMgPSAhdGhpcy5zaG93aW5nR3Vlc3RzO1xuICAgIH1cblxuICAgIGd1ZXN0c0NoYW5nZShkYXRhOiBndWVzdHNWYWx1ZSkge1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyA9IE51bWJlcihkYXRhLmFkdWx0c1ZhbHVlPy5jb2RlKTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUgPSBOdW1iZXIoZGF0YS5raWRzVmFsdWU/LmNvZGUpO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZUFnZXMgPSBkYXRhLmtpZHNWYWx1ZT8uYWdlcz8ubWFwKFxuICAgICAgICAgICAgKGFnZSkgPT4gTnVtYmVyKGFnZS5jb2RlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMgPSBOdW1iZXIoZGF0YS5pbmZhbnRzVmFsdWU/LmNvZGUpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsR3Vlc3RzID1cbiAgICAgICAgICAgIChOdW1iZXIoZGF0YS5hZHVsdHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcihkYXRhLmFkdWx0c1ZhbHVlPy5jb2RlKVxuICAgICAgICAgICAgICAgIDogMCkgK1xuICAgICAgICAgICAgKE51bWJlcihkYXRhLmtpZHNWYWx1ZT8uY29kZSkgPyBOdW1iZXIoZGF0YS5raWRzVmFsdWU/LmNvZGUpIDogMCkgK1xuICAgICAgICAgICAgKE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA6IDApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlID1cbiAgICAgICAgICAgIHRvdGFsR3Vlc3RzIDwgMTBcbiAgICAgICAgICAgICAgICA/ICcwJyArIHRvdGFsR3Vlc3RzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6IHRvdGFsR3Vlc3RzLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtTW9kYWw/LmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuXG4gICAgICAgIHRoaXMudG9nZ2xlU2hvd2luZ0d1ZXN0cygpO1xuXG4gICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICB9XG5cbiAgICBidG5DbGljayhlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZS5lbWl0KHRoaXMuZm9ybU1vZGFsLnZhbHVlKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtTW9kYWwgfHwgIXRoaXMuYnV0dG9uPy51cmwpIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVkVXJsID0gdGhpcy5idXR0b24/LnVybCB8fCAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmZvcm1Nb2RhbC52YWx1ZTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgICAgIGlmIChmb3JtVmFsdWVzLmhvdGVscykge1xuICAgICAgICAgICAgdGhpcy5ob3RlbHNWYWx1ZSA9IGZvcm1WYWx1ZXMuaG90ZWxzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudXJsKSB7XG4gICAgICAgICAgICBjb25zdCBpc01vYmlsZSA9XG4gICAgICAgICAgICAgICAgL01vYml8QW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfFdpbmRvd3MgUGhvbmUvaS50ZXN0KFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFmZmlsaWF0ZSA9IGAke3RoaXMuY29kaWdvfV8ke3RoaXMubGFuZ31fJHtcbiAgICAgICAgICAgICAgICBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ1BDJ1xuICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZmZpbGlhdGUnLCBhZmZpbGlhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlcy5kYXRlcykgJiYgZm9ybVZhbHVlcy5kYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IFtkYXRlaW4sIGRhdGVvdXRdID0gZm9ybVZhbHVlcy5kYXRlcy5tYXAoKGRhdGU6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoZGF0ZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGF0ZWluJywgZGF0ZWluKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2RhdGVvdXQnLCBkYXRlb3V0KTtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoZGF0ZWluLCBkYXRlb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cykge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnYWR1bHRvcycsXG4gICAgICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMudG9TdHJpbmcoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZSkge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAnY2hpbGRyZW4nLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdjaGlsZHJlbicsICcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdiYWJpZXMnLFxuICAgICAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnYmFiaWVzJywgJzAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwZW5kR3Vlc3RBZ2VzKHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKGZvcm1WYWx1ZXMucHJvbW8pIHtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3Byb20nLCBmb3JtVmFsdWVzLnByb21vKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3Byb21fY2xlYW4nLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcxJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nbFZhbHVlKSBwYXJhbXMuYXBwZW5kKCdfZ2wnLCB0aGlzLmdsVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmhvdGVsc1ZhbHVlICYmIGZvcm1WYWx1ZXMuaG90ZWxzKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlZFVybCA9IGAke3RoaXMuaG90ZWxzVmFsdWU/LnVybH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSBgJHt0aGlzLmJ1dHRvbj8udXJsfT8ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZEd1ZXN0QWdlcyhwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGluZmFudHMsIGtpZHMgfSA9IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXM7XG5cbiAgICAgICAgaWYgKGluZmFudHMpIHtcbiAgICAgICAgICAgIEFycmF5LmZyb20oeyBsZW5ndGg6IGluZmFudHMgfSkuZm9yRWFjaCgoKSA9PlxuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2d1ZXN0QWdlcycsICcwJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2lkcz8uY29kZUFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAga2lkcy5jb2RlQWdlcy5mb3JFYWNoKChhZ2UpID0+XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZ3Vlc3RBZ2VzJywgYWdlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZVxuICAgICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnZXMtRVMnLCB7XG4gICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnLScpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0R3Vlc3RzVmFsdWUoKTogZ3Vlc3RzVmFsdWUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR1bHRzVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUsXG4gICAgICAgICAgICAgICAgbmFtZTogU3RyaW5nKHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZ2VzOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZUFnZXM/Lm1hcCgoY29kZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogU3RyaW5nKGNvZGUpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZmFudHNWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2F2ZUVuZ2luZURhdGEoZGF0ZWluPzogc3RyaW5nLCBkYXRlb3V0Pzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWREYXRhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW5naW5lRGF0YScpO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNEYXRhID0gc3RvcmVkRGF0YSA/IEpTT04ucGFyc2Uoc3RvcmVkRGF0YSkgOiB7fTtcblxuICAgICAgICAgICAgaWYgKGRhdGVpbiAmJiBkYXRlb3V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFydHNJbiA9IGRhdGVpbi5zcGxpdCgnLScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzT3V0ID0gZGF0ZW91dC5zcGxpdCgnLScpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaW5EYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c0luWzJdKSxcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzSW5bMV0pIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzSW5bMF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c091dFsyXSksXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c091dFsxXSkgLSAxLFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNPdXRbMF0pXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChvdXREYXRlIDw9IGluRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpbkRhdGUuc2V0RGF0ZShpbkRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRkID0gU3RyaW5nKGluRGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1tID0gU3RyaW5nKGluRGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeXl5eSA9IGluRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICBkYXRlb3V0ID0gYCR7ZGR9LSR7bW19LSR7eXl5eX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGhvdGVsSWQgPSB0aGlzLmhvdGVsc1ZhbHVlPy5pZCB8fCAxO1xuXG4gICAgICAgICAgICBjb25zdCBlbmdpbmVEYXRhID0ge1xuICAgICAgICAgICAgICAgIHBlcmlvZF9mcm9tOiBkYXRlaW5cbiAgICAgICAgICAgICAgICAgICAgPyBkYXRlaW4ucmVwbGFjZSgvLS9nLCAnLycpXG4gICAgICAgICAgICAgICAgICAgIDogcHJldmlvdXNEYXRhLnBlcmlvZF9mcm9tLFxuICAgICAgICAgICAgICAgIHBlcmlvZF90bzogZGF0ZW91dFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGVvdXQucmVwbGFjZSgvLS9nLCAnLycpXG4gICAgICAgICAgICAgICAgICAgIDogcHJldmlvdXNEYXRhLnBlcmlvZF90byxcbiAgICAgICAgICAgICAgICBhZHVsdHM6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzIHx8IDEsXG4gICAgICAgICAgICAgICAga2lkczogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUgfHwgMCxcbiAgICAgICAgICAgICAgICBiYWJpZXM6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyB8fCAwLFxuICAgICAgICAgICAgICAgIGhvdGVsSWQ6IGhvdGVsSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdlbmdpbmVEYXRhJywgSlNPTi5zdHJpbmdpZnkoZW5naW5lRGF0YSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZEVuZ2luZURhdGEoKSB7XG4gICAgICAgIGNvbnN0IHN0b3JlZERhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbmdpbmVEYXRhJyk7XG4gICAgICAgIGlmICghc3RvcmVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25Ib3RlbHNNb2RhbERyb3Bkb3duSSB7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgb3B0aW9ucz86IEJhYnlsb25Ib3RlbE1vZGFsRHJvcGRvd25PcHRpb25bXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzbWFsbFRpdGxlPzogc3RyaW5nO1xuICAgIGVycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25Ib3RlbE1vZGFsRHJvcGRvd25PcHRpb24ge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdGlja2VyPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbn1cbiIsIjxkaXYgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX193cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlLW1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBuYW1lPVwiY2xvc2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBidG4tLWNsb3NlIG1sLS0yMFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tcGx1c1wiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXMgZW5naW5lLW1vZGFsXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19faGVhZGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtbnMtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYmFieWxvbl9fZW5naW5lc19faGVhZGVyLS1wb3B1cC1vcGVuJzogc2hvd2luZ0d1ZXN0cyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGl0bGUtLXNtYWxsXCI+e3sgdGl0bGUgfX08L2g0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzdWJ0aXRsZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19fZm9ybSBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybU1vZGFsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICBob3RlbHNJbnB1dCAmJlxuICAgICAgICAgICAgICAgIGhvdGVscyAmJlxuICAgICAgICAgICAgICAgIGhvdGVscy5vcHRpb25zICYmXG4gICAgICAgICAgICAgICAgaG90ZWxzLm9wdGlvbnMubGVuZ3RoID4gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaG90ZWxzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXJfX2ljb24tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGhvdGVsc0lucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19fZGF0ZXBpY2tlci0tdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVIb3RlbHNEcm9wZG93bigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgaG90ZWxzSW5wdXQgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tYXJyb3ctYm90dG9tXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImhvdGVscy5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhvdGVsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaG90ZWxzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVEcm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNob3RlbHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXItLXdyYXBwZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtbm93cmFwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXJfX2ljb24tLWxlZnRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChkYXRlcGlja2VyRGF0YT8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX19kYXRlcGlja2VyLS10aXRsZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlcGlja2VyRGF0YT8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX19kYXRlcGlja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dPdGhlck1vbnRoc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC1tbS15eVwiXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyRGF0YT8ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtudW1iZXJPZk1vbnRoc109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICNkYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seUlucHV0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19fZGF0ZXBpY2tlcl9faWNvbiBiYWJ5bG9uLWNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoZ3Vlc3RzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBndWVzdHNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXJfX2ljb24tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0LnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJndWVzdHNJbnB1dC5wbGFjZWhvbGRlciArICc6ICAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ3Vlc3RzSW5wdXQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImd1ZXN0c1ZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1ib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dpbmdHdWVzdHMgJiYgZ3Vlc3RzKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cFxuICAgICAgICAgICAgICAgICAgICBbb25seUFkdWx0c109XCJvbmx5QWR1bHRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJkZWZhdWx0R3Vlc3RzVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWR1bHRzRHJvcGRvd25dPVwiZ3Vlc3RzLmFkdWx0c0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW2FnZXNEcm9wZG93bl09XCJndWVzdHMuYWdlc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW2FnZXNMYWJlbF09XCJndWVzdHMuYWdlc0xhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhYmllc0Ryb3Bkb3duXT1cImd1ZXN0cy5iYWJpZXNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtraWRzRHJvcGRvd25dPVwiZ3Vlc3RzLmtpZHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWdlc109XCJzaG93QWdlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtidG5dPVwiZ3Vlc3RzLmJ0blwiXG4gICAgICAgICAgICAgICAgICAgICNndWVzdHNwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgKGFwcGx5KT1cImd1ZXN0c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9saWItYmFieWxvbi1ndWVzdHMtcG9wdXA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1ZXN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9tb0lucHV0KSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX19kYXRlcGlja2VyX19pY29uLS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9tb0lucHV0LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aGlzLmRlZmF1bHRQcm9tb0NvZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tdGFnXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdlbmVyYXRlZFVybFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJvcGVuSW5OZXdXaW5kb3cgPyAnX2JsYW5rJyA6ICdfc2VsZidcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fY2FsbCBidG4tLWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUdlbmVyYXRlZFVybCgpOyBjbG9zZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1lbmdpbmUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWVuZ2luZS1tb2RhbC9iYWJ5bG9uLWVuZ2luZS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZW5naW5lLW1vZGFsL2JhYnlsb24tZW5naW5lLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFJN0YsT0FBTyxFQUNILDJCQUEyQixHQUU5QixNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7OztBQW1CaEUsTUFBTSxPQUFPLDJCQUEyQjtJQXNEcEMsWUFD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UGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENhbGVuZGFyLCBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRHJvcGRvd24sIERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tYnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSW5wdXRJIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWlucHV0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR3Vlc3RWYWx1ZUkgfSBmcm9tICcuLi9iYWJ5bG9uLWVuZ2luZS9iYWJ5bG9uLWVuZ2luZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uR3Vlc3RzUG9wdXBDb21wb25lbnQsXG4gICAgZ3Vlc3RzVmFsdWUsXG59IGZyb20gJy4uL2JhYnlsb24tZ3Vlc3RzLXBvcHVwL2JhYnlsb24tZ3Vlc3RzLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uR3Vlc3RzUG9wdXBJIH0gZnJvbSAnLi4vYmFieWxvbi1ndWVzdHMtcG9wdXAvYmFieWxvbi1ndWVzdHMtcG9wdXAuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1lbmdpbmUtbW9kYWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQ2FsZW5kYXJNb2R1bGUsXG4gICAgICAgIEJhYnlsb25HdWVzdHNQb3B1cENvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nTW9kdWxlLFxuICAgICAgICBEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFieWxvbi1lbmdpbmUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9iYWJ5bG9uLWVuZ2luZS1tb2RhbC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25FbmdpbmVNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlcicpIGRhdGVwaWNrZXIhOiBDYWxlbmRhcjtcbiAgICBAVmlld0NoaWxkKCdob3RlbHNEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBob3RlbHNEcm9wZG93biE6IERyb3Bkb3duO1xuXG4gICAgQElucHV0KCkgZGVmYXVsdFByb21vQ29kZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBtb2RhbD86IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckRhdGE/OiBCYWJ5bG9uSW5wdXRJO1xuICAgIEBJbnB1dCgpIGd1ZXN0c0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBwcm9tb0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBidXR0b24/OiBCYWJ5bG9uQnV0dG9uSTtcbiAgICBASW5wdXQoKSBndWVzdHM/OiBCYWJ5bG9uR3Vlc3RzUG9wdXBJO1xuICAgIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhbmc/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdXJsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9ubHlBZHVsdHM/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHNob3dBZ2VzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGhvdGVsc0lucHV0PzogQmFieWxvbklucHV0STtcbiAgICBASW5wdXQoKSBob3RlbHM/OiBCYWJ5bG9uSG90ZWxzTW9kYWxEcm9wZG93bkk7XG4gICAgQElucHV0KCkgaG90ZWxzUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBvcGVuSW5OZXdXaW5kb3c/OiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBkYXRlcGlja2VyVmFsdWUgPSAnJztcbiAgICBtaW5EYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgICBob3RlbHNWYWx1ZTogYW55O1xuXG4gICAgZm9ybU1vZGFsID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGhvdGVsczogbmV3IEZvcm1Db250cm9sKHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZGF0ZXM6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmRhdGVwaWNrZXJWYWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgZ3Vlc3RzOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICAgIHByb21vOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgfSk7XG5cbiAgICBndWVzdHNWYWx1ZSA9ICcnO1xuICAgIGd1ZXN0c1ZhbHVlU2VwYXJhdGVzOiBCYWJ5bG9uR3Vlc3RWYWx1ZUkgPSB7XG4gICAgICAgIGFkdWx0czogMixcbiAgICAgICAga2lkczoge1xuICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgIGNvZGVBZ2VzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgaW5mYW50czogMCxcbiAgICB9O1xuICAgIGdlbmVyYXRlZFVybDogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHNob3dpbmdHdWVzdHMgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEJhYnlsb25FbmdpbmVNb2RhbENvbXBvbmVudD4sXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1pbkRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWUgPSAnMic7XG4gICAgICAgIHRoaXMuZm9ybU1vZGFsLmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0UHJvbW9Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Nb2RhbC5nZXQoJ3Byb21vJyk/LnNldFZhbHVlKHRoaXMuZGVmYXVsdFByb21vQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuZm9ybU1vZGFsLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2FkRW5naW5lRGF0YSgpO1xuICAgIH1cblxuICAgIHRvZ2dsZUhvdGVsc0Ryb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ob3RlbHNEcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5ob3RlbHNEcm9wZG93bi5zaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVEcm9wZG93bkNoYW5nZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG90ZWxzVmFsdWUgPSBldmVudC52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaG90ZWxzVmFsdWU/LmlkKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVFbmdpbmVEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVTaG93aW5nR3Vlc3RzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dpbmdHdWVzdHMgPSAhdGhpcy5zaG93aW5nR3Vlc3RzO1xuICAgIH1cblxuICAgIGd1ZXN0c0NoYW5nZShkYXRhOiBndWVzdHNWYWx1ZSkge1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyA9IE51bWJlcihkYXRhLmFkdWx0c1ZhbHVlPy5jb2RlKTtcbiAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUgPSBOdW1iZXIoZGF0YS5raWRzVmFsdWU/LmNvZGUpO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZUFnZXMgPSBkYXRhLmtpZHNWYWx1ZT8uYWdlcz8ubWFwKFxuICAgICAgICAgICAgKGFnZSkgPT4gTnVtYmVyKGFnZS5jb2RlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmluZmFudHMgPSBOdW1iZXIoZGF0YS5pbmZhbnRzVmFsdWU/LmNvZGUpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsR3Vlc3RzID1cbiAgICAgICAgICAgIChOdW1iZXIoZGF0YS5hZHVsdHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcihkYXRhLmFkdWx0c1ZhbHVlPy5jb2RlKVxuICAgICAgICAgICAgICAgIDogMCkgK1xuICAgICAgICAgICAgKE51bWJlcihkYXRhLmtpZHNWYWx1ZT8uY29kZSkgPyBOdW1iZXIoZGF0YS5raWRzVmFsdWU/LmNvZGUpIDogMCkgK1xuICAgICAgICAgICAgKE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcihkYXRhLmluZmFudHNWYWx1ZT8uY29kZSlcbiAgICAgICAgICAgICAgICA6IDApO1xuICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlID1cbiAgICAgICAgICAgIHRvdGFsR3Vlc3RzIDwgMTBcbiAgICAgICAgICAgICAgICA/ICcwJyArIHRvdGFsR3Vlc3RzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICA6IHRvdGFsR3Vlc3RzLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtTW9kYWw/LmdldCgnZ3Vlc3RzJyk/LnNldFZhbHVlKHRoaXMuZ3Vlc3RzVmFsdWUpO1xuXG4gICAgICAgIHRoaXMudG9nZ2xlU2hvd2luZ0d1ZXN0cygpO1xuXG4gICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcbiAgICB9XG5cbiAgICBidG5DbGljayhlOiBFdmVudCk6IHZvaWQge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZS5lbWl0KHRoaXMuZm9ybU1vZGFsLnZhbHVlKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvL1RPRE86IERlbGV0ZSB3aGVuIGFkZCB0ZWVuYWdlcnNcbiAgICBpc0FuRXhjZXB0aW9uID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5idXR0b24/LnVybD8uaW5jbHVkZXMoJ25pY2VjYW1wcycpO1xuICAgIH1cblxuICAgIHVwZGF0ZUdlbmVyYXRlZFVybCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm1Nb2RhbCB8fCAhdGhpcy5idXR0b24/LnVybCkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSB0aGlzLmJ1dHRvbj8udXJsIHx8ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZm9ybU1vZGFsLnZhbHVlO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgICAgICAgaWYgKGZvcm1WYWx1ZXMuaG90ZWxzKSB7XG4gICAgICAgICAgICB0aGlzLmhvdGVsc1ZhbHVlID0gZm9ybVZhbHVlcy5ob3RlbHM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTW9iaWxlID1cbiAgICAgICAgICAgICAgICAvTW9iaXxBbmRyb2lkfGlQaG9uZXxpUGFkfGlQb2R8V2luZG93cyBQaG9uZS9pLnRlc3QoXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgYWZmaWxpYXRlID0gYCR7dGhpcy5jb2RpZ299XyR7dGhpcy5sYW5nfV8ke1xuICAgICAgICAgICAgICAgIGlzTW9iaWxlID8gJ21vYmlsZScgOiAnUEMnXG4gICAgICAgICAgICB9YDtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2FmZmlsaWF0ZScsIGFmZmlsaWF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtVmFsdWVzLmRhdGVzKSAmJiBmb3JtVmFsdWVzLmRhdGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3QgW2RhdGVpbiwgZGF0ZW91dF0gPSBmb3JtVmFsdWVzLmRhdGVzLm1hcCgoZGF0ZTogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZShkYXRlKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlaW4nLCBkYXRlaW4pO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZGF0ZW91dCcsIGRhdGVvdXQpO1xuICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YShkYXRlaW4sIGRhdGVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzKSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICdhZHVsdG9zJyxcbiAgICAgICAgICAgICAgICB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0FuRXhjZXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAndGVlbmFnZXJzJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAgICdjaGlsZHJlbicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnY2hpbGRyZW4nLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNBbkV4Y2VwdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgJ2NoaWxkcmVuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgICAnYmFiaWVzJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnYmFiaWVzJywgJzAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwZW5kR3Vlc3RBZ2VzKHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKGZvcm1WYWx1ZXMucHJvbW8pIHtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3Byb20nLCBmb3JtVmFsdWVzLnByb21vKTtcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3Byb21fY2xlYW4nLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcxJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nbFZhbHVlKSBwYXJhbXMuYXBwZW5kKCdfZ2wnLCB0aGlzLmdsVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmhvdGVsc1ZhbHVlICYmIGZvcm1WYWx1ZXMuaG90ZWxzKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlZFVybCA9IGAke3RoaXMuaG90ZWxzVmFsdWU/LnVybH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSBgJHt0aGlzLmJ1dHRvbj8udXJsfT8ke3BhcmFtcy50b1N0cmluZygpfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZEd1ZXN0QWdlcyhwYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGluZmFudHMsIGtpZHMgfSA9IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXM7XG5cbiAgICAgICAgaWYgKGluZmFudHMpIHtcbiAgICAgICAgICAgIEFycmF5LmZyb20oeyBsZW5ndGg6IGluZmFudHMgfSkuZm9yRWFjaCgoKSA9PlxuICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2d1ZXN0QWdlcycsICcwJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2lkcz8uY29kZUFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAga2lkcy5jb2RlQWdlcy5mb3JFYWNoKChhZ2UpID0+XG4gICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnZ3Vlc3RBZ2VzJywgYWdlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZGF0ZVxuICAgICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnZXMtRVMnLCB7XG4gICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnLScpO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0R3Vlc3RzVmFsdWUoKTogZ3Vlc3RzVmFsdWUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWR1bHRzVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmFkdWx0cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5hZHVsdHMpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2lkc1ZhbHVlOiB7XG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUsXG4gICAgICAgICAgICAgICAgbmFtZTogU3RyaW5nKHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMua2lkcy5jb2RlKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZ2VzOiB0aGlzLmd1ZXN0c1ZhbHVlU2VwYXJhdGVzLmtpZHMuY29kZUFnZXM/Lm1hcCgoY29kZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogU3RyaW5nKGNvZGUpLnBhZFN0YXJ0KDIsICcwJyksXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluZmFudHNWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyxcbiAgICAgICAgICAgICAgICBuYW1lOiBTdHJpbmcodGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5pbmZhbnRzKS5wYWRTdGFydChcbiAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgJzAnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2F2ZUVuZ2luZURhdGEoZGF0ZWluPzogc3RyaW5nLCBkYXRlb3V0Pzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWREYXRhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZW5naW5lRGF0YScpO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNEYXRhID0gc3RvcmVkRGF0YSA/IEpTT04ucGFyc2Uoc3RvcmVkRGF0YSkgOiB7fTtcblxuICAgICAgICAgICAgaWYgKGRhdGVpbiAmJiBkYXRlb3V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFydHNJbiA9IGRhdGVpbi5zcGxpdCgnLScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzT3V0ID0gZGF0ZW91dC5zcGxpdCgnLScpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaW5EYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c0luWzJdKSxcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzSW5bMV0pIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhcnRzSW5bMF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c091dFsyXSksXG4gICAgICAgICAgICAgICAgICAgIE51bWJlcihwYXJ0c091dFsxXSkgLSAxLFxuICAgICAgICAgICAgICAgICAgICBOdW1iZXIocGFydHNPdXRbMF0pXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChvdXREYXRlIDw9IGluRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpbkRhdGUuc2V0RGF0ZShpbkRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRkID0gU3RyaW5nKGluRGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1tID0gU3RyaW5nKGluRGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeXl5eSA9IGluRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgICAgICAgICBkYXRlb3V0ID0gYCR7ZGR9LSR7bW19LSR7eXl5eX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGhvdGVsSWQgPSB0aGlzLmhvdGVsc1ZhbHVlPy5pZCB8fCAxO1xuXG4gICAgICAgICAgICBjb25zdCBlbmdpbmVEYXRhID0ge1xuICAgICAgICAgICAgICAgIHBlcmlvZF9mcm9tOiBkYXRlaW5cbiAgICAgICAgICAgICAgICAgICAgPyBkYXRlaW4ucmVwbGFjZSgvLS9nLCAnLycpXG4gICAgICAgICAgICAgICAgICAgIDogcHJldmlvdXNEYXRhLnBlcmlvZF9mcm9tLFxuICAgICAgICAgICAgICAgIHBlcmlvZF90bzogZGF0ZW91dFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGVvdXQucmVwbGFjZSgvLS9nLCAnLycpXG4gICAgICAgICAgICAgICAgICAgIDogcHJldmlvdXNEYXRhLnBlcmlvZF90byxcbiAgICAgICAgICAgICAgICBhZHVsdHM6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuYWR1bHRzIHx8IDEsXG4gICAgICAgICAgICAgICAga2lkczogdGhpcy5ndWVzdHNWYWx1ZVNlcGFyYXRlcy5raWRzLmNvZGUgfHwgMCxcbiAgICAgICAgICAgICAgICBiYWJpZXM6IHRoaXMuZ3Vlc3RzVmFsdWVTZXBhcmF0ZXMuaW5mYW50cyB8fCAwLFxuICAgICAgICAgICAgICAgIGhvdGVsSWQ6IGhvdGVsSWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdlbmdpbmVEYXRhJywgSlNPTi5zdHJpbmdpZnkoZW5naW5lRGF0YSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbG9hZEVuZ2luZURhdGEoKSB7XG4gICAgICAgIGNvbnN0IHN0b3JlZERhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbmdpbmVEYXRhJyk7XG4gICAgICAgIGlmICghc3RvcmVkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25Ib3RlbHNNb2RhbERyb3Bkb3duSSB7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgb3B0aW9ucz86IEJhYnlsb25Ib3RlbE1vZGFsRHJvcGRvd25PcHRpb25bXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzbWFsbFRpdGxlPzogc3RyaW5nO1xuICAgIGVycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25Ib3RlbE1vZGFsRHJvcGRvd25PcHRpb24ge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgdGlja2VyPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBpZD86IG51bWJlcjtcbn1cbiIsIjxkaXYgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX193cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlLW1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBuYW1lPVwiY2xvc2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBidG4tLWNsb3NlIG1sLS0yMFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tcGx1c1wiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXMgZW5naW5lLW1vZGFsXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19faGVhZGVyIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtbnMtY2VudGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYmFieWxvbl9fZW5naW5lc19faGVhZGVyLS1wb3B1cC1vcGVuJzogc2hvd2luZ0d1ZXN0cyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGl0bGUtLXNtYWxsXCI+e3sgdGl0bGUgfX08L2g0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzdWJ0aXRsZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19fZm9ybSBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybU1vZGFsXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICBob3RlbHNJbnB1dCAmJlxuICAgICAgICAgICAgICAgIGhvdGVscyAmJlxuICAgICAgICAgICAgICAgIGhvdGVscy5vcHRpb25zICYmXG4gICAgICAgICAgICAgICAgaG90ZWxzLm9wdGlvbnMubGVuZ3RoID4gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgaG90ZWxzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXJfX2ljb24tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGhvdGVsc0lucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19fZGF0ZXBpY2tlci0tdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVIb3RlbHNEcm9wZG93bigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgaG90ZWxzSW5wdXQgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tYXJyb3ctYm90dG9tXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImhvdGVscy5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhvdGVsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaG90ZWxzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVEcm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNob3RlbHNEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXItLXdyYXBwZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtbm93cmFwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXJfX2ljb24tLWxlZnRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChkYXRlcGlja2VyRGF0YT8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX19kYXRlcGlja2VyLS10aXRsZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlcGlja2VyRGF0YT8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX19kYXRlcGlja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dPdGhlck1vbnRoc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJkZC1tbS15eVwiXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyRGF0YT8ucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtudW1iZXJPZk1vbnRoc109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICNkYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seUlucHV0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19fZGF0ZXBpY2tlcl9faWNvbiBiYWJ5bG9uLWNhbGVuZGFyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoZ3Vlc3RzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbl9fZW5naW5lc19faW5wdXQtLXdyYXBwZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBndWVzdHNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2RhdGVwaWNrZXJfX2ljb24tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0LnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3Vlc3QtaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJndWVzdHNJbnB1dC5wbGFjZWhvbGRlciArICc6ICAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ3Vlc3RzSW5wdXQucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImd1ZXN0c1ZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1ib3R0b21cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dpbmdHdWVzdHMgJiYgZ3Vlc3RzKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWd1ZXN0cy1wb3B1cFxuICAgICAgICAgICAgICAgICAgICBbb25seUFkdWx0c109XCJvbmx5QWR1bHRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJkZWZhdWx0R3Vlc3RzVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWR1bHRzRHJvcGRvd25dPVwiZ3Vlc3RzLmFkdWx0c0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW2FnZXNEcm9wZG93bl09XCJndWVzdHMuYWdlc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgW2FnZXNMYWJlbF09XCJndWVzdHMuYWdlc0xhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2JhYmllc0Ryb3Bkb3duXT1cImd1ZXN0cy5iYWJpZXNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtraWRzRHJvcGRvd25dPVwiZ3Vlc3RzLmtpZHNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWdlc109XCJzaG93QWdlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtidG5dPVwiZ3Vlc3RzLmJ0blwiXG4gICAgICAgICAgICAgICAgICAgICNndWVzdHNwaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgKGFwcGx5KT1cImd1ZXN0c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9saWItYmFieWxvbi1ndWVzdHMtcG9wdXA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1ZXN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnkgYnRuLS1saWdodCBiYWJ5bG9uLXBsdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd2luZ0d1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9tb0lucHV0KSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0LS13cmFwcGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHJvbW8tY29kZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uX19lbmdpbmVzX19kYXRlcGlja2VyX19pY29uLS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb25fX2VuZ2luZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9tb0lucHV0LnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aGlzLmRlZmF1bHRQcm9tb0NvZGUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhYnlsb24tdGFnXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdlbmVyYXRlZFVybFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJvcGVuSW5OZXdXaW5kb3cgPyAnX2JsYW5rJyA6ICdfc2VsZidcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fY2FsbCBidG4tLWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZUdlbmVyYXRlZFVybCgpOyBjbG9zZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==