@arsedizioni/ars-utils 18.2.163 → 18.2.164

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.
@@ -164,7 +164,7 @@ export class DialogService extends UIService {
164
164
  this.poppingState = true;
165
165
  let popped = 1;
166
166
  if (id) {
167
- const p = SystemUtils.arrayFindIndexByKey(this.popHistory, 'id', id);
167
+ const p = this.popHistory.findIndex((n) => n.id === id);
168
168
  if (p != -1) {
169
169
  popped = this.popHistory[p].value - history.state.index;
170
170
  if (popped)
@@ -398,4 +398,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
398
398
  providedIn: 'root'
399
399
  }]
400
400
  }], ctorParameters: () => [] });
401
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxzQkFBc0IsRUFFdkIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBT3pDLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQWExQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBWkYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFN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QUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsT0FBTyxDQUNMLE9BQWUsRUFDZixRQUFnQixVQUFVLEVBQzFCLFlBQW9CLElBQUksRUFDeEIsZ0JBQXdCLElBQUksRUFDNUIsZUFBOEIsSUFBSSxFQUNsQyxVQUFzQixJQUFJLEVBQzFCLFFBQWdCLEdBQUc7UUFFbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ3ZDLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsWUFBWSxFQUFFLEtBQUs7WUFDbkIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixLQUFLLEVBQUUsS0FBSztnQkFDWixTQUFTLEVBQUUsU0FBUztnQkFDcEIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFlBQVksRUFBRSxZQUFZO2dCQUMxQixPQUFPLEVBQUUsT0FBTztnQkFDaEIsVUFBVSxFQUFFLE1BQU07YUFDRTtZQUN0QixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFFBQVEsRUFBRSxLQUFLLEdBQUcsSUFBSTtZQUN0QixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBbGJVLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyLCBNYXRTbmFja0JhclJlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBCdXN5RGlhbG9nQ29tcG9uZW50XHJcbn0gZnJvbSAnLi4vZGlhbG9ncy9idXN5L2J1c3ktZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcclxuICBDb25maXJtRGlhbG9nRGF0YVxyXG59IGZyb20gJy4uL2RpYWxvZ3MvY29uZmlybS9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIEluZm9EaWFsb2dDb21wb25lbnQsXHJcbiAgSW5mb0RpYWxvZ0RhdGFcclxufSBmcm9tICcuLi9kaWFsb2dzL2luZm8vaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQsIFRvYXN0RGF0YSB9IGZyb20gJy4uL2RpYWxvZ3MvdG9hc3QvdG9hc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVUlTZXJ2aWNlIH0gZnJvbSAnLi91aS5zZXJ2aWNlJztcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSBleHRlbmRzIFVJU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcbiAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xyXG4gIHByaXZhdGUgc25hY2tCYXIgPSBpbmplY3QoTWF0U25hY2tCYXIpO1xyXG4gIHByaXZhdGUgbG9jYXRpb24gPSBpbmplY3QoUGxhdGZvcm1Mb2NhdGlvbik7XHJcbiAgcHJpdmF0ZSBidXN5RGlhbG9nUmVmOiBPdmVybGF5UmVmO1xyXG4gIHByaXZhdGUgYnVzeUNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEJ1c3lEaWFsb2dDb21wb25lbnQ+O1xyXG4gIHByaXZhdGUgZXJyb3JEaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxJbmZvRGlhbG9nQ29tcG9uZW50PjtcclxuICBwcml2YXRlIHBvcEhpc3Rvcnk6IGFueSA9IFtdO1xyXG4gIHByaXZhdGUgcG9wU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgcG9wcGluZ1N0YXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyAgIFxyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICAvLyBIYW5kbGUgZGlhbG9nIGNsb3NlIHdoZW4gYmFjayBidXR0b24gaXMgY2xpY2tlZFxyXG4gICAgdGhpcy5sb2NhdGlvbi5vblBvcFN0YXRlKCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnBvcHBpbmdTdGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoO1xyXG4gICAgICAgIGlmIChjb3VudCA+IDApIHtcclxuICAgICAgICAgIC8vIERpc2FibGUgcG9wIHNhdGUgaWYgY2FzZVxyXG4gICAgICAgICAgdGhpcy5wb3BTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gQ2xvc2UgZGlhbG9nXHJcbiAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nc1tjb3VudCAtIDFdLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgdGhpcy5wb3BwaW5nU3RhdGUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdXJsIGZyb20gIyBpbiBjYXNlIG9mIHBhZ2UgcmVsb2FkXHJcbiAgICogQHBhcmFtIHJlc2V0UG9wcGluZ1N0YXRlOiB0cnVlIGlmIHBvcHBpbmcgc3RhdGUgc2hvdWxkIGJlIHNldCB0byBmYWxzZVxyXG4gICAqL1xyXG4gIGNsZWFyVXJsKHJlc2V0UG9wcGluZ1N0YXRlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVybCA9IGxvY2F0aW9uLmhyZWY7XHJcbiAgICBsZXQgbCA9IHVybC5sZW5ndGg7XHJcbiAgICB3aGlsZSAobCA+PSAwICYmIHVybFtsIC0gMV0gPT09ICcjJykgbC0tO1xyXG4gICAgaWYgKGwgPCB1cmwubGVuZ3RoKVxyXG4gICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIHVybC5zdWJzdHJpbmcoMCwgbCkpO1xyXG4gICAgaWYgKHJlc2V0UG9wcGluZ1N0YXRlKVxyXG4gICAgICB0aGlzLnBvcHBpbmdTdGF0ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2UgYWxsIGRpYWxvZ3NcclxuICAgKi9cclxuICBjbG9zZUFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIG4uY2xvc2UoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYSBkaWFsb2dcclxuICAgKiBAcGFyYW0gY29tcG9uZW50IDogdGhlIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBjb25maWcgOiB0aGUgY29uZmlnXHJcbiAgICogQHJldHVybnM6IHRoZSBkaWFsb2cgb2JqZWN0XHJcbiAgICovXHJcbiAgb3Blbihjb21wb25lbnQ6IGFueSwgY29uZmlnOiBhbnkpOiBNYXREaWFsb2dSZWY8YW55PiB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gbnVsbDtcclxuICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVuRGlhbG9nKGNvbXBvbmVudCwgY29uZmlnKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICogT3BlbiBhIGRpYWxvZ1xyXG4gKiBAcGFyYW0gY29tcG9uZW50IDogdGhlIGNvbXBvbmVudFxyXG4gKiBAcGFyYW0gY29uZmlnIDogdGhlIGNvbmZpZ1xyXG4gKiBAcmV0dXJucyA6IHRoZSBkaWFsb2cgb2JqZWN0XHJcbiAqL1xyXG4gIHByaXZhdGUgb3BlbkRpYWxvZyhjb21wb25lbnQ6IGFueSwgY29uZmlnOiBhbnkpOiBNYXREaWFsb2dSZWY8YW55PiB7XHJcbiAgICAvLyBXZSB3aWxsIHRha2UgY2FyZSBvZiBuYXZpZ2F0aW9uXHJcbiAgICBjb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2cub3Blbihjb21wb25lbnQsIGNvbmZpZyk7XHJcbiAgICBkLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5wdXNoRGlhbG9nKGQuaWQpO1xyXG4gICAgfSk7XHJcbiAgICBkLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucG9wRGlhbG9nKGQuaWQpOyAgICAgICBcclxuICAgIH0pO1xyXG4gICAgZC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIEZpbmFsIGNsZWFudXAgb2YgbWlkZGxlIG9iamVjdHNcclxuICAgICAgdGhpcy5lcnJvckRpYWxvZ1JlZiA9IG51bGw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgZWxlbWVudCBoZWlnaHQgaW5jbHVkaW5nIG1hcmdpbnNcclxuICAgKiBAcGFyYW0gZWxlbWVudCAtIGVsZW1lbnRcclxuICAgKiBAcmV0dXJucyB0aGUgaGVpZ2h0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvdXRlckhlaWdodChlbGVtZW50OiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCxcclxuICAgICAgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcclxuICAgIGxldCBoID0gWyd0b3AnLCAnYm90dG9tJ11cclxuICAgICAgLm1hcChzaWRlID0+IHBhcnNlSW50KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi0nICsgc2lkZSkpKVxyXG4gICAgICAucmVkdWNlKCh0b3RhbCwgc2lkZSkgPT4gdG90YWwgKyBzaWRlLCBoZWlnaHQpO1xyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gY3VycmVudCBkaWFsb2cgaGVpZ2h0XHJcbiAgICovXHJcbiAgZ2V0Q3VycmVudERpYWxvZ0hlaWdodCgpOiBudW1iZXIge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuIDA7XHJcbiAgICBjb25zdCBjb3VudCA9IHRoaXMucG9wSGlzdG9yeS5sZW5ndGg7XHJcbiAgICBpZiAoY291bnQgPiAwKSB7XHJcbiAgICAgIGxldCBpZCA9IHRoaXMucG9wSGlzdG9yeVtjb3VudCAtIDFdLmlkO1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgaWYgKGVsZW0gJiYgZWxlbS5jbGllbnRIZWlnaHQgPiAwKSByZXR1cm4gZWxlbS5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBjdXJyZW50IGRpYWxvZyBzY3JvbGxhYmxlIGhlaWdodFxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgZml4ZWRQYXJ0c0NsYXNzTmFtZTogc3RyaW5nW10sXHJcbiAgICBtaW5pbWFsSGVpZ2h0OiBudW1iZXJcclxuICApOiBudW1iZXIge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuIDA7XHJcbiAgICBsZXQgaCA9IHRoaXMuZ2V0Q3VycmVudERpYWxvZ0hlaWdodCgpO1xyXG4gICAgaWYgKGggPCBtaW5pbWFsSGVpZ2h0KSB7IFxyXG4gICAgICBoID0gbWluaW1hbEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmIChmaXhlZFBhcnRzQ2xhc3NOYW1lKSB7XHJcbiAgICAgIGZpeGVkUGFydHNDbGFzc05hbWUuZm9yRWFjaChuID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobik7XHJcbiAgICAgICAgaWYgKGVsZW1zKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGggLT0gdGhpcy5vdXRlckhlaWdodChlbGVtc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVzaCBhIGRpYWxvZyBpbmZvIHRoZSBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwdXNoRGlhbG9nKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybjtcclxuICAgIGxldCBpbmRleCA9IGhpc3RvcnkubGVuZ3RoO1xyXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUoeyBpbmRleDogaW5kZXggfSwgbnVsbCwgbG9jYXRpb24uaHJlZiArICcjJyk7XHJcbiAgICB0aGlzLnBvcEhpc3RvcnkucHVzaCh7IGlkOiBpZCwgdmFsdWU6IGluZGV4IH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9wIGEgZGlhbG9nIGZyb20gdGhlIGhpc3RvcnlcclxuICAgKi9cclxuICBwcml2YXRlIHBvcERpYWxvZyhpZDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnBvcFN0YXRlKSB7XHJcbiAgICAgIHRoaXMucG9wcGluZ1N0YXRlID0gdHJ1ZTtcclxuICAgICAgbGV0IHBvcHBlZCA9IDE7XHJcbiAgICAgIGlmIChpZCkge1xyXG4gICAgICAgIGNvbnN0IHAgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMucG9wSGlzdG9yeSwgJ2lkJywgaWQpO1xyXG4gICAgICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgICAgICBwb3BwZWQgPSB0aGlzLnBvcEhpc3RvcnlbcF0udmFsdWUgLSBoaXN0b3J5LnN0YXRlLmluZGV4O1xyXG4gICAgICAgICAgaWYgKHBvcHBlZCkgcG9wcGVkKys7XHJcbiAgICAgICAgICBlbHNlIHBvcHBlZCA9IDE7XHJcbiAgICAgICAgICB0aGlzLnBvcEhpc3Rvcnkuc3BsaWNlKHAsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1cmwgPSBsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgIGxldCBsID0gdXJsLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAobCA+PSAwICYmIHVybFtsIC0gMV0gPT09ICcjJyAmJiBwb3BwZWQgPiAwKSB7XHJcbiAgICAgICAgICBsLS07XHJcbiAgICAgICAgICBwb3BwZWQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGwgPCB1cmwubGVuZ3RoKVxyXG4gICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCB1cmwuc3Vic3RyaW5nKDAsIGwpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3BTdGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIGJ1c3kgb3ZlcmxheVxyXG4gICAqIEBwYXJhbSB0eXBlOiB0aGUgdHlwZSBvZiBzcGlubmVyIHRvIGNyZWF0ZVxyXG4gICAqIEByZXR1cm5zOiB0aGUgbmV3IG92ZXJsYXlcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJ1c3koKTogT3ZlcmxheVJlZiB7XHJcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOididXN5LWJhY2tkcm9wJyxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAuZ2xvYmFsKClcclxuICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcclxuICAgICAgICAuY2VudGVyVmVydGljYWxseSgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGJ1c3kgZGlhbG9nXHJcbiAgICovXHJcbiAgY2xlYXJCdXN5KCkge1xyXG4gICAgdGhpcy5idXN5RGlhbG9nUmVmPy5kZXRhY2goKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBidXN5IGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbmV3IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAgICogQHBhcmFtIHR5cGU6IG5ldyB0eXBlIChkZWZhdWx0ID0gJ2JhcicpXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICBzZXRCdXN5KFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgdHlwZTogJ2JhcicgfCAnc3Bpbm5lcicgfCAnd2FpdCcgPSAnYmFyJyxcclxuICAgIGFjdGlvbjogT2JzZXJ2YWJsZTxPYmplY3Q+IHwgbnVsbCA9IG51bGxcclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuYnVzeURpYWxvZ1JlZiAmJiB0aGlzLmJ1c3lEaWFsb2dSZWYuaGFzQXR0YWNoZWQoKTtcclxuICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmLmluc3RhbmNlLnNldChtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCB0eXBlKTsgLy8gVXNlIHRoZSBzYW1lICAgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPcGVuIG5ld1xyXG4gICAgICBpZiAoIXRoaXMuYnVzeURpYWxvZ1JlZilcclxuICAgICAgICB0aGlzLmJ1c3lEaWFsb2dSZWYgPSB0aGlzLmNyZWF0ZUJ1c3koKTtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmID0gdGhpcy5idXN5RGlhbG9nUmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKEJ1c3lEaWFsb2dDb21wb25lbnQpKTtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmLmluc3RhbmNlLnNldChtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCB0eXBlKTtcclxuICAgICAgaWYgKGFjdGlvbikge1xyXG4gICAgICAgIGFjdGlvblxyXG4gICAgICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAhZXhpc3RzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGJ1c3kgZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBuZXcgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBwcm9ncmVzcyA6IG5ldyBwcm9ncmVzc1xyXG4gICAqIEBwYXJhbSBwcm9ncmVzc01vZGUgOiBuZXcgbW9kZSAoZGVmYXVsdCA9ICdpbmRldGVybWluYXRlJylcclxuICAgKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IHBvcHVwIGhhcyBiZWVuIG9wZW5lZFxyXG4gICAqL1xyXG4gIGJ1c3kobWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgYWN0aW9uOiBPYnNlcnZhYmxlPE9iamVjdD4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0QnVzeShtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCAnYmFyJywgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBEaXNwbGF5IGEgYnVzeSBzcGlubmVyIGRpYWxvZ1xyXG4gKiBAcGFyYW0gbWVzc2FnZSA6IG5ldyBtZXNzYWdlXHJcbiAqIEBwYXJhbSBwcm9ncmVzcyA6IG5ldyBwcm9ncmVzc1xyXG4gKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IHBvcHVwIGhhcyBiZWVuIG9wZW5lZFxyXG4gKi9cclxuICBidXN5U3Bpbm5lcihtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBwcm9ncmVzczogbnVtYmVyID0gLTEsXHJcbiAgICBwcm9ncmVzc01vZGU6ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgPSAnaW5kZXRlcm1pbmF0ZScsXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG1lc3NhZ2UsIHByb2dyZXNzLCBwcm9ncmVzc01vZGUsICdzcGlubmVyJywgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRGlzcGxheSBhIHdhaXQgc3Bpbm5lciBcclxuICAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAqL1xyXG4gIHdhaXQoXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG51bGwsIG51bGwsIG51bGwsICd3YWl0JywgYWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGFuIGluZm9ybWF0aW9uIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqIEBwYXJhbSBkaXNtaXNzQWZ0ZXI6IGlmIHNwZWNpZmllZCwgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBhZnRlciBkaXNtaXNzQWZ0ZXIgbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIGRldGFpbHM6IGlmIHNwZWNpZmllZCwgdGhlIGRldGFpbHMgaW5mb1xyXG4gICAqL1xyXG4gIGluZm8oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0luZm9ybWF6aW9uaScsXHJcbiAgICBva0NhcHRpb246IHN0cmluZyA9ICdPaycsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwLFxyXG4gICAgZGlzbWlzc0FmdGVyOiBudW1iZXIgfCBudWxsID0gbnVsbCxcclxuICAgIGRldGFpbHM6IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLm9wZW4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmZvcm1hemlvbmknLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBkZXRhaWxzOiBkZXRhaWxzLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6ICdmaWxsJ1xyXG4gICAgICB9IGFzIEluZm9EaWFsb2dEYXRhLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogd2lkdGggKyAncHgnLFxyXG4gICAgICB3aWR0aDogJzk5JSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhbiBlcnJvciBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gbG9nIDogdGhlIGVycm9yIGxvZ1xyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqIEBwYXJhbSBkaXNtaXNzQWZ0ZXI6IGlmIHNwZWNpZmllZCwgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBhZnRlciBkaXNtaXNzQWZ0ZXIgbWlsbGlzZWNvbmRzICAgXHJcbiAgICovXHJcbiAgZXJyb3IoXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBsb2c6IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgdGl0bGU6IHN0cmluZyA9ICdFcnJvcmUnLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnT2snLFxyXG4gICAgd2lkdGg6IG51bWJlciA9IDUwMCxcclxuICAgIGRpc21pc3NBZnRlcjogbnVtYmVyIHwgbnVsbCA9IG51bGxcclxuICApOiBNYXREaWFsb2dSZWY8SW5mb0RpYWxvZ0NvbXBvbmVudD4ge1xyXG4gICAgaWYgKHRoaXMuZXJyb3JEaWFsb2dSZWYpIHtcclxuICAgICAgLy8gSnVzdCBjaGFuZ2UgY3VycmVudCBlcnJvclxyXG4gICAgICB0aGlzLmVycm9yRGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldERhdGEoIHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXRhaWxzOiBsb2csXHJcbiAgICAgICAgb2tDYXB0aW9uOiBva0NhcHRpb24sXHJcbiAgICAgICAgZGlzbWlzc0FmdGVyOiBkaXNtaXNzQWZ0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvckRpYWxvZ1JlZiA9IHRoaXMub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2Vycm9yZScsXHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIGRldGFpbHM6IGxvZyxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBhcHBlYXJhbmNlOiAnZmlsbCdcclxuICAgICAgfSBhcyBJbmZvRGlhbG9nRGF0YSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSB0b2FzdFxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZSB0byBkaXNwbGF5XHJcbiAgICogQHBhcmFtIGR1cmF0aW9uIDogZHVyYXRpb24gaW4gbXNlY1xyXG4gICAqIEBwYXJhbSBpY29uIDogdGhlIG1hdC1pY29uIHRvIGRpc3BsYXlcclxuICAgKiBAcGFyYW0gYWN0aW9uQ2FwdGlvbiBhY3Rpb24gYnV0dG9uIGNhcHRpb25cclxuICAgKi9cclxuICB0b2FzdChcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGR1cmF0aW9uOiBudW1iZXIgPSAyMDAwLFxyXG4gICAgaWNvbjogc3RyaW5nID0gJ2NoZWNrJyxcclxuICAgIGFjdGlvbkNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogTWF0U25hY2tCYXJSZWY8VG9hc3RDb21wb25lbnQ+IHtcclxuICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICBpZiAoZHVyYXRpb24gPT09IC0xKSBkdXJhdGlvbiA9IDIwMDA7IC8vIGRlZmF1bHRcclxuICAgIGxldCB0b2FzdFJlZiA9IHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoVG9hc3RDb21wb25lbnQsIHtcclxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICBpY29uOiBpY29uLFxyXG4gICAgICAgIGFjdGlvbkNhcHRpb246IGFjdGlvbkNhcHRpb25cclxuICAgICAgfSBhcyBUb2FzdERhdGFcclxuICAgIH0pO1xyXG4gICAgdG9hc3RSZWYuaW5zdGFuY2UuYWN0aW9uLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRvYXN0UmVmLmRpc21pc3MoKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRvYXN0UmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGNvbmZpcm0gZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBodG1sIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gdGl0bGUgOiBkaWFsb2cgdGl0bGVcclxuICAgKiBAcGFyYW0gb2tDYXB0aW9uIDogb2sgYnV0dG9uIGNhcHRpb25cclxuICAgKiBAcGFyYW0gY2FuY2VsQ2FwdGlvbiA6IGNhbmNlbCBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvdGhlckNhcHRpb24gOiBvdGhlciBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvcHRpb25zOiBjaGVjayBib3ggb3B0aW9uc1xyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqL1xyXG4gIGNvbmZpcm0oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0NvbmZlcm1hJyxcclxuICAgIG9rQ2FwdGlvbjogc3RyaW5nID0gJ1NpJyxcclxuICAgIGNhbmNlbENhcHRpb246IHN0cmluZyA9ICdObycsXHJcbiAgICBvdGhlckNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgb3B0aW9uczogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnY29uZmVybWEnLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBjYW5jZWxDYXB0aW9uOiBjYW5jZWxDYXB0aW9uLFxyXG4gICAgICAgIG90aGVyQ2FwdGlvbjogb3RoZXJDYXB0aW9uLFxyXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCAgIFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbn1cclxuXHJcbiJdfQ==
401
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxzQkFBc0IsRUFFdkIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBT3pDLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQWExQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBWkYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFN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Q0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFPLENBQ0wsT0FBZSxFQUNmLFFBQWdCLFVBQVUsRUFDMUIsWUFBb0IsSUFBSSxFQUN4QixnQkFBd0IsSUFBSSxFQUM1QixlQUE4QixJQUFJLEVBQ2xDLFVBQXNCLElBQUksRUFDMUIsUUFBZ0IsR0FBRztRQUVuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDdkMsU0FBUyxFQUFFLFVBQVU7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixVQUFVLEVBQUUsTUFBTTthQUNFO1lBQ3RCLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLEtBQUssR0FBRyxJQUFJO1lBQ3RCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FsYlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIsIE1hdFNuYWNrQmFyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIEJ1c3lEaWFsb2dDb21wb25lbnRcclxufSBmcm9tICcuLi9kaWFsb2dzL2J1c3kvYnVzeS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBDb25maXJtRGlhbG9nQ29tcG9uZW50LFxyXG4gIENvbmZpcm1EaWFsb2dEYXRhXHJcbn0gZnJvbSAnLi4vZGlhbG9ncy9jb25maXJtL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgSW5mb0RpYWxvZ0NvbXBvbmVudCxcclxuICBJbmZvRGlhbG9nRGF0YVxyXG59IGZyb20gJy4uL2RpYWxvZ3MvaW5mby9pbmZvLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2FzdENvbXBvbmVudCwgVG9hc3REYXRhIH0gZnJvbSAnLi4vZGlhbG9ncy90b2FzdC90b2FzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVSVNlcnZpY2UgfSBmcm9tICcuL3VpLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIGV4dGVuZHMgVUlTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XHJcbiAgcHJpdmF0ZSBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XHJcbiAgcHJpdmF0ZSBsb2NhdGlvbiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKTtcclxuICBwcml2YXRlIGJ1c3lEaWFsb2dSZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSBidXN5Q29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QnVzeURpYWxvZ0NvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBlcnJvckRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+O1xyXG4gIHByaXZhdGUgcG9wSGlzdG9yeTogYW55ID0gW107XHJcbiAgcHJpdmF0ZSBwb3BTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwb3BwaW5nU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7ICAgXHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIEhhbmRsZSBkaWFsb2cgY2xvc2Ugd2hlbiBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICB0aGlzLmxvY2F0aW9uLm9uUG9wU3RhdGUoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucG9wcGluZ1N0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGNvdW50ID4gMCkge1xyXG4gICAgICAgICAgLy8gRGlzYWJsZSBwb3Agc2F0ZSBpZiBjYXNlXHJcbiAgICAgICAgICB0aGlzLnBvcFN0YXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcclxuICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzW2NvdW50IC0gMV0uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB0aGlzLnBvcHBpbmdTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB1cmwgZnJvbSAjIGluIGNhc2Ugb2YgcGFnZSByZWxvYWRcclxuICAgKiBAcGFyYW0gcmVzZXRQb3BwaW5nU3RhdGU6IHRydWUgaWYgcG9wcGluZyBzdGF0ZSBzaG91bGQgYmUgc2V0IHRvIGZhbHNlXHJcbiAgICovXHJcbiAgY2xlYXJVcmwocmVzZXRQb3BwaW5nU3RhdGU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgIGxldCBsID0gdXJsLmxlbmd0aDtcclxuICAgIHdoaWxlIChsID49IDAgJiYgdXJsW2wgLSAxXSA9PT0gJyMnKSBsLS07XHJcbiAgICBpZiAobCA8IHVybC5sZW5ndGgpXHJcbiAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgdXJsLnN1YnN0cmluZygwLCBsKSk7XHJcbiAgICBpZiAocmVzZXRQb3BwaW5nU3RhdGUpXHJcbiAgICAgIHRoaXMucG9wcGluZ1N0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBhbGwgZGlhbG9nc1xyXG4gICAqL1xyXG4gIGNsb3NlQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MuZm9yRWFjaChuID0+IHtcclxuICAgICAgbi5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBjb21wb25lbnQgOiB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGNvbmZpZyA6IHRoZSBjb25maWdcclxuICAgKiBAcmV0dXJuczogdGhlIGRpYWxvZyBvYmplY3RcclxuICAgKi9cclxuICBvcGVuKGNvbXBvbmVudDogYW55LCBjb25maWc6IGFueSk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2coY29tcG9uZW50LCBjb25maWcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBPcGVuIGEgZGlhbG9nXHJcbiAqIEBwYXJhbSBjb21wb25lbnQgOiB0aGUgY29tcG9uZW50XHJcbiAqIEBwYXJhbSBjb25maWcgOiB0aGUgY29uZmlnXHJcbiAqIEByZXR1cm5zIDogdGhlIGRpYWxvZyBvYmplY3RcclxuICovXHJcbiAgcHJpdmF0ZSBvcGVuRGlhbG9nKGNvbXBvbmVudDogYW55LCBjb25maWc6IGFueSk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcclxuICAgIC8vIFdlIHdpbGwgdGFrZSBjYXJlIG9mIG5hdmlnYXRpb25cclxuICAgIGNvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbiA9IGZhbHNlO1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZy5vcGVuKGNvbXBvbmVudCwgY29uZmlnKTtcclxuICAgIGQuYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnB1c2hEaWFsb2coZC5pZCk7XHJcbiAgICB9KTtcclxuICAgIGQuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5wb3BEaWFsb2coZC5pZCk7ICAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgLy8gRmluYWwgY2xlYW51cCBvZiBtaWRkbGUgb2JqZWN0c1xyXG4gICAgICB0aGlzLmVycm9yRGlhbG9nUmVmID0gbnVsbDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBlbGVtZW50IGhlaWdodCBpbmNsdWRpbmcgbWFyZ2luc1xyXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gZWxlbWVudFxyXG4gICAqIEByZXR1cm5zIHRoZSBoZWlnaHRcclxuICAgKi9cclxuICBwcml2YXRlIG91dGVySGVpZ2h0KGVsZW1lbnQ6IGFueSk6IG51bWJlciB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gMDtcclxuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xyXG4gICAgbGV0IGggPSBbJ3RvcCcsICdib3R0b20nXVxyXG4gICAgICAubWFwKHNpZGUgPT4gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLScgKyBzaWRlKSkpXHJcbiAgICAgIC5yZWR1Y2UoKHRvdGFsLCBzaWRlKSA9PiB0b3RhbCArIHNpZGUsIGhlaWdodCk7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBjdXJyZW50IGRpYWxvZyBoZWlnaHRcclxuICAgKi9cclxuICBnZXRDdXJyZW50RGlhbG9nSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gMDtcclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5wb3BIaXN0b3J5Lmxlbmd0aDtcclxuICAgIGlmIChjb3VudCA+IDApIHtcclxuICAgICAgbGV0IGlkID0gdGhpcy5wb3BIaXN0b3J5W2NvdW50IC0gMV0uaWQ7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICBpZiAoZWxlbSAmJiBlbGVtLmNsaWVudEhlaWdodCA+IDApIHJldHVybiBlbGVtLmNsaWVudEhlaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGN1cnJlbnQgZGlhbG9nIHNjcm9sbGFibGUgaGVpZ2h0XHJcbiAgICovXHJcbiAgZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICBmaXhlZFBhcnRzQ2xhc3NOYW1lOiBzdHJpbmdbXSxcclxuICAgIG1pbmltYWxIZWlnaHQ6IG51bWJlclxyXG4gICk6IG51bWJlciB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gMDtcclxuICAgIGxldCBoID0gdGhpcy5nZXRDdXJyZW50RGlhbG9nSGVpZ2h0KCk7XHJcbiAgICBpZiAoaCA8IG1pbmltYWxIZWlnaHQpIHsgXHJcbiAgICAgIGggPSBtaW5pbWFsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgaWYgKGZpeGVkUGFydHNDbGFzc05hbWUpIHtcclxuICAgICAgZml4ZWRQYXJ0c0NsYXNzTmFtZS5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShuKTtcclxuICAgICAgICBpZiAoZWxlbXMpIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaCAtPSB0aGlzLm91dGVySGVpZ2h0KGVsZW1zW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQdXNoIGEgZGlhbG9nIGluZm8gdGhlIGhpc3RvcnlcclxuICAgKi9cclxuICBwcml2YXRlIHB1c2hEaWFsb2coaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgbGV0IGluZGV4ID0gaGlzdG9yeS5sZW5ndGg7XHJcbiAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IGluZGV4OiBpbmRleCB9LCBudWxsLCBsb2NhdGlvbi5ocmVmICsgJyMnKTtcclxuICAgIHRoaXMucG9wSGlzdG9yeS5wdXNoKHsgaWQ6IGlkLCB2YWx1ZTogaW5kZXggfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3AgYSBkaWFsb2cgZnJvbSB0aGUgaGlzdG9yeVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcG9wRGlhbG9nKGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMucG9wU3RhdGUpIHtcclxuICAgICAgdGhpcy5wb3BwaW5nU3RhdGUgPSB0cnVlO1xyXG4gICAgICBsZXQgcG9wcGVkID0gMTtcclxuICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IHRoaXMucG9wSGlzdG9yeS5maW5kSW5kZXgoKG46IGFueSkgPT4gbi5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgICAgICBwb3BwZWQgPSB0aGlzLnBvcEhpc3RvcnlbcF0udmFsdWUgLSBoaXN0b3J5LnN0YXRlLmluZGV4O1xyXG4gICAgICAgICAgaWYgKHBvcHBlZCkgcG9wcGVkKys7XHJcbiAgICAgICAgICBlbHNlIHBvcHBlZCA9IDE7XHJcbiAgICAgICAgICB0aGlzLnBvcEhpc3Rvcnkuc3BsaWNlKHAsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1cmwgPSBsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgIGxldCBsID0gdXJsLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAobCA+PSAwICYmIHVybFtsIC0gMV0gPT09ICcjJyAmJiBwb3BwZWQgPiAwKSB7XHJcbiAgICAgICAgICBsLS07XHJcbiAgICAgICAgICBwb3BwZWQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGwgPCB1cmwubGVuZ3RoKVxyXG4gICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCB1cmwuc3Vic3RyaW5nKDAsIGwpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3BTdGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIGJ1c3kgb3ZlcmxheVxyXG4gICAqIEBwYXJhbSB0eXBlOiB0aGUgdHlwZSBvZiBzcGlubmVyIHRvIGNyZWF0ZVxyXG4gICAqIEByZXR1cm5zOiB0aGUgbmV3IG92ZXJsYXlcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJ1c3koKTogT3ZlcmxheVJlZiB7XHJcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOididXN5LWJhY2tkcm9wJyxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAuZ2xvYmFsKClcclxuICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcclxuICAgICAgICAuY2VudGVyVmVydGljYWxseSgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGJ1c3kgZGlhbG9nXHJcbiAgICovXHJcbiAgY2xlYXJCdXN5KCkge1xyXG4gICAgdGhpcy5idXN5RGlhbG9nUmVmPy5kZXRhY2goKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBidXN5IGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbmV3IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAgICogQHBhcmFtIHR5cGU6IG5ldyB0eXBlIChkZWZhdWx0ID0gJ2JhcicpXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICBzZXRCdXN5KFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgdHlwZTogJ2JhcicgfCAnc3Bpbm5lcicgfCAnd2FpdCcgPSAnYmFyJyxcclxuICAgIGFjdGlvbjogT2JzZXJ2YWJsZTxPYmplY3Q+IHwgbnVsbCA9IG51bGxcclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuYnVzeURpYWxvZ1JlZiAmJiB0aGlzLmJ1c3lEaWFsb2dSZWYuaGFzQXR0YWNoZWQoKTtcclxuICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmLmluc3RhbmNlLnNldChtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCB0eXBlKTsgLy8gVXNlIHRoZSBzYW1lICAgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPcGVuIG5ld1xyXG4gICAgICBpZiAoIXRoaXMuYnVzeURpYWxvZ1JlZilcclxuICAgICAgICB0aGlzLmJ1c3lEaWFsb2dSZWYgPSB0aGlzLmNyZWF0ZUJ1c3koKTtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmID0gdGhpcy5idXN5RGlhbG9nUmVmLmF0dGFjaChuZXcgQ29tcG9uZW50UG9ydGFsKEJ1c3lEaWFsb2dDb21wb25lbnQpKTtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmLmluc3RhbmNlLnNldChtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCB0eXBlKTtcclxuICAgICAgaWYgKGFjdGlvbikge1xyXG4gICAgICAgIGFjdGlvblxyXG4gICAgICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAhZXhpc3RzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGJ1c3kgZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBuZXcgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBwcm9ncmVzcyA6IG5ldyBwcm9ncmVzc1xyXG4gICAqIEBwYXJhbSBwcm9ncmVzc01vZGUgOiBuZXcgbW9kZSAoZGVmYXVsdCA9ICdpbmRldGVybWluYXRlJylcclxuICAgKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IHBvcHVwIGhhcyBiZWVuIG9wZW5lZFxyXG4gICAqL1xyXG4gIGJ1c3kobWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgYWN0aW9uOiBPYnNlcnZhYmxlPE9iamVjdD4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0QnVzeShtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCAnYmFyJywgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBEaXNwbGF5IGEgYnVzeSBzcGlubmVyIGRpYWxvZ1xyXG4gKiBAcGFyYW0gbWVzc2FnZSA6IG5ldyBtZXNzYWdlXHJcbiAqIEBwYXJhbSBwcm9ncmVzcyA6IG5ldyBwcm9ncmVzc1xyXG4gKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IHBvcHVwIGhhcyBiZWVuIG9wZW5lZFxyXG4gKi9cclxuICBidXN5U3Bpbm5lcihtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBwcm9ncmVzczogbnVtYmVyID0gLTEsXHJcbiAgICBwcm9ncmVzc01vZGU6ICdkZXRlcm1pbmF0ZScgfCAnaW5kZXRlcm1pbmF0ZScgPSAnaW5kZXRlcm1pbmF0ZScsXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG1lc3NhZ2UsIHByb2dyZXNzLCBwcm9ncmVzc01vZGUsICdzcGlubmVyJywgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRGlzcGxheSBhIHdhaXQgc3Bpbm5lciBcclxuICAqIEBwYXJhbSBhY3Rpb24gOiBhY3Rpb24gdG8gZG8gZHVyaW5nIHRoZSBleGVjdXRpb24gKG9wdGlvbmFsKVxyXG4gICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAqL1xyXG4gIHdhaXQoXHJcbiAgICBhY3Rpb246IE9ic2VydmFibGU8T2JqZWN0PiB8IG51bGwgPSBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRCdXN5KG51bGwsIG51bGwsIG51bGwsICd3YWl0JywgYWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGFuIGluZm9ybWF0aW9uIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqIEBwYXJhbSBkaXNtaXNzQWZ0ZXI6IGlmIHNwZWNpZmllZCwgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBhZnRlciBkaXNtaXNzQWZ0ZXIgbWlsbGlzZWNvbmRzXHJcbiAgICogQHBhcmFtIGRldGFpbHM6IGlmIHNwZWNpZmllZCwgdGhlIGRldGFpbHMgaW5mb1xyXG4gICAqL1xyXG4gIGluZm8oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0luZm9ybWF6aW9uaScsXHJcbiAgICBva0NhcHRpb246IHN0cmluZyA9ICdPaycsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwLFxyXG4gICAgZGlzbWlzc0FmdGVyOiBudW1iZXIgfCBudWxsID0gbnVsbCxcclxuICAgIGRldGFpbHM6IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLm9wZW4oSW5mb0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmZvcm1hemlvbmknLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBkZXRhaWxzOiBkZXRhaWxzLFxyXG4gICAgICAgIGFwcGVhcmFuY2U6ICdmaWxsJ1xyXG4gICAgICB9IGFzIEluZm9EaWFsb2dEYXRhLFxyXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogd2lkdGggKyAncHgnLFxyXG4gICAgICB3aWR0aDogJzk5JSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhbiBlcnJvciBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gbG9nIDogdGhlIGVycm9yIGxvZ1xyXG4gICAqIEBwYXJhbSB0aXRsZSA6IGRpYWxvZyB0aXRsZVxyXG4gICAqIEBwYXJhbSBva0NhcHRpb24gOiBvayBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqIEBwYXJhbSBkaXNtaXNzQWZ0ZXI6IGlmIHNwZWNpZmllZCwgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBhZnRlciBkaXNtaXNzQWZ0ZXIgbWlsbGlzZWNvbmRzICAgXHJcbiAgICovXHJcbiAgZXJyb3IoXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBsb2c6IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgdGl0bGU6IHN0cmluZyA9ICdFcnJvcmUnLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnT2snLFxyXG4gICAgd2lkdGg6IG51bWJlciA9IDUwMCxcclxuICAgIGRpc21pc3NBZnRlcjogbnVtYmVyIHwgbnVsbCA9IG51bGxcclxuICApOiBNYXREaWFsb2dSZWY8SW5mb0RpYWxvZ0NvbXBvbmVudD4ge1xyXG4gICAgaWYgKHRoaXMuZXJyb3JEaWFsb2dSZWYpIHtcclxuICAgICAgLy8gSnVzdCBjaGFuZ2UgY3VycmVudCBlcnJvclxyXG4gICAgICB0aGlzLmVycm9yRGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldERhdGEoIHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXRhaWxzOiBsb2csXHJcbiAgICAgICAgb2tDYXB0aW9uOiBva0NhcHRpb24sXHJcbiAgICAgICAgZGlzbWlzc0FmdGVyOiBkaXNtaXNzQWZ0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvckRpYWxvZ1JlZiA9IHRoaXMub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2Vycm9yZScsXHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIGRldGFpbHM6IGxvZyxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBhcHBlYXJhbmNlOiAnZmlsbCdcclxuICAgICAgfSBhcyBJbmZvRGlhbG9nRGF0YSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSB0b2FzdFxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZSB0byBkaXNwbGF5XHJcbiAgICogQHBhcmFtIGR1cmF0aW9uIDogZHVyYXRpb24gaW4gbXNlY1xyXG4gICAqIEBwYXJhbSBpY29uIDogdGhlIG1hdC1pY29uIHRvIGRpc3BsYXlcclxuICAgKiBAcGFyYW0gYWN0aW9uQ2FwdGlvbiBhY3Rpb24gYnV0dG9uIGNhcHRpb25cclxuICAgKi9cclxuICB0b2FzdChcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGR1cmF0aW9uOiBudW1iZXIgPSAyMDAwLFxyXG4gICAgaWNvbjogc3RyaW5nID0gJ2NoZWNrJyxcclxuICAgIGFjdGlvbkNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogTWF0U25hY2tCYXJSZWY8VG9hc3RDb21wb25lbnQ+IHtcclxuICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICBpZiAoZHVyYXRpb24gPT09IC0xKSBkdXJhdGlvbiA9IDIwMDA7IC8vIGRlZmF1bHRcclxuICAgIGxldCB0b2FzdFJlZiA9IHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoVG9hc3RDb21wb25lbnQsIHtcclxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICBpY29uOiBpY29uLFxyXG4gICAgICAgIGFjdGlvbkNhcHRpb246IGFjdGlvbkNhcHRpb25cclxuICAgICAgfSBhcyBUb2FzdERhdGFcclxuICAgIH0pO1xyXG4gICAgdG9hc3RSZWYuaW5zdGFuY2UuYWN0aW9uLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRvYXN0UmVmLmRpc21pc3MoKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRvYXN0UmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGNvbmZpcm0gZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBodG1sIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gdGl0bGUgOiBkaWFsb2cgdGl0bGVcclxuICAgKiBAcGFyYW0gb2tDYXB0aW9uIDogb2sgYnV0dG9uIGNhcHRpb25cclxuICAgKiBAcGFyYW0gY2FuY2VsQ2FwdGlvbiA6IGNhbmNlbCBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvdGhlckNhcHRpb24gOiBvdGhlciBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvcHRpb25zOiBjaGVjayBib3ggb3B0aW9uc1xyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqL1xyXG4gIGNvbmZpcm0oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0NvbmZlcm1hJyxcclxuICAgIG9rQ2FwdGlvbjogc3RyaW5nID0gJ1NpJyxcclxuICAgIGNhbmNlbENhcHRpb246IHN0cmluZyA9ICdObycsXHJcbiAgICBvdGhlckNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgb3B0aW9uczogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnY29uZmVybWEnLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBjYW5jZWxDYXB0aW9uOiBjYW5jZWxDYXB0aW9uLFxyXG4gICAgICAgIG90aGVyQ2FwdGlvbjogb3RoZXJDYXB0aW9uLFxyXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCAgIFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbn1cclxuXHJcbiJdfQ==
@@ -8,7 +8,7 @@ import { MatIconModule } from "@angular/material/icon";
8
8
  import { MatInputModule } from "@angular/material/input";
9
9
  import { MatMenuModule } from "@angular/material/menu";
10
10
  import { MatTooltipModule } from "@angular/material/tooltip";
11
- import { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';
11
+ import { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';
12
12
  import { CurrentFilter, Filters } from '../../filters';
13
13
  import { FlexLayoutModule } from '@ngbracket/ngx-layout';
14
14
  import * as i0 from "@angular/core";
@@ -253,7 +253,7 @@ export class FilterBarComponent {
253
253
  * @param id : the filter id
254
254
  */
255
255
  getFilterGroup(id) {
256
- return SystemUtils.arrayFindByKey(this.filters(), "group", id);
256
+ return this.filters().find((n) => n.group === id);
257
257
  }
258
258
  /**
259
259
  * Update filter bar using current search params
@@ -265,7 +265,7 @@ export class FilterBarComponent {
265
265
  if (g.items) {
266
266
  this.currentFilter.flt1Name = null;
267
267
  if (this.currentFilter.flt1) {
268
- let gi = SystemUtils.arrayFindByKey(g.items, "value", this.currentFilter.flt1);
268
+ const gi = g.items.find(n => n.value === this.currentFilter.flt1);
269
269
  if (gi)
270
270
  this.currentFilter.flt1Name = gi.titleSelected;
271
271
  else
@@ -278,7 +278,7 @@ export class FilterBarComponent {
278
278
  if (g.items) {
279
279
  this.currentFilter.flt2Name = null;
280
280
  if (this.currentFilter.flt2) {
281
- let gi = SystemUtils.arrayFindByKey(g.items, "value", this.currentFilter.flt2);
281
+ const gi = g.items.find(n => n.value === this.currentFilter.flt2);
282
282
  if (gi)
283
283
  this.currentFilter.flt2Name = gi.titleSelected;
284
284
  else
@@ -291,7 +291,7 @@ export class FilterBarComponent {
291
291
  if (g.items) {
292
292
  this.currentFilter.flt3Name = null;
293
293
  if (this.currentFilter.flt3) {
294
- let gi = SystemUtils.arrayFindByKey(g.items, "value", this.currentFilter.flt3);
294
+ const gi = g.items.find(n => n.value === this.currentFilter.flt3);
295
295
  if (gi)
296
296
  this.currentFilter.flt3Name = gi.titleSelected;
297
297
  else
@@ -304,7 +304,7 @@ export class FilterBarComponent {
304
304
  if (g.items) {
305
305
  this.currentFilter.flt4Name = null;
306
306
  if (this.currentFilter.flt4) {
307
- let gi = SystemUtils.arrayFindByKey(g.items, "value", this.currentFilter.flt4);
307
+ const gi = g.items.find(n => n.value === this.currentFilter.flt4);
308
308
  if (gi)
309
309
  this.currentFilter.flt4Name = gi.titleSelected;
310
310
  else
@@ -317,7 +317,7 @@ export class FilterBarComponent {
317
317
  if (g.items) {
318
318
  this.currentFilter.flt5Name = null;
319
319
  if (this.currentFilter.flt5) {
320
- let gi = SystemUtils.arrayFindByKey(g.items, "value", this.currentFilter.flt5);
320
+ const gi = g.items.find(n => n.value === this.currentFilter.flt5);
321
321
  if (gi)
322
322
  this.currentFilter.flt5Name = gi.titleSelected;
323
323
  else
@@ -345,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
345
345
  }], text3: [{
346
346
  type: Input
347
347
  }] } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFpRCxPQUFP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O29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssT0FBTyxDQUFDLEtBQUs7Z0JBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssT0FBTyxDQUFDLEtBQUs7Z0JBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssT0FBTyxDQUFDLEtBQUs7Z0JBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3JELENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLEtBQWEsRUFBRSxRQUFpQixLQUFLLEVBQUUsUUFBYSxJQUFJO1FBQ3hFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLENBQUMsTUFBTTtnQkFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUTtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLE9BQU8sQ0FBQyxLQUFLO2dCQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLO2dCQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLO2dCQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLE9BQU8sQ0FBQyxLQUFLO2dCQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO2dCQUMxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE1BQU07WUFDUixLQUFL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V0FBVyxpeEJBQzNGLGdCQUFnQiw0VEFBRSxlQUFlLHdVQUFFLGFBQWEsbUxBQUUsYUFBYSw2dkJBQUUsZ0JBQWdCLCtIQUFFLFlBQVk7OzJGQUV0RixrQkFBa0I7a0JBVDlCLFNBQVM7K0JBQ0UsWUFBWSxjQUdWLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVc7d0JBQzNGLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQzs4QkFHeEYsT0FBTztzQkFBaEIsTUFBTTtnQkFtQkUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyXCI7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJyZW50RmlsdGVyLCBDdXJyZW50RmlsdGVyQ2hhbmdlZCwgRmlsdGVyR3JvdXAsIEZpbHRlckl0ZW0sIEZpbHRlcnMgfSBmcm9tICcuLi8uLi9maWx0ZXJzJztcclxuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dCc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImZpbHRlci1iYXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2ZpbHRlci1iYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZmlsdGVyLWJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBOZ1N0eWxlLCBGbGV4TGF5b3V0TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0RGl2aWRlck1vZHVsZSwgU2FmZUh0bWxQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VycmVudEZpbHRlckNoYW5nZWQ+KCk7XHJcblxyXG4gIGZpbHRlcnMgPSBpbnB1dDxhbnk+KCk7XHJcbiAgY2FuRmlsdGVyQnlGbHQxID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeUZsdDIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0MyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlGbHQ0ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeUZsdDUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5VGV4dCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeVRleHQyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5VGV4dDMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgdGV4dE5hbWUgPSBpbnB1dDxzdHJpbmc+KFwidGVzdG9cIik7XHJcbiAgdGV4dDJOYW1lID0gaW5wdXQ8c3RyaW5nPihcIi4uLlwiKTtcclxuICB0ZXh0M05hbWUgPSBpbnB1dDxzdHJpbmc+KFwiLi4uXCIpO1xyXG4gIHRleHRMZW5ndGggPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgdGV4dDJMZW5ndGggPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgdGV4dDNMZW5ndGggPSBpbnB1dDxzdHJpbmc+KCk7ICBcclxuICBzaG93VGV4dFNlYXJjaEJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBhcHBlYXJhbmNlID0gaW5wdXQ8J2ZpbGwnIHwgJ291dGxpbmUnIHwgbnVsbD4oJ291dGxpbmUnKTtcclxuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmcgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHRleHQyOiBzdHJpbmcgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHRleHQzOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBwcm90ZWN0ZWQgZmx0MTogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDI6IEZpbHRlckdyb3VwO1xyXG4gIHByb3RlY3RlZCBmbHQzOiBGaWx0ZXJHcm91cDtcclxuICBwcm90ZWN0ZWQgZmx0NDogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDU6IEZpbHRlckdyb3VwO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudEZpbHRlcjogQ3VycmVudEZpbHRlciA9IG5ldyBDdXJyZW50RmlsdGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRmlsdGVycygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSBmaWx0ZXJzXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZmlsdGVycygpKSByZXR1cm47XHJcbiAgICB0aGlzLmZpbHRlcnMoKS5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgc3dpdGNoIChuLmdyb3VwKSB7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8xOlxyXG4gICAgICAgICAgdGhpcy5mbHQxID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQxLnNldChuLmFjdGlvbiB8fCAobi5pdGVtcyAmJiBuLml0ZW1zLmxlbmd0aCA+IDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfMjpcclxuICAgICAgICAgIHRoaXMuZmx0MiA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0Mi5zZXQobi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpbHRlcnMuRkxUXzM6XHJcbiAgICAgICAgICB0aGlzLmZsdDMgPSBuO1xyXG4gICAgICAgICAgdGhpcy5jYW5GaWx0ZXJCeUZsdDMuc2V0KG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF80OlxyXG4gICAgICAgICAgdGhpcy5mbHQ0ID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQ0LnNldCggbi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpbHRlcnMuRkxUXzU6XHJcbiAgICAgICAgICB0aGlzLmZsdDUgPSBuO1xyXG4gICAgICAgICAgdGhpcy5jYW5GaWx0ZXJCeUZsdDUuc2V0KG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSBmaWx0ZXJcclxuICAgKiBAcGFyYW0gZmlsdGVyIDogdGhlIGZpbHRlciB0byBhcHBseVxyXG4gICAqL1xyXG4gIGFwcGx5RmlsdGVyKGZpbHRlcjogRmlsdGVySXRlbSkge1xyXG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAoZmlsdGVyLmdyb3VwKSB7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMTpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8yOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzM6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQzICE9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0M05hbWUgPSBmaWx0ZXIudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfNDpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF81OlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgZmlsdGVyOiB0aGlzLmN1cnJlbnRGaWx0ZXIsIGdyb3VwOiBmaWx0ZXIuZ3JvdXAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBhIGZpbHRlciBhY3Rpb25cclxuICAgKiBAcGFyYW0gZmlsdGVyIDogdGhlIGZpbHRlciB0byBhcHBseVxyXG4gICAqIEBwYXJhbSBjbGVhciA6IHRydWUgaWYgdGhlIGZpbHRlciBtdXMgYmUgcmVtb3ZlZFxyXG4gICAqIEBwYXJhbSBldmVudCA6IHRoZSBjbGljayBldmVudFxyXG4gICAqL1xyXG4gIGFwcGx5RmlsdGVyQWN0aW9uKGdyb3VwOiBudW1iZXIsIGNsZWFyOiBib29sZWFuID0gZmFsc2UsIGV2ZW50OiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIWNsZWFyKSB7XHJcbiAgICAgIGNvbnN0IGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKGdyb3VwKTtcclxuICAgICAgaWYgKGcuYWN0aW9uKSBnLmFjdGlvbih0aGlzLCBnLCBldmVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyRmlsdGVyKGdyb3VwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IHRleHQgZmlsdGVyXHJcbiAgICovXHJcbiAgYXBwbHlUZXh0RmlsdGVyKCkge1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDIgPSB0aGlzLnRleHQyO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQzID0gdGhpcy50ZXh0MztcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KHtcclxuICAgICAgZmlsdGVyOiB0aGlzLmN1cnJlbnRGaWx0ZXIsXHJcbiAgICAgIGdyb3VwOiBGaWx0ZXJzLkZMVF9URVhUXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGEgZmlsdGVyXHJcbiAgICogQHBhcmFtIGdyb3VwIDogdGhlIGZpbHRlciBncm91cFxyXG4gICAqL1xyXG4gIGNsZWFyRmlsdGVyKGdyb3VwOiBudW1iZXIpIHtcclxuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKGdyb3VwKSB7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMTpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgIT0gbnVsbDtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDFOYW1lID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMjpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIgIT0gbnVsbDtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMzpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgIT0gbnVsbDtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfNDpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgIT0gbnVsbDtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDROYW1lID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfNTpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUgIT0gbnVsbDtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IGZpbHRlcjogdGhpcy5jdXJyZW50RmlsdGVyLCBncm91cDogZ3JvdXAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBhbGwgZmlsdGVyc1xyXG4gICAqL1xyXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQyID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0MyA9IG51bGw7XHJcbiAgICB0aGlzLnRleHQgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0MiA9IG51bGw7XHJcbiAgICB0aGlzLnRleHQzID0gbnVsbDtcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgZmlsdGVyOiB0aGlzLmN1cnJlbnRGaWx0ZXIsIGdyb3VwOiAtMSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGNhbiBjbGVhciBhbGwgZmlsdGVycyBidXR0b24gY2FiIGJlIHNob3dlZFxyXG4gICAqL1xyXG4gIGNhbkNsZWFyQWxsRmlsdGVycygpOiBib29sZWFuIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeVRleHQpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeVRleHQyKSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlUZXh0MykgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5Rmx0MSkgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5Rmx0MikgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5Rmx0MykgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5Rmx0NCkgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5Rmx0NSkgY291bnQrKztcclxuICAgIHJldHVybiBjb3VudCA+IDE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGZpbHRlciBncm91cFxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBmaWx0ZXIgaWRcclxuICAgKi9cclxuICBwcml2YXRlIGdldEZpbHRlckdyb3VwKGlkOiBudW1iZXIpOiBGaWx0ZXJHcm91cCB7XHJcbiAgICByZXR1cm4gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkodGhpcy5maWx0ZXJzKCksIFwiZ3JvdXBcIiwgaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGZpbHRlciBiYXIgdXNpbmcgY3VycmVudCBzZWFyY2ggcGFyYW1zXHJcbiAgICogQHBhcmFtIHBhcmFtcyA6IHNlYXJjaCBwYXJhbXNcclxuICAgKi9cclxuICBzeW5jRmlsdGVyKCkge1xyXG4gICAgbGV0IGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzEpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgbGV0IGdpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgICAgIGcuaXRlbXMsXHJcbiAgICAgICAgICAgIFwidmFsdWVcIixcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDFcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF8yKTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDIpIHtcclxuICAgICAgICAgIGxldCBnaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgICBnLml0ZW1zLFxyXG4gICAgICAgICAgICBcInZhbHVlXCIsXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZyA9IHRoaXMuZ2V0RmlsdGVyR3JvdXAoRmlsdGVycy5GTFRfMyk7XHJcbiAgICBpZiAoZykge1xyXG4gICAgICBpZiAoZy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5mbHQzKSB7XHJcbiAgICAgICAgICBsZXQgZ2kgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleShcclxuICAgICAgICAgICAgZy5pdGVtcyxcclxuICAgICAgICAgICAgXCJ2YWx1ZVwiLFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0M1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChnaSkgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gZ2kudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICAgIGVsc2UgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzQpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCkge1xyXG4gICAgICAgICAgbGV0IGdpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgICAgIGcuaXRlbXMsXHJcbiAgICAgICAgICAgIFwidmFsdWVcIixcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF81KTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDUpIHtcclxuICAgICAgICAgIGxldCBnaSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgICBnLml0ZW1zLFxyXG4gICAgICAgICAgICBcInZhbHVlXCIsXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZXh0ID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQ7XHJcbiAgICB0aGlzLnRleHQyID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQyO1xyXG4gICAgdGhpcy50ZXh0MyA9IHRoaXMuY3VycmVudEZpbHRlci50ZXh0MztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiICBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgIGNsYXNzPVwiZmlsdGVyYm94XCJcclxuW25nQ2xhc3NdPVwieydmaWx0ZXJib3gtZmlsdGVyZWQnOiBjdXJyZW50RmlsdGVyLmZpbHRlcmVkKCl9XCI+XHJcbiAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIj5cclxuICAgIEBpZiAoY2FuRmlsdGVyQnlUZXh0KCkgfHwgY2FuRmlsdGVyQnlUZXh0MigpIHx8IGNhbkZpbHRlckJ5VGV4dDMoKSkge1xyXG4gICAgPGRpdiBmeEZsZXgubHQtc209XCIxMDBcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsIHN0eWxlPVwicGFkZGluZzo0cHg7XCI+XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeVRleHQoKSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdGV4dExlbmd0aCgpID8/ICcxMDAlJ31cIiBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNlcmNhIHBlciB7e3RleHROYW1lKCl9fS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJfdGV4dFwiIFsobmdNb2RlbCldPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiICNfdGV4dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiYXBwbHlUZXh0RmlsdGVyKClcIiBtYXRUb29sdGlwPVwiUHJlbWkgSU5WSU8gcGVyIGF2dmlhcmUgbGEgcmljZXJjYVwiPlxyXG4gICAgICAgICAgQGlmICh0ZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0ID0gJyc7IGFwcGx5VGV4dEZpbHRlcigpO1wiIG1hdFRvb2x0aXA9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChzaG93VGV4dFNlYXJjaEJ1dHRvbigpKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJUcm92YVwiIChjbGljayk9XCJhcHBseVRleHRGaWx0ZXIoKTtcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiVHJvdmFcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5VGV4dDIoKSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdGV4dDJMZW5ndGgoKSA/PyAnMTAwJSd9XCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYSBwZXIge3t0ZXh0Mk5hbWUoKX19Li4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIl90ZXh0MlwiIFsobmdNb2RlbCldPVwidGV4dDJcIiBtYXhsZW5ndGg9XCIxMDBcIiAjX3RleHQyPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIChrZXl1cC5FbnRlcik9XCJhcHBseVRleHRGaWx0ZXIoKVwiIG1hdFRvb2x0aXA9XCJQcmVtaSBJTlZJTyBwZXIgYXZ2aWFyZSBsYSByaWNlcmNhXCI+XHJcbiAgICAgICAgICBAaWYgKHRleHQyKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0MiA9ICcnOyBhcHBseVRleHRGaWx0ZXIoKTtcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5VGV4dDMoKSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdGV4dDNMZW5ndGgoKSA/PyAnMTAwJSd9XCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYSBwZXIge3t0ZXh0M05hbWUoKX19Li4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIl90ZXh0M1wiIFsobmdNb2RlbCldPVwidGV4dDNcIiBtYXhsZW5ndGg9XCIxMDBcIiAjX3RleHQzPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIChrZXl1cC5FbnRlcik9XCJhcHBseVRleHRGaWx0ZXIoKVwiIG1hdFRvb2x0aXA9XCJQcmVtaSBJTlZJTyBwZXIgYXZ2aWFyZSBsYSByaWNlcmNhXCI+XHJcbiAgICAgICAgICBAaWYgKHRleHQzKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0MyA9ICcnOyBhcHBseVRleHRGaWx0ZXIoKTtcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgZnhGbGV4Lmx0LXNtPVwiMTAwXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgPlxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQxKCkgJiYgZmx0MSAmJiBmbHQxLmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQxLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDEudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDEudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0MS50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigxLCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQxKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQxLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigxLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9IEBlbHNlIGlmIChjYW5GaWx0ZXJCeUZsdDEoKSAmJiBmbHQxICYmIGZsdDEuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDFcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIiA+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDEudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDFOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0MT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQxLml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0MS5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQyKCkgJiYgZmx0MiAmJiBmbHQyLmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQyLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDIudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDIudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0Mi50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigyLCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQyLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0Mikge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigyLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDIoKSAmJiBmbHQyICYmIGZsdDIuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDJcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0Mi50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDI9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0Mi5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDIuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0MygpICYmIGZsdDMgJiYgZmx0My5hY3Rpb24pIHtcclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmx0My50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQzLnRpdGxlXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQzLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDMudGl0bGVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMywgZmFsc2UpXCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0Mykge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0My50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDNOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChjdXJyZW50RmlsdGVyLmZsdDMpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdFRvb2x0aXA9XCJBenplcmFcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJ0F6emVyYSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMywgdHJ1ZSk7XCIgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQzKCkgJiYgZmx0MyAmJiBmbHQzLml0ZW1zKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFttYXRUb29sdGlwXT1cImZsdDMudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0My50aXRsZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDMudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0My50aXRsZVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51QXBwbHlGaWx0ZXJGbHQzXCJcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0Mykge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDMudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDNOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51QXBwbHlGaWx0ZXJGbHQzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICBAZm9yIChmIG9mIGZsdDMuaXRlbXM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICAgIEBpZiAoZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYuZGVzY3JpcHRpb25cIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImYudGl0bGUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjAwcHg7IHBhZGRpbmc6IDRweCA0cHggMCA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGVhckZpbHRlcihmbHQzLml0ZW1zWzBdLmdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MThweDsgaGVpZ2h0OiAxOHB4OyB3aWR0aDoxOHB4O1wiPmNsZWFyPC9tYXQtaWNvbj4gQXp6ZXJhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDQoKSAmJiBmbHQ0ICYmIGZsdDQuYWN0aW9uKSB7XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsdDQudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NC50aXRsZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0NC50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ0LnRpdGxlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDQsIGZhbHNlKVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDQpIHtcclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDQudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQ0TmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoY3VycmVudEZpbHRlci5mbHQ0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIidBenplcmEnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDQsIHRydWUpO1wiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0NCgpICYmIGZsdDQgJiYgZmx0NC5pdGVtcykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFwcGx5RmlsdGVyRmx0NFwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDQpIHtcclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ0LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQ0TmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0ND1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQ0Lml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0NC5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQ1KCkgJiYgZmx0NSAmJiBmbHQ1LmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQ1LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDUudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDUudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NS50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig1LCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ1LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0NSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig1LCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDUoKSAmJiBmbHQ1ICYmIGZsdDUuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDVcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0NS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0NS5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDUuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgQGlmIChjdXJyZW50RmlsdGVyLmZpbHRlcmVkKCkgJiYgY2FuQ2xlYXJBbGxGaWx0ZXJzKCkpIHtcclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXp6ZXJhIHR1dHRpIGkgZmlsdHJpXCIgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhIHR1dHRpIGkgZmlsdHJpXCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkuYXBwbGljYXRpb24vdWkvY29tcG9uZW50cy9maWx0ZXItYmFyL2ZpbHRlci1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvZmlsdGVyLWJhci9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQWlELE9BQU8sRUFBRSxNQUFN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VFUsa0JBQWtCO2tHQUFsQixrQkFBa0IsaW5FQ3pCL0IsMjVpQkEwVk0sa3VIRHBVTSxPQUFPLG9GQUFFLE9BQU8sMEVBQUUsZ0JBQWdCLHNpSUFBRSxrQkFBa0IsMmFBQUUsY0FBYywwV0FBRSxXQUFXLGl4QkFDM0YsZ0JBQWdCLDRUQUFFLGVBQWUsd1VBQUUsYUFBYSxtTEFBRSxhQUFhLDZ2QkFBRSxnQkFBZ0IsK0hBQUUsWUFBWTs7MkZBRXRGLGtCQUFrQjtrQkFUOUIsU0FBUzsrQkFDRSxZQUFZLGNBR1YsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVzt3QkFDM0YsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDOzhCQUd4RixPQUFPO3NCQUFoQixNQUFNO2dCQW1CRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXJcIjtcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuaW1wb3J0IHsgU2FmZUh0bWxQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgQ3VycmVudEZpbHRlciwgQ3VycmVudEZpbHRlckNoYW5nZWQsIEZpbHRlckdyb3VwLCBGaWx0ZXJJdGVtLCBGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vZmlsdGVycyc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJmaWx0ZXItYmFyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9maWx0ZXItYmFyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2ZpbHRlci1iYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdTdHlsZSwgRmxleExheW91dE1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdE1lbnVNb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIFNhZmVIdG1sUGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlckJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIGNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEN1cnJlbnRGaWx0ZXJDaGFuZ2VkPigpO1xyXG5cclxuICBmaWx0ZXJzID0gaW5wdXQ8YW55PigpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0MSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlGbHQyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeUZsdDMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGNhbkZpbHRlckJ5Rmx0NCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlGbHQ1ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeVRleHQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgY2FuRmlsdGVyQnlUZXh0MiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjYW5GaWx0ZXJCeVRleHQzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRleHROYW1lID0gaW5wdXQ8c3RyaW5nPihcInRlc3RvXCIpO1xyXG4gIHRleHQyTmFtZSA9IGlucHV0PHN0cmluZz4oXCIuLi5cIik7XHJcbiAgdGV4dDNOYW1lID0gaW5wdXQ8c3RyaW5nPihcIi4uLlwiKTtcclxuICB0ZXh0TGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRleHQyTGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIHRleHQzTGVuZ3RoID0gaW5wdXQ8c3RyaW5nPigpOyAgXHJcbiAgc2hvd1RleHRTZWFyY2hCdXR0b24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgYXBwZWFyYW5jZSA9IGlucHV0PCdmaWxsJyB8ICdvdXRsaW5lJyB8IG51bGw+KCdvdXRsaW5lJyk7XHJcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSB0ZXh0Mjogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSB0ZXh0Mzogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgcHJvdGVjdGVkIGZsdDE6IEZpbHRlckdyb3VwO1xyXG4gIHByb3RlY3RlZCBmbHQyOiBGaWx0ZXJHcm91cDtcclxuICBwcm90ZWN0ZWQgZmx0MzogRmlsdGVyR3JvdXA7XHJcbiAgcHJvdGVjdGVkIGZsdDQ6IEZpbHRlckdyb3VwO1xyXG4gIHByb3RlY3RlZCBmbHQ1OiBGaWx0ZXJHcm91cDtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRGaWx0ZXI6IEN1cnJlbnRGaWx0ZXIgPSBuZXcgQ3VycmVudEZpbHRlcigpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgZmlsdGVyc1xyXG4gICAqL1xyXG4gIGluaXRpYWxpemVGaWx0ZXJzKCkge1xyXG4gICAgaWYgKCF0aGlzLmZpbHRlcnMoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5maWx0ZXJzKCkuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAobi5ncm91cCkge1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfMTpcclxuICAgICAgICAgIHRoaXMuZmx0MSA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0MS5zZXQobi5hY3Rpb24gfHwgKG4uaXRlbXMgJiYgbi5pdGVtcy5sZW5ndGggPiAwKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpbHRlcnMuRkxUXzI6XHJcbiAgICAgICAgICB0aGlzLmZsdDIgPSBuO1xyXG4gICAgICAgICAgdGhpcy5jYW5GaWx0ZXJCeUZsdDIuc2V0KG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8zOlxyXG4gICAgICAgICAgdGhpcy5mbHQzID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQzLnNldChuLmFjdGlvbiB8fCAobi5pdGVtcyAmJiBuLml0ZW1zLmxlbmd0aCA+IDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmlsdGVycy5GTFRfNDpcclxuICAgICAgICAgIHRoaXMuZmx0NCA9IG47XHJcbiAgICAgICAgICB0aGlzLmNhbkZpbHRlckJ5Rmx0NC5zZXQoIG4uYWN0aW9uIHx8IChuLml0ZW1zICYmIG4uaXRlbXMubGVuZ3RoID4gMCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWx0ZXJzLkZMVF81OlxyXG4gICAgICAgICAgdGhpcy5mbHQ1ID0gbjtcclxuICAgICAgICAgIHRoaXMuY2FuRmlsdGVyQnlGbHQ1LnNldChuLmFjdGlvbiB8fCAobi5pdGVtcyAmJiBuLml0ZW1zLmxlbmd0aCA+IDApKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwcGx5IGEgZmlsdGVyXHJcbiAgICogQHBhcmFtIGZpbHRlciA6IHRoZSBmaWx0ZXIgdG8gYXBwbHlcclxuICAgKi9cclxuICBhcHBseUZpbHRlcihmaWx0ZXI6IEZpbHRlckl0ZW0pIHtcclxuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XHJcbiAgICBzd2l0Y2ggKGZpbHRlci5ncm91cCkge1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzE6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQxICE9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDEgPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBmaWx0ZXIudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfMjpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyTmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWx0ZXJzLkZMVF8zOlxyXG4gICAgICAgIGNoYW5nZWQgPSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MyAhPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzID0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gZmlsdGVyLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzQ6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ICE9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDQgPSBmaWx0ZXIudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBmaWx0ZXIudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmlsdGVycy5GTFRfNTpcclxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUgIT0gZmlsdGVyLnZhbHVlO1xyXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1TmFtZSA9IGZpbHRlci50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IGZpbHRlcjogdGhpcy5jdXJyZW50RmlsdGVyLCBncm91cDogZmlsdGVyLmdyb3VwIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSBmaWx0ZXIgYWN0aW9uXHJcbiAgICogQHBhcmFtIGZpbHRlciA6IHRoZSBmaWx0ZXIgdG8gYXBwbHlcclxuICAgKiBAcGFyYW0gY2xlYXIgOiB0cnVlIGlmIHRoZSBmaWx0ZXIgbXVzIGJlIHJlbW92ZWRcclxuICAgKiBAcGFyYW0gZXZlbnQgOiB0aGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBhcHBseUZpbHRlckFjdGlvbihncm91cDogbnVtYmVyLCBjbGVhcjogYm9vbGVhbiA9IGZhbHNlLCBldmVudDogYW55ID0gbnVsbCkge1xyXG4gICAgaWYgKCFjbGVhcikge1xyXG4gICAgICBjb25zdCBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChncm91cCk7XHJcbiAgICAgIGlmIChnLmFjdGlvbikgZy5hY3Rpb24odGhpcywgZywgZXZlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jbGVhckZpbHRlcihncm91cCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSB0ZXh0IGZpbHRlclxyXG4gICAqL1xyXG4gIGFwcGx5VGV4dEZpbHRlcigpIHtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLnRleHQyID0gdGhpcy50ZXh0MjtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0MyA9IHRoaXMudGV4dDM7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7XHJcbiAgICAgIGZpbHRlcjogdGhpcy5jdXJyZW50RmlsdGVyLFxyXG4gICAgICBncm91cDogRmlsdGVycy5GTFRfVEVYVFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBhIGZpbHRlclxyXG4gICAqIEBwYXJhbSBncm91cCA6IHRoZSBmaWx0ZXIgZ3JvdXBcclxuICAgKi9cclxuICBjbGVhckZpbHRlcihncm91cDogbnVtYmVyKSB7XHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgc3dpdGNoIChncm91cCkge1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzE6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQxICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzI6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQyICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQyTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzM6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQzICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzQ6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpbHRlcnMuRkxUXzU6XHJcbiAgICAgICAgY2hhbmdlZCA9IHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ICE9IG51bGw7XHJcbiAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1ID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQ1TmFtZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyBmaWx0ZXI6IHRoaXMuY3VycmVudEZpbHRlciwgZ3JvdXA6IGdyb3VwIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIGZpbHRlcnNcclxuICAgKi9cclxuICBjbGVhckFsbEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEZpbHRlci50ZXh0MiA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWx0ZXIudGV4dDMgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0ID0gbnVsbDtcclxuICAgIHRoaXMudGV4dDIgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0MyA9IG51bGw7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IGZpbHRlcjogdGhpcy5jdXJyZW50RmlsdGVyLCBncm91cDogLTEgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBjYW4gY2xlYXIgYWxsIGZpbHRlcnMgYnV0dG9uIGNhYiBiZSBzaG93ZWRcclxuICAgKi9cclxuICBjYW5DbGVhckFsbEZpbHRlcnMoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlUZXh0KSBjb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuY2FuRmlsdGVyQnlUZXh0MikgY291bnQrKztcclxuICAgIGlmICh0aGlzLmNhbkZpbHRlckJ5VGV4dDMpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDEpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDIpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDMpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDQpIGNvdW50Kys7XHJcbiAgICBpZiAodGhpcy5jYW5GaWx0ZXJCeUZsdDUpIGNvdW50Kys7XHJcbiAgICByZXR1cm4gY291bnQgPiAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBmaWx0ZXIgZ3JvdXBcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgZmlsdGVyIGlkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRGaWx0ZXJHcm91cChpZDogbnVtYmVyKTogRmlsdGVyR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVycygpLmZpbmQoKG46IGFueSkgPT4gbi5ncm91cCA9PT0gaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGZpbHRlciBiYXIgdXNpbmcgY3VycmVudCBzZWFyY2ggcGFyYW1zXHJcbiAgICogQHBhcmFtIHBhcmFtcyA6IHNlYXJjaCBwYXJhbXNcclxuICAgKi9cclxuICBzeW5jRmlsdGVyKCkge1xyXG4gICAgbGV0IGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzEpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgY29uc3QgZ2kgPSBnLml0ZW1zLmZpbmQobiA9PiBuLnZhbHVlID09PSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MSk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQxTmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQxID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF8yKTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDJOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDIpIHtcclxuICAgICAgICAgIGNvbnN0IGdpID0gZy5pdGVtcy5maW5kKG4gPT4gbi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDIpO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0MiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZyA9IHRoaXMuZ2V0RmlsdGVyR3JvdXAoRmlsdGVycy5GTFRfMyk7XHJcbiAgICBpZiAoZykge1xyXG4gICAgICBpZiAoZy5pdGVtcykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5mbHQzTmFtZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5mbHQzKSB7XHJcbiAgICAgICAgICBjb25zdCBnaSA9IGcuaXRlbXMuZmluZChuID0+IG4udmFsdWUgPT09IHRoaXMuY3VycmVudEZpbHRlci5mbHQzKTtcclxuICAgICAgICAgIGlmIChnaSkgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDNOYW1lID0gZ2kudGl0bGVTZWxlY3RlZDtcclxuICAgICAgICAgIGVsc2UgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGcgPSB0aGlzLmdldEZpbHRlckdyb3VwKEZpbHRlcnMuRkxUXzQpO1xyXG4gICAgaWYgKGcpIHtcclxuICAgICAgaWYgKGcuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NE5hbWUgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCkge1xyXG4gICAgICAgICAgY29uc3QgZ2kgPSBnLml0ZW1zLmZpbmQobiA9PiBuLnZhbHVlID09PSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NCk7XHJcbiAgICAgICAgICBpZiAoZ2kpIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0TmFtZSA9IGdpLnRpdGxlU2VsZWN0ZWQ7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuY3VycmVudEZpbHRlci5mbHQ0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnID0gdGhpcy5nZXRGaWx0ZXJHcm91cChGaWx0ZXJzLkZMVF81KTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGlmIChnLml0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmZsdDVOYW1lID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmZsdDUpIHtcclxuICAgICAgICAgIGNvbnN0IGdpID0gZy5pdGVtcy5maW5kKG4gPT4gbi52YWx1ZSA9PT0gdGhpcy5jdXJyZW50RmlsdGVyLmZsdDUpO1xyXG4gICAgICAgICAgaWYgKGdpKSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgPSBnaS50aXRsZVNlbGVjdGVkO1xyXG4gICAgICAgICAgZWxzZSB0aGlzLmN1cnJlbnRGaWx0ZXIuZmx0NSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50ZXh0ID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQ7XHJcbiAgICB0aGlzLnRleHQyID0gdGhpcy5jdXJyZW50RmlsdGVyLnRleHQyO1xyXG4gICAgdGhpcy50ZXh0MyA9IHRoaXMuY3VycmVudEZpbHRlci50ZXh0MztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cInJvd1wiICBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgIGNsYXNzPVwiZmlsdGVyYm94XCJcclxuW25nQ2xhc3NdPVwieydmaWx0ZXJib3gtZmlsdGVyZWQnOiBjdXJyZW50RmlsdGVyLmZpbHRlcmVkKCl9XCI+XHJcbiAgPGRpdiBmeEZsZXg9XCIxMDBcIiBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW5cIj5cclxuICAgIEBpZiAoY2FuRmlsdGVyQnlUZXh0KCkgfHwgY2FuRmlsdGVyQnlUZXh0MigpIHx8IGNhbkZpbHRlckJ5VGV4dDMoKSkge1xyXG4gICAgPGRpdiBmeEZsZXgubHQtc209XCIxMDBcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsIHN0eWxlPVwicGFkZGluZzo0cHg7XCI+XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeVRleHQoKSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdGV4dExlbmd0aCgpID8/ICcxMDAlJ31cIiBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPkNlcmNhIHBlciB7e3RleHROYW1lKCl9fS4uLjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJfdGV4dFwiIFsobmdNb2RlbCldPVwidGV4dFwiIG1heGxlbmd0aD1cIjEwMFwiICNfdGV4dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiYXBwbHlUZXh0RmlsdGVyKClcIiBtYXRUb29sdGlwPVwiUHJlbWkgSU5WSU8gcGVyIGF2dmlhcmUgbGEgcmljZXJjYVwiPlxyXG4gICAgICAgICAgQGlmICh0ZXh0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0ID0gJyc7IGFwcGx5VGV4dEZpbHRlcigpO1wiIG1hdFRvb2x0aXA9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmIChzaG93VGV4dFNlYXJjaEJ1dHRvbigpKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJUcm92YVwiIChjbGljayk9XCJhcHBseVRleHRGaWx0ZXIoKTtcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiVHJvdmFcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5VGV4dDIoKSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdGV4dDJMZW5ndGgoKSA/PyAnMTAwJSd9XCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYSBwZXIge3t0ZXh0Mk5hbWUoKX19Li4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIl90ZXh0MlwiIFsobmdNb2RlbCldPVwidGV4dDJcIiBtYXhsZW5ndGg9XCIxMDBcIiAjX3RleHQyPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIChrZXl1cC5FbnRlcik9XCJhcHBseVRleHRGaWx0ZXIoKVwiIG1hdFRvb2x0aXA9XCJQcmVtaSBJTlZJTyBwZXIgYXZ2aWFyZSBsYSByaWNlcmNhXCI+XHJcbiAgICAgICAgICBAaWYgKHRleHQyKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0MiA9ICcnOyBhcHBseVRleHRGaWx0ZXIoKTtcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5VGV4dDMoKSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbbmdTdHlsZV09XCJ7J3dpZHRoJzogdGV4dDNMZW5ndGgoKSA/PyAnMTAwJSd9XCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYSBwZXIge3t0ZXh0M05hbWUoKX19Li4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIl90ZXh0M1wiIFsobmdNb2RlbCldPVwidGV4dDNcIiBtYXhsZW5ndGg9XCIxMDBcIiAjX3RleHQzPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgIChrZXl1cC5FbnRlcik9XCJhcHBseVRleHRGaWx0ZXIoKVwiIG1hdFRvb2x0aXA9XCJQcmVtaSBJTlZJTyBwZXIgYXZ2aWFyZSBsYSByaWNlcmNhXCI+XHJcbiAgICAgICAgICBAaWYgKHRleHQzKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0MyA9ICcnOyBhcHBseVRleHRGaWx0ZXIoKTtcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxkaXYgZnhGbGV4Lmx0LXNtPVwiMTAwXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgPlxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQxKCkgJiYgZmx0MSAmJiBmbHQxLmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQxLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDEudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDEudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0MS50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigxLCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQxKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQxLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0MU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigxLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9IEBlbHNlIGlmIChjYW5GaWx0ZXJCeUZsdDEoKSAmJiBmbHQxICYmIGZsdDEuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0MS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQxLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDFcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIiA+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0MSkge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDEudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDFOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9ICAgICAgICAgIFxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0MT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQxLml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0MS5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQyKCkgJiYgZmx0MiAmJiBmbHQyLmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQyLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDIudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDIudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0Mi50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigyLCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQyLnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0Mikge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbigyLCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDIoKSAmJiBmbHQyICYmIGZsdDIuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0Mi50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQyLnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDJcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQyKSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0Mi50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0Mk5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDI9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0Mi5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDIuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0MygpICYmIGZsdDMgJiYgZmx0My5hY3Rpb24pIHtcclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b25cclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZmx0My50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQzLnRpdGxlXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQzLnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDMudGl0bGVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMywgZmFsc2UpXCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0Mykge1xyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0My50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDNOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgQGlmIChjdXJyZW50RmlsdGVyLmZsdDMpIHtcclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdFRvb2x0aXA9XCJBenplcmFcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJ0F6emVyYSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBY3Rpb24oMywgdHJ1ZSk7XCIgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQzKCkgJiYgZmx0MyAmJiBmbHQzLml0ZW1zKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIFttYXRUb29sdGlwXT1cImZsdDMudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0My50aXRsZVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDMudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0My50aXRsZVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51QXBwbHlGaWx0ZXJGbHQzXCJcclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgIEBpZiAoIWN1cnJlbnRGaWx0ZXIuZmx0Mykge1xyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDMudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJjdXJyZW50RmlsdGVyLmZsdDNOYW1lIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLW1lbnUtZHJvcC1kb3duXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51QXBwbHlGaWx0ZXJGbHQzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICBAZm9yIChmIG9mIGZsdDMuaXRlbXM7IHRyYWNrIGYpIHtcclxuXHJcbiAgICAgICAgICAgIEBpZiAoZi5kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoZilcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImYuZGVzY3JpcHRpb25cIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImYudGl0bGUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMjAwcHg7IHBhZGRpbmc6IDRweCA0cHggMCA0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGVhckZpbHRlcihmbHQzLml0ZW1zWzBdLmdyb3VwKVwiXHJcbiAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cIkF6emVyYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6MThweDsgaGVpZ2h0OiAxOHB4OyB3aWR0aDoxOHB4O1wiPmNsZWFyPC9tYXQtaWNvbj4gQXp6ZXJhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDQoKSAmJiBmbHQ0ICYmIGZsdDQuYWN0aW9uKSB7XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImZsdDQudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NC50aXRsZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0NC50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ0LnRpdGxlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDQsIGZhbHNlKVwiIHN0eWxlPVwiaGVpZ2h0OjU2cHg7XCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDQpIHtcclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXdlaWdodDogMjAwICFpbXBvcnRhbnRcIj57e2ZsdDQudGl0bGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQ0TmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIEBpZiAoY3VycmVudEZpbHRlci5mbHQ0KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRUb29sdGlwPVwiQXp6ZXJhXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIidBenplcmEnXCIgKGNsaWNrKT1cImFwcGx5RmlsdGVyQWN0aW9uKDQsIHRydWUpO1wiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKGNhbkZpbHRlckJ5Rmx0NCgpICYmIGZsdDQgJiYgZmx0NC5pdGVtcykge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmbHQ0LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDQudGl0bGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudUFwcGx5RmlsdGVyRmx0NFwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICBAaWYgKCFjdXJyZW50RmlsdGVyLmZsdDQpIHtcclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ0LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiY3VycmVudEZpbHRlci5mbHQ0TmFtZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudUFwcGx5RmlsdGVyRmx0ND1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgQGZvciAoZiBvZiBmbHQ0Lml0ZW1zOyB0cmFjayBmKSB7XHJcblxyXG4gICAgICAgICAgICBAaWYgKGYuZGl2aWRlcikge1xyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFwcGx5RmlsdGVyKGYpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJmLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmLnRpdGxlIHwgc2FmZUh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbD5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OyBwYWRkaW5nOiA0cHggNHB4IDAgNHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoZmx0NC5pdGVtc1swXS5ncm91cClcIlxyXG4gICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJBenplcmFcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7IGhlaWdodDogMThweDsgd2lkdGg6MThweDtcIj5jbGVhcjwvbWF0LWljb24+IEF6emVyYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY2FuRmlsdGVyQnlGbHQ1KCkgJiYgZmx0NSAmJiBmbHQ1LmFjdGlvbikge1xyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmbHQ1LnRvb2x0aXAgfHwgJ0ZpbHRyYSBwZXIgJyArIGZsdDUudGl0bGVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZsdDUudG9vbHRpcCB8fCAnRmlsdHJhIHBlciAnICsgZmx0NS50aXRsZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig1LCBmYWxzZSlcIiBzdHlsZT1cImhlaWdodDo1NnB4O1wiPlxyXG4gICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50XCI+e3tmbHQ1LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICBAaWYgKGN1cnJlbnRGaWx0ZXIuZmx0NSkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0VG9vbHRpcD1cIkF6emVyYVwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCInQXp6ZXJhJ1wiIChjbGljayk9XCJhcHBseUZpbHRlckFjdGlvbig1LCB0cnVlKTtcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmIChjYW5GaWx0ZXJCeUZsdDUoKSAmJiBmbHQ1ICYmIGZsdDUuaXRlbXMpIHtcclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW21hdFRvb2x0aXBdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmx0NS50b29sdGlwIHx8ICdGaWx0cmEgcGVyICcgKyBmbHQ1LnRpdGxlXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVBcHBseUZpbHRlckZsdDVcIlxyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgc3R5bGU9XCJoZWlnaHQ6NTZweDtcIj5cclxuICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgQGlmICghY3VycmVudEZpbHRlci5mbHQ1KSB7XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtd2VpZ2h0OiAyMDAgIWltcG9ydGFudFwiPnt7Zmx0NS50aXRsZX19PC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImN1cnJlbnRGaWx0ZXIuZmx0NU5hbWUgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI21lbnVBcHBseUZpbHRlckZsdDU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGYgb2YgZmx0NS5pdGVtczsgdHJhY2sgZikge1xyXG5cclxuICAgICAgICAgICAgQGlmIChmLmRpdmlkZXIpIHtcclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhcHBseUZpbHRlcihmKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZi5kZXNjcmlwdGlvblwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZi50aXRsZSB8IHNhZmVIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dEFsaWduPVwiZW5kXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiAyMDBweDsgcGFkZGluZzogNHB4IDRweCAwIDRweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyKGZsdDUuaXRlbXNbMF0uZ3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4OyBoZWlnaHQ6IDE4cHg7IHdpZHRoOjE4cHg7XCI+Y2xlYXI8L21hdC1pY29uPiBBenplcmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2PlxyXG4gICAgQGlmIChjdXJyZW50RmlsdGVyLmZpbHRlcmVkKCkgJiYgY2FuQ2xlYXJBbGxGaWx0ZXJzKCkpIHtcclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiQXp6ZXJhIHR1dHRpIGkgZmlsdHJpXCIgYXR0ci5hcmlhLWxhYmVsPVwiQXp6ZXJhIHR1dHRpIGkgZmlsdHJpXCJcclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19