igniteui-angular 18.2.22 → 18.2.23

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.
@@ -169,7 +169,7 @@ export class IgxTextHighlightDirective {
169
169
  */
170
170
  activateIfNecessary() {
171
171
  const group = this.service.highlightGroupsMap.get(this.groupName);
172
- if (group.index >= 0 && group.column === this.column && group.row === this.row && compareMaps(this.metadata, group.metadata)) {
172
+ if (group && group.index >= 0 && group.column === this.column && group.row === this.row && compareMaps(this.metadata, group.metadata)) {
173
173
  this.activate(group.index);
174
174
  }
175
175
  }
@@ -333,4 +333,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
333
333
  }], metadata: [{
334
334
  type: Input
335
335
  }] } });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdGV4dC1oaWdobGlnaHQvdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxHQU1SLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBcUMvQyxNQUFNLE9BQU8seUJBQXlCO0lBa0RsQzs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxJQUNXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7SUFDTCxDQUFDO0lBaUREOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBcUJELFlBQW9CLE9BQW1CLEVBQVUsT0FBZ0MsRUFBVSxRQUFtQjtRQUExRixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBcEg5Rzs7Ozs7Ozs7Ozs7V0FXRztRQUVJ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QWNVLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxVQUFVO2dCQWVWLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU9oQixjQUFjO3NCQURwQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFnQmhCLFNBQVM7c0JBRGYsS0FBSzt1QkFBQyxXQUFXO2dCQW9CUCxLQUFLO3NCQURmLEtBQUs7dUJBQUMsT0FBTztnQkF1QlAsR0FBRztzQkFEVCxLQUFLO3VCQUFDLEtBQUs7Z0JBY0wsTUFBTTtzQkFEWixLQUFLO3VCQUFDLFFBQVE7Z0JBc0JSLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29tcGFyZU1hcHMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneFRleHRIaWdobGlnaHRTZXJ2aWNlIH0gZnJvbSAnLi90ZXh0LWhpZ2hsaWdodC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZVNlYXJjaEluZm8ge1xuICAgIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgICBjYXNlU2Vuc2l0aXZlOiBib29sZWFuO1xuICAgIGV4YWN0TWF0Y2g6IGJvb2xlYW47XG4gICAgbWF0Y2hDb3VudDogbnVtYmVyO1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgZGVzY3JpYmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIGFjdGl2ZSBoaWdobGlnaHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGl2ZUhpZ2hsaWdodEluZm8ge1xuICAgIC8qKlxuICAgICAqIFRoZSByb3cgb2YgdGhlIGhpZ2hsaWdodC5cbiAgICAgKi9cbiAgICByb3c/OiBhbnk7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbHVtbiBvZiB0aGUgaGlnaGxpZ2h0LlxuICAgICAqL1xuICAgIGNvbHVtbj86IGFueTtcbiAgICAvKipcbiAgICAgKiBUaGUgaW5kZXggb2YgdGhlIGhpZ2hsaWdodC5cbiAgICAgKi9cbiAgICBpbmRleDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwsIGN1c3RvbSBjaGVja3MgdG8gcGVyZm9ybSBwcmlvciBhbiBlbGVtZW50IGhpZ2hsaWdodGluZy5cbiAgICAgKi9cbiAgICBtZXRhZGF0YT86IE1hcDxzdHJpbmcsIGFueT47XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFRleHRIaWdobGlnaHRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFRleHRIaWdobGlnaHREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgYENTU2AgY2xhc3Mgb2YgdGhlIGhpZ2hsaWdodCBlbGVtZW50cy5cbiAgICAgKiBUaGlzIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIHByb3ZpZGUgY3VzdG9tIGBDU1NgIHRvIGN1c3RvbWl6ZSB0aGUgaGlnaGxpZ2h0LlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXZcbiAgICAgKiAgIGlneFRleHRIaWdobGlnaHRcbiAgICAgKiAgIFtjc3NDbGFzc109XCJteUNsYXNzXCI+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdjc3NDbGFzcycpXG4gICAgcHVibGljIGNzc0NsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBgQ1NTYCBjbGFzcyBvZiB0aGUgYWN0aXZlIGhpZ2hsaWdodCBlbGVtZW50LlxuICAgICAqIFRoaXMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gcHJvdmlkZSBjdXN0b20gYENTU2AgdG8gY3VzdG9taXplIHRoZSBoaWdobGlnaHQuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4VGV4dEhpZ2hsaWdodFxuICAgICAqICAgW2FjdGl2ZUNzc0NsYXNzXT1cImFjdGl2ZUhpZ2hsaWdodENsYXNzXCI+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdhY3RpdmVDc3NDbGFzcycpXG4gICAgcHVibGljIGFjdGl2ZUNzc0NsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KCdjb250YWluZXJDbGFzcycpXG4gICAgcHVibGljIGNvbnRhaW5lckNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJZGVudGlmaWVzIHRoZSBoaWdobGlnaHQgd2l0aGluIGEgdW5pcXVlIGdyb3VwLlxuICAgICAqIFRoaXMgYWxsb3dzIGl0IHRvIGhhdmUgc2V2ZXJhbCBkaWZmZXJlbnQgaGlnaGxpZ2h0IGdyb3VwcyxcbiAgICAgKiB3aXRoIGVhY2ggb2YgdGhlbSBoYXZpbmcgdGhlaXIgb3duIGFjdGl2ZSBoaWdobGlnaHQuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4VGV4dEhpZ2hsaWdodFxuICAgICAqICAgW2dyb3VwTmFtZV09XCJteUdyb3VwTmFtZVwiPlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnZ3JvdXBOYW1lJylcbiAgICBwdWJsaWMgZ3JvdXBOYW1lID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdW5kZXJseWluZyB2YWx1ZSBvZiB0aGUgZWxlbWVudCB0aGF0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogY29uc3QgZWxlbWVudFZhbHVlID0gdGhpcy50ZXh0SGlnaGxpZ2h0LnZhbHVlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8ZGl2XG4gICAgICogICBpZ3hUZXh0SGlnaGxpZ2h0XG4gICAgICogICBbdmFsdWVdPVwibmV3VmFsdWVcIj5cbiAgICAgKiA8L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ3ZhbHVlJylcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSByb3cgb24gd2hpY2ggdGhlIGRpcmVjdGl2ZSBpcyBjdXJyZW50bHkgb24uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4VGV4dEhpZ2hsaWdodFxuICAgICAqICAgW3Jvd109XCIwXCI+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdyb3cnKVxuICAgIHB1YmxpYyByb3c6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2x1bW4gb24gd2hpY2ggdGhlIGRpcmVjdGl2ZSBpcyBjdXJyZW50bHkgb24uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4VGV4dEhpZ2hsaWdodFxuICAgICAqICAgW2NvbHVtbl09XCIwXCI+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdjb2x1bW4nKVxuICAgIHB1YmxpYyBjb2x1bW46IGFueTtcblxuICAgIC8qKlxuICAgICAqIEEgbWFwIHRoYXQgY29udGFpbnMgYWxsIGFkZGl0aW9uYWwgY29uZGl0aW9ucywgdGhhdCB5b3UgbmVlZCB0byBhY3RpdmF0ZSBhIGhpZ2hsaWdodGVkXG4gICAgICogZWxlbWVudC4gVG8gYWN0aXZhdGUgdGhlIGNvbmRpdGlvbiwgeW91IHdpbGwgaGF2ZSB0byBhZGQgYSBuZXcgbWV0YWRhdGEga2V5IHRvXG4gICAgICogdGhlIGBtZXRhZGF0YWAgcHJvcGVydHkgb2YgdGhlIElBY3RpdmVIaWdobGlnaHRJbmZvIGludGVyZmFjZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAvLyBTZXQgYSBwcm9wZXJ0eSwgd2hpY2ggd291bGQgZGlzYWJsZSB0aGUgaGlnaGxpZ2h0IGZvciBhIGdpdmVuIGVsZW1lbnQgb24gYSBjZXJ0YWluIGNvbmRpdGlvblxuICAgICAqICBjb25zdCBtZXRhZGF0YSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgICogIG1ldGFkYXRhLnNldCgnaGlnaGxpZ2h0RWxlbWVudCcsIGZhbHNlKTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4VGV4dEhpZ2hsaWdodFxuICAgICAqICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCI+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1hcDxzdHJpbmcsIGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBsYXN0U2VhcmNoSW5mbygpOiBJQmFzZVNlYXJjaEluZm8ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFNlYXJjaEluZm87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBwYXJlbnRFbGVtZW50OiBhbnk7XG5cbiAgICBwcml2YXRlIF9jb250YWluZXI6IGFueTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgX3ZhbHVlID0gJyc7XG4gICAgcHJpdmF0ZSBfbGFzdFNlYXJjaEluZm86IElCYXNlU2VhcmNoSW5mbztcbiAgICBwcml2YXRlIF9kaXYgPSBudWxsO1xuICAgIHByaXZhdGUgX29ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyID0gbnVsbDtcbiAgICBwcml2YXRlIF9ub2RlV2FzUmVtb3ZlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2ZvcmNlRXZhbHVhdGlvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2FjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgIHByaXZhdGUgX3ZhbHVlQ2hhbmdlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kZWZhdWx0Q3NzQ2xhc3MgPSAnaWd4LWhpZ2hsaWdodCc7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdEFjdGl2ZUNzc0NsYXNzID0gJ2lneC1oaWdobGlnaHQtLWFjdGl2ZSc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgc2VydmljZTogSWd4VGV4dEhpZ2hsaWdodFNlcnZpY2UsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgICAgICB0aGlzLnNlcnZpY2Uub25BY3RpdmVFbGVtZW50Q2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChncm91cE5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwTmFtZSA9PT0gZ3JvdXBOYW1lKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVJZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNsZWFySGlnaGxpZ2h0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnZhbHVlICYmICFjaGFuZ2VzLnZhbHVlLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKChjaGFuZ2VzLnJvdyAhPT0gdW5kZWZpbmVkICYmICFjaGFuZ2VzLnJvdy5maXJzdENoYW5nZSkgfHxcbiAgICAgICAgICAgIChjaGFuZ2VzLmNvbHVtbiAhPT0gdW5kZWZpbmVkICYmICFjaGFuZ2VzLmNvbHVtbi5maXJzdENoYW5nZSkgfHxcbiAgICAgICAgICAgIChjaGFuZ2VzLnBhZ2UgIT09IHVuZGVmaW5lZCAmJiAhY2hhbmdlcy5wYWdlLmZpcnN0Q2hhbmdlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVJZk5lY2Vzc2FyeSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMucGFyZW50RWxlbWVudCA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS5oaWdobGlnaHRHcm91cHNNYXAuaGFzKHRoaXMuZ3JvdXBOYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5oaWdobGlnaHRHcm91cHNNYXAuc2V0KHRoaXMuZ3JvdXBOYW1lLCB7XG4gICAgICAgICAgICAgICAgaW5kZXg6IC0xXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvID0ge1xuICAgICAgICAgICAgc2VhcmNoVGV4dDogJycsXG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbWF0Y2hDb3VudDogMCxcbiAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGZhbHNlLFxuICAgICAgICAgICAgZXhhY3RNYXRjaDogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLnBhcmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0KHRoaXMuX2xhc3RTZWFyY2hJbmZvLnNlYXJjaFRleHQsIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmNhc2VTZW5zaXRpdmUsIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmV4YWN0TWF0Y2gpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZUlmTmVjZXNzYXJ5KCk7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgZXhpc3RpbmcgaGlnaGxpZ2h0IGFuZCBoaWdobGlnaHRzIHRoZSBzZWFyY2hlZCB0ZXh0LlxuICAgICAqIFJldHVybnMgaG93IG1hbnkgdGltZXMgdGhlIGVsZW1lbnQgY29udGFpbnMgdGhlIHNlYXJjaGVkIHRleHQuXG4gICAgICovXG4gICAgcHVibGljIGhpZ2hsaWdodCh0ZXh0OiBzdHJpbmcsIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuLCBleGFjdE1hdGNoPzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGNhc2VTZW5zaXRpdmVSZXNvbHZlZCA9IGNhc2VTZW5zaXRpdmUgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIGNvbnN0IGV4YWN0TWF0Y2hSZXNvbHZlZCA9IGV4YWN0TWF0Y2ggPyB0cnVlIDogZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoTmVlZHNFdmFsdWF0aW9uKHRleHQsIGNhc2VTZW5zaXRpdmVSZXNvbHZlZCwgZXhhY3RNYXRjaFJlc29sdmVkKSkge1xuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uc2VhcmNoVGV4dCA9IHRleHQ7XG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5jYXNlU2Vuc2l0aXZlID0gY2FzZVNlbnNpdGl2ZVJlc29sdmVkO1xuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uZXhhY3RNYXRjaCA9IGV4YWN0TWF0Y2hSZXNvbHZlZDtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmNvbnRlbnQgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodGV4dCA9PT0gJycgfHwgdGV4dCA9PT0gdW5kZWZpbmVkIHx8IHRleHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySGlnaGxpZ2h0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJDaGlsZEVsZW1lbnRzKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLm1hdGNoQ291bnQgPSB0aGlzLmdldEhpZ2hsaWdodGVkVGV4dCh0ZXh0LCBjYXNlU2Vuc2l0aXZlLCBleGFjdE1hdGNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ub2RlV2FzUmVtb3ZlZCkge1xuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uc2VhcmNoVGV4dCA9IHRleHQ7XG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5jYXNlU2Vuc2l0aXZlID0gY2FzZVNlbnNpdGl2ZVJlc29sdmVkO1xuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uZXhhY3RNYXRjaCA9IGV4YWN0TWF0Y2hSZXNvbHZlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9sYXN0U2VhcmNoSW5mby5tYXRjaENvdW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyBhbnkgZXhpc3RpbmcgaGlnaGxpZ2h0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhckhpZ2hsaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhckNoaWxkRWxlbWVudHMoZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8ubWF0Y2hDb3VudCA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWN0aXZhdGVzIHRoZSBoaWdobGlnaHQgaWYgaXQgaXMgb24gdGhlIGN1cnJlbnRseSBhY3RpdmUgcm93IGFuZCBjb2x1bW4uXG4gICAgICovXG4gICAgcHVibGljIGFjdGl2YXRlSWZOZWNlc3NhcnkoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5zZXJ2aWNlLmhpZ2hsaWdodEdyb3Vwc01hcC5nZXQodGhpcy5ncm91cE5hbWUpO1xuXG4gICAgICAgIGlmIChncm91cC5pbmRleCA+PSAwICYmIGdyb3VwLmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4gJiYgZ3JvdXAucm93ID09PSB0aGlzLnJvdyAmJiBjb21wYXJlTWFwcyh0aGlzLm1ldGFkYXRhLCBncm91cC5tZXRhZGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGUoZ3JvdXAuaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBNdXRhdGlvbk9ic2VydmVyIHRvIHRoZSBwYXJlbnRFbGVtZW50IGFuZCB3YXRjaGVzIGZvciB3aGVuIHRoZSBjb250YWluZXIgZWxlbWVudCBpcyByZW1vdmVkL3JlYWRkZWQgdG8gdGhlIERPTS5cbiAgICAgKiBTaG91bGQgYmUgdXNlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5IGFzIHVzaW5nIG1hbnkgb2JzZXJ2ZXJzIG1heSBsZWFkIHRvIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBvYnNlcnZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKG11dGF0aW9uTGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0aW9uTGlzdC5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkTm9kZXMgPSBBcnJheS5mcm9tKG11dGF0aW9uLnJlbW92ZWROb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZWROb2Rlcy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobiA9PT0gdGhpcy5fY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZVdhc1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJDaGlsZEVsZW1lbnRzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkZWROb2RlcyA9IEFycmF5LmZyb20obXV0YXRpb24uYWRkZWROb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZGVkTm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IHRoaXMucGFyZW50RWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCAmJiB0aGlzLl9ub2RlV2FzUmVtb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lciA9IHRoaXMucGFyZW50RWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9ub2RlV2FzUmVtb3ZlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9yY2VFdmFsdWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodCh0aGlzLl9sYXN0U2VhcmNoSW5mby5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5jYXNlU2Vuc2l0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5leGFjdE1hdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb3JjZUV2YWx1YXRpb24gPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVJZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMucGFyZW50RWxlbWVudCwge2NoaWxkTGlzdDogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNwYW5zID0gdGhpcy5fZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgICBpZiAoc3BhbnMubGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9BY3RpdmF0ZSA9IHNwYW5zW2luZGV4XTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudFRvQWN0aXZhdGUsIHRoaXMuX2RlZmF1bHRBY3RpdmVDc3NDbGFzcyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnRUb0FjdGl2YXRlLCB0aGlzLmFjdGl2ZUNzc0NsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVhY3RpdmF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNwYW5zID0gdGhpcy5fZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4nKTtcblxuICAgICAgICBpZiAoc3BhbnMubGVuZ3RoIDw9IHRoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50VG9EZWFjdGl2YXRlID0gc3BhbnNbdGhpcy5fYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50VG9EZWFjdGl2YXRlLCB0aGlzLl9kZWZhdWx0QWN0aXZlQ3NzQ2xhc3MpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnRUb0RlYWN0aXZhdGUsIHRoaXMuYWN0aXZlQ3NzQ2xhc3MpO1xuICAgICAgICB0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQ2hpbGRFbGVtZW50cyhvcmlnaW5hbENvbnRlbnRIaWRkZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicsIG9yaWdpbmFsQ29udGVudEhpZGRlbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpdiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLnBhcmVudEVsZW1lbnQsIHRoaXMuX2Rpdik7XG5cbiAgICAgICAgICAgIHRoaXMuX2RpdiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SGlnaGxpZ2h0ZWRUZXh0KHNlYXJjaFRleHQ6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbiwgZXhhY3RNYXRjaDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFwcGVuZERpdigpO1xuXG4gICAgICAgIGNvbnN0IHN0cmluZ1ZhbHVlID0gU3RyaW5nKHRoaXMudmFsdWUpO1xuICAgICAgICBjb25zdCBjb250ZW50U3RyaW5nUmVzb2x2ZWQgPSAhY2FzZVNlbnNpdGl2ZSA/IHN0cmluZ1ZhbHVlLnRvTG93ZXJDYXNlKCkgOiBzdHJpbmdWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2VhcmNoVGV4dFJlc29sdmVkID0gIWNhc2VTZW5zaXRpdmUgPyBzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkgOiBzZWFyY2hUZXh0O1xuXG4gICAgICAgIGxldCBtYXRjaENvdW50ID0gMDtcblxuICAgICAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgICAgICAgaWYgKGNvbnRlbnRTdHJpbmdSZXNvbHZlZCA9PT0gc2VhcmNoVGV4dFJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRTcGFuKGA8c3BhbiBjbGFzcz1cIiR7dGhpcy5fZGVmYXVsdENzc0NsYXNzfSAke3RoaXMuY3NzQ2xhc3MgPyB0aGlzLmNzc0NsYXNzIDogJyd9XCI+JHtzdHJpbmdWYWx1ZX08L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgbWF0Y2hDb3VudCsrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZFRleHQoc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZvdW5kSW5kZXggPSBjb250ZW50U3RyaW5nUmVzb2x2ZWQuaW5kZXhPZihzZWFyY2hUZXh0UmVzb2x2ZWQsIDApO1xuICAgICAgICAgICAgbGV0IHByZXZpb3VzTWF0Y2hFbmQgPSAwO1xuXG4gICAgICAgICAgICB3aGlsZSAoZm91bmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IGZvdW5kSW5kZXg7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gZm91bmRJbmRleCArIHNlYXJjaFRleHRSZXNvbHZlZC5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZFRleHQoc3RyaW5nVmFsdWUuc3Vic3RyaW5nKHByZXZpb3VzTWF0Y2hFbmQsIHN0YXJ0KSk7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZFNwYW4oYDxzcGFuIGNsYXNzPVwiJHt0aGlzLl9kZWZhdWx0Q3NzQ2xhc3N9ICR7dGhpcy5jc3NDbGFzcyA/IHRoaXMuY3NzQ2xhc3MgOiAnJ31cIj4ke3N0cmluZ1ZhbHVlLnN1YnN0cmluZyhzdGFydCwgZW5kKX08L3NwYW4+YCk7XG5cbiAgICAgICAgICAgICAgICBwcmV2aW91c01hdGNoRW5kID0gZW5kO1xuICAgICAgICAgICAgICAgIG1hdGNoQ291bnQrKztcblxuICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBjb250ZW50U3RyaW5nUmVzb2x2ZWQuaW5kZXhPZihzZWFyY2hUZXh0UmVzb2x2ZWQsIGVuZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYXBwZW5kVGV4dChzdHJpbmdWYWx1ZS5zdWJzdHJpbmcocHJldmlvdXNNYXRjaEVuZCwgc3RyaW5nVmFsdWUubGVuZ3RoKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWF0Y2hDb3VudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZFRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRleHQpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2RpdiwgdGV4dEVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwZW5kU3BhbihvdXRlckhUTUw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZGl2LCBzcGFuKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShzcGFuLCAnb3V0ZXJIVE1MJywgb3V0ZXJIVE1MKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZERpdigpIHtcbiAgICAgICAgdGhpcy5fZGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaWYgKCB0aGlzLmNvbnRhaW5lckNsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2RpdiwgdGhpcy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnBhcmVudEVsZW1lbnQsIHRoaXMuX2Rpdik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hOZWVkc0V2YWx1YXRpb24odGV4dDogc3RyaW5nLCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuLCBleGFjdE1hdGNoOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaGVkVGV4dCA9IHRoaXMuX2xhc3RTZWFyY2hJbmZvLnNlYXJjaFRleHQ7XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLl9ub2RlV2FzUmVtb3ZlZCAmJlxuICAgICAgICAgICAgKHNlYXJjaGVkVGV4dCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgIHNlYXJjaGVkVGV4dCAhPT0gdGV4dCB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmNvbnRlbnQgIT09IHRoaXMudmFsdWUgfHxcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5jYXNlU2Vuc2l0aXZlICE9PSBjYXNlU2Vuc2l0aXZlIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uZXhhY3RNYXRjaCAhPT0gZXhhY3RNYXRjaCB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX2ZvcmNlRXZhbHVhdGlvbik7XG4gICAgfVxufVxuIl19
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdGV4dC1oaWdobGlnaHQvdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxHQU1SLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBcUMvQyxNQUFNLE9BQU8seUJBQXlCO0lBa0RsQzs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxJQUNXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7SUFDTCxDQUFDO0lBaUREOztPQUVHO0lBQ0gsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBcUJELFlBQW9CLE9BQW1CLEVBQVUsT0FBZ0MsRUFBVSxRQUFtQjtRQUExRixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBcEg5Rzs7Ozs7Ozs7Ozs7V0FXRztRQUVJ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O2lCQUNuQjs2SUFjVSxRQUFRO3NCQURkLEtBQUs7dUJBQUMsVUFBVTtnQkFlVixjQUFjO3NCQURwQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFPaEIsY0FBYztzQkFEcEIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBZ0JoQixTQUFTO3NCQURmLEtBQUs7dUJBQUMsV0FBVztnQkFvQlAsS0FBSztzQkFEZixLQUFLO3VCQUFDLE9BQU87Z0JBdUJQLEdBQUc7c0JBRFQsS0FBSzt1QkFBQyxLQUFLO2dCQWNMLE1BQU07c0JBRFosS0FBSzt1QkFBQyxRQUFRO2dCQXNCUixRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbXBhcmVNYXBzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hUZXh0SGlnaGxpZ2h0U2VydmljZSB9IGZyb20gJy4vdGV4dC1oaWdobGlnaHQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VTZWFyY2hJbmZvIHtcbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gICAgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbjtcbiAgICBleGFjdE1hdGNoOiBib29sZWFuO1xuICAgIG1hdGNoQ291bnQ6IG51bWJlcjtcbiAgICBjb250ZW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIGRlc2NyaWJpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBhY3RpdmUgaGlnaGxpZ2h0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBY3RpdmVIaWdobGlnaHRJbmZvIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcm93IG9mIHRoZSBoaWdobGlnaHQuXG4gICAgICovXG4gICAgcm93PzogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSBjb2x1bW4gb2YgdGhlIGhpZ2hsaWdodC5cbiAgICAgKi9cbiAgICBjb2x1bW4/OiBhbnk7XG4gICAgLyoqXG4gICAgICogVGhlIGluZGV4IG9mIHRoZSBoaWdobGlnaHQuXG4gICAgICovXG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBBZGRpdGlvbmFsLCBjdXN0b20gY2hlY2tzIHRvIHBlcmZvcm0gcHJpb3IgYW4gZWxlbWVudCBoaWdobGlnaHRpbmcuXG4gICAgICovXG4gICAgbWV0YWRhdGE/OiBNYXA8c3RyaW5nLCBhbnk+O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hUZXh0SGlnaGxpZ2h0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hUZXh0SGlnaGxpZ2h0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIGBDU1NgIGNsYXNzIG9mIHRoZSBoaWdobGlnaHQgZWxlbWVudHMuXG4gICAgICogVGhpcyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBwcm92aWRlIGN1c3RvbSBgQ1NTYCB0byBjdXN0b21pemUgdGhlIGhpZ2hsaWdodC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2XG4gICAgICogICBpZ3hUZXh0SGlnaGxpZ2h0XG4gICAgICogICBbY3NzQ2xhc3NdPVwibXlDbGFzc1wiPlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnY3NzQ2xhc3MnKVxuICAgIHB1YmxpYyBjc3NDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgYENTU2AgY2xhc3Mgb2YgdGhlIGFjdGl2ZSBoaWdobGlnaHQgZWxlbWVudC5cbiAgICAgKiBUaGlzIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIHByb3ZpZGUgY3VzdG9tIGBDU1NgIHRvIGN1c3RvbWl6ZSB0aGUgaGlnaGxpZ2h0LlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXZcbiAgICAgKiAgIGlneFRleHRIaWdobGlnaHRcbiAgICAgKiAgIFthY3RpdmVDc3NDbGFzc109XCJhY3RpdmVIaWdobGlnaHRDbGFzc1wiPlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnYWN0aXZlQ3NzQ2xhc3MnKVxuICAgIHB1YmxpYyBhY3RpdmVDc3NDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnY29udGFpbmVyQ2xhc3MnKVxuICAgIHB1YmxpYyBjb250YWluZXJDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllcyB0aGUgaGlnaGxpZ2h0IHdpdGhpbiBhIHVuaXF1ZSBncm91cC5cbiAgICAgKiBUaGlzIGFsbG93cyBpdCB0byBoYXZlIHNldmVyYWwgZGlmZmVyZW50IGhpZ2hsaWdodCBncm91cHMsXG4gICAgICogd2l0aCBlYWNoIG9mIHRoZW0gaGF2aW5nIHRoZWlyIG93biBhY3RpdmUgaGlnaGxpZ2h0LlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXZcbiAgICAgKiAgIGlneFRleHRIaWdobGlnaHRcbiAgICAgKiAgIFtncm91cE5hbWVdPVwibXlHcm91cE5hbWVcIj5cbiAgICAgKiA8L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2dyb3VwTmFtZScpXG4gICAgcHVibGljIGdyb3VwTmFtZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHVuZGVybHlpbmcgdmFsdWUgb2YgdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIGhpZ2hsaWdodGVkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IHRoaXMudGV4dEhpZ2hsaWdodC52YWx1ZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGRpdlxuICAgICAqICAgaWd4VGV4dEhpZ2hsaWdodFxuICAgICAqICAgW3ZhbHVlXT1cIm5ld1ZhbHVlXCI+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCd2YWx1ZScpXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcm93IG9uIHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgY3VycmVudGx5IG9uLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXZcbiAgICAgKiAgIGlneFRleHRIaWdobGlnaHRcbiAgICAgKiAgIFtyb3ddPVwiMFwiPlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgncm93JylcbiAgICBwdWJsaWMgcm93OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sdW1uIG9uIHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgY3VycmVudGx5IG9uLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXZcbiAgICAgKiAgIGlneFRleHRIaWdobGlnaHRcbiAgICAgKiAgIFtjb2x1bW5dPVwiMFwiPlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnY29sdW1uJylcbiAgICBwdWJsaWMgY29sdW1uOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBBIG1hcCB0aGF0IGNvbnRhaW5zIGFsbCBhZGRpdGlvbmFsIGNvbmRpdGlvbnMsIHRoYXQgeW91IG5lZWQgdG8gYWN0aXZhdGUgYSBoaWdobGlnaHRlZFxuICAgICAqIGVsZW1lbnQuIFRvIGFjdGl2YXRlIHRoZSBjb25kaXRpb24sIHlvdSB3aWxsIGhhdmUgdG8gYWRkIGEgbmV3IG1ldGFkYXRhIGtleSB0b1xuICAgICAqIHRoZSBgbWV0YWRhdGFgIHByb3BlcnR5IG9mIHRoZSBJQWN0aXZlSGlnaGxpZ2h0SW5mbyBpbnRlcmZhY2UuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgLy8gU2V0IGEgcHJvcGVydHksIHdoaWNoIHdvdWxkIGRpc2FibGUgdGhlIGhpZ2hsaWdodCBmb3IgYSBnaXZlbiBlbGVtZW50IG9uIGEgY2VydGFpbiBjb25kaXRpb25cbiAgICAgKiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgICAqICBtZXRhZGF0YS5zZXQoJ2hpZ2hsaWdodEVsZW1lbnQnLCBmYWxzZSk7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXZcbiAgICAgKiAgIGlneFRleHRIaWdobGlnaHRcbiAgICAgKiAgIFttZXRhZGF0YV09XCJtZXRhZGF0YVwiPlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1ldGFkYXRhOiBNYXA8c3RyaW5nLCBhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbGFzdFNlYXJjaEluZm8oKTogSUJhc2VTZWFyY2hJbmZvIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RTZWFyY2hJbmZvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgcGFyZW50RWxlbWVudDogYW55O1xuXG4gICAgcHJpdmF0ZSBfY29udGFpbmVyOiBhbnk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuICAgIHByaXZhdGUgX2xhc3RTZWFyY2hJbmZvOiBJQmFzZVNlYXJjaEluZm87XG4gICAgcHJpdmF0ZSBfZGl2ID0gbnVsbDtcbiAgICBwcml2YXRlIF9vYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbm9kZVdhc1JlbW92ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9mb3JjZUV2YWx1YXRpb24gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9hY3RpdmVFbGVtZW50SW5kZXggPSAtMTtcbiAgICBwcml2YXRlIF92YWx1ZUNoYW5nZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGVmYXVsdENzc0NsYXNzID0gJ2lneC1oaWdobGlnaHQnO1xuICAgIHByaXZhdGUgX2RlZmF1bHRBY3RpdmVDc3NDbGFzcyA9ICdpZ3gtaGlnaGxpZ2h0LS1hY3RpdmUnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIHNlcnZpY2U6IElneFRleHRIaWdobGlnaHRTZXJ2aWNlLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLm9uQWN0aXZlRWxlbWVudENoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZ3JvdXBOYW1lKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5ncm91cE5hbWUgPT09IGdyb3VwTmFtZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckhpZ2hsaWdodCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy52YWx1ZSAmJiAhY2hhbmdlcy52YWx1ZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICgoY2hhbmdlcy5yb3cgIT09IHVuZGVmaW5lZCAmJiAhY2hhbmdlcy5yb3cuZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAgICAgICAoY2hhbmdlcy5jb2x1bW4gIT09IHVuZGVmaW5lZCAmJiAhY2hhbmdlcy5jb2x1bW4uZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAgICAgICAoY2hhbmdlcy5wYWdlICE9PSB1bmRlZmluZWQgJiYgIWNoYW5nZXMucGFnZS5maXJzdENoYW5nZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnBhcmVudEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlcnZpY2UuaGlnaGxpZ2h0R3JvdXBzTWFwLmhhcyh0aGlzLmdyb3VwTmFtZSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuaGlnaGxpZ2h0R3JvdXBzTWFwLnNldCh0aGlzLmdyb3VwTmFtZSwge1xuICAgICAgICAgICAgICAgIGluZGV4OiAtMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mbyA9IHtcbiAgICAgICAgICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgICAgICAgICAgY29udGVudDogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIG1hdGNoQ291bnQ6IDAsXG4gICAgICAgICAgICBjYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGV4YWN0TWF0Y2g6IGZhbHNlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gdGhpcy5wYXJlbnRFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5fdmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodCh0aGlzLl9sYXN0U2VhcmNoSW5mby5zZWFyY2hUZXh0LCB0aGlzLl9sYXN0U2VhcmNoSW5mby5jYXNlU2Vuc2l0aXZlLCB0aGlzLl9sYXN0U2VhcmNoSW5mby5leGFjdE1hdGNoKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVJZk5lY2Vzc2FyeSgpO1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGV4aXN0aW5nIGhpZ2hsaWdodCBhbmQgaGlnaGxpZ2h0cyB0aGUgc2VhcmNoZWQgdGV4dC5cbiAgICAgKiBSZXR1cm5zIGhvdyBtYW55IHRpbWVzIHRoZSBlbGVtZW50IGNvbnRhaW5zIHRoZSBzZWFyY2hlZCB0ZXh0LlxuICAgICAqL1xuICAgIHB1YmxpYyBoaWdobGlnaHQodGV4dDogc3RyaW5nLCBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbiwgZXhhY3RNYXRjaD86IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjYXNlU2Vuc2l0aXZlUmVzb2x2ZWQgPSBjYXNlU2Vuc2l0aXZlID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBjb25zdCBleGFjdE1hdGNoUmVzb2x2ZWQgPSBleGFjdE1hdGNoID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaE5lZWRzRXZhbHVhdGlvbih0ZXh0LCBjYXNlU2Vuc2l0aXZlUmVzb2x2ZWQsIGV4YWN0TWF0Y2hSZXNvbHZlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLnNlYXJjaFRleHQgPSB0ZXh0O1xuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uY2FzZVNlbnNpdGl2ZSA9IGNhc2VTZW5zaXRpdmVSZXNvbHZlZDtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmV4YWN0TWF0Y2ggPSBleGFjdE1hdGNoUmVzb2x2ZWQ7XG4gICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5jb250ZW50ID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHRleHQgPT09ICcnIHx8IHRleHQgPT09IHVuZGVmaW5lZCB8fCB0ZXh0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckhpZ2hsaWdodCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQ2hpbGRFbGVtZW50cyh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5tYXRjaENvdW50ID0gdGhpcy5nZXRIaWdobGlnaHRlZFRleHQodGV4dCwgY2FzZVNlbnNpdGl2ZSwgZXhhY3RNYXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fbm9kZVdhc1JlbW92ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLnNlYXJjaFRleHQgPSB0ZXh0O1xuICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uY2FzZVNlbnNpdGl2ZSA9IGNhc2VTZW5zaXRpdmVSZXNvbHZlZDtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmV4YWN0TWF0Y2ggPSBleGFjdE1hdGNoUmVzb2x2ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFNlYXJjaEluZm8ubWF0Y2hDb3VudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgYW55IGV4aXN0aW5nIGhpZ2hsaWdodC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXJIaWdobGlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJDaGlsZEVsZW1lbnRzKGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLm1hdGNoQ291bnQgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjdGl2YXRlcyB0aGUgaGlnaGxpZ2h0IGlmIGl0IGlzIG9uIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJvdyBhbmQgY29sdW1uLlxuICAgICAqL1xuICAgIHB1YmxpYyBhY3RpdmF0ZUlmTmVjZXNzYXJ5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuc2VydmljZS5oaWdobGlnaHRHcm91cHNNYXAuZ2V0KHRoaXMuZ3JvdXBOYW1lKTtcblxuICAgICAgICBpZiAoZ3JvdXAgJiYgZ3JvdXAuaW5kZXggPj0gMCAmJiBncm91cC5jb2x1bW4gPT09IHRoaXMuY29sdW1uICYmIGdyb3VwLnJvdyA9PT0gdGhpcy5yb3cgJiYgY29tcGFyZU1hcHModGhpcy5tZXRhZGF0YSwgZ3JvdXAubWV0YWRhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlKGdyb3VwLmluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgTXV0YXRpb25PYnNlcnZlciB0byB0aGUgcGFyZW50RWxlbWVudCBhbmQgd2F0Y2hlcyBmb3Igd2hlbiB0aGUgY29udGFpbmVyIGVsZW1lbnQgaXMgcmVtb3ZlZC9yZWFkZGVkIHRvIHRoZSBET00uXG4gICAgICogU2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIG5lY2Vzc2FyeSBhcyB1c2luZyBtYW55IG9ic2VydmVycyBtYXkgbGVhZCB0byBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgb2JzZXJ2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IChtdXRhdGlvbkxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICBtdXRhdGlvbkxpc3QuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZE5vZGVzID0gQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVkTm9kZXMuZm9yRWFjaCgobikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09IHRoaXMuX2NvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25vZGVXYXNSZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQ2hpbGRFbGVtZW50cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZGVkTm9kZXMgPSBBcnJheS5mcm9tKG11dGF0aW9uLmFkZGVkTm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICBhZGRlZE5vZGVzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09PSB0aGlzLnBhcmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgJiYgdGhpcy5fbm9kZVdhc1JlbW92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLnBhcmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZVdhc1JlbW92ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvcmNlRXZhbHVhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHQodGhpcy5fbGFzdFNlYXJjaEluZm8uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uY2FzZVNlbnNpdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uZXhhY3RNYXRjaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9yY2VFdmFsdWF0aW9uID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnBhcmVudEVsZW1lbnQsIHtjaGlsZExpc3Q6IHRydWV9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcblxuICAgICAgICBpZiAodGhpcy5fZGl2ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzcGFucyA9IHRoaXMuX2Rpdi5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJyk7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgaWYgKHNwYW5zLmxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvQWN0aXZhdGUgPSBzcGFuc1tpbmRleF07XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnRUb0FjdGl2YXRlLCB0aGlzLl9kZWZhdWx0QWN0aXZlQ3NzQ2xhc3MpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50VG9BY3RpdmF0ZSwgdGhpcy5hY3RpdmVDc3NDbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlYWN0aXZhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzcGFucyA9IHRoaXMuX2Rpdi5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuJyk7XG5cbiAgICAgICAgaWYgKHNwYW5zLmxlbmd0aCA8PSB0aGlzLl9hY3RpdmVFbGVtZW50SW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFRvRGVhY3RpdmF0ZSA9IHNwYW5zW3RoaXMuX2FjdGl2ZUVsZW1lbnRJbmRleF07XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudFRvRGVhY3RpdmF0ZSwgdGhpcy5fZGVmYXVsdEFjdGl2ZUNzc0NsYXNzKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50VG9EZWFjdGl2YXRlLCB0aGlzLmFjdGl2ZUNzc0NsYXNzKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckNoaWxkRWxlbWVudHMob3JpZ2luYWxDb250ZW50SGlkZGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nLCBvcmlnaW5hbENvbnRlbnRIaWRkZW4pO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5wYXJlbnRFbGVtZW50LCB0aGlzLl9kaXYpO1xuXG4gICAgICAgICAgICB0aGlzLl9kaXYgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhpZ2hsaWdodGVkVGV4dChzZWFyY2hUZXh0OiBzdHJpbmcsIGNhc2VTZW5zaXRpdmU6IGJvb2xlYW4sIGV4YWN0TWF0Y2g6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hcHBlbmREaXYoKTtcblxuICAgICAgICBjb25zdCBzdHJpbmdWYWx1ZSA9IFN0cmluZyh0aGlzLnZhbHVlKTtcbiAgICAgICAgY29uc3QgY29udGVudFN0cmluZ1Jlc29sdmVkID0gIWNhc2VTZW5zaXRpdmUgPyBzdHJpbmdWYWx1ZS50b0xvd2VyQ2FzZSgpIDogc3RyaW5nVmFsdWU7XG4gICAgICAgIGNvbnN0IHNlYXJjaFRleHRSZXNvbHZlZCA9ICFjYXNlU2Vuc2l0aXZlID8gc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpIDogc2VhcmNoVGV4dDtcblxuICAgICAgICBsZXQgbWF0Y2hDb3VudCA9IDA7XG5cbiAgICAgICAgaWYgKGV4YWN0TWF0Y2gpIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50U3RyaW5nUmVzb2x2ZWQgPT09IHNlYXJjaFRleHRSZXNvbHZlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kU3BhbihgPHNwYW4gY2xhc3M9XCIke3RoaXMuX2RlZmF1bHRDc3NDbGFzc30gJHt0aGlzLmNzc0NsYXNzID8gdGhpcy5jc3NDbGFzcyA6ICcnfVwiPiR7c3RyaW5nVmFsdWV9PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgIG1hdGNoQ291bnQrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUZXh0KHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmb3VuZEluZGV4ID0gY29udGVudFN0cmluZ1Jlc29sdmVkLmluZGV4T2Yoc2VhcmNoVGV4dFJlc29sdmVkLCAwKTtcbiAgICAgICAgICAgIGxldCBwcmV2aW91c01hdGNoRW5kID0gMDtcblxuICAgICAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBmb3VuZEluZGV4O1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IGZvdW5kSW5kZXggKyBzZWFyY2hUZXh0UmVzb2x2ZWQubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUZXh0KHN0cmluZ1ZhbHVlLnN1YnN0cmluZyhwcmV2aW91c01hdGNoRW5kLCBzdGFydCkpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRTcGFuKGA8c3BhbiBjbGFzcz1cIiR7dGhpcy5fZGVmYXVsdENzc0NsYXNzfSAke3RoaXMuY3NzQ2xhc3MgPyB0aGlzLmNzc0NsYXNzIDogJyd9XCI+JHtzdHJpbmdWYWx1ZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCl9PC9zcGFuPmApO1xuXG4gICAgICAgICAgICAgICAgcHJldmlvdXNNYXRjaEVuZCA9IGVuZDtcbiAgICAgICAgICAgICAgICBtYXRjaENvdW50Kys7XG5cbiAgICAgICAgICAgICAgICBmb3VuZEluZGV4ID0gY29udGVudFN0cmluZ1Jlc29sdmVkLmluZGV4T2Yoc2VhcmNoVGV4dFJlc29sdmVkLCBlbmQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFwcGVuZFRleHQoc3RyaW5nVmFsdWUuc3Vic3RyaW5nKHByZXZpb3VzTWF0Y2hFbmQsIHN0cmluZ1ZhbHVlLmxlbmd0aCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hdGNoQ291bnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRUZXh0KHRleHQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dCh0ZXh0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9kaXYsIHRleHRFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZFNwYW4ob3V0ZXJIVE1MOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3BhbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2Rpdiwgc3Bhbik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoc3BhbiwgJ291dGVySFRNTCcsIG91dGVySFRNTCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmREaXYoKSB7XG4gICAgICAgIHRoaXMuX2RpdiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGlmICggdGhpcy5jb250YWluZXJDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9kaXYsIHRoaXMuY29udGFpbmVyQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5wYXJlbnRFbGVtZW50LCB0aGlzLl9kaXYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VhcmNoTmVlZHNFdmFsdWF0aW9uKHRleHQ6IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbiwgZXhhY3RNYXRjaDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzZWFyY2hlZFRleHQgPSB0aGlzLl9sYXN0U2VhcmNoSW5mby5zZWFyY2hUZXh0O1xuXG4gICAgICAgIHJldHVybiAhdGhpcy5fbm9kZVdhc1JlbW92ZWQgJiZcbiAgICAgICAgICAgIChzZWFyY2hlZFRleHQgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICBzZWFyY2hlZFRleHQgIT09IHRleHQgfHxcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U2VhcmNoSW5mby5jb250ZW50ICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFNlYXJjaEluZm8uY2FzZVNlbnNpdGl2ZSAhPT0gY2FzZVNlbnNpdGl2ZSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RTZWFyY2hJbmZvLmV4YWN0TWF0Y2ggIT09IGV4YWN0TWF0Y2ggfHxcbiAgICAgICAgICAgICAgICB0aGlzLl9mb3JjZUV2YWx1YXRpb24pO1xuICAgIH1cbn1cbiJdfQ==
@@ -18306,7 +18306,7 @@ class IgxTextHighlightDirective {
18306
18306
  */
18307
18307
  activateIfNecessary() {
18308
18308
  const group = this.service.highlightGroupsMap.get(this.groupName);
18309
- if (group.index >= 0 && group.column === this.column && group.row === this.row && compareMaps(this.metadata, group.metadata)) {
18309
+ if (group && group.index >= 0 && group.column === this.column && group.row === this.row && compareMaps(this.metadata, group.metadata)) {
18310
18310
  this.activate(group.index);
18311
18311
  }
18312
18312
  }