@fundamental-ngx/platform 0.53.2-rc.0 → 0.53.2-rc.2

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.
@@ -170,9 +170,6 @@ export class BaseMultiInput extends CollectionBaseInput {
170
170
  this.isOpen = false;
171
171
  this.inputText = '';
172
172
  this.searchTermChanged();
173
- if (!this.mobile) {
174
- this.searchInputElement.nativeElement.focus();
175
- }
176
173
  this.isOpenChange.emit(false);
177
174
  this.openChange.next(false);
178
175
  this.markForCheck();
@@ -547,4 +544,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
547
544
  type: ViewChild,
548
545
  args: ['searchInputElement', { read: ElementRef }]
549
546
  }] } });
550
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vZm9ybS9tdWx0aS1pbnB1dC9iYXNlLW11bHRpLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxHQUFHLEVBQ0gsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxHQUFHLEVBQ0gsUUFBUSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBR1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQXdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakYsT0FBTyxFQUNILHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFLUiw4QkFBOEIsRUFDakMsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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c0JBREosS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFJTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBS0YsS0FBSztzQkFEUixLQUFLO2dCQWFHLFlBQVk7c0JBRHBCLE1BQU07Z0JBTUUsZUFBZTtzQkFGdkIsTUFBTTtnQkFPRSxjQUFjO3NCQUZ0QixNQUFNO2dCQU1FLGdCQUFnQjtzQkFEeEIsTUFBTTtnQkFLRSxrQkFBa0I7c0JBRDFCLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixTQUFTO3VCQUFDLGdCQUFnQjtnQkFLM0IsZUFBZTtzQkFEZCxlQUFlO3VCQUFDLGlCQUFpQjtnQkFLbEMsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQUxULFxuICAgIEJBQ0tTUEFDRSxcbiAgICBDT05UUk9MLFxuICAgIERPV05fQVJST1csXG4gICAgRU5URVIsXG4gICAgRVNDQVBFLFxuICAgIExFRlRfQVJST1csXG4gICAgUklHSFRfQVJST1csXG4gICAgU0hJRlQsXG4gICAgVEFCLFxuICAgIFVQX0FSUk9XXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvY3VzRXNjYXBlRGlyZWN0aW9uLCBLZXlVdGlsLCBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0NvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBGZHBMaXN0Q29tcG9uZW50LCBMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9saXN0JztcbmltcG9ydCB7XG4gICAgQXJyYXlNdWx0aUlucHV0RGF0YVNvdXJjZSxcbiAgICBDb2xsZWN0aW9uQmFzZUlucHV0LFxuICAgIGlzRGF0YVNvdXJjZSxcbiAgICBpc0Z1bmN0aW9uLFxuICAgIGlzSnNPYmplY3QsXG4gICAgaXNPcHRpb25JdGVtLFxuICAgIGlzU3RyaW5nLFxuICAgIE1hdGNoaW5nQnksXG4gICAgTWF0Y2hpbmdTdHJhdGVneSxcbiAgICBNdWx0aUlucHV0RGF0YVNvdXJjZSxcbiAgICBNdWx0aUlucHV0T3B0aW9uLFxuICAgIE9ic2VydmFibGVNdWx0aUlucHV0RGF0YVNvdXJjZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBUZXh0QWxpZ25tZW50IH0gZnJvbSAnLi4vY29tYm9ib3gnO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbmZpZyB9IGZyb20gJy4vbXVsdGktaW5wdXQuY29uZmlnJztcblxuZXhwb3J0IHR5cGUgRmRwTXVsdGlJbnB1dERhdGFTb3VyY2U8VD4gPSBNdWx0aUlucHV0RGF0YVNvdXJjZTxUPiB8IE9ic2VydmFibGU8VFtdPiB8IFRbXTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU11bHRpSW5wdXQgZXh0ZW5kcyBDb2xsZWN0aW9uQmFzZUlucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWJzdHJhY3QgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRGVmaW5lIGlzIHRoaXMgaXRlbSBzZWxlY3RlZFxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzU2VsZWN0ZWRPcHRpb25JdGVtKHNlbGVjdGVkSXRlbTogTXVsdGlJbnB1dE9wdGlvbik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRW1pdCBzZWxlY3QgT3B0aW9uSXRlbVxuICAgICAqICovXG4gICAgYWJzdHJhY3Qgc2VsZWN0T3B0aW9uSXRlbShpdGVtOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBEZWZpbmUgdmFsdWUgYXMgc2VsZWN0ZWRcbiAgICAgKiAqL1xuICAgIGFic3RyYWN0IHNldEFzU2VsZWN0ZWQoaXRlbTogTXVsdGlJbnB1dE9wdGlvbltdKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNYXRob2QgZm9yIG1hcmtpbmcgbGlzdCBvcHRpb24gYXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgX21hcmtMaXN0SXRlbXNBc1NlbGVjdGVkKCk6IHZvaWQ7XG5cbiAgICAvKiogUHJvdmlkZXMgbWF4aW11bSBoZWlnaHQgZm9yIHRoZSBvcHRpb25QYW5lbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4SGVpZ2h0ID0gJzI1MHB4JztcblxuICAgIC8qKiBEYXRhc291cmNlIGZvciBzdWdnZXN0aW9uIGxpc3QgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbHVlOiBGZHBNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURhdGFTb3VyY2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGRhdGFTb3VyY2UoKTogRmRwTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGJlIGVuYWJsZWQ7IEVuYWJsZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXV0b0NvbXBsZXRlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRvZG86IE5hbWUgb2YgdGhlIGVudGl0eSBmb3Igd2hpY2ggRGF0YVByb3ZpZGVyIHdpbGwgYmUgbG9hZGVkLiBZb3UgY2FuIGVpdGhlciBwYXNzIGxpc3Qgb2ZcbiAgICAgKiBpdGVtcyBvciB1c2UgdGhpcyBlbnRpdHlDbGFzcyBhbmQgaW50ZXJuYWxseSB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyBsb29rdXAgdG8gc29tZSByZWdpc3RyeVxuICAgICAqIGFuZCByZXRyaWV2ZSB0aGUgYmVzdCBtYXRjaGluZyBEYXRhUHJvdmlkZXIgdGhhdCBpcyBzZXQgb24gYXBwbGljYXRpb24gbGV2ZWxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGVudGl0eUNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgTXVsdGkgSW5wdXQgc2hvdWxkIGJlIGJ1aWx0IG9uIG1vYmlsZSBtb2RlICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBNdWx0aSBJbnB1dCBNb2JpbGUgQ29uZmlndXJhdGlvbiwgaXQncyBhcHBsaWVkIG9ubHksIHdoZW4gbW9iaWxlIGlzIGVuYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgQWRkT24gQnV0dG9uIHNob3VsZCBiZSBmb2N1c2FibGVcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogVGVsbHMgdGhlIG11bHRpIGlucHV0IGlmIHdlIG5lZWQgdG8gZ3JvdXAgaXRlbXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwID0gZmFsc2U7XG5cbiAgICAvKiogQSBmaWVsZCBuYW1lIHRvIHVzZSB0byBncm91cCBkYXRhIGJ5IChzdXBwb3J0IGRvdHRlZCBub3RhdGlvbikgKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwS2V5Pzogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBmaWVsZCB0byBzaG93IGRhdGEgaW4gc2Vjb25kYXJ5IGNvbHVtbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGZpZWxkIHRvIHNob3cgYXZhdGFyIGltYWdlIGRhdGEgaW4gc2Vjb25kYXJ5IGNvbHVtbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXZhdGFyc3JjPzogc3RyaW5nO1xuXG4gICAgLyoqIFNob3cgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWNvbmRhcnlUZXh0ID0gZmFsc2U7XG5cbiAgICAvKiogSG9yaXpvbnRhbGx5IGFsaWduIHRleHQgaW5zaWRlIHRoZSBzZWNvbmQgY29sdW1uIChBcHBsaWNhYmxlIGZvciB0d28gY29sdW1ucyBsYXlvdXQpICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlUZXh0QWxpZ25tZW50OiBUZXh0QWxpZ25tZW50ID0gJ3JpZ2h0JztcblxuICAgIC8qKiBUdXJucyBvbi9vZmYgQWRqdXN0YWJsZSBXaWR0aCBmZWF0dXJlICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gZmFsc2U7XG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiB0aGUgZHJvcGRvd24gd2hlbiB0aGUgYWRkb24gYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQElucHV0KClcbiAgICBvcGVuRHJvcGRvd25PbkFkZE9uQ2xpY2tlZCA9IHRydWU7XG5cbiAgICAvKiogVmFsdWUgb2YgdGhlIG11bHRpIGlucHV0ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICAgIHRoaXMuc2V0QXNTZWxlY3RlZCh0aGlzLl9jb252ZXJ0VG9PcHRpb25JdGVtcyhzZWxlY3RlZEl0ZW1zKSk7XG4gICAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRW1pdHMgZXZlbnQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQvY2xvc2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uRGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uRGF0YVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VhcmNoIHRlcm0gY2hhbmdlcy4gVXNlICokZXZlbnQqIHRvIGFjY2VzcyB0aGUgbmV3IHRlcm0uICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgc2VhcmNoVGVybUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKiBFbWl0cyBldmVudCB3aGVuIHRoZSBhZGRvbiBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBhZGRPbkJ1dHRvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKEZkcExpc3RDb21wb25lbnQpXG4gICAgbGlzdENvbXBvbmVudDogTGlzdENvbXBvbmVudDxNdWx0aUlucHV0T3B0aW9uPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHNlYXJjaElucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIE9wdGlvbiBpdGVtIFRlbXBsYXRlXG4gICAgICogKi9cbiAgICBvcHRpb25JdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEN1c3RvbSBHcm91cCBIZWFkZXIgaXRlbSBUZW1wbGF0ZVxuICAgICAqICovXG4gICAgZ3JvdXBJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEN1c3RvbSBTZWNvbmRhcnkgaXRlbSBUZW1wbGF0ZVxuICAgICAqICovXG4gICAgc2Vjb25kYXJ5SXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gU2VsZWN0ZWQgb3B0aW9uIGl0ZW0gVGVtcGxhdGVcbiAgICAgKiAqL1xuICAgIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIGlucHV0IHRleHQgb2YgdGhlIGlucHV0LiAqL1xuICAgIGlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIE11bHRpIElucHV0IGlzIG9wZW5lZC4gKi9cbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGNhbkNsb3NlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLm1vYmlsZSAmJiB0aGlzLm1vYmlsZUNvbmZpZy5hcHByb3ZlQnV0dG9uVGV4dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgbWF0Y2hlZCBzdWdnZXN0aW9uc1xuICAgICAqICovXG4gICAgX3N1Z2dlc3Rpb25zOiBNdWx0aUlucHV0T3B0aW9uW107XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgbWF0Y2hlZCBzdWdnZXN0aW9uc1xuICAgICAqICovXG4gICAgX25ld1N1Z2dlc3Rpb25zOiBNdWx0aUlucHV0T3B0aW9uW107XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIE1heCB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqICovXG4gICAgbWF4V2lkdGg/OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIE1pbiB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqICovXG4gICAgbWluV2lkdGg/OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBOZWVkIGZvciBvcGVuaW5nIG1vYmlsZSB2ZXJzaW9uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb3BlbkNoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtdWx0aUlucHV0Q29uZmlnID0gaW5qZWN0KE11bHRpSW5wdXRDb25maWcpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2U6IEZkcE11bHRpSW5wdXREYXRhU291cmNlPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkaWFsb2dDb25maWcgPSBpbmplY3QoRGlhbG9nQ29uZmlnLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBAaGlkZGVuIGVtaXRzIHdoZW5ldmVyIHRoZXJlJ3JlIGNoYW5nZXMgdG8gdGhlIGlucHV0cywgdGhhdCBhZmZlY3QgdGhlIGRhdGEgY3JlYXRpb24gZnJvbSBkYXRhIHNvdXJjZSAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3VwZGF0ZURhdGFTb3VyY2VWYWx1ZXMkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21hdGNoaW5nU3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kgPSB0aGlzLm11bHRpSW5wdXRDb25maWcubWF0Y2hpbmdTdHJhdGVneTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RzU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgLyoqIEtleXMsIHRoYXQgd29uJ3QgdHJpZ2dlciB0aGUgcG9wb3ZlcidzIG9wZW4gc3RhdGUsIHdoZW4gZGlzcGF0Y2hlZCBvbiBzZWFyY2ggaW5wdXQgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ub25PcGVuaW5nS2V5czogbnVtYmVyW10gPSBbXG4gICAgICAgIEVTQ0FQRSxcbiAgICAgICAgRU5URVIsXG4gICAgICAgIENPTlRST0wsXG4gICAgICAgIFRBQixcbiAgICAgICAgU0hJRlQsXG4gICAgICAgIFVQX0FSUk9XLFxuICAgICAgICBSSUdIVF9BUlJPVyxcbiAgICAgICAgRE9XTl9BUlJPVyxcbiAgICAgICAgTEVGVF9BUlJPVyxcbiAgICAgICAgQUxULFxuICAgICAgICBCQUNLU1BBQ0VcbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vcmlnaW5hbFN1Z2dlc3Rpb25zOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRXaW5kb3dSZXNpemUoKTtcbiAgICAgICAgdGhpcy5fYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoJ2dyb3VwJyBpbiBjaGFuZ2VzIHx8ICdncm91cEtleScgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlRGF0YVNvdXJjZVZhbHVlcyQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnYXZhdGFyU3JjJyBpbiBjaGFuZ2VzIHx8ICdkZXNjcmlwdGlvbicgaW4gY2hhbmdlcyB8fCAndGl0bGUnIGluIGNoYW5nZXMgfHwgJ3ZhbHVlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKHRoaXMuX29yaWdpbmFsU3VnZ2VzdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAodGhpcy5kYXRhU291cmNlIGFzIE11bHRpSW5wdXREYXRhU291cmNlPGFueT4pLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogd3JpdGUgdmFsdWUgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgdGhpcy5zZXRBc1NlbGVjdGVkKHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKHNlbGVjdGVkSXRlbXMpKTtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHNlbGVjdCBwb3BvdmVyIGJvZHkuICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLm5leHQodGhpcy5pc09wZW4pO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21hcmtMaXN0SXRlbXNBc1NlbGVjdGVkKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogQ2xvc2VzIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2VkKCk7XG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udmVydE9iamVjdFRvTXVsdGlJbnB1dE9wdGlvbihpdGVtczogYW55W10pOiBNdWx0aUlucHV0T3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlYXJjaFRlcm1DaGFuZ2VkKHRleHQ6IHN0cmluZyA9IHRoaXMuaW5wdXRUZXh0KTogdm9pZCB7XG4gICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIG1hcC5zZXQoJ3F1ZXJ5JywgdGV4dCk7XG4gICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgMTIpO1xuICAgICAgICB0aGlzLmRzPy5tYXRjaChtYXApO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoVGVybUNoYW5nZS5lbWl0KHRleHQpO1xuXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd0xpc3QoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbiAhPT0gaXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybUNoYW5nZWQoJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlT3B0aW9uSXRlbSh2YWx1ZTogTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0T3B0aW9uSXRlbSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVByZXNzRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHZhbHVlOiBNdWx0aUlucHV0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVOVEVSKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYW5kbGVPcHRpb25JdGVtKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgS2V5ZG93biBvbiBJbnB1dFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvbklucHV0S2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVEFCKSAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudD8uX3NldEN1cnJlbnRBY3RpdmVJdGVtSW5kZXgoMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50Py5saXN0SXRlbXMuZmlyc3QuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hvb3NlT3RoZXJJdGVtKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgtMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVTQ0FQRSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICghZXZlbnQuY3RybEtleSAmJiAhS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIHRoaXMuX25vbk9wZW5pbmdLZXlzKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93TGlzdCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgcGFzc2VkIHRvIGxpc3QgY29tcG9uZW50ICovXG4gICAgaGFuZGxlTGlzdEZvY3VzRXNjYXBlKGRpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXNwbGF5Rm4gPSAodmFsdWU6IGFueSk6IHN0cmluZyA9PiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlY29uZGFyeUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgICBpZiAoaXNPcHRpb25JdGVtKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNlY29uZGFyeVRleHQgPz8gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkgJiYgdGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLm9iamVjdEdldCh2YWx1ZSwgdGhpcy5kZXNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGN1cnJlbnRJdGVtKSA/IGN1cnJlbnRJdGVtKCkgOiBjdXJyZW50SXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBnZXQgZHMoKTogTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UgYXMgTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IHBpY2tzIG90aGVyIHZhbHVlIG1vdmVkIGZyb20gY3VycmVudCBvbmUgYnkgb2Zmc2V0LCBjYWxsZWQgb25seSB3aGVuIE11bHRpIElucHV0IGlzIGNsb3NlZCAqL1xuICAgIHByaXZhdGUgX2Nob29zZU90aGVySXRlbShvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZEluZGV4KCh2YWx1ZSkgPT4gdmFsdWUubGFiZWwgPT09IHRoaXMuaW5wdXRUZXh0KTtcblxuICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbnNbaW5kZXggKyBvZmZzZXRdKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU9wdGlvbkl0ZW0odGhpcy5fc3VnZ2VzdGlvbnNbaW5kZXggKyBvZmZzZXRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURhdGFTb3VyY2UoZHM6IEZkcE11bHRpSW5wdXREYXRhU291cmNlPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgICh0aGlzLmRhdGFTb3VyY2UgYXMgTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PikuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2RzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDb252ZXJ0IHdoYXRldmVyIGNvbWVzIGluIGFzIERhdGFTb3VyY2Ugc28gd2UgY2FuIHdvcmsgd2l0aCBpdCBpZGVudGljYWxseVxuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdGhpcy5fb3BlbkRhdGFTdHJlYW0oZHMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3BlbkRhdGFTdHJlYW0oZHM6IEZkcE11bHRpSW5wdXREYXRhU291cmNlPGFueT4pOiBNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+IHtcbiAgICAgICAgY29uc3QgaW5pdERhdGFTb3VyY2UgPSB0aGlzLl90b0RhdGFTdHJlYW0oZHMpO1xuXG4gICAgICAgIGlmIChpbml0RGF0YVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtkYXRhU291cmNlXSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZWApO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGlzIGlzIHNpbmdsZSBwb2ludCBvZiBkYXRhIGVudHJ5IHRvIHRoZSBjb21wb25lbnQuIFdlIGRvbnQgd2FudCB0byBzZXQgZGF0YSBvbiBkaWZmZXJlbnRcbiAgICAgICAgICogcGxhY2VzLiBJZiBhbnkgbmV3IGRhdGEgY29tZXMgaW4gZWl0aGVyIHlvdSBkbyBhIHNlYXJjaCBhbmQgeW91IHdhbnQgdG8gcGFzcyBpbml0aWFsIGRhdGFcbiAgICAgICAgICogaXRzIGhlcmUuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgY29uc3QgZHNTdWIgPSBjb21iaW5lTGF0ZXN0KFtpbml0RGF0YVNvdXJjZS5vcGVuKCksIHRoaXMuX3VwZGF0ZURhdGFTb3VyY2VWYWx1ZXMkLnBpcGUoc3RhcnRXaXRoKG51bGwpKV0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtkYXRhXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsU3VnZ2VzdGlvbnMgPSBkYXRhO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXMoZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnaW5pdERhdGFTb3VyY2Uub3BlbigpLicpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKGRzU3ViKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoaW5pdERhdGFTb3VyY2Uub25EYXRhUmVxdWVzdGVkKCkuc3Vic2NyaWJlKHRoaXMub25EYXRhUmVxdWVzdGVkKSk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChpbml0RGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSh0aGlzLm9uRGF0YVJlY2VpdmVkKSk7XG5cbiAgICAgICAgaW5pdERhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLnNldExvb2t1cEtleSh0aGlzLmxvb2t1cEtleSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQnk6IE1hdGNoaW5nQnkgPSB7XG4gICAgICAgICAgICBmaXJzdEJ5OiB0aGlzLl9kaXNwbGF5Rm5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgbWF0Y2hpbmdCeS5zZWNvbmRhcnlCeSA9IHRoaXMuX3NlY29uZGFyeUZuO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5pdERhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLnNldE1hdGNoaW5nQnkobWF0Y2hpbmdCeSk7XG4gICAgICAgIGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci5zZXRNYXRjaGluZ1N0cmF0ZWd5KHRoaXMuX21hdGNoaW5nU3RyYXRlZ3kpO1xuXG4gICAgICAgIC8vIGluaXRpYWwgZGF0YSBmZXRjaFxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIG1hcC5zZXQoJ3F1ZXJ5JywgJyonKTtcbiAgICAgICAgbWFwLnNldCgnbGltaXQnLCAxMik7XG4gICAgICAgIGluaXREYXRhU291cmNlLm1hdGNoKG1hcCk7XG5cbiAgICAgICAgcmV0dXJuIGluaXREYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9EYXRhU3RyZWFtKHNvdXJjZTogRmRwTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55Pik6IE11bHRpSW5wdXREYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UgYXMgTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdG8gd29yayBvbiB0b3Agb2YgYXJyYXlzXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGlJbnB1dERhdGFTb3VyY2U8YW55Pihzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGVNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+KHNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ2V0T3B0aW9uc0xpc3RXaWR0aCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uc0xpc3RXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSAodGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdmZC1pbnB1dC1ncm91cCcpIGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBib2R5Lm9mZnNldFdpZHRoIC0gYm9keS5jbGllbnRXaWR0aDtcbiAgICAgICAgdGhpcy5tYXhXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gc2Nyb2xsQmFyV2lkdGggLSByZWN0LmxlZnQ7XG4gICAgICAgIHRoaXMubWluV2lkdGggPSByZWN0LndpZHRoIC0gMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9yaWdpbmFsIGRhdGEgdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1swXTtcblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSA9IGlzT3B0aW9uSXRlbShpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNPcHRpb25JdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMgYXMgTXVsdGlJbnB1dE9wdGlvbltdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogTXVsdGlJbnB1dE9wdGlvbltdIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTZWNvbmRhcnlUZXh0ICYmIHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIEdyb3VwIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvR3JvdXBPcHRpb25JdGVtczxLPihpdGVtczogS1tdKTogTXVsdGlJbnB1dE9wdGlvbltdIHtcbiAgICAgICAgY29uc3QgZ3JvdXA6IHsgW2tleTogc3RyaW5nXTogS1tdIH0gPSB7fTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IHRoaXMuZ3JvdXBLZXkgJiYgaXRlbVt0aGlzLmdyb3VwS2V5XTtcbiAgICAgICAgICAgIGlmICgha2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFncm91cFtrZXlWYWx1ZV0pIHtcbiAgICAgICAgICAgICAgICBncm91cFtrZXlWYWx1ZV0gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ3JvdXBba2V5VmFsdWVdLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXApLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RJdGVtOiBNdWx0aUlucHV0T3B0aW9uID0ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogdHJ1ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gZ3JvdXBba2V5XTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0SXRlbS5jaGlsZHJlbiA9IHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RJdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9iamVjdFtdIGRhdGEgdG8gU2Vjb25kYXJ5IE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXM8Sz4oaXRlbXM6IEtbXSk6IE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBNdWx0aUlucHV0T3B0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheVZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICBhdmF0YXJTcmM6IHRoaXMuYXZhdGFyc3JjID8gdGhpcy5vYmplY3RHZXQodmFsdWUsIHRoaXMuYXZhdGFyc3JjKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gPyB0aGlzLm9iamVjdEdldCh2YWx1ZSwgdGhpcy5kZXNjcmlwdGlvbikgOiBudWxsLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFByaW1pdGl2ZSBkYXRhKEJvb2xlYW4sIFN0cmluZywgTnVtYmVyKSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogTXVsdGlJbnB1dE9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IE11bHRpSW5wdXRPcHRpb25bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7IGxhYmVsOiB2YWx1ZSwgdmFsdWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2UgKERlZmF1bHQpXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogTXVsdGlJbnB1dE9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IE11bHRpSW5wdXRPcHRpb25bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5kaXNwbGF5VmFsdWUodmFsdWUpLFxuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEFzc2lnbiBjdXN0b20gdGVtcGxhdGVzXG4gICAgICogKi9cbiAgICBwcml2YXRlIF9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzLmZvckVhY2goKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRlbXBsYXRlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdvcHRpb25JdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdncm91cEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRhcnlJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
547
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vZm9ybS9tdWx0aS1pbnB1dC9iYXNlLW11bHRpLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxHQUFHLEVBQ0gsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxHQUFHLEVBQ0gsUUFBUSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBR1QsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQXdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakYsT0FBTyxFQUNILHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFLUiw4QkFBOEIsRUFDakMsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUs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QkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFLRixLQUFLO3NCQURSLEtBQUs7Z0JBYUcsWUFBWTtzQkFEcEIsTUFBTTtnQkFNRSxlQUFlO3NCQUZ2QixNQUFNO2dCQU9FLGNBQWM7c0JBRnRCLE1BQU07Z0JBTUUsZ0JBQWdCO3NCQUR4QixNQUFNO2dCQUtFLGtCQUFrQjtzQkFEMUIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUszQixlQUFlO3NCQURkLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUtsQyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBTFQsXG4gICAgQkFDS1NQQUNFLFxuICAgIENPTlRST0wsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBTSElGVCxcbiAgICBUQUIsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9jdXNFc2NhcGVEaXJlY3Rpb24sIEtleVV0aWwsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBNb2JpbGVNb2RlQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IEZkcExpc3RDb21wb25lbnQsIExpc3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBBcnJheU11bHRpSW5wdXREYXRhU291cmNlLFxuICAgIENvbGxlY3Rpb25CYXNlSW5wdXQsXG4gICAgaXNEYXRhU291cmNlLFxuICAgIGlzRnVuY3Rpb24sXG4gICAgaXNKc09iamVjdCxcbiAgICBpc09wdGlvbkl0ZW0sXG4gICAgaXNTdHJpbmcsXG4gICAgTWF0Y2hpbmdCeSxcbiAgICBNYXRjaGluZ1N0cmF0ZWd5LFxuICAgIE11bHRpSW5wdXREYXRhU291cmNlLFxuICAgIE11bHRpSW5wdXRPcHRpb24sXG4gICAgT2JzZXJ2YWJsZU11bHRpSW5wdXREYXRhU291cmNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IFRleHRBbGlnbm1lbnQgfSBmcm9tICcuLi9jb21ib2JveCc7XG5pbXBvcnQgeyBNdWx0aUlucHV0Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1pbnB1dC5jb25maWcnO1xuXG5leHBvcnQgdHlwZSBGZHBNdWx0aUlucHV0RGF0YVNvdXJjZTxUPiA9IE11bHRpSW5wdXREYXRhU291cmNlPFQ+IHwgT2JzZXJ2YWJsZTxUW10+IHwgVFtdO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTXVsdGlJbnB1dCBleHRlbmRzIENvbGxlY3Rpb25CYXNlSW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBjb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFic3RyYWN0IGxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBEZWZpbmUgaXMgdGhpcyBpdGVtIHNlbGVjdGVkXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNTZWxlY3RlZE9wdGlvbkl0ZW0oc2VsZWN0ZWRJdGVtOiBNdWx0aUlucHV0T3B0aW9uKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBFbWl0IHNlbGVjdCBPcHRpb25JdGVtXG4gICAgICogKi9cbiAgICBhYnN0cmFjdCBzZWxlY3RPcHRpb25JdGVtKGl0ZW06IE11bHRpSW5wdXRPcHRpb24pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIERlZmluZSB2YWx1ZSBhcyBzZWxlY3RlZFxuICAgICAqICovXG4gICAgYWJzdHJhY3Qgc2V0QXNTZWxlY3RlZChpdGVtOiBNdWx0aUlucHV0T3B0aW9uW10pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1hdGhvZCBmb3IgbWFya2luZyBsaXN0IG9wdGlvbiBhcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBfbWFya0xpc3RJdGVtc0FzU2VsZWN0ZWQoKTogdm9pZDtcblxuICAgIC8qKiBQcm92aWRlcyBtYXhpbXVtIGhlaWdodCBmb3IgdGhlIG9wdGlvblBhbmVsICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqIERhdGFzb3VyY2UgZm9yIHN1Z2dlc3Rpb24gbGlzdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEZkcE11bHRpSW5wdXREYXRhU291cmNlPGFueT4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRGF0YVNvdXJjZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZGF0YVNvdXJjZSgpOiBGZHBNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGF1dG9jb21wbGV0ZSBzaG91bGQgYmUgZW5hYmxlZDsgRW5hYmxlZCBieSBkZWZhdWx0ICovXG4gICAgQElucHV0KClcbiAgICBhdXRvQ29tcGxldGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVG9kbzogTmFtZSBvZiB0aGUgZW50aXR5IGZvciB3aGljaCBEYXRhUHJvdmlkZXIgd2lsbCBiZSBsb2FkZWQuIFlvdSBjYW4gZWl0aGVyIHBhc3MgbGlzdCBvZlxuICAgICAqIGl0ZW1zIG9yIHVzZSB0aGlzIGVudGl0eUNsYXNzIGFuZCBpbnRlcm5hbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIGRvIGxvb2t1cCB0byBzb21lIHJlZ2lzdHJ5XG4gICAgICogYW5kIHJldHJpZXZlIHRoZSBiZXN0IG1hdGNoaW5nIERhdGFQcm92aWRlciB0aGF0IGlzIHNldCBvbiBhcHBsaWNhdGlvbiBsZXZlbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW50aXR5Q2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBNdWx0aSBJbnB1dCBzaG91bGQgYmUgYnVpbHQgb24gbW9iaWxlIG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIE11bHRpIElucHV0IE1vYmlsZSBDb25maWd1cmF0aW9uLCBpdCdzIGFwcGxpZWQgb25seSwgd2hlbiBtb2JpbGUgaXMgZW5hYmxlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBidXR0b25Gb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKiBUZWxscyB0aGUgbXVsdGkgaW5wdXQgaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXAgPSBmYWxzZTtcblxuICAgIC8qKiBBIGZpZWxkIG5hbWUgdG8gdXNlIHRvIGdyb3VwIGRhdGEgYnkgKHN1cHBvcnQgZG90dGVkIG5vdGF0aW9uKSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBLZXk/OiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGZpZWxkIHRvIHNob3cgZGF0YSBpbiBzZWNvbmRhcnkgY29sdW1uICovXG4gICAgQElucHV0KClcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKiBUaGUgZmllbGQgdG8gc2hvdyBhdmF0YXIgaW1hZ2UgZGF0YSBpbiBzZWNvbmRhcnkgY29sdW1uICovXG4gICAgQElucHV0KClcbiAgICBhdmF0YXJzcmM/OiBzdHJpbmc7XG5cbiAgICAvKiogU2hvdyB0aGUgc2Vjb25kIGNvbHVtbiAoQXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlY29uZGFyeVRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ24gdGV4dCBpbnNpZGUgdGhlIHNlY29uZCBjb2x1bW4gKEFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6IFRleHRBbGlnbm1lbnQgPSAncmlnaHQnO1xuXG4gICAgLyoqIFR1cm5zIG9uL29mZiBBZGp1c3RhYmxlIFdpZHRoIGZlYXR1cmUgKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9SZXNpemUgPSBmYWxzZTtcbiAgICAvKiogV2hldGhlciB0byBvcGVuIHRoZSBkcm9wZG93biB3aGVuIHRoZSBhZGRvbiBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG9wZW5Ecm9wZG93bk9uQWRkT25DbGlja2VkID0gdHJ1ZTtcblxuICAgIC8qKiBWYWx1ZSBvZiB0aGUgbXVsdGkgaW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgdGhpcy5zZXRBc1NlbGVjdGVkKHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKHNlbGVjdGVkSXRlbXMpKTtcbiAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBldmVudCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZC9jbG9zZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25EYXRhUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgZmluaXNoZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWFyY2ggdGVybSBjaGFuZ2VzLiBVc2UgKiRldmVudCogdG8gYWNjZXNzIHRoZSBuZXcgdGVybS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBzZWFyY2hUZXJtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgLyoqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIGFkZG9uIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFkZE9uQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoRmRwTGlzdENvbXBvbmVudClcbiAgICBsaXN0Q29tcG9uZW50OiBMaXN0Q29tcG9uZW50PE11bHRpSW5wdXRPcHRpb24+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKVxuICAgIGN1c3RvbVRlbXBsYXRlczogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXRFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgc2VhcmNoSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gT3B0aW9uIGl0ZW0gVGVtcGxhdGVcbiAgICAgKiAqL1xuICAgIG9wdGlvbkl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIEdyb3VwIEhlYWRlciBpdGVtIFRlbXBsYXRlXG4gICAgICogKi9cbiAgICBncm91cEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIFNlY29uZGFyeSBpdGVtIFRlbXBsYXRlXG4gICAgICogKi9cbiAgICBzZWNvbmRhcnlJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIEN1c3RvbSBTZWxlY3RlZCBvcHRpb24gaXRlbSBUZW1wbGF0ZVxuICAgICAqICovXG4gICAgc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogaW5wdXQgdGV4dCBvZiB0aGUgaW5wdXQuICovXG4gICAgaW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgTXVsdGkgSW5wdXQgaXMgb3BlbmVkLiAqL1xuICAgIGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY2FuQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMubW9iaWxlICYmIHRoaXMubW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiBtYXRjaGVkIHN1Z2dlc3Rpb25zXG4gICAgICogKi9cbiAgICBfc3VnZ2VzdGlvbnM6IE11bHRpSW5wdXRPcHRpb25bXTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiBtYXRjaGVkIHN1Z2dlc3Rpb25zXG4gICAgICogKi9cbiAgICBfbmV3U3VnZ2VzdGlvbnM6IE11bHRpSW5wdXRPcHRpb25bXTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogTWF4IHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBtYXhXaWR0aD86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogTWluIHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICogKi9cbiAgICBtaW5XaWR0aD86IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIE5lZWQgZm9yIG9wZW5pbmcgbW9iaWxlIHZlcnNpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvcGVuQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG11bHRpSW5wdXRDb25maWcgPSBpbmplY3QoTXVsdGlJbnB1dENvbmZpZyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGF0YVNvdXJjZTogRmRwTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpYWxvZ0NvbmZpZyA9IGluamVjdChEaWFsb2dDb25maWcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgLyoqIEBoaWRkZW4gZW1pdHMgd2hlbmV2ZXIgdGhlcmUncmUgY2hhbmdlcyB0byB0aGUgaW5wdXRzLCB0aGF0IGFmZmVjdCB0aGUgZGF0YSBjcmVhdGlvbiBmcm9tIGRhdGEgc291cmNlICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdXBkYXRlRGF0YVNvdXJjZVZhbHVlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF0Y2hpbmdTdHJhdGVneTogTWF0Y2hpbmdTdHJhdGVneSA9IHRoaXMubXVsdGlJbnB1dENvbmZpZy5tYXRjaGluZ1N0cmF0ZWd5O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKiogS2V5cywgdGhhdCB3b24ndCB0cmlnZ2VyIHRoZSBwb3BvdmVyJ3Mgb3BlbiBzdGF0ZSwgd2hlbiBkaXNwYXRjaGVkIG9uIHNlYXJjaCBpbnB1dCAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vbk9wZW5pbmdLZXlzOiBudW1iZXJbXSA9IFtcbiAgICAgICAgRVNDQVBFLFxuICAgICAgICBFTlRFUixcbiAgICAgICAgQ09OVFJPTCxcbiAgICAgICAgVEFCLFxuICAgICAgICBTSElGVCxcbiAgICAgICAgVVBfQVJST1csXG4gICAgICAgIFJJR0hUX0FSUk9XLFxuICAgICAgICBET1dOX0FSUk9XLFxuICAgICAgICBMRUZUX0FSUk9XLFxuICAgICAgICBBTFQsXG4gICAgICAgIEJBQ0tTUEFDRVxuICAgIF07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29yaWdpbmFsU3VnZ2VzdGlvbnM6IGFueVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFdpbmRvd1Jlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnZ3JvdXAnIGluIGNoYW5nZXMgfHwgJ2dyb3VwS2V5JyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVEYXRhU291cmNlVmFsdWVzJC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdhdmF0YXJTcmMnIGluIGNoYW5nZXMgfHwgJ2Rlc2NyaXB0aW9uJyBpbiBjaGFuZ2VzIHx8ICd0aXRsZScgaW4gY2hhbmdlcyB8fCAndmFsdWUnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXModGhpcy5fb3JpZ2luYWxTdWdnZXN0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgICh0aGlzLmRhdGFTb3VyY2UgYXMgTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PikuY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiB3cml0ZSB2YWx1ZSBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgICAgICB0aGlzLnNldEFzU2VsZWN0ZWQodGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXMoc2VsZWN0ZWRJdGVtcykpO1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgc2VsZWN0IHBvcG92ZXIgYm9keS4gKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodGhpcy5pc09wZW4pO1xuICAgICAgICB0aGlzLm9wZW5DaGFuZ2UubmV4dCh0aGlzLmlzT3Blbik7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWFya0xpc3RJdGVtc0FzU2VsZWN0ZWQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKiBDbG9zZXMgdGhlIHNlbGVjdCBwb3BvdmVyIGJvZHkuICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybUNoYW5nZWQoKTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMub3BlbkNoYW5nZS5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnZlcnRPYmplY3RUb011bHRpSW5wdXRPcHRpb24oaXRlbXM6IGFueVtdKTogTXVsdGlJbnB1dE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWFyY2hUZXJtQ2hhbmdlZCh0ZXh0OiBzdHJpbmcgPSB0aGlzLmlucHV0VGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsIHRleHQpO1xuICAgICAgICBtYXAuc2V0KCdsaW1pdCcsIDEyKTtcbiAgICAgICAgdGhpcy5kcz8ubWF0Y2gobWFwKTtcblxuICAgICAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2UuZW1pdCh0ZXh0KTtcblxuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dMaXN0KGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZU9wdGlvbkl0ZW0odmFsdWU6IE11bHRpSW5wdXRPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbkl0ZW0odmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVQcmVzc0VudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2YWx1ZTogTXVsdGlJbnB1dE9wdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFTlRFUikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uSXRlbSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIEtleWRvd24gb24gSW5wdXRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25JbnB1dEtleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFRBQikgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dMaXN0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQ/Ll9zZXRDdXJyZW50QWN0aXZlSXRlbUluZGV4KDApO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudD8ubGlzdEl0ZW1zLmZpcnN0LmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9jaG9vc2VPdGhlckl0ZW0oLTEpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFU0NBUEUpKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgdGhpcy5zaG93TGlzdChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWV2ZW50LmN0cmxLZXkgJiYgIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCB0aGlzLl9ub25PcGVuaW5nS2V5cykpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHBhc3NlZCB0byBsaXN0IGNvbXBvbmVudCAqL1xuICAgIGhhbmRsZUxpc3RGb2N1c0VzY2FwZShkaXJlY3Rpb246IEZvY3VzRXNjYXBlRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4gdGhpcy5kaXNwbGF5VmFsdWUodmFsdWUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWNvbmRhcnlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKGlzT3B0aW9uSXRlbSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zZWNvbmRhcnlUZXh0ID8/ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSnNPYmplY3QodmFsdWUpICYmIHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5vYmplY3RHZXQodmFsdWUsIHRoaXMuZGVzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihjdXJyZW50SXRlbSkgPyBjdXJyZW50SXRlbSgpIDogY3VycmVudEl0ZW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGRzKCk6IE11bHRpSW5wdXREYXRhU291cmNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlIGFzIE11bHRpSW5wdXREYXRhU291cmNlPGFueT47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBwaWNrcyBvdGhlciB2YWx1ZSBtb3ZlZCBmcm9tIGN1cnJlbnQgb25lIGJ5IG9mZnNldCwgY2FsbGVkIG9ubHkgd2hlbiBNdWx0aSBJbnB1dCBpcyBjbG9zZWQgKi9cbiAgICBwcml2YXRlIF9jaG9vc2VPdGhlckl0ZW0ob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuX3N1Z2dlc3Rpb25zLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlLmxhYmVsID09PSB0aGlzLmlucHV0VGV4dCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25zW2luZGV4ICsgb2Zmc2V0XSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVPcHRpb25JdGVtKHRoaXMuX3N1Z2dlc3Rpb25zW2luZGV4ICsgb2Zmc2V0XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVEYXRhU291cmNlKGRzOiBGZHBNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gW107XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAodGhpcy5kYXRhU291cmNlIGFzIE11bHRpSW5wdXREYXRhU291cmNlPGFueT4pLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9kc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29udmVydCB3aGF0ZXZlciBjb21lcyBpbiBhcyBEYXRhU291cmNlIHNvIHdlIGNhbiB3b3JrIHdpdGggaXQgaWRlbnRpY2FsbHlcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMuX29wZW5EYXRhU3RyZWFtKGRzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29wZW5EYXRhU3RyZWFtKGRzOiBGZHBNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+KTogTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGluaXREYXRhU291cmNlID0gdGhpcy5fdG9EYXRhU3RyZWFtKGRzKTtcblxuICAgICAgICBpZiAoaW5pdERhdGFTb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbZGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gYXJyYXksIE9ic2VydmFibGUsIG9yIERhdGFTb3VyY2VgKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb250IHdhbnQgdG8gc2V0IGRhdGEgb24gZGlmZmVyZW50XG4gICAgICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluIGVpdGhlciB5b3UgZG8gYSBzZWFyY2ggYW5kIHlvdSB3YW50IHRvIHBhc3MgaW5pdGlhbCBkYXRhXG4gICAgICAgICAqIGl0cyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIGNvbnN0IGRzU3ViID0gY29tYmluZUxhdGVzdChbaW5pdERhdGFTb3VyY2Uub3BlbigpLCB0aGlzLl91cGRhdGVEYXRhU291cmNlVmFsdWVzJC5waXBlKHN0YXJ0V2l0aChudWxsKSldKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbZGF0YV0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbFN1Z2dlc3Rpb25zID0gZGF0YTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGRhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoJ2luaXREYXRhU291cmNlLm9wZW4oKS4nKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChkc1N1Yik7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKGluaXREYXRhU291cmNlLm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSh0aGlzLm9uRGF0YVJlcXVlc3RlZCkpO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoaW5pdERhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQoKS5zdWJzY3JpYmUodGhpcy5vbkRhdGFSZWNlaXZlZCkpO1xuXG4gICAgICAgIGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci5zZXRMb29rdXBLZXkodGhpcy5sb29rdXBLZXkpO1xuICAgICAgICBjb25zdCBtYXRjaGluZ0J5OiBNYXRjaGluZ0J5ID0ge1xuICAgICAgICAgICAgZmlyc3RCeTogdGhpcy5fZGlzcGxheUZuXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQnkuc2Vjb25kYXJ5QnkgPSB0aGlzLl9zZWNvbmRhcnlGbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci5zZXRNYXRjaGluZ0J5KG1hdGNoaW5nQnkpO1xuICAgICAgICBpbml0RGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuc2V0TWF0Y2hpbmdTdHJhdGVneSh0aGlzLl9tYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsICcqJyk7XG4gICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgMTIpO1xuICAgICAgICBpbml0RGF0YVNvdXJjZS5tYXRjaChtYXApO1xuXG4gICAgICAgIHJldHVybiBpbml0RGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RvRGF0YVN0cmVhbShzb3VyY2U6IEZkcE11bHRpSW5wdXREYXRhU291cmNlPGFueT4pOiBNdWx0aUlucHV0RGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlIGFzIE11bHRpSW5wdXREYXRhU291cmNlPGFueT47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgICAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHRvIHdvcmsgb24gdG9wIG9mIGFycmF5c1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpSW5wdXREYXRhU291cmNlPGFueT4oc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc09ic2VydmFibGUoc291cmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlTXVsdGlJbnB1dERhdGFTb3VyY2U8YW55Pihzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRXaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2dldE9wdGlvbnNMaXN0V2lkdGgoKTtcblxuICAgICAgICBpZiAoIXRoaXMuYXV0b1Jlc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZ2V0T3B0aW9uc0xpc3RXaWR0aCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE9wdGlvbnNMaXN0V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICBjb25zdCByZWN0ID0gKHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcignZmQtaW5wdXQtZ3JvdXAnKSBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gYm9keS5vZmZzZXRXaWR0aCAtIGJvZHkuY2xpZW50V2lkdGg7XG4gICAgICAgIHRoaXMubWF4V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbEJhcldpZHRoIC0gcmVjdC5sZWZ0O1xuICAgICAgICB0aGlzLm1pbldpZHRoID0gcmVjdC53aWR0aCAtIDI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvcmlnaW5hbCBkYXRhIHRvIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9PcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBNdWx0aUlucHV0T3B0aW9uW10ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbMF07XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0gPSBpc09wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIE11bHRpSW5wdXRPcHRpb25bXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNPYmplY3QgPSBpc0pzT2JqZWN0KGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzU3RyaW5nID0gaXNTdHJpbmcoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgZGF0YSB0byBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXBLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvR3JvdXBPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93U2Vjb25kYXJ5VGV4dCAmJiB0aGlzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gZGF0YSB0byBHcm91cCBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXM8Sz4oaXRlbXM6IEtbXSk6IE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwOiB7IFtrZXk6IHN0cmluZ106IEtbXSB9ID0ge307XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsdWUgPSB0aGlzLmdyb3VwS2V5ICYmIGl0ZW1bdGhpcy5ncm91cEtleV07XG4gICAgICAgICAgICBpZiAoIWtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZ3JvdXBba2V5VmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBba2V5VmFsdWVdID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdyb3VwW2tleVZhbHVlXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyb3VwKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0SXRlbTogTXVsdGlJbnB1dE9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBsYWJlbDoga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IHRydWVcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGdyb3VwW2tleV07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dTZWNvbmRhcnlUZXh0ICYmIHRoaXMuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtLmNoaWxkcmVuID0gdGhpcy5fY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0SXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIFNlY29uZGFyeSBPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zPEs+KGl0ZW1zOiBLW10pOiBNdWx0aUlucHV0T3B0aW9uW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogTXVsdGlJbnB1dE9wdGlvbltdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgYXZhdGFyU3JjOiB0aGlzLmF2YXRhcnNyYyA/IHRoaXMub2JqZWN0R2V0KHZhbHVlLCB0aGlzLmF2YXRhcnNyYykgOiBudWxsLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uID8gdGhpcy5vYmplY3RHZXQodmFsdWUsIHRoaXMuZGVzY3JpcHRpb24pIDogbnVsbCxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBQcmltaXRpdmUgZGF0YShCb29sZWFuLCBTdHJpbmcsIE51bWJlcikgdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRQcmltaXRpdmVUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBNdWx0aUlucHV0T3B0aW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gdG8gT3B0aW9uSXRlbXMgSW50ZXJmYWNlIChEZWZhdWx0KVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IE11bHRpSW5wdXRPcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBNdWx0aUlucHV0T3B0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheVZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBBc3NpZ24gY3VzdG9tIHRlbXBsYXRlc1xuICAgICAqICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0ZW1wbGF0ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3B0aW9uSXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25JdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JvdXBJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZGFyeUl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5SXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdGVkSXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -2353,9 +2353,6 @@ class BaseMultiInput extends CollectionBaseInput {
2353
2353
  this.isOpen = false;
2354
2354
  this.inputText = '';
2355
2355
  this.searchTermChanged();
2356
- if (!this.mobile) {
2357
- this.searchInputElement.nativeElement.focus();
2358
- }
2359
2356
  this.isOpenChange.emit(false);
2360
2357
  this.openChange.next(false);
2361
2358
  this.markForCheck();