novo-elements 10.10.0-next.1 → 10.10.0-next.3

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.
@@ -69,6 +69,16 @@ export declare class ConditionBuilderComponent implements OnInit, OnChanges, Aft
69
69
  * @param fieldConfig
70
70
  */
71
71
  changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>): void;
72
+ /**
73
+ * Resets the input and operator view containers, regenerates the field templates,
74
+ * and marks the component for change detection.
75
+ *
76
+ * Use this method after updating form controls to reinitialize the input and
77
+ * operator fields so that the view reflects the latest form control changes.
78
+ *
79
+ * @returns void
80
+ */
81
+ resetInputAndOperator(): void;
72
82
  getField(): BaseFieldDef;
73
83
  getDefaultField(): string;
74
84
  updateFieldSelection(): void;
@@ -147,7 +147,9 @@ export class NovoPickerElement {
147
147
  this.onModelChange(this._value);
148
148
  if (wipeTerm) {
149
149
  this.term = '';
150
- this.popup.instance.customTextValue = null;
150
+ if (this.popup?.instance) {
151
+ this.popup.instance.customTextValue = null;
152
+ }
151
153
  this.hideResults();
152
154
  }
153
155
  this.ref.markForCheck();
@@ -420,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
420
422
  type: ViewChild,
421
423
  args: ['input', { static: true }]
422
424
  }] } });
423
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcGlja2VyL1BpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFPLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLDREQUE0RDtBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQUV0RSxzREFBc0Q7QUFDdEQsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUF1Q0gsTUFBTSxPQUFPLGlCQUFpQjtJQThDNUIs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OztHQStCVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJOzRJQUtyQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTlELE1BQU07c0JBREwsS0FBSztnQkFHTixXQUFXO3NCQURWLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBR04sS0FBSztzQkFESixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQWFOLE9BQU87c0JBRE4sTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU07Z0JBR1AsS0FBSztzQkFESixNQUFNO2dCQUdQLElBQUk7c0JBREgsTUFBTTtnQkFHUCxNQUFNO3NCQURMLE1BQU07Z0JBR1AsR0FBRztzQkFERixNQUFNO2dCQUlBLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2xELEtBQUs7c0JBRFgsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRVdGlscyB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVycywgS2V5LCBub3RpZnkgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IE5vdm9PdmVybGF5VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG4vLyBpbXBvcnQgeyBOb3ZvQ29udHJvbENvbmZpZyB9IGZyb20gJy4uL2Zvcm0vRm9ybUNvbnRyb2xzJztcbmltcG9ydCB7IFBpY2tlclJlc3VsdHMgfSBmcm9tICcuL2V4dHJhcy9waWNrZXItcmVzdWx0cy9QaWNrZXJSZXN1bHRzJztcblxuLy8gVmFsdWUgYWNjZXNzb3IgZm9yIHRoZSBjb21wb25lbnQgKHN1cHBvcnRzIG5nTW9kZWwpXG5jb25zdCBQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvUGlja2VyRWxlbWVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9USU1FID0gMjUwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHRoZSBkaXJlY3RpdmUgZGVmaW5pdGlvbiBvZiB0aGUgUGlja2VyLiBJZiB5b3UgYWRkIGFuIGF0dHJpYnV0ZSBvZiBgcGlja2VyYCB0byBhbiBpbnB1dCxcbiAqIGl0IHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBwaWNrZXIgd2hpY2ggd3JhcHMgdGhlIGlucHV0IGluIGFsbCBvZiB0aGUgcGlja2VyIEhUTUwgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdHkuXG4gKiBQaWNrZXIgc2hvdWxkIGJlIGFkZGVkIGFzIGEgdHdvLXdheSBib3VuZCBuZ01vZGVsIGluc3RhbmNlIGBbKHBpY2tlcildPVwiXCJgIGluIG9yZGVyIHRvIGhhdmUgdGhlIHBpY2tlciBvcHRpb25zXG4gKiBkeW5hbWljYWxseSBwb3B1bGF0ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1waWNrZXInLFxuICBwcm92aWRlcnM6IFtQSUNLRVJfVkFMVUVfQUNDRVNTT1JdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpIGNsYXNzPVwiYmhpLW1vcmVcIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiAhX3ZhbHVlXCI+PC9pPlxuICAgIDxpIGNsYXNzPVwiYmhpLXt7IGNvbmZpZz8uZW50aXR5SWNvbiB9fSBlbnRpdHktaWNvbiB7eyBjb25maWc/LmVudGl0eUljb24gfX1cIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiBfdmFsdWVcIj48L2k+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cInBpY2tlci1pbnB1dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInRlcm1cIlxuICAgICAgW2NsYXNzLmVudGl0eS1waWNrZXJdPVwiY29uZmlnPy5lbnRpdHlJY29uXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGVja1Rlcm0oJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAjaW5wdXRcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgIC8+XG4gICAgPGkgY2xhc3M9XCJiaGktc2VhcmNoXCIgKm5nSWY9XCIoIV92YWx1ZSB8fCBjbGVhclZhbHVlT25TZWxlY3QpICYmICFkaXNhYmxlUGlja2VySW5wdXRcIj48L2k+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwiYmhpLXRpbWVzXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAqbmdJZj1cIl92YWx1ZSAmJiAhY2xlYXJWYWx1ZU9uU2VsZWN0ICYmICFkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUodHJ1ZSlcIlxuICAgID48L2k+XG4gICAgPG5vdm8tb3ZlcmxheS10ZW1wbGF0ZSBjbGFzcz1cInBpY2tlci1yZXN1bHRzLWNvbnRhaW5lclwiIFtwYXJlbnRdPVwiZWxlbWVudFwiIFt3aWR0aF09XCJ3aWR0aFwiIFttaW5XaWR0aF09XCJtaW5XaWR0aFwiIHBvc2l0aW9uPVwiYWJvdmUtYmVsb3dcIiAoY2xvc2luZyk9XCJvbk92ZXJsYXlDbG9zZWQoKVwiPlxuICAgICAgPHNwYW4gI3Jlc3VsdHM+PC9zcGFuPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbm92by1vdmVybGF5LXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9QaWNrZXIuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvUGlja2VyRWxlbWVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIENvbnRhaW5lciBmb3IgdGhlIHJlc3VsdHNcbiAgQFZpZXdDaGlsZCgncmVzdWx0cycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHJlc3VsdHM6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGNsZWFyVmFsdWVPblNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBBcnJheTxhbnk+ID0gW107XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgYXBwZW5kVG9Cb2R5OiBib29sZWFuID0gZmFsc2U7XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgcGFyZW50U2Nyb2xsU2VsZWN0b3I6IHN0cmluZztcbiAgLy8gRGVwcmVjYXRlZFxuICBASW5wdXQoKVxuICBwYXJlbnRTY3JvbGxBY3Rpb246IHN0cmluZyA9ICdjbG9zZSc7XG4gIC8vIEN1c3RvbSBjbGFzcyBmb3IgdGhlIGRyb3Bkb3duIGNvbnRhaW5lclxuICBASW5wdXQoKVxuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAvLyBTaWRlIHRoZSBkcm9wZG93biB3aWxsIG9wZW5cbiAgQElucHV0KClcbiAgc2lkZTogc3RyaW5nID0gJ2xlZnQnO1xuICAvLyBBdXRvc2VsZWN0cyB0aGUgZmlyc3Qgb3B0aW9uIGluIHRoZSByZXN1bHRzXG4gIEBJbnB1dCgpXG4gIGF1dG9TZWxlY3RGaXJzdE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQElucHV0KClcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIGFsbG93Q3VzdG9tVmFsdWVzID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1pbldpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGFsbG93VGFiTmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIERpc2FibGUgZnJvbSB0eXBpbmcgaW50byB0aGUgcGlja2VyIChyZXN1bHQgdGVtcGxhdGUgZG9lcyBldmVyeXRoaW5nKVxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZVBpY2tlcklucHV0KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBnZXQgZGlzYWJsZVBpY2tlcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlUGlja2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBFbWl0dGVyIGZvciBzZWxlY3RzXG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHR5cGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICB0YWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGNvbnRhaW5lcjogTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgdGVybTogc3RyaW5nID0gJyc7XG4gIHJlc3VsdHNDb21wb25lbnQ6IGFueTtcbiAgcG9wdXA6IENvbXBvbmVudFJlZjxhbnk+O1xuICBfdmFsdWU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcbiAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgY29tcG9uZW50VXRpbHM6IENvbXBvbmVudFV0aWxzLCBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMub3ZlcnJpZGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm92ZXJyaWRlRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICBub3RpZnkoYCdhcHBlbmRUb0JvZHknIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUgdGhpcyBhdHRyaWJ1dGUuYCk7XG4gICAgfVxuICAgIGxldCBkZWJvdW5jZVRpbWVJbk1pbGxpU2Vjb25kcyA9IE51bWJlci5pc05hTihOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSkgPyBERUZBVUxUX0RFQk9VTkNFX1RJTUUgOiBOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKTtcbiAgICAvLyBDdXN0b20gcmVzdWx0cyB0ZW1wbGF0ZVxuICAgIHRoaXMucmVzdWx0c0NvbXBvbmVudCA9IHRoaXMuY29uZmlnLnJlc3VsdHNUZW1wbGF0ZSB8fCBQaWNrZXJSZXN1bHRzO1xuICAgIC8vIEdldCBhbGwgZGlzdGluY3Qga2V5IHVwIGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBhbmQgb25seSBmaXJlIGlmIGxvbmcgZW5vdWdoIGFuZCBkaXN0aW5jdFxuICAgIC8vIGxldCBpbnB1dCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgY29uc3QgcGFzdGVPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdwYXN0ZScpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcGFzdGVPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB0aGlzLm9uRGVib3VuY2VkS2V5dXAoZXZlbnQpLFxuICAgICAgKGVycikgPT4gdGhpcy5oaWRlUmVzdWx0cyhlcnIpLFxuICAgICk7XG4gICAgY29uc3Qga2V5Ym9hcmRPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAga2V5Ym9hcmRPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25EZWJvdW5jZWRLZXl1cChldmVudCksXG4gICAgICAoZXJyKSA9PiB0aGlzLmhpZGVSZXN1bHRzKGVyciksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25EZWJvdW5jZWRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCB8IENsaXBib2FyZEV2ZW50KSB7XG4gICAgaWYgKFtLZXkuRXNjYXBlLCBLZXkuQXJyb3dEb3duLCBLZXkuQXJyb3dVcCwgS2V5LkVudGVyLCBLZXkuVGFiXS5zb21lKChrZXkpID0+IGtleSA9PT0gKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93KChldmVudC50YXJnZXQgYXMgYW55KS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGFpbmVyLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXIuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYW5lbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLnBhbmVsT3BlbjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdyh0ZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICAvLyBTaG93IHRoZSByZXN1bHRzIGluc2lkZVxuICAgIHRoaXMuc2hvd1Jlc3VsdHModGVybSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUGlja2VySW5wdXQpIHtcbiAgICAgIEhlbHBlcnMuc3dhbGxvd0V2ZW50KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFuZWxPcGVuICYmICF0aGlzLmRpc2FibGVQaWNrZXJJbnB1dCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVzY2FwZSB8fCAoZXZlbnQua2V5ID09PSBLZXkuVGFiICYmICF0aGlzLmFsbG93VGFiTmF2aWdhdGlvbikpIHtcbiAgICAgICAgdGhpcy5oaWRlUmVzdWx0cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd1VwKSB7XG4gICAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UucHJldkFjdGl2ZU1hdGNoKCk7XG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd0Rvd24pIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5uZXh0QWN0aXZlTWF0Y2goKTtcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVudGVyKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU1hdGNoID0gdGhpcy5wb3B1cC5pbnN0YW5jZS5hY3RpdmVNYXRjaDtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbGVjdGVkKSA9PiBhY3RpdmVNYXRjaCAmJiBhY3RpdmVNYXRjaC52YWx1ZSAmJiBzZWxlY3RlZC52YWx1ZSA9PT0gYWN0aXZlTWF0Y2gudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RBY3RpdmVNYXRjaCgpO1xuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKChldmVudC5rZXkgPT09IEtleS5CYWNrc3BhY2UgfHwgZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlKSAmJiAhSGVscGVycy5pc0VtcHR5KHRoaXMuX3ZhbHVlKSAmJiAodGhpcy5fdmFsdWUgPT09IHRoaXMudGVybSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlICYmIEhlbHBlcnMuaXNCbGFuayh0aGlzLl92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93VGFiTmF2aWdhdGlvbiAmJiBldmVudC5rZXkgPT09IEtleS5UYWIpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgdGhpcy50YWIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyVmFsdWUod2lwZVRlcm0pIHtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogdGhpcy5fdmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiAnJywgdmFsdWU6IHRoaXMuX3ZhbHVlIH0gfSk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcblxuICAgIGlmICh3aXBlVGVybSkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmN1c3RvbVRleHRWYWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmhpZGVSZXN1bHRzKCk7XG4gICAgfVxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBXaGVuIHRoZSBpbnB1dCdzIGZvY3VzIGV2ZW50IGlzIGNhbGxlZCB0aGlzIG1ldGhvZCBjYWxscyB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGlzcGxheXMgdGhlXG4gICAqIHJlc3VsdHMuXG4gICAqL1xuICBvbkZvY3VzKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnBhbmVsT3Blbikge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXMuZW1pdChldmVudCk7XG4gIH1cblxuICAvLyBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSByZXN1bHRzIChjYWxsZWQgcG9wdXApIGFuZCBhZGRzIGFsbCB0aGUgYmluZGluZ3MgdG8gdGhhdCBpbnN0YW5jZS5cbiAgc2hvd1Jlc3VsdHModGVybT86IGFueSkge1xuICAgIC8vIFVwZGF0ZSBNYXRjaGVzXG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBsaXN0IG9yIGNyZWF0ZSB0aGUgRE9NIGVsZW1lbnRcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnRlcm0gPSB0aGlzLnRlcm07XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuYXV0b1NlbGVjdEZpcnN0T3B0aW9uID0gdGhpcy5hdXRvU2VsZWN0Rmlyc3RPcHRpb247XG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3B1cCA9IHRoaXMuY29tcG9uZW50VXRpbHMuYXBwZW5kKHRoaXMucmVzdWx0c0NvbXBvbmVudCwgdGhpcy5yZXN1bHRzKTtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UucGFyZW50ID0gdGhpcztcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuY29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnRlcm0gPSB0aGlzLnRlcm07XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuYXV0b1NlbGVjdEZpcnN0T3B0aW9uID0gdGhpcy5hdXRvU2VsZWN0Rmlyc3RPcHRpb247XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLm92ZXJsYXkgPSB0aGlzLmNvbnRhaW5lci5vdmVybGF5UmVmO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGVsbHMgdGhlIG92ZXJsYXkgY29tcG9uZW50IHRvIGhpZGUgdGhlIHBpY2tlciByZXN1bHRzIGZyb20gdGhlIERPTSB3aXRob3V0IGRlbGV0aW5nIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgcG9wdXAgaW5zdGFuY2UgY3JlYXRlZCBpblxuICAvLyBzaG93UmVzdWx0cy4gVGhlIHBvcHVwIGluc3RhbmNlIHdpbGwgcmVtYWluIGluIG1lbW9yeSBmcm9tIHRoZSBmaXJzdCB0aW1lIHRoZSByZXN1bHRzIGFyZSBzaG93biB1bnRpbCB0aGlzIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXG4gIGhpZGVSZXN1bHRzKGVycj86IGFueSkge1xuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gQ2xlYW5zIHVwIGxpc3RlbmVycyBmb3IgdGhlIHBvcHVwIC0gd2lsbCBnZXQgZXhlY3V0ZWQgbm8gbWF0dGVyIGhvdyB0aGUgcG9wdXAgaXMgY2xvc2VkLlxuICBvbk92ZXJsYXlDbG9zZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucG9wdXAgJiYgdGhpcy5wb3B1cC5pbnN0YW5jZSAmJiB0aGlzLnBvcHVwLmluc3RhbmNlLmNsZWFuVXApIHtcbiAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UuY2xlYW5VcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGdldCBhY2Nlc3NvclxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xuICBzZXQgdmFsdWUoc2VsZWN0ZWQpIHtcbiAgICBpZiAoIXNlbGVjdGVkKSB7XG4gICAgICB0aGlzLnRlcm0gPSAnJztcbiAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZC52YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMudGVybSA9IHRoaXMuY2xlYXJWYWx1ZU9uU2VsZWN0ID8gJycgOiBzZWxlY3RlZC5sYWJlbDtcbiAgICAgIHRoaXMuX3ZhbHVlID0gc2VsZWN0ZWQudmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdCh7IHZhbHVlOiBzZWxlY3RlZC52YWx1ZSwgcmF3VmFsdWU6IHsgbGFiZWw6IHRoaXMudGVybSwgdmFsdWU6IHNlbGVjdGVkLnZhbHVlIH0gfSk7XG4gICAgICB0aGlzLnNlbGVjdC5lbWl0KHNlbGVjdGVkKTtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZShzZWxlY3RlZC52YWx1ZSk7XG4gICAgICBpZiAodGhpcy5wb3B1cCkge1xuICAgICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZXJtID0gdGhpcy5jbGVhclZhbHVlT25TZWxlY3QgPyAnJyA6IHNlbGVjdGVkLmxhYmVsO1xuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogc2VsZWN0ZWQudmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiB0aGlzLnRlcm0sIHZhbHVlOiB0aGlzLl92YWx1ZSB9IH0pO1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChzZWxlY3RlZCk7XG4gICAgfVxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gTWFrZXMgc3VyZSB0byBjbGVhciB0aGUgbW9kZWwgaWYgdGhlIHVzZXIgY2xlYXJzIHRoZSB0ZXh0IGJveFxuICBjaGVja1Rlcm0oZXZlbnQpIHtcbiAgICB0aGlzLnR5cGluZy5lbWl0KGV2ZW50KTtcbiAgICBpZiAodGhpcy5hbGxvd0N1c3RvbVZhbHVlcykge1xuICAgICAgaWYgKHRoaXMudGVybSkge1xuICAgICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmN1c3RvbVRleHRWYWx1ZSA9IHsgbGFiZWw6IHRoaXMudGVybSwgdmFsdWU6IHRoaXMudGVybSB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmN1c3RvbVRleHRWYWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgoIWV2ZW50IHx8ICFldmVudC5sZW5ndGgpICYmICFIZWxwZXJzLmlzRW1wdHkodGhpcy5fdmFsdWUpKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIFNldCB0b3VjaGVkIG9uIGJsdXJcbiAgb25Ub3VjaGVkKGV2ZW50PzogRXZlbnQpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY2xlYXJWYWx1ZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnRlcm0gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXRoaXMuY29uZmlnLnVzZUdldExhYmVscykge1xuICAgICAgICB0aGlzLnRlcm0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUubGFiZWwpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUubGFiZWw7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLmZpcnN0TmFtZSkge1xuICAgICAgICB0aGlzLnRlcm0gPSBgJHt2YWx1ZS5maXJzdE5hbWV9ICR7dmFsdWUubGFzdE5hbWV9YDtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUubmFtZSkge1xuICAgICAgICB0aGlzLnRlcm0gPSB2YWx1ZS5uYW1lO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb25maWcuZ2V0TGFiZWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmdldExhYmVscyh2YWx1ZSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy50ZXJtID0gcmVzdWx0Lmxlbmd0aCA/IHJlc3VsdFswXS5sYWJlbCB8fCAnJyA6IHJlc3VsdC5sYWJlbCB8fCAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50ZXJtID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUudGl0bGUpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUudGl0bGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRlcm0gPSB2YWx1ZSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZVBpY2tlcklucHV0ID0gZGlzYWJsZWQ7XG4gIH1cbn1cbiJdfQ==
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcGlja2VyL1BpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFPLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLDREQUE0RDtBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQUV0RSxzREFBc0Q7QUFDdEQsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFFbEM7Ozs7O0dBS0c7QUF1Q0gsTUFBTSxPQUFPLGlCQUFpQjtJQThDNUIs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cnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRVdGlscyB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVycywgS2V5LCBub3RpZnkgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcbmltcG9ydCB7IE5vdm9PdmVybGF5VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG4vLyBpbXBvcnQgeyBOb3ZvQ29udHJvbENvbmZpZyB9IGZyb20gJy4uL2Zvcm0vRm9ybUNvbnRyb2xzJztcbmltcG9ydCB7IFBpY2tlclJlc3VsdHMgfSBmcm9tICcuL2V4dHJhcy9waWNrZXItcmVzdWx0cy9QaWNrZXJSZXN1bHRzJztcblxuLy8gVmFsdWUgYWNjZXNzb3IgZm9yIHRoZSBjb21wb25lbnQgKHN1cHBvcnRzIG5nTW9kZWwpXG5jb25zdCBQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvUGlja2VyRWxlbWVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3QgREVGQVVMVF9ERUJPVU5DRV9USU1FID0gMjUwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIHRoZSBkaXJlY3RpdmUgZGVmaW5pdGlvbiBvZiB0aGUgUGlja2VyLiBJZiB5b3UgYWRkIGFuIGF0dHJpYnV0ZSBvZiBgcGlja2VyYCB0byBhbiBpbnB1dCxcbiAqIGl0IHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBwaWNrZXIgd2hpY2ggd3JhcHMgdGhlIGlucHV0IGluIGFsbCBvZiB0aGUgcGlja2VyIEhUTUwgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdHkuXG4gKiBQaWNrZXIgc2hvdWxkIGJlIGFkZGVkIGFzIGEgdHdvLXdheSBib3VuZCBuZ01vZGVsIGluc3RhbmNlIGBbKHBpY2tlcildPVwiXCJgIGluIG9yZGVyIHRvIGhhdmUgdGhlIHBpY2tlciBvcHRpb25zXG4gKiBkeW5hbWljYWxseSBwb3B1bGF0ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbm92by1waWNrZXInLFxuICBwcm92aWRlcnM6IFtQSUNLRVJfVkFMVUVfQUNDRVNTT1JdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpIGNsYXNzPVwiYmhpLW1vcmVcIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiAhX3ZhbHVlXCI+PC9pPlxuICAgIDxpIGNsYXNzPVwiYmhpLXt7IGNvbmZpZz8uZW50aXR5SWNvbiB9fSBlbnRpdHktaWNvbiB7eyBjb25maWc/LmVudGl0eUljb24gfX1cIiAqbmdJZj1cImNvbmZpZz8uZW50aXR5SWNvbiAmJiBfdmFsdWVcIj48L2k+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cInBpY2tlci1pbnB1dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInRlcm1cIlxuICAgICAgW2NsYXNzLmVudGl0eS1waWNrZXJdPVwiY29uZmlnPy5lbnRpdHlJY29uXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGVja1Rlcm0oJGV2ZW50KVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgkZXZlbnQpXCJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAjaW5wdXRcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgIC8+XG4gICAgPGkgY2xhc3M9XCJiaGktc2VhcmNoXCIgKm5nSWY9XCIoIV92YWx1ZSB8fCBjbGVhclZhbHVlT25TZWxlY3QpICYmICFkaXNhYmxlUGlja2VySW5wdXRcIj48L2k+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwiYmhpLXRpbWVzXCJcbiAgICAgIFtjbGFzcy5lbnRpdHktc2VsZWN0ZWRdPVwiY29uZmlnPy5lbnRpdHlJY29uICYmIF92YWx1ZVwiXG4gICAgICAqbmdJZj1cIl92YWx1ZSAmJiAhY2xlYXJWYWx1ZU9uU2VsZWN0ICYmICFkaXNhYmxlUGlja2VySW5wdXRcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUodHJ1ZSlcIlxuICAgID48L2k+XG4gICAgPG5vdm8tb3ZlcmxheS10ZW1wbGF0ZSBjbGFzcz1cInBpY2tlci1yZXN1bHRzLWNvbnRhaW5lclwiIFtwYXJlbnRdPVwiZWxlbWVudFwiIFt3aWR0aF09XCJ3aWR0aFwiIFttaW5XaWR0aF09XCJtaW5XaWR0aFwiIHBvc2l0aW9uPVwiYWJvdmUtYmVsb3dcIiAoY2xvc2luZyk9XCJvbk92ZXJsYXlDbG9zZWQoKVwiPlxuICAgICAgPHNwYW4gI3Jlc3VsdHM+PC9zcGFuPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbm92by1vdmVybGF5LXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9QaWNrZXIuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvUGlja2VyRWxlbWVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIENvbnRhaW5lciBmb3IgdGhlIHJlc3VsdHNcbiAgQFZpZXdDaGlsZCgncmVzdWx0cycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHJlc3VsdHM6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGNsZWFyVmFsdWVPblNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBBcnJheTxhbnk+ID0gW107XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgYXBwZW5kVG9Cb2R5OiBib29sZWFuID0gZmFsc2U7XG4gIC8vIERlcHJlY2F0ZWRcbiAgQElucHV0KClcbiAgcGFyZW50U2Nyb2xsU2VsZWN0b3I6IHN0cmluZztcbiAgLy8gRGVwcmVjYXRlZFxuICBASW5wdXQoKVxuICBwYXJlbnRTY3JvbGxBY3Rpb246IHN0cmluZyA9ICdjbG9zZSc7XG4gIC8vIEN1c3RvbSBjbGFzcyBmb3IgdGhlIGRyb3Bkb3duIGNvbnRhaW5lclxuICBASW5wdXQoKVxuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAvLyBTaWRlIHRoZSBkcm9wZG93biB3aWxsIG9wZW5cbiAgQElucHV0KClcbiAgc2lkZTogc3RyaW5nID0gJ2xlZnQnO1xuICAvLyBBdXRvc2VsZWN0cyB0aGUgZmlyc3Qgb3B0aW9uIGluIHRoZSByZXN1bHRzXG4gIEBJbnB1dCgpXG4gIGF1dG9TZWxlY3RGaXJzdE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQElucHV0KClcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIGFsbG93Q3VzdG9tVmFsdWVzID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1pbldpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGFsbG93VGFiTmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIERpc2FibGUgZnJvbSB0eXBpbmcgaW50byB0aGUgcGlja2VyIChyZXN1bHQgdGVtcGxhdGUgZG9lcyBldmVyeXRoaW5nKVxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZVBpY2tlcklucHV0KHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBnZXQgZGlzYWJsZVBpY2tlcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlUGlja2VySW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlUGlja2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBFbWl0dGVyIGZvciBzZWxlY3RzXG4gIEBPdXRwdXQoKVxuICBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBmb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHR5cGluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKVxuICB0YWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGNvbnRhaW5lcjogTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgdGVybTogc3RyaW5nID0gJyc7XG4gIHJlc3VsdHNDb21wb25lbnQ6IGFueTtcbiAgcG9wdXA6IENvbXBvbmVudFJlZjxhbnk+O1xuICBfdmFsdWU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcbiAgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgY29tcG9uZW50VXRpbHM6IENvbXBvbmVudFV0aWxzLCBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMub3ZlcnJpZGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm92ZXJyaWRlRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICBub3RpZnkoYCdhcHBlbmRUb0JvZHknIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUgdGhpcyBhdHRyaWJ1dGUuYCk7XG4gICAgfVxuICAgIGxldCBkZWJvdW5jZVRpbWVJbk1pbGxpU2Vjb25kcyA9IE51bWJlci5pc05hTihOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSkgPyBERUZBVUxUX0RFQk9VTkNFX1RJTUUgOiBOdW1iZXIodGhpcy5jb25maWc/LmRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKTtcbiAgICAvLyBDdXN0b20gcmVzdWx0cyB0ZW1wbGF0ZVxuICAgIHRoaXMucmVzdWx0c0NvbXBvbmVudCA9IHRoaXMuY29uZmlnLnJlc3VsdHNUZW1wbGF0ZSB8fCBQaWNrZXJSZXN1bHRzO1xuICAgIC8vIEdldCBhbGwgZGlzdGluY3Qga2V5IHVwIGV2ZW50cyBmcm9tIHRoZSBpbnB1dCBhbmQgb25seSBmaXJlIGlmIGxvbmcgZW5vdWdoIGFuZCBkaXN0aW5jdFxuICAgIC8vIGxldCBpbnB1dCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgY29uc3QgcGFzdGVPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdwYXN0ZScpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgcGFzdGVPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB0aGlzLm9uRGVib3VuY2VkS2V5dXAoZXZlbnQpLFxuICAgICAgKGVycikgPT4gdGhpcy5oaWRlUmVzdWx0cyhlcnIpLFxuICAgICk7XG4gICAgY29uc3Qga2V5Ym9hcmRPYnNlcnZlciA9IGZyb21FdmVudCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoZGVib3VuY2VUaW1lKGRlYm91bmNlVGltZUluTWlsbGlTZWNvbmRzKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAga2V5Ym9hcmRPYnNlcnZlci5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25EZWJvdW5jZWRLZXl1cChldmVudCksXG4gICAgICAoZXJyKSA9PiB0aGlzLmhpZGVSZXN1bHRzKGVyciksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25EZWJvdW5jZWRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCB8IENsaXBib2FyZEV2ZW50KSB7XG4gICAgaWYgKFtLZXkuRXNjYXBlLCBLZXkuQXJyb3dEb3duLCBLZXkuQXJyb3dVcCwgS2V5LkVudGVyLCBLZXkuVGFiXS5zb21lKChrZXkpID0+IGtleSA9PT0gKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLmtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93KChldmVudC50YXJnZXQgYXMgYW55KS52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGFpbmVyLm9wZW5QYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXIuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYW5lbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLnBhbmVsT3BlbjtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdyh0ZXJtPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICAvLyBTaG93IHRoZSByZXN1bHRzIGluc2lkZVxuICAgIHRoaXMuc2hvd1Jlc3VsdHModGVybSk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlUGlja2VySW5wdXQpIHtcbiAgICAgIEhlbHBlcnMuc3dhbGxvd0V2ZW50KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucGFuZWxPcGVuICYmICF0aGlzLmRpc2FibGVQaWNrZXJJbnB1dCkge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVzY2FwZSB8fCAoZXZlbnQua2V5ID09PSBLZXkuVGFiICYmICF0aGlzLmFsbG93VGFiTmF2aWdhdGlvbikpIHtcbiAgICAgICAgdGhpcy5oaWRlUmVzdWx0cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd1VwKSB7XG4gICAgICAgIHRoaXMucG9wdXAuaW5zdGFuY2UucHJldkFjdGl2ZU1hdGNoKCk7XG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09IEtleS5BcnJvd0Rvd24pIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5uZXh0QWN0aXZlTWF0Y2goKTtcbiAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS2V5LkVudGVyKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU1hdGNoID0gdGhpcy5wb3B1cC5pbnN0YW5jZS5hY3RpdmVNYXRjaDtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkLmZpbmQoKHNlbGVjdGVkKSA9PiBhY3RpdmVNYXRjaCAmJiBhY3RpdmVNYXRjaC52YWx1ZSAmJiBzZWxlY3RlZC52YWx1ZSA9PT0gYWN0aXZlTWF0Y2gudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RBY3RpdmVNYXRjaCgpO1xuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKChldmVudC5rZXkgPT09IEtleS5CYWNrc3BhY2UgfHwgZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlKSAmJiAhSGVscGVycy5pc0VtcHR5KHRoaXMuX3ZhbHVlKSAmJiAodGhpcy5fdmFsdWUgPT09IHRoaXMudGVybSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSBLZXkuRGVsZXRlICYmIEhlbHBlcnMuaXNCbGFuayh0aGlzLl92YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5jbGVhclZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93VGFiTmF2aWdhdGlvbiAmJiBldmVudC5rZXkgPT09IEtleS5UYWIpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgdGhpcy50YWIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyVmFsdWUod2lwZVRlcm0pIHtcbiAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogdGhpcy5fdmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiAnJywgdmFsdWU6IHRoaXMuX3ZhbHVlIH0gfSk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcblxuICAgIGlmICh3aXBlVGVybSkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgICBpZiAodGhpcy5wb3B1cD8uaW5zdGFuY2UpIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5jdXN0b21UZXh0VmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5oaWRlUmVzdWx0cygpO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gV2hlbiB0aGUgaW5wdXQncyBmb2N1cyBldmVudCBpcyBjYWxsZWQgdGhpcyBtZXRob2QgY2FsbHMgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRpc3BsYXlzIHRoZVxuICAgKiByZXN1bHRzLlxuICAgKi9cbiAgb25Gb2N1cyhldmVudCkge1xuICAgIGlmICghdGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgICB0aGlzLmZvY3VzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLy8gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0cyAoY2FsbGVkIHBvcHVwKSBhbmQgYWRkcyBhbGwgdGhlIGJpbmRpbmdzIHRvIHRoYXQgaW5zdGFuY2UuXG4gIHNob3dSZXN1bHRzKHRlcm0/OiBhbnkpIHtcbiAgICAvLyBVcGRhdGUgTWF0Y2hlc1xuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgbGlzdCBvciBjcmVhdGUgdGhlIERPTSBlbGVtZW50XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS50ZXJtID0gdGhpcy50ZXJtO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmF1dG9TZWxlY3RGaXJzdE9wdGlvbiA9IHRoaXMuYXV0b1NlbGVjdEZpcnN0T3B0aW9uO1xuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9wdXAgPSB0aGlzLmNvbXBvbmVudFV0aWxzLmFwcGVuZCh0aGlzLnJlc3VsdHNDb21wb25lbnQsIHRoaXMucmVzdWx0cyk7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLnBhcmVudCA9IHRoaXM7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS50ZXJtID0gdGhpcy50ZXJtO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmF1dG9TZWxlY3RGaXJzdE9wdGlvbiA9IHRoaXMuYXV0b1NlbGVjdEZpcnN0T3B0aW9uO1xuICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5vdmVybGF5ID0gdGhpcy5jb250YWluZXIub3ZlcmxheVJlZjtcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRlbGxzIHRoZSBvdmVybGF5IGNvbXBvbmVudCB0byBoaWRlIHRoZSBwaWNrZXIgcmVzdWx0cyBmcm9tIHRoZSBET00gd2l0aG91dCBkZWxldGluZyB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHBvcHVwIGluc3RhbmNlIGNyZWF0ZWQgaW5cbiAgLy8gc2hvd1Jlc3VsdHMuIFRoZSBwb3B1cCBpbnN0YW5jZSB3aWxsIHJlbWFpbiBpbiBtZW1vcnkgZnJvbSB0aGUgZmlyc3QgdGltZSB0aGUgcmVzdWx0cyBhcmUgc2hvd24gdW50aWwgdGhpcyBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxuICBoaWRlUmVzdWx0cyhlcnI/OiBhbnkpIHtcbiAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIENsZWFucyB1cCBsaXN0ZW5lcnMgZm9yIHRoZSBwb3B1cCAtIHdpbGwgZ2V0IGV4ZWN1dGVkIG5vIG1hdHRlciBob3cgdGhlIHBvcHVwIGlzIGNsb3NlZC5cbiAgb25PdmVybGF5Q2xvc2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBvcHVwICYmIHRoaXMucG9wdXAuaW5zdGFuY2UgJiYgdGhpcy5wb3B1cC5pbnN0YW5jZS5jbGVhblVwKSB7XG4gICAgICB0aGlzLnBvcHVwLmluc3RhbmNlLmNsZWFuVXAoKTtcbiAgICB9XG4gIH1cblxuICAvLyBnZXQgYWNjZXNzb3JcbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8vIHNldCBhY2Nlc3NvciBpbmNsdWRpbmcgY2FsbCB0aGUgb25jaGFuZ2UgY2FsbGJhY2tcbiAgc2V0IHZhbHVlKHNlbGVjdGVkKSB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQudmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLnRlcm0gPSB0aGlzLmNsZWFyVmFsdWVPblNlbGVjdCA/ICcnIDogc2VsZWN0ZWQubGFiZWw7XG4gICAgICB0aGlzLl92YWx1ZSA9IHNlbGVjdGVkLnZhbHVlO1xuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQoeyB2YWx1ZTogc2VsZWN0ZWQudmFsdWUsIHJhd1ZhbHVlOiB7IGxhYmVsOiB0aGlzLnRlcm0sIHZhbHVlOiBzZWxlY3RlZC52YWx1ZSB9IH0pO1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChzZWxlY3RlZCk7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoc2VsZWN0ZWQudmFsdWUpO1xuICAgICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVybSA9IHRoaXMuY2xlYXJWYWx1ZU9uU2VsZWN0ID8gJycgOiBzZWxlY3RlZC5sYWJlbDtcbiAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KHsgdmFsdWU6IHNlbGVjdGVkLnZhbHVlLCByYXdWYWx1ZTogeyBsYWJlbDogdGhpcy50ZXJtLCB2YWx1ZTogdGhpcy5fdmFsdWUgfSB9KTtcbiAgICAgIHRoaXMuc2VsZWN0LmVtaXQoc2VsZWN0ZWQpO1xuICAgIH1cbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIE1ha2VzIHN1cmUgdG8gY2xlYXIgdGhlIG1vZGVsIGlmIHRoZSB1c2VyIGNsZWFycyB0aGUgdGV4dCBib3hcbiAgY2hlY2tUZXJtKGV2ZW50KSB7XG4gICAgdGhpcy50eXBpbmcuZW1pdChldmVudCk7XG4gICAgaWYgKHRoaXMuYWxsb3dDdXN0b21WYWx1ZXMpIHtcbiAgICAgIGlmICh0aGlzLnRlcm0pIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5jdXN0b21UZXh0VmFsdWUgPSB7IGxhYmVsOiB0aGlzLnRlcm0sIHZhbHVlOiB0aGlzLnRlcm0gfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb3B1cC5pbnN0YW5jZS5jdXN0b21UZXh0VmFsdWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoKCFldmVudCB8fCAhZXZlbnQubGVuZ3RoKSAmJiAhSGVscGVycy5pc0VtcHR5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyBTZXQgdG91Y2hlZCBvbiBibHVyXG4gIG9uVG91Y2hlZChldmVudD86IEV2ZW50KSB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmNsZWFyVmFsdWVPblNlbGVjdCkge1xuICAgICAgdGhpcy50ZXJtID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICF0aGlzLmNvbmZpZy51c2VHZXRMYWJlbHMpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLmxhYmVsKSB7XG4gICAgICAgIHRoaXMudGVybSA9IHZhbHVlLmxhYmVsO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB2YWx1ZS5maXJzdE5hbWUpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gYCR7dmFsdWUuZmlyc3ROYW1lfSAke3ZhbHVlLmxhc3ROYW1lfWA7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLm5hbWUpIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmdldExhYmVscyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmNvbmZpZy5nZXRMYWJlbHModmFsdWUpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMudGVybSA9IHJlc3VsdC5sZW5ndGggPyByZXN1bHRbMF0ubGFiZWwgfHwgJycgOiByZXN1bHQubGFiZWwgfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGVybSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLnRpdGxlKSB7XG4gICAgICAgIHRoaXMudGVybSA9IHZhbHVlLnRpdGxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXJtID0gdmFsdWUgfHwgJyc7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVQaWNrZXJJbnB1dCA9IGRpc2FibGVkO1xuICB9XG59XG4iXX0=
@@ -140,6 +140,21 @@ export class ConditionBuilderComponent {
140
140
  this.searchTerm.setValue('');
141
141
  this.results$ = Promise.resolve(this.fieldConfig.options);
142
142
  }
143
+ /**
144
+ * Resets the input and operator view containers, regenerates the field templates,
145
+ * and marks the component for change detection.
146
+ *
147
+ * Use this method after updating form controls to reinitialize the input and
148
+ * operator fields so that the view reflects the latest form control changes.
149
+ *
150
+ * @returns void
151
+ */
152
+ resetInputAndOperator() {
153
+ this._inputOutlet.viewContainer.clear();
154
+ this._operatorOutlet.viewContainer.clear();
155
+ this.createFieldTemplates();
156
+ this.cdr.markForCheck();
157
+ }
143
158
  getField() {
144
159
  const field = this.parentForm?.value?.field;
145
160
  if (!field)
@@ -262,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
262
277
  type: HostBinding,
263
278
  args: ['class.condition-host']
264
279
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9jb25kaXRpb24tYnVpbGRlci9jb25kaXRpb24tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1idWlsZGVyL2NvbmRpdGlvbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBSUwsUUFBUSxFQUVSLFFBQVEsRUFDUixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHakU7OztHQUdHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixhQUErQixFQUFTLFVBQXNCO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxD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QVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQWlDQyxlQUFlO3NCQURyQixXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIGNvbXB1dGVkLFxuICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnbm92by1lbGVtZW50cy9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlQ29uZGl0aW9uRmllbGREZWYgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyQ29uZmlnLCBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5PVk9fQ09ORElUSU9OX0JVSUxERVIgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLnRva2Vucyc7XG5pbXBvcnQgeyBBZGRyZXNzQ3JpdGVyaWFDb25maWcsIEJhc2VGaWVsZERlZiwgRmllbGRDb25maWcsIFF1ZXJ5RmlsdGVyT3V0bGV0IH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci50eXBlcyc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBoYW5kbGUgZm9yIHRoZSB0YWJsZSB0byBncmFiIHRoZSB2aWV3IGNvbnRhaW5lcidzIG5nLWNvbnRhaW5lciB0byBpbnNlcnQgZGF0YSByb3dzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY29uZGl0aW9uSW5wdXRPdXRsZXRdJyB9KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbklucHV0T3V0bGV0IGltcGxlbWVudHMgUXVlcnlGaWx0ZXJPdXRsZXQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBoYW5kbGUgZm9yIHRoZSB0YWJsZSB0byBncmFiIHRoZSB2aWV3IGNvbnRhaW5lcidzIG5nLWNvbnRhaW5lciB0byBpbnNlcnQgZGF0YSByb3dzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY29uZGl0aW9uT3BlcmF0b3JPdXRsZXRdJyB9KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbk9wZXJhdG9yT3V0bGV0IGltcGxlbWVudHMgUXVlcnlGaWx0ZXJPdXRsZXQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdm8tY29uZGl0aW9uLWJ1aWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25kaXRpb24tYnVpbGRlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5PVk9fQ09ORElUSU9OX0JVSUxERVIsIHVzZUV4aXN0aW5nOiBDb25kaXRpb25CdWlsZGVyQ29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICAgIGRlcHM6IFtOb3ZvTGFiZWxTZXJ2aWNlLCBbbmV3IFNraXBTZWxmKCksIG5ldyBPcHRpb25hbCgpLCBRdWVyeUJ1aWxkZXJTZXJ2aWNlXV0sXG4gICAgICB1c2VGYWN0b3J5OiAobGFiZWxTZXJ2aWNlOiBOb3ZvTGFiZWxTZXJ2aWNlLCBxdWVyeUJ1aWxkZXJTZXJ2aWNlPzogUXVlcnlCdWlsZGVyU2VydmljZSkgPT4ge1xuICAgICAgICBpZiAoIXF1ZXJ5QnVpbGRlclNlcnZpY2UpIHtcbiAgICAgICAgICBxdWVyeUJ1aWxkZXJTZXJ2aWNlID0gbmV3IFF1ZXJ5QnVpbGRlclNlcnZpY2UobGFiZWxTZXJ2aWNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXVlcnlCdWlsZGVyU2VydmljZTtcbiAgICAgIH1cbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25CdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ29uZGl0aW9uT3BlcmF0b3JPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9vcGVyYXRvck91dGxldDogQ29uZGl0aW9uT3BlcmF0b3JPdXRsZXQ7XG4gIEBWaWV3Q2hpbGQoQ29uZGl0aW9uSW5wdXRPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9pbnB1dE91dGxldDogQ29uZGl0aW9uSW5wdXRPdXRsZXQ7XG5cbiAgQElucHV0KCkgbGFiZWw6IGFueTtcbiAgQElucHV0KCkgc2NvcGU6IHN0cmluZztcbiAgQElucHV0KCkgYW5kSW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgZ3JvdXBJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBhZGRyZXNzQ29uZmlnOiBBZGRyZXNzQ3JpdGVyaWFDb25maWc7XG4gIGhpZGVPcGVyYXRvciA9IGlucHV0KHRydWUpO1xuICBjb25kaXRpb25UeXBlID0gaW5wdXQoKTtcblxuICAvLyBUaGlzIGNvbXBvbmVudCBjYW4gZWl0aGVyIGJlIGRpcmVjdGx5IGhvc3RlZCBhcyBhIGhvc3QgdG8gYSBjb25kaXRpb24sIG9yIGl0IGNhbiBiZSBwYXJ0IG9mIGEgY29uZGl0aW9uIGdyb3VwIHdpdGhpbiBhIGNyaXRlcmlhIGJ1aWxkZXIuXG4gIC8vIEluIHRoZSBmb3JtZXIgY2FzZSwgY29uZmlnIHdpbGwgY29tZSBmcm9tIGlucHV0cywgYW5kIHdlIHdpbGwgaW5zdGFudGlhdGUgb3VyIG93biBRdWVyeUJ1aWxkZXJTZXJ2aWNlLiBJbiB0aGUgbGF0dGVyLCBpdCBjb21lcyBmcm9tXG4gIC8vIHRoZSBRdWVyeUJ1aWxkZXJTZXJ2aWNlLlxuICBpbnB1dENvbmZpZyA9IGlucHV0PFF1ZXJ5QnVpbGRlckNvbmZpZz4obnVsbCwgeyBhbGlhczogJ2NvbmZpZyd9KTtcbiAgaW5wdXRFZGl0VHlwZUZuID0gaW5wdXQ8KGZpZWxkOiBCYXNlRmllbGREZWYpID0+IHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2VkaXRUeXBlRm4nfSk7XG4gIHByaXZhdGUgY29uZmlnID0gY29tcHV0ZWQ8UXVlcnlCdWlsZGVyQ29uZmlnPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNDb25kaXRpb25Ib3N0KSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuY29uZmlnID0gdGhpcy5pbnB1dENvbmZpZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmNvbmZpZztcbiAgfSk7XG4gIHByaXZhdGUgZWRpdFR5cGVGbiA9IGNvbXB1dGVkPChmaWVsZDogQmFzZUZpZWxkRGVmKSA9PiBzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5pc0NvbmRpdGlvbkhvc3QpIHtcbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5lZGl0VHlwZUZuID0gdGhpcy5pbnB1dEVkaXRUeXBlRm4oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5lZGl0VHlwZUZuO1xuICB9KTtcblxuICBwdWJsaWMgcGFyZW50Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnPEJhc2VGaWVsZERlZj47XG4gIHB1YmxpYyBzZWFyY2hlcyE6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHJlc3VsdHMkOiBQcm9taXNlPGFueVtdPjtcbiAgcHVibGljIHNlYXJjaFRlcm06IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIHB1YmxpYyBmaWVsZERpc3BsYXlXaXRoO1xuICBwdWJsaWMgZGlzcGxheUljb246IHN0cmluZztcblxuICBwdWJsaWMgc3RhdGljRmllbGRTZWxlY3Rpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0YXRpY0ZpZWxkU2VsZWN0aW9uKTtcbiAgcHJpdmF0ZSBfbGFzdENvbnRleHQ6IGFueSA9IHt9O1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbmRpdGlvbi1ob3N0JylcbiAgcHVibGljIGlzQ29uZGl0aW9uSG9zdCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBncmlkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0aWNGaWVsZFNlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm4gJzEzcmVtIDFmcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpcnN0Q29sdW1uV2lkdGggPSB0aGlzLmhpZGVPcGVyYXRvcigpID8gJzIwcmVtJyA6ICcxNnJlbSc7XG4gICAgICByZXR1cm4gYCR7Zmlyc3RDb2x1bW5XaWR0aH0gMTNyZW0gMWZyYDtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGFiZWxzOiBOb3ZvTGFiZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHF1ZXJ5QnVpbGRlclNlcnZpY2U6IFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICApIHtcbiAgICBpZiAoIXF1ZXJ5QnVpbGRlclNlcnZpY2UuY29tcG9uZW50SG9zdCkge1xuICAgICAgcXVlcnlCdWlsZGVyU2VydmljZS5jb21wb25lbnRIb3N0ID0gdGhpcztcbiAgICAgIHRoaXMuaXNDb25kaXRpb25Ib3N0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ3JvdXBJbmRleCA9IDA7XG4gICAgICB0aGlzLmFuZEluZGV4ID0gMDtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcmVudEZvcm0gPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgdGhpcy5wYXJlbnRGb3JtLmNvbnRyb2xzLmZpZWxkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMudXBkYXRlRmllbGRTZWxlY3Rpb24oKSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaW5wdXRDb25maWc/LnByZXZpb3VzVmFsdWU/LnN0YXRpY0ZpZWxkU2VsZWN0aW9uICYmXG4gICAgICBjaGFuZ2VzLmlucHV0Q29uZmlnLnByZXZpb3VzVmFsdWUuc3RhdGljRmllbGRTZWxlY3Rpb24gIT09IGNoYW5nZXMuaW5wdXRDb25maWcuY3VycmVudFZhbHVlLnN0YXRpY0ZpZWxkU2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMucGFyZW50Rm9ybS5jb250cm9scy5maWVsZC5zZXRWYWx1ZShjaGFuZ2VzLmlucHV0Q29uZmlnLmN1cnJlbnRWYWx1ZS5zdGF0aWNGaWVsZFNlbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuY29uZmlnKCk/LmZpZWxkcyB8fCBbXTtcbiAgICBjb25zdCBzY29wZWRGaWVsZHMgPSB0aGlzLnNjb3BlID8gYWxsRmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC52YWx1ZSA9PT0gdGhpcy5zY29wZSkgOiBhbGxGaWVsZHNbMF07XG4gICAgYWxsRmllbGRzLmxlbmd0aCAmJiB0aGlzLmNoYW5nZUZpZWxkT3B0aW9ucyhzY29wZWRGaWVsZHMpO1xuICAgIHRoaXMuc2VhcmNoZXMgPSB0aGlzLnNlYXJjaFRlcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodGVybSkgPT4ge1xuICAgICAgdGhpcy5yZXN1bHRzJCA9IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgdGhpcy5maWVsZENvbmZpZy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAoZikgPT4gZi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSB8fCBmLmxhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybS52YWx1ZT8uZmllbGQgIT09IG51bGwpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy51cGRhdGVGaWVsZFNlbGVjdGlvbigpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaGVzLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gQ2xlYXIgYWxsIG91dGxldHMgYW5kIE1hcHNcbiAgICBbdGhpcy5fb3BlcmF0b3JPdXRsZXQudmlld0NvbnRhaW5lciwgdGhpcy5faW5wdXRPdXRsZXQudmlld0NvbnRhaW5lcl0uZm9yRWFjaCgoZGVmKSA9PiB7XG4gICAgICBkZWYuY2xlYXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIENvbmRpdGlvbnMgXCJGaWVsZFwiIE9wdGlvbnMgdG8gQ2hhbmdlIGJhc2Ugb24gbmV3IFNjb3BlXG4gICAqIEBwYXJhbSBmaWVsZENvbmZpZ1xuICAgKi9cbiAgY2hhbmdlRmllbGRPcHRpb25zKGZpZWxkQ29uZmlnOiBGaWVsZENvbmZpZzxCYXNlRmllbGREZWY+KSB7XG4gICAgdGhpcy5maWVsZENvbmZpZyA9IGZpZWxkQ29uZmlnO1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5yZXN1bHRzJCA9IFByb21pc2UucmVzb2x2ZSh0aGlzLmZpZWxkQ29uZmlnLm9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0RmllbGQoKSB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnBhcmVudEZvcm0/LnZhbHVlPy5maWVsZDtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5maWVsZENvbmZpZy5maW5kKGZpZWxkKTtcbiAgfVxuXG4gIGdldERlZmF1bHRGaWVsZCgpIHtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkQ29uZmlnLm9wdGlvbnM7XG4gICAgaWYgKGZpZWxkcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmllbGRzWzBdLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdXBkYXRlRmllbGRTZWxlY3Rpb24oKSB7XG4gICAgY29uc3QgZmllbGRDb25mID0gdGhpcy5nZXRGaWVsZCgpO1xuICAgIGlmICghZmllbGRDb25mKSB7XG4gICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCdmaWVsZCcpLnNldFZhbHVlKHRoaXMuZ2V0RGVmYXVsdEZpZWxkKCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkRGlzcGxheVdpdGggPSAoKSA9PiBmaWVsZENvbmYubGFiZWwgfHwgZmllbGRDb25mLm5hbWU7XG4gICAgICB0aGlzLmRpc3BsYXlJY29uID0gZmllbGRDb25mLmljb24gfHwgbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyBmaWVsZCB9ID0gdGhpcy5wYXJlbnRGb3JtLnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX2xhc3RDb250ZXh0LmZpZWxkICE9PSBmaWVsZCkge1xuICAgICAgaWYgKHRoaXMuX2xhc3RDb250ZXh0LmZpZWxkKSB7XG4gICAgICAgIC8vIG9ubHkgY2xlYXJpbmcgb3BlcmF0b3IvdmFsdWUgaWYgZmllbGQgd2FzIHByZXZpb3VzbHkgZGVmaW5lZCBzbyB3ZSBjYW4gcHJlbG9hZCB2YWx1ZXMgb250byB0aGUgZm9ybVxuICAgICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCd2YWx1ZScpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCdvcGVyYXRvcicpLnNldFZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5jcmVhdGVGaWVsZFRlbXBsYXRlcygpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQ29uZGl0aW9uVHlwZSgpKTtcblxuICAgIHRoaXMuX2xhc3RDb250ZXh0ID0geyAuLi50aGlzLnBhcmVudEZvcm0udmFsdWUgfTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbmRpdGlvblR5cGUoKSB7XG4gICAgdGhpcy5wYXJlbnRGb3JtLmdldCgnY29uZGl0aW9uVHlwZScpPy5zZXRWYWx1ZSh0aGlzLmNvbmRpdGlvblR5cGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmREZWZpbml0aW9uRm9yRmllbGQoZmllbGQpIHtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm47XG4gICAgY29uc3QgZWRpdFR5cGUgPSB0aGlzLmVkaXRUeXBlRm4oKShmaWVsZCk7XG4gICAgLy8gRG9uJ3QgbG9vayBhdCBkYXRhU3BlY2lhbGl6YXRpb24gaXQgaXMgbm8gZ29vZCwgdGhpcyBtaXNzZXMgY3VycmVuY3ksIGFuZCBwZXJjZW50XG4gICAgY29uc3QgeyBuYW1lIH0gPSBmaWVsZDtcbiAgICBjb25zdCBmaWVsZERlZnNCeU5hbWUgPSB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZ2V0RmllbGREZWZzQnlOYW1lKCk7XG4gICAgLy8gQ2hlY2sgRmllbGRzIGJ5IHByaW9yaXR5IGZvciBtYXRjaCBGaWVsZCBEZWZpbml0aW9uXG4gICAgY29uc3Qga2V5ID0gW25hbWUsIGVkaXRUeXBlPy50b1VwcGVyQ2FzZSgpLCAnREVGQVVMVCddLmZpbmQoKGl0KSA9PiBmaWVsZERlZnNCeU5hbWUuaGFzKGl0KSk7XG4gICAgcmV0dXJuIGZpZWxkRGVmc0J5TmFtZS5nZXQoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRUZW1wbGF0ZXMoKSB7XG4gICAgY29uc3QgZGVmaW5pdGlvbiA9IHRoaXMuZmluZERlZmluaXRpb25Gb3JGaWVsZCh0aGlzLmdldEZpZWxkKCkpO1xuXG4gICAgaWYgKCF0aGlzLnBhcmVudEZvcm0uZ2V0KCdvcGVyYXRvcicpLnZhbHVlKSB7XG4gICAgICB0aGlzLnBhcmVudEZvcm0uZ2V0KCdvcGVyYXRvcicpLnNldFZhbHVlKGRlZmluaXRpb24uZGVmYXVsdE9wZXJhdG9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmNyZWF0ZUZpZWxkT3BlcmF0b3JzKGRlZmluaXRpb24pO1xuICAgIHRoaXMuY3JlYXRlRmllbGRJbnB1dChkZWZpbml0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRPcGVyYXRvcnMoZGVmaW5pdGlvbjogQmFzZUNvbmRpdGlvbkZpZWxkRGVmKSB7XG4gICAgdGhpcy5fb3BlcmF0b3JPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0geyAkaW1wbGljaXQ6IHRoaXMucGFyZW50Rm9ybSwgZmllbGRNZXRhOiB0aGlzLmdldEZpZWxkKCkgfTtcbiAgICAgIHRoaXMuX29wZXJhdG9yT3V0bGV0LnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGRlZmluaXRpb24uZmllbGRPcGVyYXRvcnMudGVtcGxhdGUsIGNvbnRleHQpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRJbnB1dChkZWZpbml0aW9uOiBCYXNlQ29uZGl0aW9uRmllbGREZWYpIHtcbiAgICB0aGlzLl9pbnB1dE91dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSB7ICRpbXBsaWNpdDogdGhpcy5wYXJlbnRGb3JtLCBmaWVsZE1ldGE6IHRoaXMuZ2V0RmllbGQoKSwgdmlld0luZGV4OiB0aGlzLmdyb3VwSW5kZXgudG9TdHJpbmcoKSArIHRoaXMuYW5kSW5kZXgudG9TdHJpbmcoKSB9O1xuICAgICAgdGhpcy5faW5wdXRPdXRsZXQudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZGVmaW5pdGlvbi5maWVsZElucHV0LnRlbXBsYXRlLCBjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwicGFyZW50Rm9ybVwiPlxuICA8bm92by1ncmlkIGdhcD1cIjFyZW1cIiBbY29sdW1uc109XCJncmlkQ29sdW1ucygpXCIgYWxpZ249XCJlbmRcIj5cbiAgICA8bm92by1maWVsZCBjbGFzcz1cImNvbmRpdGlvbi1maWVsZFwiICpuZ0lmPVwiIXN0YXRpY0ZpZWxkU2VsZWN0aW9uKClcIj5cbiAgICAgIDxub3ZvLXNlbGVjdFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxzLmNob29zZUFGaWVsZFwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpZWxkXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cInVwZGF0ZUZpZWxkU2VsZWN0aW9uKClcIlxuICAgICAgICBvdmVybGF5V2lkdGg9XCIyNHJlbVwiXG4gICAgICAgIG92ZXJsYXlIZWlnaHQ9XCIyMHJlbVwiXG4gICAgICAgIFtkaXNwbGF5V2l0aF09XCJmaWVsZERpc3BsYXlXaXRoXCJcbiAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIjE2MFwiXG4gICAgICAgIFtzdHlsZS5tYXhXaWR0aC5weF09XCIoaGlkZU9wZXJhdG9yKCkgfHwgaXNDb25kaXRpb25Ib3N0KSA/IDIwMCA6IDE2MFwiXG4gICAgICAgIFtkaXNwbGF5SWNvbl09XCJkaXNwbGF5SWNvblwiPlxuICAgICAgICA8bm92by1vcHRncm91cCBjbGFzcz1cImZpbHRlci1zZWFyY2gtcmVzdWx0c1wiPlxuICAgICAgICAgIDxub3ZvLW9wdGlvbj5cbiAgICAgICAgICAgIDxub3ZvLXNlbGVjdC1zZWFyY2ggW2Zvcm1Db250cm9sXT1cInNlYXJjaFRlcm1cIiBbY2xlYXJTZWFyY2hJbnB1dF09XCJmYWxzZVwiPjwvbm92by1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgIDwvbm92by1vcHRpb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdHMkIHwgYXN5bmMgYXMgcmVzdWx0czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPG5vdm8tb3B0aW9uICpuZ0Zvcj1cImxldCBmaWVsZCBvZiByZXN1bHRzXCIgdmFsdWU9XCJ7eyBmaWVsZC5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZmllbGQubmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsIHx8IGZpZWxkLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9ub3ZvLW9wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25vdm8tb3B0Z3JvdXA+XG4gICAgICA8L25vdm8tc2VsZWN0PlxuICAgIDwvbm92by1maWVsZD5cblxuICAgIDxkaXYgY2xhc3M9XCJjb25kaXRpb24tb3BlcmF0b3JcIj5cbiAgICAgIDxuZy1jb250YWluZXIgY29uZGl0aW9uT3BlcmF0b3JPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLWlucHV0XCI+XG4gICAgICA8bmctY29udGFpbmVyIGNvbmRpdGlvbklucHV0T3V0bGV0PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25vdm8tZ3JpZD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9mb3JtPlxuXG48bm92by1jb25kaXRpb24tdGVtcGxhdGVzICpuZ0lmPVwiaXNDb25kaXRpb25Ib3N0XCIgW2FkZHJlc3NDb25maWddPVwiYWRkcmVzc0NvbmZpZ1wiLz5cblxuPCEtLSBMT0FESU5HIFRFTVBMQVRFIC0tPlxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8bm92by1sb2FkaW5nPjwvbm92by1sb2FkaW5nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvcXVlcnktYnVpbGRlci9jb25kaXRpb24tYnVpbGRlci9jb25kaXRpb24tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9xdWVyeS1idWlsZGVyL2NvbmRpdGlvbi1idWlsZGVyL2NvbmRpdGlvbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBSUwsUUFBUSxFQUVSLFFBQVEsRUFDUixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixLQUFLLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQXNCLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHakU7OztHQUdHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFtQixhQUErQixFQUFTLFVBQXNCO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxD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O3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3NMQUdPLGVBQWU7c0JBQXBFLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNELFlBQVk7c0JBQTlELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUV4QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQWlDQyxlQUFlO3NCQURyQixXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIGNvbXB1dGVkLFxuICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnbm92by1lbGVtZW50cy9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNlQ29uZGl0aW9uRmllbGREZWYgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyQ29uZmlnLCBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5PVk9fQ09ORElUSU9OX0JVSUxERVIgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLnRva2Vucyc7XG5pbXBvcnQgeyBBZGRyZXNzQ3JpdGVyaWFDb25maWcsIEJhc2VGaWVsZERlZiwgRmllbGRDb25maWcsIFF1ZXJ5RmlsdGVyT3V0bGV0IH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci50eXBlcyc7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBoYW5kbGUgZm9yIHRoZSB0YWJsZSB0byBncmFiIHRoZSB2aWV3IGNvbnRhaW5lcidzIG5nLWNvbnRhaW5lciB0byBpbnNlcnQgZGF0YSByb3dzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY29uZGl0aW9uSW5wdXRPdXRsZXRdJyB9KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbklucHV0T3V0bGV0IGltcGxlbWVudHMgUXVlcnlGaWx0ZXJPdXRsZXQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBoYW5kbGUgZm9yIHRoZSB0YWJsZSB0byBncmFiIHRoZSB2aWV3IGNvbnRhaW5lcidzIG5nLWNvbnRhaW5lciB0byBpbnNlcnQgZGF0YSByb3dzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY29uZGl0aW9uT3BlcmF0b3JPdXRsZXRdJyB9KVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbk9wZXJhdG9yT3V0bGV0IGltcGxlbWVudHMgUXVlcnlGaWx0ZXJPdXRsZXQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdm8tY29uZGl0aW9uLWJ1aWxkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25kaXRpb24tYnVpbGRlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5PVk9fQ09ORElUSU9OX0JVSUxERVIsIHVzZUV4aXN0aW5nOiBDb25kaXRpb25CdWlsZGVyQ29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICAgIGRlcHM6IFtOb3ZvTGFiZWxTZXJ2aWNlLCBbbmV3IFNraXBTZWxmKCksIG5ldyBPcHRpb25hbCgpLCBRdWVyeUJ1aWxkZXJTZXJ2aWNlXV0sXG4gICAgICB1c2VGYWN0b3J5OiAobGFiZWxTZXJ2aWNlOiBOb3ZvTGFiZWxTZXJ2aWNlLCBxdWVyeUJ1aWxkZXJTZXJ2aWNlPzogUXVlcnlCdWlsZGVyU2VydmljZSkgPT4ge1xuICAgICAgICBpZiAoIXF1ZXJ5QnVpbGRlclNlcnZpY2UpIHtcbiAgICAgICAgICBxdWVyeUJ1aWxkZXJTZXJ2aWNlID0gbmV3IFF1ZXJ5QnVpbGRlclNlcnZpY2UobGFiZWxTZXJ2aWNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXVlcnlCdWlsZGVyU2VydmljZTtcbiAgICAgIH1cbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25CdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ29uZGl0aW9uT3BlcmF0b3JPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9vcGVyYXRvck91dGxldDogQ29uZGl0aW9uT3BlcmF0b3JPdXRsZXQ7XG4gIEBWaWV3Q2hpbGQoQ29uZGl0aW9uSW5wdXRPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9pbnB1dE91dGxldDogQ29uZGl0aW9uSW5wdXRPdXRsZXQ7XG5cbiAgQElucHV0KCkgbGFiZWw6IGFueTtcbiAgQElucHV0KCkgc2NvcGU6IHN0cmluZztcbiAgQElucHV0KCkgYW5kSW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgZ3JvdXBJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBhZGRyZXNzQ29uZmlnOiBBZGRyZXNzQ3JpdGVyaWFDb25maWc7XG4gIGhpZGVPcGVyYXRvciA9IGlucHV0KHRydWUpO1xuICBjb25kaXRpb25UeXBlID0gaW5wdXQoKTtcblxuICAvLyBUaGlzIGNvbXBvbmVudCBjYW4gZWl0aGVyIGJlIGRpcmVjdGx5IGhvc3RlZCBhcyBhIGhvc3QgdG8gYSBjb25kaXRpb24sIG9yIGl0IGNhbiBiZSBwYXJ0IG9mIGEgY29uZGl0aW9uIGdyb3VwIHdpdGhpbiBhIGNyaXRlcmlhIGJ1aWxkZXIuXG4gIC8vIEluIHRoZSBmb3JtZXIgY2FzZSwgY29uZmlnIHdpbGwgY29tZSBmcm9tIGlucHV0cywgYW5kIHdlIHdpbGwgaW5zdGFudGlhdGUgb3VyIG93biBRdWVyeUJ1aWxkZXJTZXJ2aWNlLiBJbiB0aGUgbGF0dGVyLCBpdCBjb21lcyBmcm9tXG4gIC8vIHRoZSBRdWVyeUJ1aWxkZXJTZXJ2aWNlLlxuICBpbnB1dENvbmZpZyA9IGlucHV0PFF1ZXJ5QnVpbGRlckNvbmZpZz4obnVsbCwgeyBhbGlhczogJ2NvbmZpZyd9KTtcbiAgaW5wdXRFZGl0VHlwZUZuID0gaW5wdXQ8KGZpZWxkOiBCYXNlRmllbGREZWYpID0+IHN0cmluZz4obnVsbCwgeyBhbGlhczogJ2VkaXRUeXBlRm4nfSk7XG4gIHByaXZhdGUgY29uZmlnID0gY29tcHV0ZWQ8UXVlcnlCdWlsZGVyQ29uZmlnPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNDb25kaXRpb25Ib3N0KSB7XG4gICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuY29uZmlnID0gdGhpcy5pbnB1dENvbmZpZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmNvbmZpZztcbiAgfSk7XG4gIHByaXZhdGUgZWRpdFR5cGVGbiA9IGNvbXB1dGVkPChmaWVsZDogQmFzZUZpZWxkRGVmKSA9PiBzdHJpbmc+KCgpID0+IHtcbiAgICBpZiAodGhpcy5pc0NvbmRpdGlvbkhvc3QpIHtcbiAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5lZGl0VHlwZUZuID0gdGhpcy5pbnB1dEVkaXRUeXBlRm4oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5lZGl0VHlwZUZuO1xuICB9KTtcblxuICBwdWJsaWMgcGFyZW50Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnPEJhc2VGaWVsZERlZj47XG4gIHB1YmxpYyBzZWFyY2hlcyE6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHJlc3VsdHMkOiBQcm9taXNlPGFueVtdPjtcbiAgcHVibGljIHNlYXJjaFRlcm06IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIHB1YmxpYyBmaWVsZERpc3BsYXlXaXRoO1xuICBwdWJsaWMgZGlzcGxheUljb246IHN0cmluZztcblxuICBwdWJsaWMgc3RhdGljRmllbGRTZWxlY3Rpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLnN0YXRpY0ZpZWxkU2VsZWN0aW9uKTtcbiAgcHJpdmF0ZSBfbGFzdENvbnRleHQ6IGFueSA9IHt9O1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbmRpdGlvbi1ob3N0JylcbiAgcHVibGljIGlzQ29uZGl0aW9uSG9zdCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBncmlkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0aWNGaWVsZFNlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm4gJzEzcmVtIDFmcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpcnN0Q29sdW1uV2lkdGggPSB0aGlzLmhpZGVPcGVyYXRvcigpID8gJzIwcmVtJyA6ICcxNnJlbSc7XG4gICAgICByZXR1cm4gYCR7Zmlyc3RDb2x1bW5XaWR0aH0gMTNyZW0gMWZyYDtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGFiZWxzOiBOb3ZvTGFiZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHF1ZXJ5QnVpbGRlclNlcnZpY2U6IFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICApIHtcbiAgICBpZiAoIXF1ZXJ5QnVpbGRlclNlcnZpY2UuY29tcG9uZW50SG9zdCkge1xuICAgICAgcXVlcnlCdWlsZGVyU2VydmljZS5jb21wb25lbnRIb3N0ID0gdGhpcztcbiAgICAgIHRoaXMuaXNDb25kaXRpb25Ib3N0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ3JvdXBJbmRleCA9IDA7XG4gICAgICB0aGlzLmFuZEluZGV4ID0gMDtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcmVudEZvcm0gPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgdGhpcy5wYXJlbnRGb3JtLmNvbnRyb2xzLmZpZWxkLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMudXBkYXRlRmllbGRTZWxlY3Rpb24oKSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaW5wdXRDb25maWc/LnByZXZpb3VzVmFsdWU/LnN0YXRpY0ZpZWxkU2VsZWN0aW9uICYmXG4gICAgICBjaGFuZ2VzLmlucHV0Q29uZmlnLnByZXZpb3VzVmFsdWUuc3RhdGljRmllbGRTZWxlY3Rpb24gIT09IGNoYW5nZXMuaW5wdXRDb25maWcuY3VycmVudFZhbHVlLnN0YXRpY0ZpZWxkU2VsZWN0aW9uKSB7XG4gICAgICAgIHRoaXMucGFyZW50Rm9ybS5jb250cm9scy5maWVsZC5zZXRWYWx1ZShjaGFuZ2VzLmlucHV0Q29uZmlnLmN1cnJlbnRWYWx1ZS5zdGF0aWNGaWVsZFNlbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuY29uZmlnKCk/LmZpZWxkcyB8fCBbXTtcbiAgICBjb25zdCBzY29wZWRGaWVsZHMgPSB0aGlzLnNjb3BlID8gYWxsRmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC52YWx1ZSA9PT0gdGhpcy5zY29wZSkgOiBhbGxGaWVsZHNbMF07XG4gICAgYWxsRmllbGRzLmxlbmd0aCAmJiB0aGlzLmNoYW5nZUZpZWxkT3B0aW9ucyhzY29wZWRGaWVsZHMpO1xuICAgIHRoaXMuc2VhcmNoZXMgPSB0aGlzLnNlYXJjaFRlcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodGVybSkgPT4ge1xuICAgICAgdGhpcy5yZXN1bHRzJCA9IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgdGhpcy5maWVsZENvbmZpZy5vcHRpb25zLmZpbHRlcihcbiAgICAgICAgICAoZikgPT4gZi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSB8fCBmLmxhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybS52YWx1ZT8uZmllbGQgIT09IG51bGwpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy51cGRhdGVGaWVsZFNlbGVjdGlvbigpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaGVzLnVuc3Vic2NyaWJlKCk7XG4gICAgLy8gQ2xlYXIgYWxsIG91dGxldHMgYW5kIE1hcHNcbiAgICBbdGhpcy5fb3BlcmF0b3JPdXRsZXQudmlld0NvbnRhaW5lciwgdGhpcy5faW5wdXRPdXRsZXQudmlld0NvbnRhaW5lcl0uZm9yRWFjaCgoZGVmKSA9PiB7XG4gICAgICBkZWYuY2xlYXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIENvbmRpdGlvbnMgXCJGaWVsZFwiIE9wdGlvbnMgdG8gQ2hhbmdlIGJhc2Ugb24gbmV3IFNjb3BlXG4gICAqIEBwYXJhbSBmaWVsZENvbmZpZ1xuICAgKi9cbiAgY2hhbmdlRmllbGRPcHRpb25zKGZpZWxkQ29uZmlnOiBGaWVsZENvbmZpZzxCYXNlRmllbGREZWY+KSB7XG4gICAgdGhpcy5maWVsZENvbmZpZyA9IGZpZWxkQ29uZmlnO1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5yZXN1bHRzJCA9IFByb21pc2UucmVzb2x2ZSh0aGlzLmZpZWxkQ29uZmlnLm9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW5wdXQgYW5kIG9wZXJhdG9yIHZpZXcgY29udGFpbmVycywgcmVnZW5lcmF0ZXMgdGhlIGZpZWxkIHRlbXBsYXRlcyxcbiAgICogYW5kIG1hcmtzIHRoZSBjb21wb25lbnQgZm9yIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqXG4gICAqIFVzZSB0aGlzIG1ldGhvZCBhZnRlciB1cGRhdGluZyBmb3JtIGNvbnRyb2xzIHRvIHJlaW5pdGlhbGl6ZSB0aGUgaW5wdXQgYW5kXG4gICAqIG9wZXJhdG9yIGZpZWxkcyBzbyB0aGF0IHRoZSB2aWV3IHJlZmxlY3RzIHRoZSBsYXRlc3QgZm9ybSBjb250cm9sIGNoYW5nZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHJlc2V0SW5wdXRBbmRPcGVyYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dE91dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgdGhpcy5fb3BlcmF0b3JPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgIHRoaXMuY3JlYXRlRmllbGRUZW1wbGF0ZXMoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldEZpZWxkKCkge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5wYXJlbnRGb3JtPy52YWx1ZT8uZmllbGQ7XG4gICAgaWYgKCFmaWVsZCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRDb25maWcuZmluZChmaWVsZCk7XG4gIH1cblxuICBnZXREZWZhdWx0RmllbGQoKSB7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZENvbmZpZy5vcHRpb25zO1xuICAgIGlmIChmaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZpZWxkc1swXS5uYW1lO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHVwZGF0ZUZpZWxkU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IGZpZWxkQ29uZiA9IHRoaXMuZ2V0RmllbGQoKTtcbiAgICBpZiAoIWZpZWxkQ29uZikge1xuICAgICAgdGhpcy5wYXJlbnRGb3JtLmdldCgnZmllbGQnKS5zZXRWYWx1ZSh0aGlzLmdldERlZmF1bHRGaWVsZCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWVsZERpc3BsYXlXaXRoID0gKCkgPT4gZmllbGRDb25mLmxhYmVsIHx8IGZpZWxkQ29uZi5uYW1lO1xuICAgICAgdGhpcy5kaXNwbGF5SWNvbiA9IGZpZWxkQ29uZi5pY29uIHx8IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHsgZmllbGQgfSA9IHRoaXMucGFyZW50Rm9ybS52YWx1ZTtcblxuICAgIGlmICh0aGlzLl9sYXN0Q29udGV4dC5maWVsZCAhPT0gZmllbGQpIHtcbiAgICAgIGlmICh0aGlzLl9sYXN0Q29udGV4dC5maWVsZCkge1xuICAgICAgICAvLyBvbmx5IGNsZWFyaW5nIG9wZXJhdG9yL3ZhbHVlIGlmIGZpZWxkIHdhcyBwcmV2aW91c2x5IGRlZmluZWQgc28gd2UgY2FuIHByZWxvYWQgdmFsdWVzIG9udG8gdGhlIGZvcm1cbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtLmdldCgndmFsdWUnKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtLmdldCgnb3BlcmF0b3InKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3JlYXRlRmllbGRUZW1wbGF0ZXMoKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZUNvbmRpdGlvblR5cGUoKSk7XG5cbiAgICB0aGlzLl9sYXN0Q29udGV4dCA9IHsgLi4udGhpcy5wYXJlbnRGb3JtLnZhbHVlIH07XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB1cGRhdGVDb25kaXRpb25UeXBlKCkge1xuICAgIHRoaXMucGFyZW50Rm9ybS5nZXQoJ2NvbmRpdGlvblR5cGUnKT8uc2V0VmFsdWUodGhpcy5jb25kaXRpb25UeXBlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRGVmaW5pdGlvbkZvckZpZWxkKGZpZWxkKSB7XG4gICAgaWYgKCFmaWVsZCkgcmV0dXJuO1xuICAgIGNvbnN0IGVkaXRUeXBlID0gdGhpcy5lZGl0VHlwZUZuKCkoZmllbGQpO1xuICAgIC8vIERvbid0IGxvb2sgYXQgZGF0YVNwZWNpYWxpemF0aW9uIGl0IGlzIG5vIGdvb2QsIHRoaXMgbWlzc2VzIGN1cnJlbmN5LCBhbmQgcGVyY2VudFxuICAgIGNvbnN0IHsgbmFtZSB9ID0gZmllbGQ7XG4gICAgY29uc3QgZmllbGREZWZzQnlOYW1lID0gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmdldEZpZWxkRGVmc0J5TmFtZSgpO1xuICAgIC8vIENoZWNrIEZpZWxkcyBieSBwcmlvcml0eSBmb3IgbWF0Y2ggRmllbGQgRGVmaW5pdGlvblxuICAgIGNvbnN0IGtleSA9IFtuYW1lLCBlZGl0VHlwZT8udG9VcHBlckNhc2UoKSwgJ0RFRkFVTFQnXS5maW5kKChpdCkgPT4gZmllbGREZWZzQnlOYW1lLmhhcyhpdCkpO1xuICAgIHJldHVybiBmaWVsZERlZnNCeU5hbWUuZ2V0KGtleSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpZWxkVGVtcGxhdGVzKCkge1xuICAgIGNvbnN0IGRlZmluaXRpb24gPSB0aGlzLmZpbmREZWZpbml0aW9uRm9yRmllbGQodGhpcy5nZXRGaWVsZCgpKTtcblxuICAgIGlmICghdGhpcy5wYXJlbnRGb3JtLmdldCgnb3BlcmF0b3InKS52YWx1ZSkge1xuICAgICAgdGhpcy5wYXJlbnRGb3JtLmdldCgnb3BlcmF0b3InKS5zZXRWYWx1ZShkZWZpbml0aW9uLmRlZmF1bHRPcGVyYXRvcik7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVGaWVsZE9wZXJhdG9ycyhkZWZpbml0aW9uKTtcbiAgICB0aGlzLmNyZWF0ZUZpZWxkSW5wdXQoZGVmaW5pdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpZWxkT3BlcmF0b3JzKGRlZmluaXRpb246IEJhc2VDb25kaXRpb25GaWVsZERlZikge1xuICAgIHRoaXMuX29wZXJhdG9yT3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgY29udGV4dCA9IHsgJGltcGxpY2l0OiB0aGlzLnBhcmVudEZvcm0sIGZpZWxkTWV0YTogdGhpcy5nZXRGaWVsZCgpIH07XG4gICAgICB0aGlzLl9vcGVyYXRvck91dGxldC52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhkZWZpbml0aW9uLmZpZWxkT3BlcmF0b3JzLnRlbXBsYXRlLCBjb250ZXh0KTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpZWxkSW5wdXQoZGVmaW5pdGlvbjogQmFzZUNvbmRpdGlvbkZpZWxkRGVmKSB7XG4gICAgdGhpcy5faW5wdXRPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0geyAkaW1wbGljaXQ6IHRoaXMucGFyZW50Rm9ybSwgZmllbGRNZXRhOiB0aGlzLmdldEZpZWxkKCksIHZpZXdJbmRleDogdGhpcy5ncm91cEluZGV4LnRvU3RyaW5nKCkgKyB0aGlzLmFuZEluZGV4LnRvU3RyaW5nKCkgfTtcbiAgICAgIHRoaXMuX2lucHV0T3V0bGV0LnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGRlZmluaXRpb24uZmllbGRJbnB1dC50ZW1wbGF0ZSwgY29udGV4dCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInBhcmVudEZvcm1cIj5cbiAgPG5vdm8tZ3JpZCBnYXA9XCIxcmVtXCIgW2NvbHVtbnNdPVwiZ3JpZENvbHVtbnMoKVwiIGFsaWduPVwiZW5kXCI+XG4gICAgPG5vdm8tZmllbGQgY2xhc3M9XCJjb25kaXRpb24tZmllbGRcIiAqbmdJZj1cIiFzdGF0aWNGaWVsZFNlbGVjdGlvbigpXCI+XG4gICAgICA8bm92by1zZWxlY3RcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImxhYmVscy5jaG9vc2VBRmllbGRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaWVsZFwiXG4gICAgICAgIChvblNlbGVjdCk9XCJ1cGRhdGVGaWVsZFNlbGVjdGlvbigpXCJcbiAgICAgICAgb3ZlcmxheVdpZHRoPVwiMjRyZW1cIlxuICAgICAgICBvdmVybGF5SGVpZ2h0PVwiMjByZW1cIlxuICAgICAgICBbZGlzcGxheVdpdGhdPVwiZmllbGREaXNwbGF5V2l0aFwiXG4gICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCIxNjBcIlxuICAgICAgICBbc3R5bGUubWF4V2lkdGgucHhdPVwiKGhpZGVPcGVyYXRvcigpIHx8IGlzQ29uZGl0aW9uSG9zdCkgPyAyMDAgOiAxNjBcIlxuICAgICAgICBbZGlzcGxheUljb25dPVwiZGlzcGxheUljb25cIj5cbiAgICAgICAgPG5vdm8tb3B0Z3JvdXAgY2xhc3M9XCJmaWx0ZXItc2VhcmNoLXJlc3VsdHNcIj5cbiAgICAgICAgICA8bm92by1vcHRpb24+XG4gICAgICAgICAgICA8bm92by1zZWxlY3Qtc2VhcmNoIFtmb3JtQ29udHJvbF09XCJzZWFyY2hUZXJtXCIgW2NsZWFyU2VhcmNoSW5wdXRdPVwiZmFsc2VcIj48L25vdm8tc2VsZWN0LXNlYXJjaD5cbiAgICAgICAgICA8L25vdm8tb3B0aW9uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN1bHRzJCB8IGFzeW5jIGFzIHJlc3VsdHM7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3VsdHMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDxub3ZvLW9wdGlvbiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgcmVzdWx0c1wiIHZhbHVlPVwie3sgZmllbGQubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpZWxkLm5hbWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCB8fCBmaWVsZC5uYW1lIH19XG4gICAgICAgICAgICAgIDwvbm92by1vcHRpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9ub3ZvLW9wdGdyb3VwPlxuICAgICAgPC9ub3ZvLXNlbGVjdD5cbiAgICA8L25vdm8tZmllbGQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLW9wZXJhdG9yXCI+XG4gICAgICA8bmctY29udGFpbmVyIGNvbmRpdGlvbk9wZXJhdG9yT3V0bGV0PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbmRpdGlvbi1pbnB1dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBjb25kaXRpb25JbnB1dE91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9ub3ZvLWdyaWQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZm9ybT5cblxuPG5vdm8tY29uZGl0aW9uLXRlbXBsYXRlcyAqbmdJZj1cImlzQ29uZGl0aW9uSG9zdFwiIFthZGRyZXNzQ29uZmlnXT1cImFkZHJlc3NDb25maWdcIi8+XG5cbjwhLS0gTE9BRElORyBURU1QTEFURSAtLT5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPG5vdm8tbG9hZGluZz48L25vdm8tbG9hZGluZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -2016,7 +2016,9 @@ class NovoPickerElement {
2016
2016
  this.onModelChange(this._value);
2017
2017
  if (wipeTerm) {
2018
2018
  this.term = '';
2019
- this.popup.instance.customTextValue = null;
2019
+ if (this.popup?.instance) {
2020
+ this.popup.instance.customTextValue = null;
2021
+ }
2020
2022
  this.hideResults();
2021
2023
  }
2022
2024
  this.ref.markForCheck();