primeng 14.2.6-lts → 14.2.7-lts

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.
@@ -194,10 +194,15 @@ export class Overlay {
194
194
  this.modal && DomHandler.addClass(this.document?.body, 'p-overflow-hidden');
195
195
  }
196
196
  hide(overlay, isFocus = false) {
197
- this.onVisibleChange(false);
198
- this.handleEvents('onHide', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });
199
- isFocus && DomHandler.focus(this.targetEl);
200
- this.modal && DomHandler.removeClass(this.document?.body, 'p-overflow-hidden');
197
+ if (!this.visible) {
198
+ return;
199
+ }
200
+ else {
201
+ this.onVisibleChange(false);
202
+ this.handleEvents('onHide', { overlay: overlay || this.overlayEl, target: this.targetEl, mode: this.overlayMode });
203
+ isFocus && DomHandler.focus(this.targetEl);
204
+ this.modal && DomHandler.removeClass(this.document?.body, 'p-overflow-hidden');
205
+ }
201
206
  }
202
207
  alignOverlay() {
203
208
  !this.modal && DomHandler.alignOverlay(this.overlayEl, this.targetEl, this.appendTo);
@@ -206,7 +211,7 @@ export class Overlay {
206
211
  this._visible = visible;
207
212
  this.visibleChange.emit(visible);
208
213
  }
209
- onOverlayClick() {
214
+ onOverlayClick(event) {
210
215
  this.isOverlayClicked = true;
211
216
  }
212
217
  onOverlayContentClick(event) {
@@ -480,4 +485,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
480
485
  declarations: [Overlay]
481
486
  }]
482
487
  }] });
483
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9vdmVybGF5L292ZXJsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFrRSxhQUFhLEVBQTRCLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwSixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRXpELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFRO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDdEMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENB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SztnQkFPSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxlQUFlO3NCQUF4QixNQUFNO2dCQUV5QixTQUFTO3NCQUF4QyxlQUFlO3VCQUFDLGFBQWE7Z0JBRVIsZ0JBQWdCO3NCQUFyQyxTQUFTO3VCQUFDLFNBQVM7Z0JBRUUsZ0JBQWdCO3NCQUFyQyxTQUFTO3VCQUFDLFNBQVM7O0FBeVN4QixNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQTlhYixPQUFPLGFBMGFOLFlBQVksRUFBRSxZQUFZLGFBMWEzQixPQUFPLEVBMmFHLFlBQVk7MkdBR3RCLGFBQWEsWUFKWixZQUFZLEVBQUUsWUFBWSxFQUNqQixZQUFZOzJGQUd0QixhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7b0JBQ2hDLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBhbmltYXRpb24sIEFuaW1hdGlvbkV2ZW50LCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE92ZXJsYXlNb2RlVHlwZSwgT3ZlcmxheU9wdGlvbnMsIE92ZXJsYXlTZXJ2aWNlLCBQcmltZU5HQ29uZmlnLCBQcmltZVRlbXBsYXRlLCBSZXNwb25zaXZlT3ZlcmxheU9wdGlvbnMsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyLCBEb21IYW5kbGVyIH0gZnJvbSAncHJpbWVuZy9kb20nO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIFpJbmRleFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBPVkVSTEFZX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT3ZlcmxheSksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmNvbnN0IHNob3dPdmVybGF5Q29udGVudEFuaW1hdGlvbiA9IGFuaW1hdGlvbihbc3R5bGUoeyB0cmFuc2Zvcm06ICd7e3RyYW5zZm9ybX19Jywgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgne3tzaG93VHJhbnNpdGlvblBhcmFtc319JyldKTtcblxuY29uc3QgaGlkZU92ZXJsYXlDb250ZW50QW5pbWF0aW9uID0gYW5pbWF0aW9uKFthbmltYXRlKCd7e2hpZGVUcmFuc2l0aW9uUGFyYW1zfX0nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nLCBvcGFjaXR5OiAwIH0pKV0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atb3ZlcmxheScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJtb2RhbFZpc2libGVcIlxuICAgICAgICAgICAgI292ZXJsYXlcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5IHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LW1vZGFsIHAtY29tcG9uZW50LW92ZXJsYXkgcC1jb21wb25lbnQtb3ZlcmxheS1lbnRlcic6IG1vZGFsLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktY2VudGVyJzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktdG9wJzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICd0b3AnLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktdG9wLXN0YXJ0JzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICd0b3Atc3RhcnQnLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktdG9wLWVuZCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAndG9wLWVuZCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1ib3R0b20nOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1ib3R0b20tc3RhcnQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ2JvdHRvbS1zdGFydCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1ib3R0b20tZW5kJzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICdib3R0b20tZW5kJyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LWxlZnQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ2xlZnQnLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktbGVmdC1zdGFydCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAnbGVmdC1zdGFydCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1sZWZ0LWVuZCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAnbGVmdC1lbmQnLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktcmlnaHQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LXJpZ2h0LXN0YXJ0JzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICdyaWdodC1zdGFydCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1yaWdodC1lbmQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ3JpZ2h0LWVuZCdcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3ZlcmxheUNsaWNrKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAjY29udGVudFxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbnRlbnRTdHlsZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbnRlbnRTdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCIncC1vdmVybGF5LWNvbnRlbnQnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PdmVybGF5Q29udGVudENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtAb3ZlcmxheUNvbnRlbnRBbmltYXRpb25dPVwieyB2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHsgc2hvd1RyYW5zaXRpb25QYXJhbXM6IHNob3dUcmFuc2l0aW9uT3B0aW9ucywgaGlkZVRyYW5zaXRpb25QYXJhbXM6IGhpZGVUcmFuc2l0aW9uT3B0aW9ucywgdHJhbnNmb3JtOiB0cmFuc2Zvcm1PcHRpb25zW21vZGFsID8gb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gOiAnZGVmYXVsdCddIH0gfVwiXG4gICAgICAgICAgICAgICAgKEBvdmVybGF5Q29udGVudEFuaW1hdGlvbi5zdGFydCk9XCJvbk92ZXJsYXlDb250ZW50QW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKEBvdmVybGF5Q29udGVudEFuaW1hdGlvbi5kb25lKT1cIm9uT3ZlcmxheUNvbnRlbnRBbmltYXRpb25Eb25lKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBtb2RlOiBvdmVybGF5TW9kZSB9IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdvdmVybGF5Q29udGVudEFuaW1hdGlvbicsIFt0cmFuc2l0aW9uKCc6ZW50ZXInLCBbdXNlQW5pbWF0aW9uKHNob3dPdmVybGF5Q29udGVudEFuaW1hdGlvbildKSwgdHJhbnNpdGlvbignOmxlYXZlJywgW3VzZUFuaW1hdGlvbihoaWRlT3ZlcmxheUNvbnRlbnRBbmltYXRpb24pXSldKV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtPVkVSTEFZX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LmNzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdwLWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gICAgfVxuICAgIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSAmJiAhdGhpcy5tb2RhbFZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBtb2RlKCk6IE92ZXJsYXlNb2RlVHlwZSB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlIHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/Lm1vZGU7XG4gICAgfVxuICAgIHNldCBtb2RlKHZhbHVlOiBPdmVybGF5TW9kZVR5cGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbW9kZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBzdHlsZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMubWVyZ2UodGhpcy5fc3R5bGUsIHRoaXMubW9kYWwgPyB0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucz8uc3R5bGUgOiB0aGlzLm92ZXJsYXlPcHRpb25zPy5zdHlsZSk7XG4gICAgfVxuICAgIHNldCBzdHlsZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3N0eWxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHN0eWxlQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLm1lcmdlKHRoaXMuX3N0eWxlQ2xhc3MsIHRoaXMubW9kYWwgPyB0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucz8uc3R5bGVDbGFzcyA6IHRoaXMub3ZlcmxheU9wdGlvbnM/LnN0eWxlQ2xhc3MpO1xuICAgIH1cbiAgICBzZXQgc3R5bGVDbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3N0eWxlQ2xhc3MgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgY29udGVudFN0eWxlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZSh0aGlzLl9jb250ZW50U3R5bGUsIHRoaXMubW9kYWwgPyB0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucz8uY29udGVudFN0eWxlIDogdGhpcy5vdmVybGF5T3B0aW9ucz8uY29udGVudFN0eWxlKTtcbiAgICB9XG4gICAgc2V0IGNvbnRlbnRTdHlsZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRTdHlsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBjb250ZW50U3R5bGVDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMubWVyZ2UodGhpcy5fY29udGVudFN0eWxlQ2xhc3MsIHRoaXMubW9kYWwgPyB0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucz8uY29udGVudFN0eWxlQ2xhc3MgOiB0aGlzLm92ZXJsYXlPcHRpb25zPy5jb250ZW50U3R5bGVDbGFzcyk7XG4gICAgfVxuICAgIHNldCBjb250ZW50U3R5bGVDbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRTdHlsZUNsYXNzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHRhcmdldCgpOiBhbnkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX3RhcmdldCB8fCB0aGlzLm92ZXJsYXlPcHRpb25zPy50YXJnZXQ7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJ0BwcmV2JyA6IHZhbHVlO1xuICAgIH1cbiAgICBzZXQgdGFyZ2V0KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGFwcGVuZFRvKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBlbmRUbyB8fCB0aGlzLm92ZXJsYXlPcHRpb25zPy5hcHBlbmRUbztcbiAgICB9XG4gICAgc2V0IGFwcGVuZFRvKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fYXBwZW5kVG8gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgYXV0b1pJbmRleCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9hdXRvWkluZGV4IHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/LmF1dG9aSW5kZXg7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICBzZXQgYXV0b1pJbmRleCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hdXRvWkluZGV4ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGJhc2VaSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9iYXNlWkluZGV4IHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/LmJhc2VaSW5kZXg7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gMCA6IHZhbHVlO1xuICAgIH1cbiAgICBzZXQgYmFzZVpJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2Jhc2VaSW5kZXggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgc2hvd1RyYW5zaXRpb25PcHRpb25zKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fc2hvd1RyYW5zaXRpb25PcHRpb25zIHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/LnNob3dUcmFuc2l0aW9uT3B0aW9ucztcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnLjEycyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScgOiB2YWx1ZTtcbiAgICB9XG4gICAgc2V0IHNob3dUcmFuc2l0aW9uT3B0aW9ucyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Nob3dUcmFuc2l0aW9uT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBoaWRlVHJhbnNpdGlvbk9wdGlvbnMoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9oaWRlVHJhbnNpdGlvbk9wdGlvbnMgfHwgdGhpcy5vdmVybGF5T3B0aW9ucz8uaGlkZVRyYW5zaXRpb25PcHRpb25zO1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/ICcuMXMgbGluZWFyJyA6IHZhbHVlO1xuICAgIH1cbiAgICBzZXQgaGlkZVRyYW5zaXRpb25PcHRpb25zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faGlkZVRyYW5zaXRpb25PcHRpb25zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGxpc3RlbmVyKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9saXN0ZW5lciB8fCB0aGlzLm92ZXJsYXlPcHRpb25zPy5saXN0ZW5lcjtcbiAgICB9XG4gICAgc2V0IGxpc3RlbmVyKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgcmVzcG9uc2l2ZSgpOiBSZXNwb25zaXZlT3ZlcmxheU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2l2ZSB8fCB0aGlzLm92ZXJsYXlPcHRpb25zPy5yZXNwb25zaXZlO1xuICAgIH1cbiAgICBzZXQgcmVzcG9uc2l2ZSh2YWw6IFJlc3BvbnNpdmVPdmVybGF5T3B0aW9ucyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9yZXNwb25zaXZlID0gdmFsO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBvcHRpb25zKCk6IE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuICAgIHNldCBvcHRpb25zKHZhbDogT3ZlcmxheU9wdGlvbnMgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbDtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVTaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvblNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQmVmb3JlSGlkZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkFuaW1hdGlvblN0YXJ0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkFuaW1hdGlvbkRvbmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgnb3ZlcmxheScpIG92ZXJsYXlWaWV3Q2hpbGQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50JykgY29udGVudFZpZXdDaGlsZDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF92aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBfbW9kZTogT3ZlcmxheU1vZGVUeXBlIHwgc3RyaW5nO1xuXG4gICAgX3N0eWxlOiBhbnk7XG5cbiAgICBfc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgX2NvbnRlbnRTdHlsZTogYW55O1xuXG4gICAgX2NvbnRlbnRTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBfdGFyZ2V0OiBhbnk7XG5cbiAgICBfYXBwZW5kVG86ICdib2R5JyB8IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgX2F1dG9aSW5kZXg6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBfYmFzZVpJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgX3Nob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgX2hpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgX2xpc3RlbmVyOiBhbnk7XG5cbiAgICBfcmVzcG9uc2l2ZTogUmVzcG9uc2l2ZU92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgX29wdGlvbnM6IE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gICAgbW9kYWxWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpc092ZXJsYXlDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBpc092ZXJsYXlDb250ZW50Q2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgc2Nyb2xsSGFuZGxlcjogYW55O1xuXG4gICAgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBhbnk7XG5cbiAgICBkb2N1bWVudFJlc2l6ZUxpc3RlbmVyOiBhbnk7XG5cbiAgICBwcml2YXRlIHdpbmRvdzogV2luZG93IHwgbnVsbDtcblxuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1PcHRpb25zOiBhbnkgPSB7XG4gICAgICAgIGRlZmF1bHQ6ICdzY2FsZVkoMC44KScsXG4gICAgICAgIGNlbnRlcjogJ3NjYWxlKDAuNyknLFxuICAgICAgICB0b3A6ICd0cmFuc2xhdGUzZCgwcHgsIC0xMDAlLCAwcHgpJyxcbiAgICAgICAgJ3RvcC1zdGFydCc6ICd0cmFuc2xhdGUzZCgwcHgsIC0xMDAlLCAwcHgpJyxcbiAgICAgICAgJ3RvcC1lbmQnOiAndHJhbnNsYXRlM2QoMHB4LCAtMTAwJSwgMHB4KScsXG4gICAgICAgIGJvdHRvbTogJ3RyYW5zbGF0ZTNkKDBweCwgMTAwJSwgMHB4KScsXG4gICAgICAgICdib3R0b20tc3RhcnQnOiAndHJhbnNsYXRlM2QoMHB4LCAxMDAlLCAwcHgpJyxcbiAgICAgICAgJ2JvdHRvbS1lbmQnOiAndHJhbnNsYXRlM2QoMHB4LCAxMDAlLCAwcHgpJyxcbiAgICAgICAgbGVmdDogJ3RyYW5zbGF0ZTNkKC0xMDAlLCAwcHgsIDBweCknLFxuICAgICAgICAnbGVmdC1zdGFydCc6ICd0cmFuc2xhdGUzZCgtMTAwJSwgMHB4LCAwcHgpJyxcbiAgICAgICAgJ2xlZnQtZW5kJzogJ3RyYW5zbGF0ZTNkKC0xMDAlLCAwcHgsIDBweCknLFxuICAgICAgICByaWdodDogJ3RyYW5zbGF0ZTNkKDEwMCUsIDBweCwgMHB4KScsXG4gICAgICAgICdyaWdodC1zdGFydCc6ICd0cmFuc2xhdGUzZCgxMDAlLCAwcHgsIDBweCknLFxuICAgICAgICAncmlnaHQtZW5kJzogJ3RyYW5zbGF0ZTNkKDEwMCUsIDBweCwgMHB4KSdcbiAgICB9O1xuXG4gICAgZ2V0IG1vZGFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnbW9kYWwnIHx8ICh0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucyAmJiB0aGlzLndpbmRvdz8ubWF0Y2hNZWRpYSh0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucy5tZWRpYT8ucmVwbGFjZSgnQG1lZGlhJywgJycpIHx8IGAobWF4LXdpZHRoOiAke3RoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zLmJyZWFrcG9pbnR9KWApLm1hdGNoZXMpO1xuICAgIH1cblxuICAgIGdldCBvdmVybGF5TW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSB8fCAodGhpcy5tb2RhbCA/ICdtb2RhbCcgOiAnb3ZlcmxheScpO1xuICAgIH1cblxuICAgIGdldCBvdmVybGF5T3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5jb25maWc/Lm92ZXJsYXlPcHRpb25zLCAuLi50aGlzLm9wdGlvbnMgfTsgLy8gVE9ETzogSW1wcm92ZSBwZXJmb3JtYW5jZVxuICAgIH1cblxuICAgIGdldCBvdmVybGF5UmVzcG9uc2l2ZU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMub3ZlcmxheU9wdGlvbnM/LnJlc3BvbnNpdmUsIC4uLnRoaXMucmVzcG9uc2l2ZSB9OyAvLyBUT0RPOiBJbXByb3ZlIHBlcmZvcm1hbmNlXG4gICAgfVxuXG4gICAgZ2V0IG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVzcG9uc2l2ZU9wdGlvbnM/LmRpcmVjdGlvbiB8fCAnY2VudGVyJztcbiAgICB9XG5cbiAgICBnZXQgb3ZlcmxheUVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5Vmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBjb250ZW50RWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHRhcmdldEVsKCkge1xuICAgICAgICByZXR1cm4gRG9tSGFuZGxlci5nZXRUYXJnZXRFbGVtZW50KHRoaXMudGFyZ2V0LCB0aGlzLmVsPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCwgcHVibGljIGVsOiBFbGVtZW50UmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBjb25maWc6IFByaW1lTkdDb25maWcsIHB1YmxpYyBvdmVybGF5U2VydmljZTogT3ZlcmxheVNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHRoaXMud2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogbmV3IHRlbXBsYXRlIHR5cGVzIG1heSBiZSBhZGRlZC5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93KG92ZXJsYXk/OiBIVE1MRWxlbWVudCwgaXNGb2N1czogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMub25WaXNpYmxlQ2hhbmdlKHRydWUpO1xuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25TaG93JywgeyBvdmVybGF5OiBvdmVybGF5IHx8IHRoaXMub3ZlcmxheUVsLCB0YXJnZXQ6IHRoaXMudGFyZ2V0RWwsIG1vZGU6IHRoaXMub3ZlcmxheU1vZGUgfSk7XG5cbiAgICAgICAgaXNGb2N1cyAmJiBEb21IYW5kbGVyLmZvY3VzKHRoaXMudGFyZ2V0RWwpO1xuICAgICAgICB0aGlzLm1vZGFsICYmIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5kb2N1bWVudD8uYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgfVxuXG4gICAgaGlkZShvdmVybGF5PzogSFRNTEVsZW1lbnQsIGlzRm9jdXM6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZShmYWxzZSk7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKCdvbkhpZGUnLCB7IG92ZXJsYXk6IG92ZXJsYXkgfHwgdGhpcy5vdmVybGF5RWwsIHRhcmdldDogdGhpcy50YXJnZXRFbCwgbW9kZTogdGhpcy5vdmVybGF5TW9kZSB9KTtcblxuICAgICAgICBpc0ZvY3VzICYmIERvbUhhbmRsZXIuZm9jdXModGhpcy50YXJnZXRFbCk7XG4gICAgICAgIHRoaXMubW9kYWwgJiYgRG9tSGFuZGxlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50Py5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICB9XG5cbiAgICBhbGlnbk92ZXJsYXkoKSB7XG4gICAgICAgICF0aGlzLm1vZGFsICYmIERvbUhhbmRsZXIuYWxpZ25PdmVybGF5KHRoaXMub3ZlcmxheUVsLCB0aGlzLnRhcmdldEVsLCB0aGlzLmFwcGVuZFRvKTtcbiAgICB9XG5cbiAgICBvblZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmlzaWJsZSk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soKSB7XG4gICAgICAgIHRoaXMuaXNPdmVybGF5Q2xpY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q29udGVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldEVsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaXNPdmVybGF5Q29udGVudENsaWNrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUNvbnRlbnRBbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25CZWZvcmVTaG93JywgeyBvdmVybGF5OiB0aGlzLm92ZXJsYXlFbCwgdGFyZ2V0OiB0aGlzLnRhcmdldEVsLCBtb2RlOiB0aGlzLm92ZXJsYXlNb2RlIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1pJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5zZXQodGhpcy5vdmVybGF5TW9kZSwgdGhpcy5vdmVybGF5RWwsIHRoaXMuYmFzZVpJbmRleCArIHRoaXMuY29uZmlnPy56SW5kZXhbdGhpcy5vdmVybGF5TW9kZV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kT3ZlcmxheSh0aGlzLm92ZXJsYXlFbCwgdGhpcy5hcHBlbmRUbyA9PT0gJ2JvZHknID8gdGhpcy5kb2N1bWVudC5ib2R5IDogdGhpcy5hcHBlbmRUbywgdGhpcy5hcHBlbmRUbyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbk92ZXJsYXkoKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25CZWZvcmVIaWRlJywgeyBvdmVybGF5OiB0aGlzLm92ZXJsYXlFbCwgdGFyZ2V0OiB0aGlzLnRhcmdldEVsLCBtb2RlOiB0aGlzLm92ZXJsYXlNb2RlIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbCAmJiBEb21IYW5kbGVyLmFkZENsYXNzKHRoaXMub3ZlcmxheUVsLCAncC1jb21wb25lbnQtb3ZlcmxheS1sZWF2ZScpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25BbmltYXRpb25TdGFydCcsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDb250ZW50QW5pbWF0aW9uRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5vdmVybGF5RWwgfHwgZXZlbnQuZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KGNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKGNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRMaXN0ZW5lcnMoKTtcblxuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIuYXBwZW5kT3ZlcmxheSh0aGlzLm92ZXJsYXlFbCwgdGhpcy50YXJnZXRFbCwgdGhpcy5hcHBlbmRUbyk7XG4gICAgICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25BbmltYXRpb25Eb25lJywgZXZlbnQpO1xuICAgIH1cblxuICAgIGhhbmRsZUV2ZW50cyhuYW1lOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgICAgICh0aGlzIGFzIGFueSlbbmFtZV0uZW1pdChwYXJhbXMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgJiYgKHRoaXMub3B0aW9ucyBhcyBhbnkpW25hbWVdICYmICh0aGlzLm9wdGlvbnMgYXMgYW55KVtuYW1lXShwYXJhbXMpO1xuICAgICAgICB0aGlzLmNvbmZpZz8ub3ZlcmxheU9wdGlvbnMgJiYgKHRoaXMuY29uZmlnPy5vdmVybGF5T3B0aW9ucyBhcyBhbnkpW25hbWVdICYmICh0aGlzLmNvbmZpZz8ub3ZlcmxheU9wdGlvbnMgYXMgYW55KVtuYW1lXShwYXJhbXMpO1xuICAgIH1cblxuICAgIGJpbmRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgdW5iaW5kTGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMudW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIGJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG5ldyBDb25uZWN0ZWRPdmVybGF5U2Nyb2xsSGFuZGxlcih0aGlzLnRhcmdldEVsLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gdGhpcy5saXN0ZW5lciA/IHRoaXMubGlzdGVuZXIoZXZlbnQsIHsgdHlwZTogJ3Njcm9sbCcsIG1vZGU6IHRoaXMub3ZlcmxheU1vZGUsIHZhbGlkOiB0cnVlIH0pIDogdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHZhbGlkICYmIHRoaXMuaGlkZShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLnVuYmluZFNjcm9sbExpc3RlbmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGFyZ2V0Q2xpY2tlZCA9IHRoaXMudGFyZ2V0RWwgJiYgKHRoaXMudGFyZ2V0RWwuaXNTYW1lTm9kZShldmVudC50YXJnZXQpIHx8ICghdGhpcy5pc092ZXJsYXlDbGlja2VkICYmIHRoaXMudGFyZ2V0RWwuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZUNsaWNrZWQgPSAhaXNUYXJnZXRDbGlja2VkICYmICF0aGlzLmlzT3ZlcmxheUNvbnRlbnRDbGlja2VkO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gdGhpcy5saXN0ZW5lciA/IHRoaXMubGlzdGVuZXIoZXZlbnQsIHsgdHlwZTogJ291dHNpZGUnLCBtb2RlOiB0aGlzLm92ZXJsYXlNb2RlLCB2YWxpZDogZXZlbnQud2hpY2ggIT09IDMgJiYgaXNPdXRzaWRlQ2xpY2tlZCB9KSA6IGlzT3V0c2lkZUNsaWNrZWQ7XG5cbiAgICAgICAgICAgICAgICB2YWxpZCAmJiB0aGlzLmhpZGUoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPdmVybGF5Q2xpY2tlZCA9IHRoaXMuaXNPdmVybGF5Q29udGVudENsaWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWQgPSB0aGlzLmxpc3RlbmVyID8gdGhpcy5saXN0ZW5lcihldmVudCwgeyB0eXBlOiAncmVzaXplJywgbW9kZTogdGhpcy5vdmVybGF5TW9kZSwgdmFsaWQ6ICFEb21IYW5kbGVyLmlzVG91Y2hEZXZpY2UoKSB9KSA6ICFEb21IYW5kbGVyLmlzVG91Y2hEZXZpY2UoKTtcblxuICAgICAgICAgICAgICAgIHZhbGlkICYmIHRoaXMuaGlkZShldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmhpZGUodGhpcy5vdmVybGF5RWwsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlFbCkge1xuICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRPdmVybGF5KHRoaXMub3ZlcmxheUVsLCB0aGlzLnRhcmdldEVsLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgICAgIFpJbmRleFV0aWxzLmNsZWFyKHRoaXMub3ZlcmxheUVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51bmJpbmRMaXN0ZW5lcnMoKTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbT3ZlcmxheSwgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtPdmVybGF5XVxufSlcbmV4cG9ydCBjbGFzcyBPdmVybGF5TW9kdWxlIHt9XG4iXX0=
488
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9vdmVybGF5L292ZXJsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUVILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFrRSxhQUFhLEVBQTRCLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwSixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRXpELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFRO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDdEMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENB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QUFLO2dCQVFPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBT08sVUFBVTtzQkFBdEIsS0FBSztnQkFPTyxPQUFPO3NCQUFuQixLQUFLO2dCQU9JLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRXlCLFNBQVM7c0JBQXhDLGVBQWU7dUJBQUMsYUFBYTtnQkFFUixnQkFBZ0I7c0JBQXJDLFNBQVM7dUJBQUMsU0FBUztnQkFFRSxnQkFBZ0I7c0JBQXJDLFNBQVM7dUJBQUMsU0FBUzs7QUE0U3hCLE1BQU0sT0FBTyxhQUFhOzswR0FBYixhQUFhOzJHQUFiLGFBQWEsaUJBamJiLE9BQU8sYUE2YU4sWUFBWSxFQUFFLFlBQVksYUE3YTNCLE9BQU8sRUE4YUcsWUFBWTsyR0FHdEIsYUFBYSxZQUpaLFlBQVksRUFBRSxZQUFZLEVBQ2pCLFlBQVk7MkZBR3RCLGFBQWE7a0JBTHpCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQztvQkFDaEMsWUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIGFuaW1hdGlvbiwgQW5pbWF0aW9uRXZlbnQsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyLCB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdNb2R1bGUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT3ZlcmxheU1vZGVUeXBlLCBPdmVybGF5T3B0aW9ucywgT3ZlcmxheVNlcnZpY2UsIFByaW1lTkdDb25maWcsIFByaW1lVGVtcGxhdGUsIFJlc3BvbnNpdmVPdmVybGF5T3B0aW9ucywgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheVNjcm9sbEhhbmRsZXIsIERvbUhhbmRsZXIgfSBmcm9tICdwcmltZW5nL2RvbSc7XG5pbXBvcnQgeyBPYmplY3RVdGlscywgWkluZGV4VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IE9WRVJMQVlfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPdmVybGF5KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuY29uc3Qgc2hvd092ZXJsYXlDb250ZW50QW5pbWF0aW9uID0gYW5pbWF0aW9uKFtzdHlsZSh7IHRyYW5zZm9ybTogJ3t7dHJhbnNmb3JtfX0nLCBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKV0pO1xuXG5jb25zdCBoaWRlT3ZlcmxheUNvbnRlbnRBbmltYXRpb24gPSBhbmltYXRpb24oW2FuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAne3t0cmFuc2Zvcm19fScsIG9wYWNpdHk6IDAgfSkpXSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1vdmVybGF5JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIm1vZGFsVmlzaWJsZVwiXG4gICAgICAgICAgICAjb3ZlcmxheVxuICAgICAgICAgICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwLW92ZXJsYXkgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktbW9kYWwgcC1jb21wb25lbnQtb3ZlcmxheSBwLWNvbXBvbmVudC1vdmVybGF5LWVudGVyJzogbW9kYWwsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1jZW50ZXInOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS10b3AnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ3RvcCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS10b3Atc3RhcnQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ3RvcC1zdGFydCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS10b3AtZW5kJzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICd0b3AtZW5kJyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LWJvdHRvbSc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LWJvdHRvbS1zdGFydCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAnYm90dG9tLXN0YXJ0JyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LWJvdHRvbS1lbmQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ2JvdHRvbS1lbmQnLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktbGVmdCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAnbGVmdCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1sZWZ0LXN0YXJ0JzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICdsZWZ0LXN0YXJ0JyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LWxlZnQtZW5kJzogbW9kYWwgJiYgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24gPT09ICdsZWZ0LWVuZCcsXG4gICAgICAgICAgICAgICAgJ3Atb3ZlcmxheS1yaWdodCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAncmlnaHQnLFxuICAgICAgICAgICAgICAgICdwLW92ZXJsYXktcmlnaHQtc3RhcnQnOiBtb2RhbCAmJiBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA9PT0gJ3JpZ2h0LXN0YXJ0JyxcbiAgICAgICAgICAgICAgICAncC1vdmVybGF5LXJpZ2h0LWVuZCc6IG1vZGFsICYmIG92ZXJsYXlSZXNwb25zaXZlRGlyZWN0aW9uID09PSAncmlnaHQtZW5kJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25PdmVybGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZpc2libGVcIlxuICAgICAgICAgICAgICAgICNjb250ZW50XG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29udGVudFN0eWxlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29udGVudFN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidwLW92ZXJsYXktY29udGVudCdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk92ZXJsYXlDb250ZW50Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW0BvdmVybGF5Q29udGVudEFuaW1hdGlvbl09XCJ7IHZhbHVlOiAndmlzaWJsZScsIHBhcmFtczogeyBzaG93VHJhbnNpdGlvblBhcmFtczogc2hvd1RyYW5zaXRpb25PcHRpb25zLCBoaWRlVHJhbnNpdGlvblBhcmFtczogaGlkZVRyYW5zaXRpb25PcHRpb25zLCB0cmFuc2Zvcm06IHRyYW5zZm9ybU9wdGlvbnNbbW9kYWwgPyBvdmVybGF5UmVzcG9uc2l2ZURpcmVjdGlvbiA6ICdkZWZhdWx0J10gfSB9XCJcbiAgICAgICAgICAgICAgICAoQG92ZXJsYXlDb250ZW50QW5pbWF0aW9uLnN0YXJ0KT1cIm9uT3ZlcmxheUNvbnRlbnRBbmltYXRpb25TdGFydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoQG92ZXJsYXlDb250ZW50QW5pbWF0aW9uLmRvbmUpPVwib25PdmVybGF5Q29udGVudEFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IG1vZGU6IG92ZXJsYXlNb2RlIH0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgYW5pbWF0aW9uczogW3RyaWdnZXIoJ292ZXJsYXlDb250ZW50QW5pbWF0aW9uJywgW3RyYW5zaXRpb24oJzplbnRlcicsIFt1c2VBbmltYXRpb24oc2hvd092ZXJsYXlDb250ZW50QW5pbWF0aW9uKV0pLCB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbdXNlQW5pbWF0aW9uKGhpZGVPdmVybGF5Q29udGVudEFuaW1hdGlvbildKV0pXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW09WRVJMQVlfVkFMVUVfQUNDRVNTT1JdLFxuICAgIHN0eWxlVXJsczogWycuL292ZXJsYXkuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3AtZWxlbWVudCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXkgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG4gICAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLl92aXNpYmxlICYmICF0aGlzLm1vZGFsVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFZpc2libGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IG1vZGUoKTogT3ZlcmxheU1vZGVUeXBlIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGUgfHwgdGhpcy5vdmVybGF5T3B0aW9ucz8ubW9kZTtcbiAgICB9XG4gICAgc2V0IG1vZGUodmFsdWU6IE92ZXJsYXlNb2RlVHlwZSB8IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tb2RlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IHN0eWxlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZSh0aGlzLl9zdHlsZSwgdGhpcy5tb2RhbCA/IHRoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zPy5zdHlsZSA6IHRoaXMub3ZlcmxheU9wdGlvbnM/LnN0eWxlKTtcbiAgICB9XG4gICAgc2V0IHN0eWxlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc3R5bGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgc3R5bGVDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMubWVyZ2UodGhpcy5fc3R5bGVDbGFzcywgdGhpcy5tb2RhbCA/IHRoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zPy5zdHlsZUNsYXNzIDogdGhpcy5vdmVybGF5T3B0aW9ucz8uc3R5bGVDbGFzcyk7XG4gICAgfVxuICAgIHNldCBzdHlsZUNsYXNzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc3R5bGVDbGFzcyA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBjb250ZW50U3R5bGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLm1lcmdlKHRoaXMuX2NvbnRlbnRTdHlsZSwgdGhpcy5tb2RhbCA/IHRoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zPy5jb250ZW50U3R5bGUgOiB0aGlzLm92ZXJsYXlPcHRpb25zPy5jb250ZW50U3R5bGUpO1xuICAgIH1cbiAgICBzZXQgY29udGVudFN0eWxlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fY29udGVudFN0eWxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGNvbnRlbnRTdHlsZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5tZXJnZSh0aGlzLl9jb250ZW50U3R5bGVDbGFzcywgdGhpcy5tb2RhbCA/IHRoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zPy5jb250ZW50U3R5bGVDbGFzcyA6IHRoaXMub3ZlcmxheU9wdGlvbnM/LmNvbnRlbnRTdHlsZUNsYXNzKTtcbiAgICB9XG4gICAgc2V0IGNvbnRlbnRTdHlsZUNsYXNzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY29udGVudFN0eWxlQ2xhc3MgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgdGFyZ2V0KCk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fdGFyZ2V0IHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/LnRhcmdldDtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAnQHByZXYnIDogdmFsdWU7XG4gICAgfVxuICAgIHNldCB0YXJnZXQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl90YXJnZXQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgYXBwZW5kVG8oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFRvIHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/LmFwcGVuZFRvO1xuICAgIH1cbiAgICBzZXQgYXBwZW5kVG8odmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9hcHBlbmRUbyA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBhdXRvWkluZGV4KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2F1dG9aSW5kZXggfHwgdGhpcy5vdmVybGF5T3B0aW9ucz8uYXV0b1pJbmRleDtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB0cnVlIDogdmFsdWU7XG4gICAgfVxuICAgIHNldCBhdXRvWkluZGV4KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2F1dG9aSW5kZXggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgYmFzZVpJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2Jhc2VaSW5kZXggfHwgdGhpcy5vdmVybGF5T3B0aW9ucz8uYmFzZVpJbmRleDtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyAwIDogdmFsdWU7XG4gICAgfVxuICAgIHNldCBiYXNlWkluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fYmFzZVpJbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBzaG93VHJhbnNpdGlvbk9wdGlvbnMoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9zaG93VHJhbnNpdGlvbk9wdGlvbnMgfHwgdGhpcy5vdmVybGF5T3B0aW9ucz8uc2hvd1RyYW5zaXRpb25PcHRpb25zO1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/ICcuMTJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyA6IHZhbHVlO1xuICAgIH1cbiAgICBzZXQgc2hvd1RyYW5zaXRpb25PcHRpb25zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2hvd1RyYW5zaXRpb25PcHRpb25zID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IGhpZGVUcmFuc2l0aW9uT3B0aW9ucygpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2hpZGVUcmFuc2l0aW9uT3B0aW9ucyB8fCB0aGlzLm92ZXJsYXlPcHRpb25zPy5oaWRlVHJhbnNpdGlvbk9wdGlvbnM7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJy4xcyBsaW5lYXInIDogdmFsdWU7XG4gICAgfVxuICAgIHNldCBoaWRlVHJhbnNpdGlvbk9wdGlvbnModmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9oaWRlVHJhbnNpdGlvbk9wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBnZXQgbGlzdGVuZXIoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xpc3RlbmVyIHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/Lmxpc3RlbmVyO1xuICAgIH1cbiAgICBzZXQgbGlzdGVuZXIodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9saXN0ZW5lciA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCByZXNwb25zaXZlKCk6IFJlc3BvbnNpdmVPdmVybGF5T3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zaXZlIHx8IHRoaXMub3ZlcmxheU9wdGlvbnM/LnJlc3BvbnNpdmU7XG4gICAgfVxuICAgIHNldCByZXNwb25zaXZlKHZhbDogUmVzcG9uc2l2ZU92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmUgPSB2YWw7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZ2V0IG9wdGlvbnMoKTogT3ZlcmxheU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgICB9XG4gICAgc2V0IG9wdGlvbnModmFsOiBPdmVybGF5T3B0aW9ucyB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkJlZm9yZVNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVIaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQW5pbWF0aW9uU3RhcnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQW5pbWF0aW9uRG9uZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdvdmVybGF5Jykgb3ZlcmxheVZpZXdDaGlsZDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50Vmlld0NoaWxkOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX3Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9tb2RlOiBPdmVybGF5TW9kZVR5cGUgfCBzdHJpbmc7XG5cbiAgICBfc3R5bGU6IGFueTtcblxuICAgIF9zdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBfY29udGVudFN0eWxlOiBhbnk7XG5cbiAgICBfY29udGVudFN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIF90YXJnZXQ6IGFueTtcblxuICAgIF9hcHBlbmRUbzogJ2JvZHknIHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBfYXV0b1pJbmRleDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIF9iYXNlWkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBfc2hvd1RyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBfaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBfbGlzdGVuZXI6IGFueTtcblxuICAgIF9yZXNwb25zaXZlOiBSZXNwb25zaXZlT3ZlcmxheU9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgICBfb3B0aW9uczogT3ZlcmxheU9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgICBtb2RhbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzT3ZlcmxheUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzT3ZlcmxheUNvbnRlbnRDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzY3JvbGxIYW5kbGVyOiBhbnk7XG5cbiAgICBkb2N1bWVudENsaWNrTGlzdGVuZXI6IGFueTtcblxuICAgIGRvY3VtZW50UmVzaXplTGlzdGVuZXI6IGFueTtcblxuICAgIHByaXZhdGUgd2luZG93OiBXaW5kb3cgfCBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHRyYW5zZm9ybU9wdGlvbnM6IGFueSA9IHtcbiAgICAgICAgZGVmYXVsdDogJ3NjYWxlWSgwLjgpJyxcbiAgICAgICAgY2VudGVyOiAnc2NhbGUoMC43KScsXG4gICAgICAgIHRvcDogJ3RyYW5zbGF0ZTNkKDBweCwgLTEwMCUsIDBweCknLFxuICAgICAgICAndG9wLXN0YXJ0JzogJ3RyYW5zbGF0ZTNkKDBweCwgLTEwMCUsIDBweCknLFxuICAgICAgICAndG9wLWVuZCc6ICd0cmFuc2xhdGUzZCgwcHgsIC0xMDAlLCAwcHgpJyxcbiAgICAgICAgYm90dG9tOiAndHJhbnNsYXRlM2QoMHB4LCAxMDAlLCAwcHgpJyxcbiAgICAgICAgJ2JvdHRvbS1zdGFydCc6ICd0cmFuc2xhdGUzZCgwcHgsIDEwMCUsIDBweCknLFxuICAgICAgICAnYm90dG9tLWVuZCc6ICd0cmFuc2xhdGUzZCgwcHgsIDEwMCUsIDBweCknLFxuICAgICAgICBsZWZ0OiAndHJhbnNsYXRlM2QoLTEwMCUsIDBweCwgMHB4KScsXG4gICAgICAgICdsZWZ0LXN0YXJ0JzogJ3RyYW5zbGF0ZTNkKC0xMDAlLCAwcHgsIDBweCknLFxuICAgICAgICAnbGVmdC1lbmQnOiAndHJhbnNsYXRlM2QoLTEwMCUsIDBweCwgMHB4KScsXG4gICAgICAgIHJpZ2h0OiAndHJhbnNsYXRlM2QoMTAwJSwgMHB4LCAwcHgpJyxcbiAgICAgICAgJ3JpZ2h0LXN0YXJ0JzogJ3RyYW5zbGF0ZTNkKDEwMCUsIDBweCwgMHB4KScsXG4gICAgICAgICdyaWdodC1lbmQnOiAndHJhbnNsYXRlM2QoMTAwJSwgMHB4LCAwcHgpJ1xuICAgIH07XG5cbiAgICBnZXQgbW9kYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdtb2RhbCcgfHwgKHRoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zICYmIHRoaXMud2luZG93Py5tYXRjaE1lZGlhKHRoaXMub3ZlcmxheVJlc3BvbnNpdmVPcHRpb25zLm1lZGlhPy5yZXBsYWNlKCdAbWVkaWEnLCAnJykgfHwgYChtYXgtd2lkdGg6ICR7dGhpcy5vdmVybGF5UmVzcG9uc2l2ZU9wdGlvbnMuYnJlYWtwb2ludH0pYCkubWF0Y2hlcyk7XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJsYXlNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlIHx8ICh0aGlzLm1vZGFsID8gJ21vZGFsJyA6ICdvdmVybGF5Jyk7XG4gICAgfVxuXG4gICAgZ2V0IG92ZXJsYXlPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4geyAuLi50aGlzLmNvbmZpZz8ub3ZlcmxheU9wdGlvbnMsIC4uLnRoaXMub3B0aW9ucyB9OyAvLyBUT0RPOiBJbXByb3ZlIHBlcmZvcm1hbmNlXG4gICAgfVxuXG4gICAgZ2V0IG92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5vdmVybGF5T3B0aW9ucz8ucmVzcG9uc2l2ZSwgLi4udGhpcy5yZXNwb25zaXZlIH07IC8vIFRPRE86IEltcHJvdmUgcGVyZm9ybWFuY2VcbiAgICB9XG5cbiAgICBnZXQgb3ZlcmxheVJlc3BvbnNpdmVEaXJlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZXNwb25zaXZlT3B0aW9ucz8uZGlyZWN0aW9uIHx8ICdjZW50ZXInO1xuICAgIH1cblxuICAgIGdldCBvdmVybGF5RWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRlbnRFbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgdGFyZ2V0RWwoKSB7XG4gICAgICAgIHJldHVybiBEb21IYW5kbGVyLmdldFRhcmdldEVsZW1lbnQodGhpcy50YXJnZXQsIHRoaXMuZWw/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNvbmZpZzogUHJpbWVOR0NvbmZpZywgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy53aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBuZXcgdGVtcGxhdGUgdHlwZXMgbWF5IGJlIGFkZGVkLlxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNob3cob3ZlcmxheT86IEhUTUxFbGVtZW50LCBpc0ZvY3VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vblZpc2libGVDaGFuZ2UodHJ1ZSk7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKCdvblNob3cnLCB7IG92ZXJsYXk6IG92ZXJsYXkgfHwgdGhpcy5vdmVybGF5RWwsIHRhcmdldDogdGhpcy50YXJnZXRFbCwgbW9kZTogdGhpcy5vdmVybGF5TW9kZSB9KTtcblxuICAgICAgICBpc0ZvY3VzICYmIERvbUhhbmRsZXIuZm9jdXModGhpcy50YXJnZXRFbCk7XG4gICAgICAgIHRoaXMubW9kYWwgJiYgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50Py5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICB9XG5cbiAgICBoaWRlKG92ZXJsYXk/OiBIVE1MRWxlbWVudCwgaXNGb2N1czogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV2ZW50cygnb25IaWRlJywgeyBvdmVybGF5OiBvdmVybGF5IHx8IHRoaXMub3ZlcmxheUVsLCB0YXJnZXQ6IHRoaXMudGFyZ2V0RWwsIG1vZGU6IHRoaXMub3ZlcmxheU1vZGUgfSk7XG4gICAgICAgICAgICBpc0ZvY3VzICYmIERvbUhhbmRsZXIuZm9jdXModGhpcy50YXJnZXRFbCk7XG4gICAgICAgICAgICB0aGlzLm1vZGFsICYmIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudD8uYm9keSwgJ3Atb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhbGlnbk92ZXJsYXkoKSB7XG4gICAgICAgICF0aGlzLm1vZGFsICYmIERvbUhhbmRsZXIuYWxpZ25PdmVybGF5KHRoaXMub3ZlcmxheUVsLCB0aGlzLnRhcmdldEVsLCB0aGlzLmFwcGVuZFRvKTtcbiAgICB9XG5cbiAgICBvblZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmlzaWJsZSk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q2xpY2soZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc092ZXJsYXlDbGlja2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk92ZXJsYXlDb250ZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5hZGQoe1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMudGFyZ2V0RWxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pc092ZXJsYXlDb250ZW50Q2xpY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25PdmVybGF5Q29udGVudEFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LnRvU3RhdGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3Zpc2libGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKCdvbkJlZm9yZVNob3cnLCB7IG92ZXJsYXk6IHRoaXMub3ZlcmxheUVsLCB0YXJnZXQ6IHRoaXMudGFyZ2V0RWwsIG1vZGU6IHRoaXMub3ZlcmxheU1vZGUgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvWkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIFpJbmRleFV0aWxzLnNldCh0aGlzLm92ZXJsYXlNb2RlLCB0aGlzLm92ZXJsYXlFbCwgdGhpcy5iYXNlWkluZGV4ICsgdGhpcy5jb25maWc/LnpJbmRleFt0aGlzLm92ZXJsYXlNb2RlXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRPdmVybGF5KHRoaXMub3ZlcmxheUVsLCB0aGlzLmFwcGVuZFRvID09PSAnYm9keScgPyB0aGlzLmRvY3VtZW50LmJvZHkgOiB0aGlzLmFwcGVuZFRvLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduT3ZlcmxheSgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3ZvaWQnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKCdvbkJlZm9yZUhpZGUnLCB7IG92ZXJsYXk6IHRoaXMub3ZlcmxheUVsLCB0YXJnZXQ6IHRoaXMudGFyZ2V0RWwsIG1vZGU6IHRoaXMub3ZlcmxheU1vZGUgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsICYmIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5vdmVybGF5RWwsICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKCdvbkFuaW1hdGlvblN0YXJ0JywgZXZlbnQpO1xuICAgIH1cblxuICAgIG9uT3ZlcmxheUNvbnRlbnRBbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCkge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm92ZXJsYXlFbCB8fCBldmVudC5lbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2aXNpYmxlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNob3coY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmRMaXN0ZW5lcnMoKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZExpc3RlbmVycygpO1xuXG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hcHBlbmRPdmVybGF5KHRoaXMub3ZlcmxheUVsLCB0aGlzLnRhcmdldEVsLCB0aGlzLmFwcGVuZFRvKTtcbiAgICAgICAgICAgICAgICBaSW5kZXhVdGlscy5jbGVhcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxWaXNpYmxlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKCdvbkFuaW1hdGlvbkRvbmUnLCBldmVudCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRXZlbnRzKG5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcbiAgICAgICAgKHRoaXMgYXMgYW55KVtuYW1lXS5lbWl0KHBhcmFtcyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyAmJiAodGhpcy5vcHRpb25zIGFzIGFueSlbbmFtZV0gJiYgKHRoaXMub3B0aW9ucyBhcyBhbnkpW25hbWVdKHBhcmFtcyk7XG4gICAgICAgIHRoaXMuY29uZmlnPy5vdmVybGF5T3B0aW9ucyAmJiAodGhpcy5jb25maWc/Lm92ZXJsYXlPcHRpb25zIGFzIGFueSlbbmFtZV0gJiYgKHRoaXMuY29uZmlnPy5vdmVybGF5T3B0aW9ucyBhcyBhbnkpW25hbWVdKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgYmluZExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5iaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuYmluZERvY3VtZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB1bmJpbmRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbmV3IENvbm5lY3RlZE92ZXJsYXlTY3JvbGxIYW5kbGVyKHRoaXMudGFyZ2V0RWwsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWQgPSB0aGlzLmxpc3RlbmVyID8gdGhpcy5saXN0ZW5lcihldmVudCwgeyB0eXBlOiAnc2Nyb2xsJywgbW9kZTogdGhpcy5vdmVybGF5TW9kZSwgdmFsaWQ6IHRydWUgfSkgOiB0cnVlO1xuXG4gICAgICAgICAgICAgICAgdmFsaWQgJiYgdGhpcy5oaWRlKGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmJpbmRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHVuYmluZFNjcm9sbExpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5zY3JvbGxIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEhhbmRsZXIudW5iaW5kU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNUYXJnZXRDbGlja2VkID0gdGhpcy50YXJnZXRFbCAmJiAodGhpcy50YXJnZXRFbC5pc1NhbWVOb2RlKGV2ZW50LnRhcmdldCkgfHwgKCF0aGlzLmlzT3ZlcmxheUNsaWNrZWQgJiYgdGhpcy50YXJnZXRFbC5jb250YWlucyhldmVudC50YXJnZXQpKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPdXRzaWRlQ2xpY2tlZCA9ICFpc1RhcmdldENsaWNrZWQgJiYgIXRoaXMuaXNPdmVybGF5Q29udGVudENsaWNrZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWQgPSB0aGlzLmxpc3RlbmVyID8gdGhpcy5saXN0ZW5lcihldmVudCwgeyB0eXBlOiAnb3V0c2lkZScsIG1vZGU6IHRoaXMub3ZlcmxheU1vZGUsIHZhbGlkOiBldmVudC53aGljaCAhPT0gMyAmJiBpc091dHNpZGVDbGlja2VkIH0pIDogaXNPdXRzaWRlQ2xpY2tlZDtcblxuICAgICAgICAgICAgICAgIHZhbGlkICYmIHRoaXMuaGlkZShldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc092ZXJsYXlDbGlja2VkID0gdGhpcy5pc092ZXJsYXlDb250ZW50Q2xpY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmREb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZCA9IHRoaXMubGlzdGVuZXIgPyB0aGlzLmxpc3RlbmVyKGV2ZW50LCB7IHR5cGU6ICdyZXNpemUnLCBtb2RlOiB0aGlzLm92ZXJsYXlNb2RlLCB2YWxpZDogIURvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpIH0pIDogIURvbUhhbmRsZXIuaXNUb3VjaERldmljZSgpO1xuXG4gICAgICAgICAgICAgICAgdmFsaWQgJiYgdGhpcy5oaWRlKGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaGlkZSh0aGlzLm92ZXJsYXlFbCwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheUVsKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLmFwcGVuZE92ZXJsYXkodGhpcy5vdmVybGF5RWwsIHRoaXMudGFyZ2V0RWwsIHRoaXMuYXBwZW5kVG8pO1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5vdmVybGF5RWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2Nyb2xsSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVuYmluZExpc3RlbmVycygpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtPdmVybGF5LCBTaGFyZWRNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW092ZXJsYXldXG59KVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlNb2R1bGUge31cbiJdfQ==
@@ -134,7 +134,7 @@ SelectButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
134
134
  </ng-template>
135
135
  </div>
136
136
  </div>
137
- `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
137
+ `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
138
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectButton, decorators: [{
139
139
  type: Component,
140
140
  args: [{ selector: 'p-selectButton', template: `
@@ -167,7 +167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
167
167
  </div>
168
168
  `, providers: [SELECTBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
169
169
  class: 'p-element'
170
- }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"] }]
170
+ }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"] }]
171
171
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.LicenseManager }]; }, propDecorators: { options: [{
172
172
  type: Input
173
173
  }], optionLabel: [{
@@ -76,7 +76,7 @@ ToggleButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
76
76
  <span *ngIf="onIcon || offIcon" [class]="checked ? this.onIcon : this.offIcon" [ngClass]="{ 'p-button-icon': true, 'p-button-icon-left': iconPos === 'left', 'p-button-icon-right': iconPos === 'right' }"></span>
77
77
  <span class="p-button-label">{{ checked ? (hasOnLabel ? onLabel : '') : hasOffLabel ? offLabel : '' }}</span>
78
78
  </div>
79
- `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
79
+ `, isInline: true, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.Ripple, selector: "[pRipple]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: ToggleButton, decorators: [{
81
81
  type: Component,
82
82
  args: [{ selector: 'p-toggleButton', template: `
@@ -96,7 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
96
96
  </div>
97
97
  `, providers: [TOGGLEBUTTON_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, host: {
98
98
  class: 'p-element'
99
- }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"] }]
99
+ }, styles: [".p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-buttonset .p-button{margin:0}.p-buttonset .p-button:not(:last-child){border-right:0 none}.p-buttonset .p-button:not(:first-of-type):not(:last-of-type){border-radius:0}.p-buttonset .p-button:first-of-type{border-top-right-radius:0;border-bottom-right-radius:0}.p-buttonset .p-button:last-of-type{border-top-left-radius:0;border-bottom-left-radius:0}.p-buttonset .p-button:focus{position:relative;z-index:1}\n"] }]
100
100
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.LicenseManager }]; }, propDecorators: { onLabel: [{
101
101
  type: Input
102
102
  }], offLabel: [{
@@ -520,7 +520,7 @@ class DomHandler {
520
520
  [contenteditable]:not([tabIndex = "-1"]):not([disabled]):not([style*="display:none"]):not([hidden]):not(.p-disabled)`);
521
521
  let visibleFocusableElements = [];
522
522
  for (let focusableElement of focusableElements) {
523
- if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden')
523
+ if (!!(focusableElement.offsetWidth || focusableElement.offsetHeight || focusableElement.getClientRects().length))
524
524
  visibleFocusableElements.push(focusableElement);
525
525
  }
526
526
  return visibleFocusableElements;
@@ -1 +1 @@
1
- {"version":3,"file":"primeng-dom.mjs","sources":["../../src/app/components/dom/domhandler.ts","../../src/app/components/dom/connectedoverlayscrollhandler.ts","../../src/app/components/dom/primeng-dom.ts"],"sourcesContent":["/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n * Metadata collected contains an error that will be reported at runtime:\n * Only initialized variables and constants can be referenced\n * because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nexport class DomHandler {\n public static zindex: number = 1000;\n\n private static calculatedScrollbarWidth: number = null;\n\n private static calculatedScrollbarHeight: number = null;\n\n private static browser: any;\n\n public static addClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) element.classList.add(className);\n else element.className += ' ' + className;\n }\n }\n\n public static addMultipleClasses(element: any, className: string): void {\n if (element && className) {\n if (element.classList) {\n let styles: string[] = className.trim().split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n let styles: string[] = className.split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n }\n\n public static removeClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) element.classList.remove(className);\n else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (element && className) {\n if (element.classList) return element.classList.contains(className);\n else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n\n return false;\n }\n\n public static siblings(element: any): any {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n\n public static find(element: any, selector: string): any[] {\n return Array.from(element.querySelectorAll(selector));\n }\n\n public static findSingle(element: any, selector: string): any {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n\n public static index(element: any): number {\n let children = element.parentNode.childNodes;\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element) return num;\n if (children[i].nodeType == 1) num++;\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n let children = element.parentNode ? element.parentNode.childNodes : [];\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element) return num;\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) num++;\n }\n return -1;\n }\n\n public static appendOverlay(overlay: any, target: any, appendTo: any = 'self') {\n if (appendTo !== 'self' && overlay && target) {\n this.appendChild(overlay, target);\n }\n }\n\n public static alignOverlay(overlay: any, target: any, appendTo: any = 'self', calculateMinWidth: boolean = true) {\n if (overlay && target) {\n calculateMinWidth && (overlay.style.minWidth || (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px'));\n\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n this.absolutePosition(overlay, target);\n }\n }\n }\n\n public static relativePosition(element: any, target: any): void {\n const getClosestRelativeElement = (el) => {\n if (!el) return;\n\n return getComputedStyle(el).getPropertyValue('position') === 'relative' ? el : getClosestRelativeElement(el.parentElement);\n };\n\n const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight = target.offsetHeight;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n const relativeElement = getClosestRelativeElement(element);\n const relativeElementOffset = relativeElement?.getBoundingClientRect() || { top: -1 * windowScrollTop, left: -1 * windowScrollLeft };\n let top: number, left: number;\n\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight + targetOffset.top - relativeElementOffset.top;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = (targetOffset.left - relativeElementOffset.left) * -1;\n } else if (targetOffset.left - relativeElementOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left - relativeElementOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = targetOffset.left - relativeElementOffset.left;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n public static absolutePosition(element: any, target: any): void {\n const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight = elementDimensions.height;\n const elementOuterWidth = elementDimensions.width;\n const targetOuterHeight = target.offsetHeight;\n const targetOuterWidth = target.offsetWidth;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n let top: number, left: number;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n else left = targetOffset.left + windowScrollLeft;\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n static getParents(element: any, parents: any = []): any {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n\n static getScrollableParents(element: any) {\n let scrollableParents = [];\n\n if (element) {\n let parents = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node: any) => {\n let styleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n\n for (let parent of parents) {\n let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n let selectors = scrollSelectors.split(',');\n for (let selector of selectors) {\n let el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n\n return scrollableParents;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementHeight;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementWidth;\n }\n\n public static getHiddenElementDimensions(element: any): any {\n let dimensions: any = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return dimensions;\n }\n\n public static scrollInView(container, item) {\n let borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n let borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n let paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n let paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n let containerRect = container.getBoundingClientRect();\n let itemRect = item.getBoundingClientRect();\n let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n let scroll = container.scrollTop;\n let elementHeight = container.clientHeight;\n let itemHeight = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n\n public static fadeIn(element, duration: number): void {\n element.style.opacity = 0;\n\n let last = +new Date();\n let opacity = 0;\n let tick = function () {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n\n public static fadeOut(element, ms) {\n var opacity = 1,\n interval = 50,\n duration = ms,\n gap = interval / duration;\n\n let fading = setInterval(() => {\n opacity = opacity - gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n\n public static getWindowScrollTop(): number {\n let doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n let doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n public static matches(element, selector: string): boolean {\n var p = Element.prototype;\n var f =\n p['matches'] ||\n p.webkitMatchesSelector ||\n p['mozMatchesSelector'] ||\n p['msMatchesSelector'] ||\n function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n\n public static getOuterWidth(el, margin?) {\n let width = el.offsetWidth;\n\n if (margin) {\n let style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n public static getHorizontalPadding(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n\n public static getHorizontalMargin(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n public static innerWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static width(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static getInnerHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n\n public static getOuterHeight(el, margin?) {\n let height = el.offsetHeight;\n\n if (margin) {\n let style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n public static getHeight(el): number {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return height;\n }\n\n public static getWidth(el): number {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n return width;\n }\n\n public static getViewport(): any {\n let win = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n w = win.innerWidth || e.clientWidth || g.clientWidth,\n h = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n public static getOffset(el) {\n var rect = el.getBoundingClientRect();\n\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n\n public static replaceElementWith(element: any, replacementElement: any): any {\n let parentNode = element.parentNode;\n if (!parentNode) throw `Can't replace element`;\n return parentNode.replaceChild(replacementElement, element);\n }\n\n public static getUserAgent(): string {\n return navigator.userAgent;\n }\n\n public static isIE() {\n var ua = window.navigator.userAgent;\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return true;\n }\n\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n\n // other browser\n return false;\n }\n\n public static isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n\n public static isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n\n public static isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n public static appendChild(element: any, target: any) {\n if (this.isElement(target)) target.appendChild(element);\n else if (target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);\n else throw 'Cannot append ' + target + ' to ' + element;\n }\n\n public static removeChild(element: any, target: any) {\n if (this.isElement(target)) target.removeChild(element);\n else if (target.el && target.el.nativeElement) target.el.nativeElement.removeChild(element);\n else throw 'Cannot remove ' + element + ' from ' + target;\n }\n\n public static removeElement(element: Element) {\n if (!('remove' in Element.prototype)) element.parentNode.removeChild(element);\n else element.remove();\n }\n\n public static isElement(obj: any) {\n return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n\n public static calculateScrollbarWidth(el?: HTMLElement): number {\n if (el) {\n let style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n } else {\n if (this.calculatedScrollbarWidth !== null) return this.calculatedScrollbarWidth;\n\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarWidth;\n\n return scrollbarWidth;\n }\n }\n\n public static calculateScrollbarHeight(): number {\n if (this.calculatedScrollbarHeight !== null) return this.calculatedScrollbarHeight;\n\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarHeight;\n\n return scrollbarHeight;\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n (element as any)[methodName].apply(element, args);\n }\n\n public static clearSelection(): void {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n //ignore IE bug\n }\n }\n }\n\n public static getBrowser() {\n if (!this.browser) {\n let matched = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n\n public static resolveUserAgent() {\n let ua = navigator.userAgent.toLowerCase();\n let match =\n /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) || [];\n\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n\n public static isInteger(value): boolean {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n\n public static isHidden(element: HTMLElement): boolean {\n return !element || element.offsetParent === null;\n }\n\n public static isVisible(element: HTMLElement) {\n return element && element.offsetParent != null;\n }\n\n public static isExist(element: HTMLElement) {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n\n public static focus(element: HTMLElement, options?: FocusOptions): void {\n element && document.activeElement !== element && element.focus(options);\n }\n\n public static getFocusableElements(element: HTMLElement) {\n let focusableElements = DomHandler.find(\n element,\n `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]):not(.p-disabled)`\n );\n\n let visibleFocusableElements = [];\n for (let focusableElement of focusableElements) {\n if (getComputedStyle(focusableElement).display != 'none' && getComputedStyle(focusableElement).visibility != 'hidden') visibleFocusableElements.push(focusableElement);\n }\n return visibleFocusableElements;\n }\n\n static generateZIndex() {\n this.zindex = this.zindex || 999;\n return ++this.zindex;\n }\n\n public static getSelection() {\n if (window.getSelection) return window.getSelection().toString();\n else if (document.getSelection) return document.getSelection().toString();\n else if (document['selection']) return document['selection'].createRange().text;\n\n return null;\n }\n\n public static getTargetElement(target: any, el?: HTMLElement) {\n if (!target) return null;\n\n switch (target) {\n case 'document':\n return document;\n case 'window':\n return window;\n case '@next':\n return el?.nextElementSibling;\n case '@prev':\n return el?.previousElementSibling;\n case '@parent':\n return el?.parentElement;\n case '@grandparent':\n return el?.parentElement.parentElement;\n default:\n const type = typeof target;\n\n if (type === 'string') {\n return document.querySelector(target);\n } else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n }\n\n const isFunction = (obj: any) => !!(obj && obj.constructor && obj.call && obj.apply);\n const element = isFunction(target) ? target() : target;\n\n return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n }\n }\n}\n","import { DomHandler } from './domhandler';\n\nexport class ConnectedOverlayScrollHandler {\n element: any;\n\n listener: any;\n\n scrollableParents: any;\n\n constructor(element: any, listener: any = () => {}) {\n this.element = element;\n this.listener = listener;\n }\n\n bindScrollListener() {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n\n unbindScrollListener() {\n if (this.scrollableParents) {\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n\n destroy() {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primeng-dom.mjs","sources":["../../src/app/components/dom/domhandler.ts","../../src/app/components/dom/connectedoverlayscrollhandler.ts","../../src/app/components/dom/primeng-dom.ts"],"sourcesContent":["/**\n * @dynamic is for runtime initializing DomHandler.browser\n *\n * If delete below comment, we can see this error message:\n * Metadata collected contains an error that will be reported at runtime:\n * Only initialized variables and constants can be referenced\n * because the value of this variable is needed by the template compiler.\n */\n// @dynamic\nexport class DomHandler {\n public static zindex: number = 1000;\n\n private static calculatedScrollbarWidth: number = null;\n\n private static calculatedScrollbarHeight: number = null;\n\n private static browser: any;\n\n public static addClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) element.classList.add(className);\n else element.className += ' ' + className;\n }\n }\n\n public static addMultipleClasses(element: any, className: string): void {\n if (element && className) {\n if (element.classList) {\n let styles: string[] = className.trim().split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.classList.add(styles[i]);\n }\n } else {\n let styles: string[] = className.split(' ');\n for (let i = 0; i < styles.length; i++) {\n element.className += ' ' + styles[i];\n }\n }\n }\n }\n\n public static removeClass(element: any, className: string): void {\n if (element && className) {\n if (element.classList) element.classList.remove(className);\n else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n public static hasClass(element: any, className: string): boolean {\n if (element && className) {\n if (element.classList) return element.classList.contains(className);\n else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n }\n\n return false;\n }\n\n public static siblings(element: any): any {\n return Array.prototype.filter.call(element.parentNode.children, function (child) {\n return child !== element;\n });\n }\n\n public static find(element: any, selector: string): any[] {\n return Array.from(element.querySelectorAll(selector));\n }\n\n public static findSingle(element: any, selector: string): any {\n if (element) {\n return element.querySelector(selector);\n }\n return null;\n }\n\n public static index(element: any): number {\n let children = element.parentNode.childNodes;\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element) return num;\n if (children[i].nodeType == 1) num++;\n }\n return -1;\n }\n\n public static indexWithinGroup(element: any, attributeName: string): number {\n let children = element.parentNode ? element.parentNode.childNodes : [];\n let num = 0;\n for (var i = 0; i < children.length; i++) {\n if (children[i] == element) return num;\n if (children[i].attributes && children[i].attributes[attributeName] && children[i].nodeType == 1) num++;\n }\n return -1;\n }\n\n public static appendOverlay(overlay: any, target: any, appendTo: any = 'self') {\n if (appendTo !== 'self' && overlay && target) {\n this.appendChild(overlay, target);\n }\n }\n\n public static alignOverlay(overlay: any, target: any, appendTo: any = 'self', calculateMinWidth: boolean = true) {\n if (overlay && target) {\n calculateMinWidth && (overlay.style.minWidth || (overlay.style.minWidth = DomHandler.getOuterWidth(target) + 'px'));\n\n if (appendTo === 'self') {\n this.relativePosition(overlay, target);\n } else {\n this.absolutePosition(overlay, target);\n }\n }\n }\n\n public static relativePosition(element: any, target: any): void {\n const getClosestRelativeElement = (el) => {\n if (!el) return;\n\n return getComputedStyle(el).getPropertyValue('position') === 'relative' ? el : getClosestRelativeElement(el.parentElement);\n };\n\n const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const targetHeight = target.offsetHeight;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n const relativeElement = getClosestRelativeElement(element);\n const relativeElementOffset = relativeElement?.getBoundingClientRect() || { top: -1 * windowScrollTop, left: -1 * windowScrollLeft };\n let top: number, left: number;\n\n if (targetOffset.top + targetHeight + elementDimensions.height > viewport.height) {\n top = targetOffset.top - relativeElementOffset.top - elementDimensions.height;\n element.style.transformOrigin = 'bottom';\n if (targetOffset.top + top < 0) {\n top = -1 * targetOffset.top;\n }\n } else {\n top = targetHeight + targetOffset.top - relativeElementOffset.top;\n element.style.transformOrigin = 'top';\n }\n\n if (elementDimensions.width > viewport.width) {\n // element wider then viewport and cannot fit on screen (align at left side of viewport)\n left = (targetOffset.left - relativeElementOffset.left) * -1;\n } else if (targetOffset.left - relativeElementOffset.left + elementDimensions.width > viewport.width) {\n // element wider then viewport but can be fit on screen (align at right side of viewport)\n left = (targetOffset.left - relativeElementOffset.left + elementDimensions.width - viewport.width) * -1;\n } else {\n // element fits on screen (align with target)\n left = targetOffset.left - relativeElementOffset.left;\n }\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n public static absolutePosition(element: any, target: any): void {\n const elementDimensions = element.offsetParent ? { width: element.offsetWidth, height: element.offsetHeight } : this.getHiddenElementDimensions(element);\n const elementOuterHeight = elementDimensions.height;\n const elementOuterWidth = elementDimensions.width;\n const targetOuterHeight = target.offsetHeight;\n const targetOuterWidth = target.offsetWidth;\n const targetOffset = target.getBoundingClientRect();\n const windowScrollTop = this.getWindowScrollTop();\n const windowScrollLeft = this.getWindowScrollLeft();\n const viewport = this.getViewport();\n let top: number, left: number;\n\n if (targetOffset.top + targetOuterHeight + elementOuterHeight > viewport.height) {\n top = targetOffset.top + windowScrollTop - elementOuterHeight;\n element.style.transformOrigin = 'bottom';\n\n if (top < 0) {\n top = windowScrollTop;\n }\n } else {\n top = targetOuterHeight + targetOffset.top + windowScrollTop;\n element.style.transformOrigin = 'top';\n }\n\n if (targetOffset.left + elementOuterWidth > viewport.width) left = Math.max(0, targetOffset.left + windowScrollLeft + targetOuterWidth - elementOuterWidth);\n else left = targetOffset.left + windowScrollLeft;\n\n element.style.top = top + 'px';\n element.style.left = left + 'px';\n }\n\n static getParents(element: any, parents: any = []): any {\n return element['parentNode'] === null ? parents : this.getParents(element.parentNode, parents.concat([element.parentNode]));\n }\n\n static getScrollableParents(element: any) {\n let scrollableParents = [];\n\n if (element) {\n let parents = this.getParents(element);\n const overflowRegex = /(auto|scroll)/;\n const overflowCheck = (node: any) => {\n let styleDeclaration = window['getComputedStyle'](node, null);\n return overflowRegex.test(styleDeclaration.getPropertyValue('overflow')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowX')) || overflowRegex.test(styleDeclaration.getPropertyValue('overflowY'));\n };\n\n for (let parent of parents) {\n let scrollSelectors = parent.nodeType === 1 && parent.dataset['scrollselectors'];\n if (scrollSelectors) {\n let selectors = scrollSelectors.split(',');\n for (let selector of selectors) {\n let el = this.findSingle(parent, selector);\n if (el && overflowCheck(el)) {\n scrollableParents.push(el);\n }\n }\n }\n\n if (parent.nodeType !== 9 && overflowCheck(parent)) {\n scrollableParents.push(parent);\n }\n }\n }\n\n return scrollableParents;\n }\n\n public static getHiddenElementOuterHeight(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementHeight = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementHeight;\n }\n\n public static getHiddenElementOuterWidth(element: any): number {\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n let elementWidth = element.offsetWidth;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return elementWidth;\n }\n\n public static getHiddenElementDimensions(element: any): any {\n let dimensions: any = {};\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n dimensions.width = element.offsetWidth;\n dimensions.height = element.offsetHeight;\n element.style.display = 'none';\n element.style.visibility = 'visible';\n\n return dimensions;\n }\n\n public static scrollInView(container, item) {\n let borderTopValue: string = getComputedStyle(container).getPropertyValue('borderTopWidth');\n let borderTop: number = borderTopValue ? parseFloat(borderTopValue) : 0;\n let paddingTopValue: string = getComputedStyle(container).getPropertyValue('paddingTop');\n let paddingTop: number = paddingTopValue ? parseFloat(paddingTopValue) : 0;\n let containerRect = container.getBoundingClientRect();\n let itemRect = item.getBoundingClientRect();\n let offset = itemRect.top + document.body.scrollTop - (containerRect.top + document.body.scrollTop) - borderTop - paddingTop;\n let scroll = container.scrollTop;\n let elementHeight = container.clientHeight;\n let itemHeight = this.getOuterHeight(item);\n\n if (offset < 0) {\n container.scrollTop = scroll + offset;\n } else if (offset + itemHeight > elementHeight) {\n container.scrollTop = scroll + offset - elementHeight + itemHeight;\n }\n }\n\n public static fadeIn(element, duration: number): void {\n element.style.opacity = 0;\n\n let last = +new Date();\n let opacity = 0;\n let tick = function () {\n opacity = +element.style.opacity.replace(',', '.') + (new Date().getTime() - last) / duration;\n element.style.opacity = opacity;\n last = +new Date();\n\n if (+opacity < 1) {\n (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);\n }\n };\n\n tick();\n }\n\n public static fadeOut(element, ms) {\n var opacity = 1,\n interval = 50,\n duration = ms,\n gap = interval / duration;\n\n let fading = setInterval(() => {\n opacity = opacity - gap;\n\n if (opacity <= 0) {\n opacity = 0;\n clearInterval(fading);\n }\n\n element.style.opacity = opacity;\n }, interval);\n }\n\n public static getWindowScrollTop(): number {\n let doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n\n public static getWindowScrollLeft(): number {\n let doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n public static matches(element, selector: string): boolean {\n var p = Element.prototype;\n var f =\n p['matches'] ||\n p.webkitMatchesSelector ||\n p['mozMatchesSelector'] ||\n p['msMatchesSelector'] ||\n function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n return f.call(element, selector);\n }\n\n public static getOuterWidth(el, margin?) {\n let width = el.offsetWidth;\n\n if (margin) {\n let style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n return width;\n }\n\n public static getHorizontalPadding(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n }\n\n public static getHorizontalMargin(el) {\n let style = getComputedStyle(el);\n return parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n }\n\n public static innerWidth(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n\n width += parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static width(el) {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n return width;\n }\n\n public static getInnerHeight(el) {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n\n height += parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n return height;\n }\n\n public static getOuterHeight(el, margin?) {\n let height = el.offsetHeight;\n\n if (margin) {\n let style = getComputedStyle(el);\n height += parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n }\n\n return height;\n }\n\n public static getHeight(el): number {\n let height = el.offsetHeight;\n let style = getComputedStyle(el);\n\n height -= parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n return height;\n }\n\n public static getWidth(el): number {\n let width = el.offsetWidth;\n let style = getComputedStyle(el);\n\n width -= parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n\n return width;\n }\n\n public static getViewport(): any {\n let win = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n w = win.innerWidth || e.clientWidth || g.clientWidth,\n h = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n public static getOffset(el) {\n var rect = el.getBoundingClientRect();\n\n return {\n top: rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0),\n left: rect.left + (window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0)\n };\n }\n\n public static replaceElementWith(element: any, replacementElement: any): any {\n let parentNode = element.parentNode;\n if (!parentNode) throw `Can't replace element`;\n return parentNode.replaceChild(replacementElement, element);\n }\n\n public static getUserAgent(): string {\n return navigator.userAgent;\n }\n\n public static isIE() {\n var ua = window.navigator.userAgent;\n\n var msie = ua.indexOf('MSIE ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return true;\n }\n\n var trident = ua.indexOf('Trident/');\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return true;\n }\n\n var edge = ua.indexOf('Edge/');\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return true;\n }\n\n // other browser\n return false;\n }\n\n public static isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window['MSStream'];\n }\n\n public static isAndroid() {\n return /(android)/i.test(navigator.userAgent);\n }\n\n public static isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n public static appendChild(element: any, target: any) {\n if (this.isElement(target)) target.appendChild(element);\n else if (target.el && target.el.nativeElement) target.el.nativeElement.appendChild(element);\n else throw 'Cannot append ' + target + ' to ' + element;\n }\n\n public static removeChild(element: any, target: any) {\n if (this.isElement(target)) target.removeChild(element);\n else if (target.el && target.el.nativeElement) target.el.nativeElement.removeChild(element);\n else throw 'Cannot remove ' + element + ' from ' + target;\n }\n\n public static removeElement(element: Element) {\n if (!('remove' in Element.prototype)) element.parentNode.removeChild(element);\n else element.remove();\n }\n\n public static isElement(obj: any) {\n return typeof HTMLElement === 'object' ? obj instanceof HTMLElement : obj && typeof obj === 'object' && obj !== null && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n }\n\n public static calculateScrollbarWidth(el?: HTMLElement): number {\n if (el) {\n let style = getComputedStyle(el);\n return el.offsetWidth - el.clientWidth - parseFloat(style.borderLeftWidth) - parseFloat(style.borderRightWidth);\n } else {\n if (this.calculatedScrollbarWidth !== null) return this.calculatedScrollbarWidth;\n\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n let scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarWidth;\n\n return scrollbarWidth;\n }\n }\n\n public static calculateScrollbarHeight(): number {\n if (this.calculatedScrollbarHeight !== null) return this.calculatedScrollbarHeight;\n\n let scrollDiv = document.createElement('div');\n scrollDiv.className = 'p-scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n let scrollbarHeight = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n document.body.removeChild(scrollDiv);\n\n this.calculatedScrollbarWidth = scrollbarHeight;\n\n return scrollbarHeight;\n }\n\n public static invokeElementMethod(element: any, methodName: string, args?: any[]): void {\n (element as any)[methodName].apply(element, args);\n }\n\n public static clearSelection(): void {\n if (window.getSelection) {\n if (window.getSelection().empty) {\n window.getSelection().empty();\n } else if (window.getSelection().removeAllRanges && window.getSelection().rangeCount > 0 && window.getSelection().getRangeAt(0).getClientRects().length > 0) {\n window.getSelection().removeAllRanges();\n }\n } else if (document['selection'] && document['selection'].empty) {\n try {\n document['selection'].empty();\n } catch (error) {\n //ignore IE bug\n }\n }\n }\n\n public static getBrowser() {\n if (!this.browser) {\n let matched = this.resolveUserAgent();\n this.browser = {};\n\n if (matched.browser) {\n this.browser[matched.browser] = true;\n this.browser['version'] = matched.version;\n }\n\n if (this.browser['chrome']) {\n this.browser['webkit'] = true;\n } else if (this.browser['webkit']) {\n this.browser['safari'] = true;\n }\n }\n\n return this.browser;\n }\n\n public static resolveUserAgent() {\n let ua = navigator.userAgent.toLowerCase();\n let match =\n /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) || [];\n\n return {\n browser: match[1] || '',\n version: match[2] || '0'\n };\n }\n\n public static isInteger(value): boolean {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n }\n\n public static isHidden(element: HTMLElement): boolean {\n return !element || element.offsetParent === null;\n }\n\n public static isVisible(element: HTMLElement) {\n return element && element.offsetParent != null;\n }\n\n public static isExist(element: HTMLElement) {\n return element !== null && typeof element !== 'undefined' && element.nodeName && element.parentNode;\n }\n\n public static focus(element: HTMLElement, options?: FocusOptions): void {\n element && document.activeElement !== element && element.focus(options);\n }\n\n public static getFocusableElements(element: HTMLElement) {\n let focusableElements = DomHandler.find(\n element,\n `button:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [href][clientHeight][clientWidth]:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n input:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), select:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n textarea:not([tabindex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]), [tabIndex]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]),\n [contenteditable]:not([tabIndex = \"-1\"]):not([disabled]):not([style*=\"display:none\"]):not([hidden]):not(.p-disabled)`\n );\n\n let visibleFocusableElements = [];\n for (let focusableElement of focusableElements) {\n if (!!(focusableElement.offsetWidth || focusableElement.offsetHeight || focusableElement.getClientRects().length)) visibleFocusableElements.push(focusableElement);\n }\n return visibleFocusableElements;\n }\n\n static generateZIndex() {\n this.zindex = this.zindex || 999;\n return ++this.zindex;\n }\n\n public static getSelection() {\n if (window.getSelection) return window.getSelection().toString();\n else if (document.getSelection) return document.getSelection().toString();\n else if (document['selection']) return document['selection'].createRange().text;\n\n return null;\n }\n\n public static getTargetElement(target: any, el?: HTMLElement) {\n if (!target) return null;\n\n switch (target) {\n case 'document':\n return document;\n case 'window':\n return window;\n case '@next':\n return el?.nextElementSibling;\n case '@prev':\n return el?.previousElementSibling;\n case '@parent':\n return el?.parentElement;\n case '@grandparent':\n return el?.parentElement.parentElement;\n default:\n const type = typeof target;\n\n if (type === 'string') {\n return document.querySelector(target);\n } else if (type === 'object' && target.hasOwnProperty('nativeElement')) {\n return this.isExist(target.nativeElement) ? target.nativeElement : undefined;\n }\n\n const isFunction = (obj: any) => !!(obj && obj.constructor && obj.call && obj.apply);\n const element = isFunction(target) ? target() : target;\n\n return (element && element.nodeType === 9) || this.isExist(element) ? element : null;\n }\n }\n}\n","import { DomHandler } from './domhandler';\n\nexport class ConnectedOverlayScrollHandler {\n element: any;\n\n listener: any;\n\n scrollableParents: any;\n\n constructor(element: any, listener: any = () => {}) {\n this.element = element;\n this.listener = listener;\n }\n\n bindScrollListener() {\n this.scrollableParents = DomHandler.getScrollableParents(this.element);\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].addEventListener('scroll', this.listener);\n }\n }\n\n unbindScrollListener() {\n if (this.scrollableParents) {\n for (let i = 0; i < this.scrollableParents.length; i++) {\n this.scrollableParents[i].removeEventListener('scroll', this.listener);\n }\n }\n }\n\n destroy() {\n this.unbindScrollListener();\n this.element = null;\n this.listener = null;\n this.scrollableParents = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -481,6 +481,7 @@ class MultiSelect {
481
481
  this.value = null;
482
482
  this.updateLabel();
483
483
  this.updateFilledState();
484
+ this.checkSelectionLimit();
484
485
  this.onClear.emit();
485
486
  this.onModelChange(this.value);
486
487
  event.stopPropagation();