@testgorilla/tgo-ui 3.10.11 → 3.10.12

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.
@@ -383,7 +383,7 @@ export class FieldComponent {
383
383
  this.value = '0';
384
384
  }
385
385
  else {
386
- this.onChange(this.type === 'number' ? +this.value : this.value);
386
+ this.onChange(this.type === 'number' && this.value !== '' ? +this.value : this.value);
387
387
  }
388
388
  }
389
389
  writeValue(value) {
@@ -541,4 +541,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
541
541
  type: ViewChild,
542
542
  args: ['autosize']
543
543
  }] } });
544
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWVsZC9maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxRQUFRLEVBR1IsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWhFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBU3ZCLE1BQU0sT0FBTyxjQUFjO0lBK0V6Qjs7Ozs7T0FLRztJQUNILElBQWEsTUFBTSxDQUFDLE1BQWdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQXdQRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENB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QUM5QixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUcsZUFBZTtzQkFBdkIsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFXTixnQkFBZ0I7c0JBRmYsV0FBVzt1QkFBQyxZQUFZOztzQkFDeEIsS0FBSztnQkFTRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFRRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFHLEdBQUc7c0JBQVgsS0FBSztnQkFRRyxHQUFHO3NCQUFYLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQVFHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBc0NHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUUwQyxLQUFLO3NCQUFyRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3hCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXHJcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBEZXN0cm95UmVmLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGYsXHJcbiAgc2lnbmFsLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDZGtUZXh0YXJlYUF1dG9zaXplIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJhZGdlVmFyaWFudCB9IGZyb20gJy4uL2JhZGdlL2JhZGdlLm1vZGVsJztcclxuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIEEgZ2xvYmFsIGNvdW50ZXIgdXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgZmllbGQgSURzLlxyXG4gKiBUaGlzIHZhcmlhYmxlIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBmaWVsZCBJRCBpcyBuZWVkZWQuXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gZW5zdXJlIHRoYXQgZWFjaCBmaWVsZCBjb21wb25lbnRcclxuICogaGFzIGEgdW5pcXVlIGlkZW50aWZpZXIgd2l0aGluIHRoZSBhcHBsaWNhdGlvbiAvIHVzZWZ1bCBmb3IgdGhlaXIgQXJpYSBMYWJlbHMuXHJcbiAqL1xyXG5leHBvcnQgbGV0IGZpZWxkSUQgPSAwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2ssIEFmdGVyVmlld0luaXQge1xyXG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpZWxkJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBhdXRvY29tcGxldGUgd2lkdGhcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnVsbC13aWR0aCcpXHJcbiAgQElucHV0KClcclxuICBmdWxsV2lkdGggPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGZpZWxkIGxhYmVsXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsPyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGZpZWxkIGxhYmVsIGZyb20gaHRtbFxyXG4gICAqXHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbGFiZWxIdG1sID0gaW5wdXQobnVsbCwge1xyXG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpXHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gdG8gZGlzcGxheSBhbG9uZ3NpZGUgdGhlIGxhYmVsXHJcbiAgICpcclxuICAgKiBAdHlwZSB7SWNvbk5hbWV9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWxJY29uPzogSWNvbk5hbWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IG5hbWUgYXR0cmlidXRlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZpZWxkTmFtZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgcGxhY2Vob2xkZXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IGlkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlkID0gaW5wdXQoYGZpZWxkLSR7ZmllbGRJRCsrfWApO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCB2YWx1ZVxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBWYXJpYW50IG9mIGJhZGdlIHRvIHVzZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0JhZGdlVmFyaWFudH1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZVZhcmlhbnQ/OiBCYWRnZVZhcmlhbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIF9lcnJvcnM6IFNhZmVIdG1sW107XHJcbiAgLyoqXHJcbiAgICogSW5wdXQgZmllbGQgZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzPy5maWx0ZXIoQm9vbGVhbikubWFwKGVycm9yID0+IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yKSk7XHJcbiAgICB0aGlzLmVycm9yc0xlbmd0aCA9IHRoaXMuc2V0RXJyb3JzTGVuZ3RoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIGlmIGlucHV0IGlzIGRpc2FibGVkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgaXMgcmVxdWlyZWQgb3Igbm90XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgaXMgcmVhZG9ubHkgb3Igbm90XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBIaW50IHRleHRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGludE1lc3NhZ2UgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgdHlwZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0ZpZWxkVHlwZX1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZmllbGQtY2xhc3MnKVxyXG4gIEBJbnB1dCgpXHJcbiAgdHlwZTogRmllbGRUeXBlID0gJ3RleHQnO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBpcyB1cGRhdGUgb25seSBvbiBibHVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB1cGRhdGVPbkJsdXIgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogYWxsb3cgb25seSBkaWdpdHMgaW4gaW5wdXRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtCb29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsbG93T25seURpZ2l0cyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBhbGxvdyBuZWdhdGl2ZSBudW1iZXJzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhbGxvd05lZ2F0aXZlID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcclxuICAgKiBAcHJvcGVydHkgc2hvd0JvdHRvbUNvbnRlbnRcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93Qm90dG9tQ29udGVudCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcclxuICAgKlxyXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXHJcbiAgQElucHV0KClcclxuICBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIGxhYmVsIGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBsb2FkaW5nIGJ1dHRvbi4gT25seSBmb3IgdGV4dFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93IGljb24gd2hlbiBmaWVsZCBpcyB2YWxpZFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNWYWxpZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggY2hhcmFjdGVycyBudW1iZXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbWF4Q2hhcmFjdGVycyA9IDI1NTtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJpbSB0ZXh0IG9uIGJsdXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRyaW1PbkJsdXIgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUcmltIHRleHQgb24gc3VibWl0XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB0cmltT25TdWJtaXQgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBNYXggcm93cyBmb3IgbXVsdGktbGluZSB0eXBlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1heFJvd3MgPSAwO1xyXG4gIC8qKlxyXG4gICAqIGhhcyB0ZXh0IGFyZWEgY291bnRlclxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGFzVGV4dEFyZWFDb3VudGVyID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZSBpbiBidWlsZCBlcnJvcnMgZm9yIFJlYWN0aXZlIEZvcm1zXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhpZGVCdWlsdEluRXJyb3JzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgbGFiZWwgaW4gZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBtYXhpbXVtIG51bWJlclxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXg6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IG1pbmltdW0gbnVtYmVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRleHRhcmVhIGhlaWdodC4gRGVmYXVsdCAxMTBcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dGFyZWFIZWlnaHQgPSAxMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGV4dGFyZWEgYm9yZGVybGVzcy4gRGVmYXVsdCBmYWxzZVxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBib3JkZXJsZXNzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBpZiB0aGlzIGZpZWxkIGlzIGZpbGxlZCBieSBBSVxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNBSVZhcmlhbnQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgTGFiZWxlZCBCeSBFbGVtZW50IElkLlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMYWJlbGxlZGJ5SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLmlkKCl9LWxhYmVsZWRCeWApO1xyXG5cclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBMYWJlbGVkQnkgVGV4dC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhTGFiZWxsZWRieSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBEZXNjcmliZWQgQnkgRWxlbWVudCBJZC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnlJZCA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuaWQoKX0tZGVzY3JpYmVkQnlgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgRGVzY3JpYmVkQnkgVGV4dC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnkgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgc3RhdGUgb2YgZXJyb3JcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWRhdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmaWVsZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdhdXRvc2l6ZScpIGF1dG9zaXplOiBDZGtUZXh0YXJlYUF1dG9zaXplO1xyXG5cclxuICBnZXQgZ2V0UGFzc3dvcmRJY29uKCk6IEljb25OYW1lIHtcclxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zaG93UGFzc3dvcmQgPyAnRXllLWhpZGUnIDogJ0V5ZS12aWV3JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2ZUZpZWxkICYmICF0aGlzLmlzQWN0aXZlSG92ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93UGFzc3dvcmQgPyAnVmlldy1pbi1saW5lJyA6ICdIaWRlLWluLWxpbmUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3dQYXNzd29yZCA/ICdWaWV3LWZpbGxlZCcgOiAnSGlkZS1maWxsZWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUZpZWxkID0gZmFsc2U7XHJcbiAgaXNBY3RpdmVIb3ZlciA9IGZhbHNlO1xyXG5cclxuICBrZXlib2FyZEZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJRUxELic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgb25Ub3VjaCA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxyXG4gICkge1xyXG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzTW9uaXRvclxyXG4gICAgICAubW9uaXRvcih0aGlzLmZpZWxkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgICAgLnN1YnNjcmliZShvcmlnaW4gPT5cclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXlib2FyZEZvY3VzZWQuc2V0KG9yaWdpbiA9PT0gJ2tleWJvYXJkJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbXVsdGktbGluZScpIHtcclxuICAgICAgdGhpcy5hdXRvc2l6ZS5yZXNpemVUb0ZpdENvbnRlbnQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIG1hcmsgY29tcG9uZW50IHZpZXcgYXMgZGlydHkgd2hlbiB0b3VjaGVkIHByb2dyYW1tYXRpY2FsbHkgd2l0aCBtYXJrQXNUb3VjaGVkL21hcmtBbGxBc1RvdWNoZWQgb3IgZXJyb3JzXHJcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcclxuICAgKi9cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDbG9zZTogYm9vbGVhbjtcclxuICBzaG93UGFzc3dvcmQ6IGJvb2xlYW47XHJcbiAgY3VycmVudFR5cGU6IHN0cmluZztcclxuICBlcnJvcnNMZW5ndGg6IGJvb2xlYW47XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWFyY2hJbnB1dCgpO1xyXG4gICAgdGhpcy5jdXJyZW50VHlwZSA9IHRoaXMuZ2V0VHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbGlkYXRlRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vc2V0IHNlYXJjaCBpbnB1dCBpbml0aWFsIHZhbHVlXHJcbiAgc2V0U2VhcmNoSW5wdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnc2VhcmNoJyB8fCB0aGlzLnR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJykge1xyXG4gICAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uKCdTZWFyY2gnLCB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJy9pY29ucy9TZWFyY2guc3ZnJykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vY2hhbmdlIHR5cGUgZm9yIHJldmVhbCBwYXNzd29yZFxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcgJiYgdGhpcy5zaG93UGFzc3dvcmQpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnR5cGU7XHJcbiAgfVxyXG5cclxuICAvL0NsZWFyIGlucHV0IHZhbHVlXHJcbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlSW5wdXRTZWFyY2goKTtcclxuICB9XHJcblxyXG4gIC8vdG9nZ2xlIGZvciBwYXNzd29yZFxyXG4gIHNob3dQYXNzd29yZENsaWNrKCkge1xyXG4gICAgdGhpcy5zaG93UGFzc3dvcmQgPSAhdGhpcy5zaG93UGFzc3dvcmQ7XHJcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gdGhpcy5nZXRUeXBlKCk7XHJcbiAgfVxyXG5cclxuICAvL1NldCBvcHRpb25zIGZvciBzZWFyY2ggaW5wdXRcclxuICBvbkNoYW5nZUlucHV0U2VhcmNoKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlYXJjaCcgfHwgdGhpcy50eXBlID09PSAnY29sbGFwc2VkLXNlYXJjaCcpIHtcclxuICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGVycm9ycyBsZW5ndGggZm9yIHZhbGlkYXRpb25cclxuICAvLyBDb25zaWRlciBvbmx5IHRob3NlIGVycm9ycyB3aGljaCB3aGljaCBhcmUgbm90IGVtcHR5XHJcbiAgc2V0RXJyb3JzTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCEhdGhpcy5fZXJyb3JzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9lcnJvcnMuZmlsdGVyKGVyciA9PiAhIWVycikubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vU2F2ZSBpbnB1dCB2YWx1ZVxyXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuZXJyb3JzTGVuZ3RoID0gdGhpcy5zZXRFcnJvcnNMZW5ndGgoKTtcclxuICAgIGlmICghdGhpcy51cGRhdGVPbkJsdXIpIHtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hbGxvd09ubHlEaWdpdHMgJiYgIXRoaXMuYWxsb3dOZWdhdGl2ZSAmJiArdGhpcy52YWx1ZSA8IDApIHtcclxuICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50eXBlID09PSAnbnVtYmVyJyA/ICt0aGlzLnZhbHVlIDogdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlPzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2ZShzdGF0ZTogYm9vbGVhbiwgYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChhY3Rpb24gPT09ICdob3ZlcicpIHtcclxuICAgICAgdGhpcy5pc0FjdGl2ZUhvdmVyID0gc3RhdGU7XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2ZvY3VzJykge1xyXG4gICAgICB0aGlzLmlzQWN0aXZlRmllbGQgPSBzdGF0ZTtcclxuXHJcbiAgICAgIGlmICghc3RhdGUgJiYgdGhpcy50cmltT25CbHVyKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclNwYWNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHJpbU9uU3VibWl0KSB7XHJcbiAgICAgIHRoaXMuY2xlYXJTcGFjZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclNwYWNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRCbHVyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcmVmb2N1c1Bhc3N3b3JkQnV0dG9uKGJ0bjogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgYnRuLmZvY3VzKCdrZXlib2FyZCcpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICctLXRleHRhcmVhLWhlaWdodCc6IHRleHRhcmVhSGVpZ2h0IC0gMTAgKyAncHgnLFxyXG4gICAgICAnLS10ZXh0YXJlYS1oZWlnaHQtY29udGFpbmVyJzogdGV4dGFyZWFIZWlnaHQgKyAncHgnLFxyXG4gICAgfVwiXHJcbiAgICAjdWlGaWVsZFxyXG4gICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgaGlkZVJlcXVpcmVkTWFya2VyPVwidHJ1ZVwiXHJcbiAgICBbY29sb3JdPVwiZXJyb3JzTGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQpIHx8IGhhc0Vycm9yID8gJ3dhcm4nIDogJ2FjY2VudCdcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAnaGlkZS1ib3R0b20tY29udGVudCc6ICFzaG93Qm90dG9tQ29udGVudCxcclxuICAgICAgdGV4dGFyZWE6IHR5cGUgPT09ICd0ZXh0YXJlYScsXHJcbiAgICAgICdtdWx0aS1saW5lJzogdHlwZSA9PT0gJ211bHRpLWxpbmUnLFxyXG4gICAgICAna2V5Ym9hcmQtZm9jdXNlZCc6IGtleWJvYXJkRm9jdXNlZCgpLFxyXG4gICAgICAnaGFzLWxhYmVsJzogISFsYWJlbCxcclxuICAgICAgJ2hhcy12YWx1ZSc6ICEhdmFsdWUsXHJcbiAgICAgICd0ZXh0LWFyZWEtYm9yZGVybGVzcyc6IHR5cGUgPT09ICd0ZXh0YXJlYScgJiYgYm9yZGVybGVzcyxcclxuICAgIH1cIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwib25BY3RpdmUodHJ1ZSwgJ2hvdmVyJylcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwib25BY3RpdmUoZmFsc2UsICdob3ZlcicpXCJcclxuICA+XHJcbiAgICA8c3BhbiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBbaWRdPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiPlxyXG4gICAgICBAaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgPHNwYW4+e3sgJ0VSUk9SUy5SRVFVSVJFRCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIHt7IGFyaWFEZXNjcmliZWRieSgpIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBbaWRdPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCI+XHJcbiAgICAgIHt7IGFyaWFMYWJlbGxlZGJ5KCkgPz8gbGFiZWwgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxtYXQtbGFiZWxcclxuICAgICAgKm5nSWY9XCIobGFiZWwgfHwgbGFiZWxIdG1sKCkpICYmICgodHlwZSAhPT0gJ3NlYXJjaCcgJiYgYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnKSB8fCBhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpXCJcclxuICAgICAgY2xhc3M9XCJsYWJlbC13aXRoLWljb25cIlxyXG4gICAgPlxyXG4gICAgICBAaWYoaXNBSVZhcmlhbnQgfHwgbGFiZWxJY29uKSB7XHJcbiAgICAgICAgPHVpLWljb25cclxuICAgICAgICAgIFtuYW1lXT1cImlzQUlWYXJpYW50ID8gJ1NwYXJrbGUtaW4tbGluZScgOiBsYWJlbEljb24hXCJcclxuICAgICAgICAgIFtzaXplXT1cIicxNidcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC1pY29uXCJcclxuICAgICAgICA+PC91aS1pY29uPlxyXG4gICAgICB9XHJcbiAgICAgIDxzcGFuPlxyXG4gICAgICAgIEBpZihsYWJlbEh0bWwoKSkge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbEh0bWwoKVwiPjwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgICAgfUBpZihyZXF1aXJlZCkgezxzcGFuPio8L3NwYW4+fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxtYXQtaWNvblxyXG4gICAgICAqbmdJZj1cInR5cGUgPT09ICdzZWFyY2gnIHx8IHR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJ1wiXHJcbiAgICAgIG1hdEljb25QcmVmaXhcclxuICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXHJcbiAgICAgIFtzdmdJY29uXT1cIidTZWFyY2gnXCJcclxuICAgID48L21hdC1pY29uPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkT25seVwiXHJcbiAgICAgICpuZ0lmPVwidHlwZSAhPT0gJ3RleHRhcmVhJyAmJiB0eXBlICE9PSAnbXVsdGktbGluZSc7IGVsc2UgdGV4dGFyZWFcIlxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgIChibHVyKT1cIm9uVG91Y2goKTsgb25BY3RpdmUoZmFsc2UsICdmb2N1cycpOyBvbkJsdXIoKVwiXHJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICBbaWRdPVwiaWQoKVwiXHJcbiAgICAgIChrZXl1cCk9XCJvbkNoYW5nZUlucHV0U2VhcmNoKClcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIhXCJcclxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxyXG4gICAgICBbdHlwZV09XCJjdXJyZW50VHlwZVwiXHJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgW21heF09XCJtYXhcIlxyXG4gICAgICBbbWluXT1cIm1pblwiXHJcbiAgICAgIFtuYW1lXT1cImZpZWxkTmFtZSFcIlxyXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3JcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlJZCgpXCJcclxuICAgICAgcm9sZT1cInRleHRib3hcIlxyXG4gICAgICBkaWdpdHNPbmx5XHJcbiAgICAgIFthbGxvd09ubHlEaWdpdHNdPVwiYWxsb3dPbmx5RGlnaXRzXCJcclxuICAgICAgW2FsbG93TmVnYXRpdmVdPVwiYWxsb3dOZWdhdGl2ZVwiXHJcbiAgICAgIChmb2N1c2luKT1cIm9uQWN0aXZlKHRydWUsICdmb2N1cycpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0YXJlYT5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKCk7IG9uQWN0aXZlKGZhbHNlLCAnZm9jdXMnKTsgb25CbHVyKClcIlxyXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICAgIFtpZF09XCJpZCgpXCJcclxuICAgICAgICAoa2V5dXApPVwib25DaGFuZ2VJbnB1dFNlYXJjaCgpXCJcclxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TdWJtaXQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFt0eXBlXT1cImN1cnJlbnRUeXBlXCJcclxuICAgICAgICBbbmFtZV09XCJmaWVsZE5hbWUhXCJcclxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiIWxhYmVsID8gYXJpYUxhYmVsIDogJydcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3JcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieUlkKClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiXHJcbiAgICAgICAgcm9sZT1cInRleHRib3hcIlxyXG4gICAgICAgIFtjZGtUZXh0YXJlYUF1dG9zaXplXT1cInR5cGUgPT09ICdtdWx0aS1saW5lJ1wiXHJcbiAgICAgICAgW2Nka0F1dG9zaXplTWluUm93c109XCJ0eXBlID09PSAnbXVsdGktbGluZScgPyAxIDogNVwiXHJcbiAgICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCJ0eXBlID09PSAnbXVsdGktbGluZScgPyBtYXhSb3dzIDogNVwiXHJcbiAgICAgICAgKGZvY3VzaW4pPVwib25BY3RpdmUodHJ1ZSwgJ2ZvY3VzJylcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIiAqbmdJZj1cInR5cGUgPT09ICdzZWFyY2gnIHx8IHR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJyB8fCB0eXBlID09PSAncGFzc3dvcmQnIHx8IHR5cGUgPT09ICd2YWxpZGF0aW9uLXRleHQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx1aS1idXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlXCJcclxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgW2p1c3RJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXHJcbiAgICAgICAgICBpY29uTmFtZT1cIkNsb3NlXCJcclxuICAgICAgICAgIFtsYWJlbF09XCIoJ0NPTU1PTi5DTEVBUicgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwiY2xlYXJWYWx1ZSgpXCJcclxuICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsICsgJy0tJyArICgnQ09NTU9OLkNMRUFSJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpXCJcclxuICAgICAgICA+PC91aS1idXR0b24+XHJcbiAgICAgICAgPHVpLWJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIigoc2hvd1Bhc3N3b3JkID8gJ0ZJRUxELkhJREVfUEFTU1dPUkQnIDogJ0ZJRUxELlNIT1dfUEFTU1dPUkQnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwYXNzd29yZCdcIlxyXG4gICAgICAgICAgW2p1c3RJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgcm9sZT1cInN3aXRjaFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwic2hvd1Bhc3N3b3JkXCJcclxuICAgICAgICAgIFtpY29uTmFtZV09XCJnZXRQYXNzd29yZEljb25cIlxyXG4gICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd1Bhc3N3b3JkQ2xpY2soKVwiXHJcbiAgICAgICAgICAjYnRuXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuKVwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJyZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuKVwiXHJcbiAgICAgICAgPjwvdWktYnV0dG9uPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICB0eXBlID09PSAndmFsaWRhdGlvbi10ZXh0JyAmJiAoYXBwbGljYXRpb25UaGVtZSA9PT0gJ2RhcmsnIHx8IGFwcGxpY2F0aW9uVGhlbWUgPT09ICdsaWdodCcpICYmIHZhbHVlLmxlbmd0aFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dWktYnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzVmFsaWRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25cIlxyXG4gICAgICAgICAgICBbdmFyaWFudF09XCIndGV4dCdcIlxyXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCInbGlnaHQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidWYWxpZGF0ZSdcIlxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgID48L3VpLWJ1dHRvbj5cclxuICAgICAgICAgIDx1aS1pY29uIGNsYXNzPVwidmFsaWRcIiBbY29sb3JdPVwiJ3doaXRlJ1wiIGFwcGxpY2F0aW9uVGhlbWU9XCJsaWdodFwiIFtuYW1lXT1cIidDaGVjaydcIiAqbmdJZj1cImlzVmFsaWRcIj48L3VpLWljb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKGhhc1RleHRBcmVhQ291bnRlcikge1xyXG4gICAgICA8bWF0LWhpbnQgY2xhc3M9XCJpbmZvXCIgKm5nSWY9XCJ0eXBlID09PSAndGV4dGFyZWEnICYmICFlcnJvcnNMZW5ndGggJiYgIShuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcilcIlxyXG4gICAgICAgID57eyB2YWx1ZS5sZW5ndGggfX0gLyB7eyBtYXhDaGFyYWN0ZXJzIH19PC9tYXQtaGludFxyXG4gICAgICA+XHJcbiAgICB9XHJcblxyXG4gICAgPG1hdC1oaW50XHJcbiAgICAgIGNsYXNzPVwiaW5mb1wiXHJcbiAgICAgICpuZ0lmPVwiaGludE1lc3NhZ2UgJiYgIWVycm9yc0xlbmd0aCAmJiAhKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKSAmJiB0eXBlICE9PSAndGV4dGFyZWEnXCJcclxuICAgICAgPnt7IGhpbnRNZXNzYWdlIH19PC9tYXQtaGludFxyXG4gICAgPlxyXG4gICAgPG1hdC1oaW50IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cImVycm9yc0xlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJlcnJvcnNMZW5ndGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIF9lcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cIidFcnJvcidcIj48L3VpLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPHVpLXZhbGlkYXRpb24tZXJyb3JcclxuICAgICAgICAqbmdJZj1cIm5nQ29udHJvbCAmJiAhaGlkZUJ1aWx0SW5FcnJvcnNcIlxyXG4gICAgICAgIFtuZ0NvbnRyb2xdPVwibmdDb250cm9sXCJcclxuICAgICAgICBbbGFiZWxdPVwiaGlkZUxhYmVsSW5FcnJvcnMgPyBudWxsIDogbGFiZWxcIlxyXG4gICAgICA+PC91aS12YWxpZGF0aW9uLWVycm9yPlxyXG4gICAgPC9tYXQtaGludD5cclxuXHJcbiAgICBAaWYgKGJhZGdlVmFyaWFudCkge1xyXG4gICAgICA8dWktYmFkZ2UgY2xhc3M9XCJmaWVsZC1iYWRnZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJiYWRnZVZhcmlhbnRcIj48L3VpLWJhZGdlPlxyXG4gICAgfVxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
544
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWVsZC9maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxRQUFRLEVBR1IsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVWhFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBU3ZCLE1BQU0sT0FBTyxjQUFjO0lBK0V6Qjs7Ozs7T0FLRztJQUNILElBQWEsTUFBTSxDQUFDLE1BQWdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQXdQRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENB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QUk7c0JBRkgsV0FBVzt1QkFBQyxrQkFBa0I7O3NCQUM5QixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUcsZUFBZTtzQkFBdkIsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFXTixnQkFBZ0I7c0JBRmYsV0FBVzt1QkFBQyxZQUFZOztzQkFDeEIsS0FBSztnQkFTRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFRRyxPQUFPO3NCQUFmLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQU9HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQVFHLEdBQUc7c0JBQVgsS0FBSztnQkFRRyxHQUFHO3NCQUFYLEtBQUs7Z0JBUUcsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxVQUFVO3NCQUFsQixLQUFLO2dCQVFHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBc0NHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUUwQyxLQUFLO3NCQUFyRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3hCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXHJcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBEZXN0cm95UmVmLFxyXG4gIERvQ2hlY2ssXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFNlbGYsXHJcbiAgc2lnbmFsLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDZGtUZXh0YXJlYUF1dG9zaXplIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XHJcbmltcG9ydCB7IEJhZGdlVmFyaWFudCB9IGZyb20gJy4uL2JhZGdlL2JhZGdlLm1vZGVsJztcclxuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIEEgZ2xvYmFsIGNvdW50ZXIgdXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgZmllbGQgSURzLlxyXG4gKiBUaGlzIHZhcmlhYmxlIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBmaWVsZCBJRCBpcyBuZWVkZWQuXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gZW5zdXJlIHRoYXQgZWFjaCBmaWVsZCBjb21wb25lbnRcclxuICogaGFzIGEgdW5pcXVlIGlkZW50aWZpZXIgd2l0aGluIHRoZSBhcHBsaWNhdGlvbiAvIHVzZWZ1bCBmb3IgdGhlaXIgQXJpYSBMYWJlbHMuXHJcbiAqL1xyXG5leHBvcnQgbGV0IGZpZWxkSUQgPSAwO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWVsZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2ssIEFmdGVyVmlld0luaXQge1xyXG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpZWxkJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdG9yIG9mIHRoZSBhdXRvY29tcGxldGUgd2lkdGhcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnVsbC13aWR0aCcpXHJcbiAgQElucHV0KClcclxuICBmdWxsV2lkdGggPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGZpZWxkIGxhYmVsXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsPyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtIGZpZWxkIGxhYmVsIGZyb20gaHRtbFxyXG4gICAqXHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbGFiZWxIdG1sID0gaW5wdXQobnVsbCwge1xyXG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUpXHJcbiAgfSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEljb24gdG8gZGlzcGxheSBhbG9uZ3NpZGUgdGhlIGxhYmVsXHJcbiAgICpcclxuICAgKiBAdHlwZSB7SWNvbk5hbWV9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWxJY29uPzogSWNvbk5hbWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IG5hbWUgYXR0cmlidXRlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZpZWxkTmFtZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgcGxhY2Vob2xkZXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/ID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IGlkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlkID0gaW5wdXQoYGZpZWxkLSR7ZmllbGRJRCsrfWApO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCB2YWx1ZVxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBWYXJpYW50IG9mIGJhZGdlIHRvIHVzZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0JhZGdlVmFyaWFudH1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWRnZVZhcmlhbnQ/OiBCYWRnZVZhcmlhbnQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIF9lcnJvcnM6IFNhZmVIdG1sW107XHJcbiAgLyoqXHJcbiAgICogSW5wdXQgZmllbGQgZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCBlcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzPy5maWx0ZXIoQm9vbGVhbikubWFwKGVycm9yID0+IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yKSk7XHJcbiAgICB0aGlzLmVycm9yc0xlbmd0aCA9IHRoaXMuc2V0RXJyb3JzTGVuZ3RoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIGlmIGlucHV0IGlzIGRpc2FibGVkXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgaXMgcmVxdWlyZWQgb3Igbm90XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgaXMgcmVhZG9ubHkgb3Igbm90XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBIaW50IHRleHRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGludE1lc3NhZ2UgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgdHlwZVxyXG4gICAqXHJcbiAgICogQHR5cGUge0ZpZWxkVHlwZX1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZmllbGQtY2xhc3MnKVxyXG4gIEBJbnB1dCgpXHJcbiAgdHlwZTogRmllbGRUeXBlID0gJ3RleHQnO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBpcyB1cGRhdGUgb25seSBvbiBibHVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB1cGRhdGVPbkJsdXIgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogYWxsb3cgb25seSBkaWdpdHMgaW4gaW5wdXRcclxuICAgKlxyXG4gICAqIEB0eXBlIHtCb29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsbG93T25seURpZ2l0cyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBhbGxvdyBuZWdhdGl2ZSBudW1iZXJzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7Qm9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhbGxvd05lZ2F0aXZlID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyByZXNlcnZlZCBjb250ZW50IGJlbG93IGZvcm0gZmllbGRcclxuICAgKiBAcHJvcGVydHkgc2hvd0JvdHRvbUNvbnRlbnRcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93Qm90dG9tQ29udGVudCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcclxuICAgKlxyXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXHJcbiAgQElucHV0KClcclxuICBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIGxhYmVsIGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBsb2FkaW5nIGJ1dHRvbi4gT25seSBmb3IgdGV4dFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93IGljb24gd2hlbiBmaWVsZCBpcyB2YWxpZFxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNWYWxpZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggY2hhcmFjdGVycyBudW1iZXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgbWF4Q2hhcmFjdGVycyA9IDI1NTtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJpbSB0ZXh0IG9uIGJsdXJcclxuICAgKlxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRyaW1PbkJsdXIgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUcmltIHRleHQgb24gc3VibWl0XHJcbiAgICpcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSB0cmltT25TdWJtaXQgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBNYXggcm93cyBmb3IgbXVsdGktbGluZSB0eXBlXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1heFJvd3MgPSAwO1xyXG4gIC8qKlxyXG4gICAqIGhhcyB0ZXh0IGFyZWEgY291bnRlclxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaGFzVGV4dEFyZWFDb3VudGVyID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZSBpbiBidWlsZCBlcnJvcnMgZm9yIFJlYWN0aXZlIEZvcm1zXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhpZGVCdWlsdEluRXJyb3JzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgbGFiZWwgaW4gZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBtYXhpbXVtIG51bWJlclxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXg6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IG1pbmltdW0gbnVtYmVyXHJcbiAgICpcclxuICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRleHRhcmVhIGhlaWdodC4gRGVmYXVsdCAxMTBcclxuICAgKlxyXG4gICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dGFyZWFIZWlnaHQgPSAxMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGV4dGFyZWEgYm9yZGVybGVzcy4gRGVmYXVsdCBmYWxzZVxyXG4gICAqXHJcbiAgICogQHR5cGUge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBib3JkZXJsZXNzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYXRlcyBpZiB0aGlzIGZpZWxkIGlzIGZpbGxlZCBieSBBSVxyXG4gICAqXHJcbiAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNBSVZhcmlhbnQgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgTGFiZWxlZCBCeSBFbGVtZW50IElkLlxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpZWxkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMYWJlbGxlZGJ5SWQgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLmlkKCl9LWxhYmVsZWRCeWApO1xyXG5cclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBMYWJlbGVkQnkgVGV4dC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhTGFiZWxsZWRieSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICAvKipcclxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgcmVxdWlyZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXHJcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgaW5wdXQgZmllbGQgQXJpYSBEZXNjcmliZWQgQnkgRWxlbWVudCBJZC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnlJZCA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuaWQoKX0tZGVzY3JpYmVkQnlgKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxyXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGlucHV0IGZpZWxkIEFyaWEgRGVzY3JpYmVkQnkgVGV4dC5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWVsZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBhcmlhRGVzY3JpYmVkYnkgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgc3RhdGUgb2YgZXJyb3JcclxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmllbGRDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBoYXNFcnJvciA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWRhdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmaWVsZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdhdXRvc2l6ZScpIGF1dG9zaXplOiBDZGtUZXh0YXJlYUF1dG9zaXplO1xyXG5cclxuICBnZXQgZ2V0UGFzc3dvcmRJY29uKCk6IEljb25OYW1lIHtcclxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zaG93UGFzc3dvcmQgPyAnRXllLWhpZGUnIDogJ0V5ZS12aWV3JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pc0FjdGl2ZUZpZWxkICYmICF0aGlzLmlzQWN0aXZlSG92ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93UGFzc3dvcmQgPyAnVmlldy1pbi1saW5lJyA6ICdIaWRlLWluLWxpbmUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3dQYXNzd29yZCA/ICdWaWV3LWZpbGxlZCcgOiAnSGlkZS1maWxsZWQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0FjdGl2ZUZpZWxkID0gZmFsc2U7XHJcbiAgaXNBY3RpdmVIb3ZlciA9IGZhbHNlO1xyXG5cclxuICBrZXlib2FyZEZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJRUxELic7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgb25Ub3VjaCA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZlxyXG4gICkge1xyXG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xyXG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzTW9uaXRvclxyXG4gICAgICAubW9uaXRvcih0aGlzLmZpZWxkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcclxuICAgICAgLnN1YnNjcmliZShvcmlnaW4gPT5cclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXlib2FyZEZvY3VzZWQuc2V0KG9yaWdpbiA9PT0gJ2tleWJvYXJkJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnbXVsdGktbGluZScpIHtcclxuICAgICAgdGhpcy5hdXRvc2l6ZS5yZXNpemVUb0ZpdENvbnRlbnQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIG1hcmsgY29tcG9uZW50IHZpZXcgYXMgZGlydHkgd2hlbiB0b3VjaGVkIHByb2dyYW1tYXRpY2FsbHkgd2l0aCBtYXJrQXNUb3VjaGVkL21hcmtBbGxBc1RvdWNoZWQgb3IgZXJyb3JzXHJcbiAgICogdG8gZGlzcGxheSB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IG1pZ2h0IGhhcHBlbiAoZS5nLiByZXF1aXJlZClcclxuICAgKi9cclxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmVycm9ycykge1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDbG9zZTogYm9vbGVhbjtcclxuICBzaG93UGFzc3dvcmQ6IGJvb2xlYW47XHJcbiAgY3VycmVudFR5cGU6IHN0cmluZztcclxuICBlcnJvcnNMZW5ndGg6IGJvb2xlYW47XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWFyY2hJbnB1dCgpO1xyXG4gICAgdGhpcy5jdXJyZW50VHlwZSA9IHRoaXMuZ2V0VHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbGlkYXRlRXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vc2V0IHNlYXJjaCBpbnB1dCBpbml0aWFsIHZhbHVlXHJcbiAgc2V0U2VhcmNoSW5wdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnc2VhcmNoJyB8fCB0aGlzLnR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJykge1xyXG4gICAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uKCdTZWFyY2gnLCB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJy9pY29ucy9TZWFyY2guc3ZnJykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vY2hhbmdlIHR5cGUgZm9yIHJldmVhbCBwYXNzd29yZFxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcgJiYgdGhpcy5zaG93UGFzc3dvcmQpIHtcclxuICAgICAgcmV0dXJuICd0ZXh0JztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnR5cGU7XHJcbiAgfVxyXG5cclxuICAvL0NsZWFyIGlucHV0IHZhbHVlXHJcbiAgY2xlYXJWYWx1ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlSW5wdXRTZWFyY2goKTtcclxuICB9XHJcblxyXG4gIC8vdG9nZ2xlIGZvciBwYXNzd29yZFxyXG4gIHNob3dQYXNzd29yZENsaWNrKCkge1xyXG4gICAgdGhpcy5zaG93UGFzc3dvcmQgPSAhdGhpcy5zaG93UGFzc3dvcmQ7XHJcbiAgICB0aGlzLmN1cnJlbnRUeXBlID0gdGhpcy5nZXRUeXBlKCk7XHJcbiAgfVxyXG5cclxuICAvL1NldCBvcHRpb25zIGZvciBzZWFyY2ggaW5wdXRcclxuICBvbkNoYW5nZUlucHV0U2VhcmNoKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlYXJjaCcgfHwgdGhpcy50eXBlID09PSAnY29sbGFwc2VkLXNlYXJjaCcpIHtcclxuICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q2xvc2UgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGVycm9ycyBsZW5ndGggZm9yIHZhbGlkYXRpb25cclxuICAvLyBDb25zaWRlciBvbmx5IHRob3NlIGVycm9ycyB3aGljaCB3aGljaCBhcmUgbm90IGVtcHR5XHJcbiAgc2V0RXJyb3JzTGVuZ3RoKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCEhdGhpcy5fZXJyb3JzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9lcnJvcnMuZmlsdGVyKGVyciA9PiAhIWVycikubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vU2F2ZSBpbnB1dCB2YWx1ZVxyXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuZXJyb3JzTGVuZ3RoID0gdGhpcy5zZXRFcnJvcnNMZW5ndGgoKTtcclxuICAgIGlmICghdGhpcy51cGRhdGVPbkJsdXIpIHtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hbGxvd09ubHlEaWdpdHMgJiYgIXRoaXMuYWxsb3dOZWdhdGl2ZSAmJiArdGhpcy52YWx1ZSA8IDApIHtcclxuICAgICAgdGhpcy52YWx1ZSA9ICcwJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50eXBlID09PSAnbnVtYmVyJyAmJiB0aGlzLnZhbHVlICE9PSAnJyA/ICt0aGlzLnZhbHVlIDogdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlPzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2ZShzdGF0ZTogYm9vbGVhbiwgYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChhY3Rpb24gPT09ICdob3ZlcicpIHtcclxuICAgICAgdGhpcy5pc0FjdGl2ZUhvdmVyID0gc3RhdGU7XHJcbiAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2ZvY3VzJykge1xyXG4gICAgICB0aGlzLmlzQWN0aXZlRmllbGQgPSBzdGF0ZTtcclxuXHJcbiAgICAgIGlmICghc3RhdGUgJiYgdGhpcy50cmltT25CbHVyKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclNwYWNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHJpbU9uU3VibWl0KSB7XHJcbiAgICAgIHRoaXMuY2xlYXJTcGFjZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclNwYWNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRCbHVyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbiA9IChpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2YWx1ZS5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5O1xyXG5cclxuICBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcmVmb2N1c1Bhc3N3b3JkQnV0dG9uKGJ0bjogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgYnRuLmZvY3VzKCdrZXlib2FyZCcpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICctLXRleHRhcmVhLWhlaWdodCc6IHRleHRhcmVhSGVpZ2h0IC0gMTAgKyAncHgnLFxyXG4gICAgICAnLS10ZXh0YXJlYS1oZWlnaHQtY29udGFpbmVyJzogdGV4dGFyZWFIZWlnaHQgKyAncHgnLFxyXG4gICAgfVwiXHJcbiAgICAjdWlGaWVsZFxyXG4gICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgaGlkZVJlcXVpcmVkTWFya2VyPVwidHJ1ZVwiXHJcbiAgICBbY29sb3JdPVwiZXJyb3JzTGVuZ3RoIHx8IChuZ0NvbnRyb2w/LmVycm9ycyAmJiBuZ0NvbnRyb2w/LnRvdWNoZWQpIHx8IGhhc0Vycm9yID8gJ3dhcm4nIDogJ2FjY2VudCdcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAnaGlkZS1ib3R0b20tY29udGVudCc6ICFzaG93Qm90dG9tQ29udGVudCxcclxuICAgICAgdGV4dGFyZWE6IHR5cGUgPT09ICd0ZXh0YXJlYScsXHJcbiAgICAgICdtdWx0aS1saW5lJzogdHlwZSA9PT0gJ211bHRpLWxpbmUnLFxyXG4gICAgICAna2V5Ym9hcmQtZm9jdXNlZCc6IGtleWJvYXJkRm9jdXNlZCgpLFxyXG4gICAgICAnaGFzLWxhYmVsJzogISFsYWJlbCxcclxuICAgICAgJ2hhcy12YWx1ZSc6ICEhdmFsdWUsXHJcbiAgICAgICd0ZXh0LWFyZWEtYm9yZGVybGVzcyc6IHR5cGUgPT09ICd0ZXh0YXJlYScgJiYgYm9yZGVybGVzcyxcclxuICAgIH1cIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwib25BY3RpdmUodHJ1ZSwgJ2hvdmVyJylcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwib25BY3RpdmUoZmFsc2UsICdob3ZlcicpXCJcclxuICA+XHJcbiAgICA8c3BhbiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBbaWRdPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiPlxyXG4gICAgICBAaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgPHNwYW4+e3sgJ0VSUk9SUy5SRVFVSVJFRCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIHt7IGFyaWFEZXNjcmliZWRieSgpIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiBbaWRdPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCI+XHJcbiAgICAgIHt7IGFyaWFMYWJlbGxlZGJ5KCkgPz8gbGFiZWwgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxtYXQtbGFiZWxcclxuICAgICAgKm5nSWY9XCIobGFiZWwgfHwgbGFiZWxIdG1sKCkpICYmICgodHlwZSAhPT0gJ3NlYXJjaCcgJiYgYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnKSB8fCBhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYycpXCJcclxuICAgICAgY2xhc3M9XCJsYWJlbC13aXRoLWljb25cIlxyXG4gICAgPlxyXG4gICAgICBAaWYoaXNBSVZhcmlhbnQgfHwgbGFiZWxJY29uKSB7XHJcbiAgICAgICAgPHVpLWljb25cclxuICAgICAgICAgIFtuYW1lXT1cImlzQUlWYXJpYW50ID8gJ1NwYXJrbGUtaW4tbGluZScgOiBsYWJlbEljb24hXCJcclxuICAgICAgICAgIFtzaXplXT1cIicxNidcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC1pY29uXCJcclxuICAgICAgICA+PC91aS1pY29uPlxyXG4gICAgICB9XHJcbiAgICAgIDxzcGFuPlxyXG4gICAgICAgIEBpZihsYWJlbEh0bWwoKSkge1xyXG4gICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbEh0bWwoKVwiPjwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgICAgfUBpZihyZXF1aXJlZCkgezxzcGFuPio8L3NwYW4+fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L21hdC1sYWJlbD5cclxuICAgIDxtYXQtaWNvblxyXG4gICAgICAqbmdJZj1cInR5cGUgPT09ICdzZWFyY2gnIHx8IHR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJ1wiXHJcbiAgICAgIG1hdEljb25QcmVmaXhcclxuICAgICAgY2xhc3M9XCJzZWFyY2gtaWNvblwiXHJcbiAgICAgIFtzdmdJY29uXT1cIidTZWFyY2gnXCJcclxuICAgID48L21hdC1pY29uPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkT25seVwiXHJcbiAgICAgICpuZ0lmPVwidHlwZSAhPT0gJ3RleHRhcmVhJyAmJiB0eXBlICE9PSAnbXVsdGktbGluZSc7IGVsc2UgdGV4dGFyZWFcIlxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgIChibHVyKT1cIm9uVG91Y2goKTsgb25BY3RpdmUoZmFsc2UsICdmb2N1cycpOyBvbkJsdXIoKVwiXHJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICBbaWRdPVwiaWQoKVwiXHJcbiAgICAgIChrZXl1cCk9XCJvbkNoYW5nZUlucHV0U2VhcmNoKClcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIhXCJcclxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIlxyXG4gICAgICBbdHlwZV09XCJjdXJyZW50VHlwZVwiXHJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgW21heF09XCJtYXhcIlxyXG4gICAgICBbbWluXT1cIm1pblwiXHJcbiAgICAgIFtuYW1lXT1cImZpZWxkTmFtZSFcIlxyXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3JcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlJZCgpXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkYnlJZCgpXCJcclxuICAgICAgcm9sZT1cInRleHRib3hcIlxyXG4gICAgICBkaWdpdHNPbmx5XHJcbiAgICAgIFthbGxvd09ubHlEaWdpdHNdPVwiYWxsb3dPbmx5RGlnaXRzXCJcclxuICAgICAgW2FsbG93TmVnYXRpdmVdPVwiYWxsb3dOZWdhdGl2ZVwiXHJcbiAgICAgIChmb2N1c2luKT1cIm9uQWN0aXZlKHRydWUsICdmb2N1cycpXCJcclxuICAgIC8+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0YXJlYT5cclxuICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICAoYmx1cik9XCJvblRvdWNoKCk7IG9uQWN0aXZlKGZhbHNlLCAnZm9jdXMnKTsgb25CbHVyKClcIlxyXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICAgIFtpZF09XCJpZCgpXCJcclxuICAgICAgICAoa2V5dXApPVwib25DaGFuZ2VJbnB1dFNlYXJjaCgpXCJcclxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwib25TdWJtaXQoKVwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFt0eXBlXT1cImN1cnJlbnRUeXBlXCJcclxuICAgICAgICBbbmFtZV09XCJmaWVsZE5hbWUhXCJcclxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiIWxhYmVsID8gYXJpYUxhYmVsIDogJydcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvcnNMZW5ndGggfHwgKG5nQ29udHJvbD8uZXJyb3JzICYmIG5nQ29udHJvbD8udG91Y2hlZCkgfHwgaGFzRXJyb3JcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRieUlkKClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5SWQoKVwiXHJcbiAgICAgICAgcm9sZT1cInRleHRib3hcIlxyXG4gICAgICAgIFtjZGtUZXh0YXJlYUF1dG9zaXplXT1cInR5cGUgPT09ICdtdWx0aS1saW5lJ1wiXHJcbiAgICAgICAgW2Nka0F1dG9zaXplTWluUm93c109XCJ0eXBlID09PSAnbXVsdGktbGluZScgPyAxIDogNVwiXHJcbiAgICAgICAgW2Nka0F1dG9zaXplTWF4Um93c109XCJ0eXBlID09PSAnbXVsdGktbGluZScgPyBtYXhSb3dzIDogNVwiXHJcbiAgICAgICAgKGZvY3VzaW4pPVwib25BY3RpdmUodHJ1ZSwgJ2ZvY3VzJylcIlxyXG4gICAgICA+PC90ZXh0YXJlYT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm9wdGlvbnNcIiAqbmdJZj1cInR5cGUgPT09ICdzZWFyY2gnIHx8IHR5cGUgPT09ICdjb2xsYXBzZWQtc2VhcmNoJyB8fCB0eXBlID09PSAncGFzc3dvcmQnIHx8IHR5cGUgPT09ICd2YWxpZGF0aW9uLXRleHQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDx1aS1idXR0b25cclxuICAgICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlXCJcclxuICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgW2p1c3RJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXHJcbiAgICAgICAgICBpY29uTmFtZT1cIkNsb3NlXCJcclxuICAgICAgICAgIFtsYWJlbF09XCIoJ0NPTU1PTi5DTEVBUicgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwiY2xlYXJWYWx1ZSgpXCJcclxuICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsICsgJy0tJyArICgnQ09NTU9OLkNMRUFSJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpXCJcclxuICAgICAgICA+PC91aS1idXR0b24+XHJcbiAgICAgICAgPHVpLWJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgIFt0b29sdGlwXT1cIigoc2hvd1Bhc3N3b3JkID8gJ0ZJRUxELkhJREVfUEFTU1dPUkQnIDogJ0ZJRUxELlNIT1dfUEFTU1dPUkQnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAqbmdJZj1cInR5cGUgPT09ICdwYXNzd29yZCdcIlxyXG4gICAgICAgICAgW2p1c3RJY29uXT1cInRydWVcIlxyXG4gICAgICAgICAgcm9sZT1cInN3aXRjaFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwic2hvd1Bhc3N3b3JkXCJcclxuICAgICAgICAgIFtpY29uTmFtZV09XCJnZXRQYXNzd29yZEljb25cIlxyXG4gICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd1Bhc3N3b3JkQ2xpY2soKVwiXHJcbiAgICAgICAgICAjYnRuXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuKVwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJyZWZvY3VzUGFzc3dvcmRCdXR0b24oYnRuKVwiXHJcbiAgICAgICAgPjwvdWktYnV0dG9uPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICB0eXBlID09PSAndmFsaWRhdGlvbi10ZXh0JyAmJiAoYXBwbGljYXRpb25UaGVtZSA9PT0gJ2RhcmsnIHx8IGFwcGxpY2F0aW9uVGhlbWUgPT09ICdsaWdodCcpICYmIHZhbHVlLmxlbmd0aFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dWktYnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzVmFsaWRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRpb25cIlxyXG4gICAgICAgICAgICBbdmFyaWFudF09XCIndGV4dCdcIlxyXG4gICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCInbGlnaHQnXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidWYWxpZGF0ZSdcIlxyXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgID48L3VpLWJ1dHRvbj5cclxuICAgICAgICAgIDx1aS1pY29uIGNsYXNzPVwidmFsaWRcIiBbY29sb3JdPVwiJ3doaXRlJ1wiIGFwcGxpY2F0aW9uVGhlbWU9XCJsaWdodFwiIFtuYW1lXT1cIidDaGVjaydcIiAqbmdJZj1cImlzVmFsaWRcIj48L3VpLWljb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKGhhc1RleHRBcmVhQ291bnRlcikge1xyXG4gICAgICA8bWF0LWhpbnQgY2xhc3M9XCJpbmZvXCIgKm5nSWY9XCJ0eXBlID09PSAndGV4dGFyZWEnICYmICFlcnJvcnNMZW5ndGggJiYgIShuZ0NvbnRyb2w/LmVycm9ycyB8IGhhc1ZhbGlkYXRpb25FcnJvcilcIlxyXG4gICAgICAgID57eyB2YWx1ZS5sZW5ndGggfX0gLyB7eyBtYXhDaGFyYWN0ZXJzIH19PC9tYXQtaGludFxyXG4gICAgICA+XHJcbiAgICB9XHJcblxyXG4gICAgPG1hdC1oaW50XHJcbiAgICAgIGNsYXNzPVwiaW5mb1wiXHJcbiAgICAgICpuZ0lmPVwiaGludE1lc3NhZ2UgJiYgIWVycm9yc0xlbmd0aCAmJiAhKG5nQ29udHJvbD8uZXJyb3JzIHwgaGFzVmFsaWRhdGlvbkVycm9yKSAmJiB0eXBlICE9PSAndGV4dGFyZWEnXCJcclxuICAgICAgPnt7IGhpbnRNZXNzYWdlIH19PC9tYXQtaGludFxyXG4gICAgPlxyXG4gICAgPG1hdC1oaW50IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cImVycm9yc0xlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJlcnJvcnNMZW5ndGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nRm9yPVwibGV0IGVycm9yIG9mIF9lcnJvcnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgPHVpLWljb24gW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiIFtuYW1lXT1cIidFcnJvcidcIj48L3VpLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVycm9yXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPHVpLXZhbGlkYXRpb24tZXJyb3JcclxuICAgICAgICAqbmdJZj1cIm5nQ29udHJvbCAmJiAhaGlkZUJ1aWx0SW5FcnJvcnNcIlxyXG4gICAgICAgIFtuZ0NvbnRyb2xdPVwibmdDb250cm9sXCJcclxuICAgICAgICBbbGFiZWxdPVwiaGlkZUxhYmVsSW5FcnJvcnMgPyBudWxsIDogbGFiZWxcIlxyXG4gICAgICA+PC91aS12YWxpZGF0aW9uLWVycm9yPlxyXG4gICAgPC9tYXQtaGludD5cclxuXHJcbiAgICBAaWYgKGJhZGdlVmFyaWFudCkge1xyXG4gICAgICA8dWktYmFkZ2UgY2xhc3M9XCJmaWVsZC1iYWRnZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJiYWRnZVZhcmlhbnRcIj48L3VpLWJhZGdlPlxyXG4gICAgfVxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -7705,7 +7705,7 @@ class FieldComponent {
7705
7705
  this.value = '0';
7706
7706
  }
7707
7707
  else {
7708
- this.onChange(this.type === 'number' ? +this.value : this.value);
7708
+ this.onChange(this.type === 'number' && this.value !== '' ? +this.value : this.value);
7709
7709
  }
7710
7710
  }
7711
7711
  writeValue(value) {