@dereekb/dbx-form 9.18.4 → 9.18.6

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.
@@ -24,6 +24,7 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
24
24
  this.inputCtrl = new FormControl('');
25
25
  this._formControlObs = new BehaviorSubject(undefined);
26
26
  this.formControl$ = this._formControlObs.pipe(filterMaybe());
27
+ this._clearDisplayHashMapSub = new SubscriptionObject();
27
28
  this._displayHashMap = new BehaviorSubject(new Map());
28
29
  this.inputValue$ = this.inputCtrl.valueChanges.pipe(startWith(this.inputCtrl.value), map((x) => x || ''));
29
30
  this.inputValueString$ = this.inputValue$.pipe(debounceTime(200), distinctUntilChanged());
@@ -86,6 +87,12 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
86
87
  get showClearValue() {
87
88
  return this.searchableField.showClearValue ?? true;
88
89
  }
90
+ get searchLabel() {
91
+ return this.searchableField.searchLabel ?? 'Search';
92
+ }
93
+ get refreshDisplayValues$() {
94
+ return this.searchableField.refreshDisplayValues$;
95
+ }
89
96
  loadDisplayValuesForValues(values) {
90
97
  return this.loadDisplayValuesForFieldValues(values.map((value) => ({ value })));
91
98
  }
@@ -136,6 +143,9 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
136
143
  }
137
144
  ngOnInit() {
138
145
  this._formControlObs.next(this.formControl);
146
+ if (this.refreshDisplayValues$ != null) {
147
+ this._clearDisplayHashMapSub.subscription = this.refreshDisplayValues$.subscribe(() => this._displayHashMap.next(new Map()));
148
+ }
139
149
  if (this.searchableField.textInputValidator) {
140
150
  this.inputCtrl.setValidators(this.searchableField.textInputValidator);
141
151
  }
@@ -157,6 +167,7 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
157
167
  super.ngOnDestroy();
158
168
  this._displayHashMap.complete();
159
169
  this._formControlObs.complete();
170
+ this._clearDisplayHashMapSub.destroy();
160
171
  this.searchContext.destroy();
161
172
  }
162
173
  /**
@@ -247,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
247
258
  type: ViewChild,
248
259
  args: ['textInput']
249
260
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBK0IsaUNBQWlDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFnQiwyQkFBMkIsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakosT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQW1CLFdBQVcsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFcEosT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUEwRHhDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLHdDQUErTCxTQUFRLFNBQTZCO0lBMkx4UCxZQUFxQixLQUF3QjtRQUMzQyxLQUFLLEVBQUUsQ0FBQztRQURXLFVBQUss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ZW50IjpbImltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUsIGNvbnZlcnRNYXliZVRvQXJyYXksIGZpbmRVbmlxdWUsIGxhc3RWYWx1ZSwgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIG1lcmdlRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlncyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIExvYWRpbmdTdGF0ZSwgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlLCBzdWNjZXNzUmVzdWx0LCBzdGFydFdpdGhCZWdpbkxvYWRpbmcgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb24uIElmIHByb3ZpZGVkLCBhbGxvd1N0cmluZ1ZhbHVlcyBpcyBjb25zaWRlcmVkIHRydWUuXG4gICAqL1xuICBjb252ZXJ0U3RyaW5nVmFsdWU/OiAodGV4dDogc3RyaW5nKSA9PiBUO1xuICAvKipcbiAgICogVXNlZCBmb3IgaGFzaGluZyBkaXNwbGF5IHZhbHVlcyBhbmQgb21pdHRpbmcgcmVwZWF0IHZhbHVlcy5cbiAgICpcbiAgICogSWYgaGFzaEZvclZhbHVlIGlzIG5vdCBwcm92aWRlZCwgdGhlIHZhbHVlJ3MgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgaGFzaEZvclZhbHVlPzogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD47XG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIHNlYXJjaC5cbiAgICovXG4gIHNlYXJjaDogU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbjxULCBNPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHNlYXJjaGVzIG9uIGVtcHR5IHRleHQuIElzIGZhbHNlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBzZWFyY2hPbkVtcHR5VGV4dD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZhdWx0IGluamVjdGVkIGNvbmZpZyB0byB1c2UgZm9yIGRpc3BsYXkgdmFsdWVzLlxuICAgKi9cbiAgZGlzcGxheT86IFBhcnRpYWw8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGJ1aWxkaW5nIGEgZGlzcGxheSB2YWx1ZSBnaXZlbiB0aGUgaW5wdXQuXG4gICAqL1xuICBkaXNwbGF5Rm9yVmFsdWU6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gdXNlIHRoZSBhbmNob3IgZmllbGQgb24gdmFsdWUgZWxlbWVudHMuXG4gICAqXG4gICAqIFRoaXMgaGFzIG5vIGRlZmF1bHQgZWZmZWN0IGlmIGEgY29tcG9uZW50IGNsYXNzIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgdXNlQW5jaG9yPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJldHJpZXZpbmcgYW4gYW5jaG9yIHZhbHVlIGZvciB2YWx1ZXMgdGhhdCBoYXZlIG5vIGFuY2hvciB2YWx1ZSBzZXQuXG4gICAqXG4gICAqIE9ubHkgdXNlZCB3aGVuIHVzZUFuY2hvciBpcyB0cnVlLlxuICAgKi9cbiAgYW5jaG9yRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyBcIkNsZWFyXCIgaW4gdGhlIGF1dGNvbXBsZXRlIGxpc3QuXG4gICAqL1xuICBzaG93Q2xlYXJWYWx1ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWJzdHJhY3Qgc2VhcmNoYWJsZSBmaWVsZCB0aGF0IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3Igc2VhcmNoaW5nIGZvciB2YWx1ZXMsIGFuZCBmb3IgZGlzcGxheWluZyB2YWx1ZXMgdXNpbmcgT2JzZXJ2YWJsZXMuXG4gKlxuICogRGlzcGxheSB2YWx1ZXMgYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZVZhbHVlRmllbGREaXJlY3RpdmU8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIEMgZXh0ZW5kcyBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+ID0gU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPj4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPEM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgbXVsdGlTZWxlY3QgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdmVycmlkZSBzZXQgYnkgdGhlIHBhcmVudCBjbGFzcyBmb3IgcGlja2luZyBhIGRlZmF1bHQgZGlzcGxheSBmb3IgdGhpcyBkaXJlY3RpdmUuXG4gICAqL1xuICBkZWZhdWx0RGlzcGxheT86IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZztcblxuICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnKVxuICB0ZXh0SW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5IGlucHV0Q3RybCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF9kaXNwbGF5SGFzaE1hcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPEgsIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPj4+KG5ldyBNYXAoKSk7XG5cbiAgcmVhZG9ubHkgaW5wdXRWYWx1ZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuaW5wdXRDdHJsLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgIHN0YXJ0V2l0aCh0aGlzLmlucHV0Q3RybC52YWx1ZSksXG4gICAgbWFwKCh4KSA9PiB4IHx8ICcnKVxuICApO1xuICByZWFkb25seSBpbnB1dFZhbHVlU3RyaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dFZhbHVlJC5waXBlKGRlYm91bmNlVGltZSgyMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBzZWFyY2hSZXN1bHRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy5pbnB1dFZhbHVlU3RyaW5nJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodGV4dCkgPT5cbiAgICAgICh0ZXh0IHx8IHRoaXMuc2VhcmNoT25FbXB0eVRleHQgPyB0aGlzLnNlYXJjaCh0ZXh0ID8/ICcnKSA6IG9mKFtdKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXMoeCkpLFxuICAgICAgICAvLyBSZXR1cm4gYmVnaW4gbG9hZGluZyB0byBzZXR1cCB0aGUgbG9hZGluZyBzdGF0ZS5cbiAgICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKClcbiAgICAgIClcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNlYXJjaENvbnRleHQgPSBuZXcgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiBmYWxzZSB9KTtcblxuICByZWFkb25seSBzZWFyY2hSZXN1bHRzJDogT2JzZXJ2YWJsZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4gPSB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQucGlwZShtYXAoKHgpID0+IHg/LnZhbHVlID8/IFtdKSk7XG5cbiAgcmVhZG9ubHkgX2Zvcm1Db250cm9sVmFsdWUkOiBPYnNlcnZhYmxlPFQgfCBUW10+ID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLCBzaGFyZVJlcGxheSgxKSkpKTtcblxuICByZWFkb25seSB2YWx1ZXMkOiBPYnNlcnZhYmxlPFRbXT4gPSB0aGlzLl9mb3JtQ29udHJvbFZhbHVlJC5waXBlKG1hcChjb252ZXJ0TWF5YmVUb0FycmF5KSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPj4gPSB0aGlzLnZhbHVlcyQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHN3aXRjaE1hcCgodmFsdWVzOiBUW10pID0+IHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JWYWx1ZXModmFsdWVzKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWVzJDogT2JzZXJ2YWJsZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4gPSB0aGlzLmRpc3BsYXlWYWx1ZXNTdGF0ZSQucGlwZShtYXAoKHgpID0+IHg/LnZhbHVlID8/IFtdKSk7XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5uYW1lID8/IGNhbWVsQ2FzZSh0aGlzLmxhYmVsID8/ICh0aGlzLmtleSBhcyBzdHJpbmcpKTtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5sYWJlbDtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgc2VhcmNoYWJsZUZpZWxkKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IHNlYXJjaE9uRW1wdHlUZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hPbkVtcHR5VGV4dCA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCBhdXRvY29tcGxldGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMucHJvcHMuYXR0cmlidXRlcz8uWydhdXRvY29tcGxldGUnXSA/PyB0aGlzLmtleSkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGhhc2hGb3JWYWx1ZSgpOiBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxULCBIPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmhhc2hGb3JWYWx1ZSA/PyAoKHgpID0+IHggYXMgdW5rbm93biBhcyBIKTtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgdXNlQW5jaG9yKCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQudXNlQW5jaG9yO1xuICB9XG5cbiAgZ2V0IGFuY2hvckZvclZhbHVlKCk6IE1heWJlPFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTT4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYW5jaG9yRm9yVmFsdWU7XG4gIH1cblxuICBnZXQgZGlzcGxheSgpOiBNYXliZTxQYXJ0aWFsPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZz4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheTtcbiAgfVxuXG4gIGdldCBzZWFyY2goKTogU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbjxULCBNPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnNlYXJjaDtcbiAgfVxuXG4gIGdldCB2YWx1ZXMoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VmFsdWVPbkZvcm1Db250cm9sKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpID8/IFtdO1xuICB9XG5cbiAgZ2V0IGFsbG93U3RyaW5nVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5hbGxvd1N0cmluZ1ZhbHVlcyA/PyBCb29sZWFuKHRoaXMuY29udmVydFN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIGdldCBjb252ZXJ0U3RyaW5nVmFsdWUoKTogTWF5YmU8KHRleHQ6IHN0cmluZykgPT4gVD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5jb252ZXJ0U3RyaW5nVmFsdWU7XG4gIH1cblxuICBnZXQgc2hvd0NsZWFyVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnNob3dDbGVhclZhbHVlID8/IHRydWU7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzLm1hcCgodmFsdWUpID0+ICh7IHZhbHVlIH0pKSk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10pID0+IHN1Y2Nlc3NSZXN1bHQoZGlzcGxheVZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGlzcGxheU1hcCkgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nUmVzdWx0ID0gdmFsdWVzLm1hcCgoeCkgPT4gW3gsIHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpXSBhcyBbU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgSF0pLm1hcCgoW3gsIGhhc2hdLCBpKSA9PiBbaSwgaGFzaCwgeCwgZGlzcGxheU1hcC5nZXQoaGFzaCldIGFzIFtudW1iZXIsIEgsIFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT4sIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPl0pO1xuXG4gICAgICAgIGNvbnN0IGhhc0Rpc3BsYXkgPSBtYXBwaW5nUmVzdWx0LmZpbHRlcigoeCkgPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKCh4KSA9PiAheFszXSk7XG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHREaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFt0aGlzLmRlZmF1bHREaXNwbGF5LCB0aGlzLmRpc3BsYXldKTtcbiAgICAgICAgICBjb25zdCBhbmNob3JGb3JWYWx1ZSA9IHRoaXMudXNlQW5jaG9yICYmIHRoaXMuYW5jaG9yRm9yVmFsdWU7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGRlZmF1bHQgY29tcG9uZW50IGNsYXNzZXMgdG8gY29tcGxldGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgeC5kaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtkZWZhdWx0RGlzcGxheSwgeC5kaXNwbGF5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF4LmFuY2hvciAmJiBhbmNob3JGb3JWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgeC5hbmNob3IgPSBhbmNob3JGb3JWYWx1ZSh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+LCBIXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgb2JzID0gb2YoaGFzRGlzcGxheS5tYXAoKHgpID0+IHhbM10pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcblxuICAgIGlmICh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpIHtcbiAgICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbGlkYXRvcnModGhpcy5zZWFyY2hhYmxlRmllbGQudGV4dElucHV0VmFsaWRhdG9yKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdERpc3BsYXk/LmNvbXBvbmVudENsYXNzKSB7XG4gICAgICB0aGlzLmRlZmF1bHREaXNwbGF5ID0ge1xuICAgICAgICAuLi50aGlzLmRlZmF1bHREaXNwbGF5LFxuICAgICAgICBjb21wb25lbnRDbGFzczogRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubXVsdGlTZWxlY3QgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb24gPSB0aGlzLmRpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeFswXSkge1xuICAgICAgICAgIHRoaXMuX3N5bmNTaW5nbGVWYWx1ZSh4WzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9kaXNwbGF5SGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zZWFyY2hDb250ZXh0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHN5bmMgdGhlIGlucHV0IGNvbnRyb2wgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWUuXG4gICAqXG4gICAqIE9ubHkgdXNlZCB3aGVuIG11bHRpU2VsZWN0IGlzIGZhbHNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9zeW5jU2luZ2xlVmFsdWUodmFsdWU6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUodmFsdWUubGFiZWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9hZGRXaXRoVGV4dFZhbHVlKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGV4dCkge1xuICAgICAgdGV4dCA9ICh0ZXh0IHx8ICcnKS50cmltKCk7XG4gICAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWx1ZSh0ZXh0LnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coJ0FkZDogJywgdGV4dCwgdGhpcy5pbnB1dEN0cmwudmFsaWQpO1xuXG4gICAgaWYgKCF0aGlzLmlucHV0Q3RybC52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udmVydFN0cmluZ1ZhbHVlID8gdGhpcy5jb252ZXJ0U3RyaW5nVmFsdWUodGV4dCkgOiAodGV4dCBhcyB1bmtub3duIGFzIFQpO1xuICAgICAgdGhpcy5hZGRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWRkV2l0aERpc3BsYXlWYWx1ZShkaXNwbGF5VmFsdWU6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5hZGRWYWx1ZShkaXNwbGF5VmFsdWUudmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlV2l0aERpc3BsYXlWYWx1ZShkaXNwbGF5VmFsdWU6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVWYWx1ZShkaXNwbGF5VmFsdWUudmFsdWUpO1xuICB9XG5cbiAgX3RyeUFkZEN1cnJlbnRJbnB1dFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIGxldCBhZGRlZFZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5hbGxvd1N0cmluZ1ZhbHVlcykge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0Q3RybC52YWx1ZSB8fCAnJztcblxuICAgICAgaWYgKCh2YWx1ZSB8fCAnJykudHJpbSgpKSB7XG4gICAgICAgIHRoaXMuX2FkZFdpdGhUZXh0VmFsdWUodmFsdWUpO1xuICAgICAgICBhZGRlZFZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkZWRWYWx1ZTtcbiAgfVxuXG4gIGFkZFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVzKFsuLi50aGlzLnZhbHVlcywgdmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlcztcblxuICAgIGlmICh0aGlzLmhhc2hGb3JWYWx1ZSkge1xuICAgICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSAhPT0gaGFzaFRvRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB4ICE9PSB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZXModmFsdWVzKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVzKFtdKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaW5kVW5pcXVlKHZhbHVlcywgdGhpcy5oYXNoRm9yVmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXMpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBBcnJheU9yVmFsdWU8VD4pOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlID0gdmFsdWVPbkZvcm1Db250cm9sICE9IG51bGwgPyAoW10gYXMgVFtdKS5jb25jYXQodmFsdWVPbkZvcm1Db250cm9sKSA6IFtdOyAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZSBhcyBUW107XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tdWx0aVNlbGVjdCA/IHZhbHVlcyA6IGxhc3RWYWx1ZSh2YWx1ZXMpOyAvLyBwaWNrIGxhc3QgdmFsdWUsIGFzIHRoZSBsYXN0IHZhbHVlIGFkZGVkIGlzIHRoZSBuZXdlc3QgdmFsdWUuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG59XG4iXX0=
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBK0IsaUNBQWlDLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFnQiwyQkFBMkIsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakosT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQW1CLFdBQVcsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFcEosT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFvRXhDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLHdDQUErTCxTQUFRLFNBQTZCO0lBb014UCxZQUFxQixLQUF3QjtRQUMzQyxLQUFLLEVBQUUsQ0FBQztRQURXLFVBQUss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QUMsQ0FBQywwQkFBMEI7UUFDbEgsT0FBTyxLQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLE1BQVc7UUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxnRUFBZ0U7UUFDN0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25DLENBQUM7O3NJQTVVbUIsd0NBQXdDOzBIQUF4Qyx3Q0FBd0M7NEZBQXhDLHdDQUF3QztrQkFEN0QsU0FBUzt3R0FhUixTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycmF5T3JWYWx1ZSwgTWF5YmUsIGNvbnZlcnRNYXliZVRvQXJyYXksIGZpbmRVbmlxdWUsIGxhc3RWYWx1ZSwgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIG1lcmdlRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlncyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIExvYWRpbmdTdGF0ZSwgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlLCBzdWNjZXNzUmVzdWx0LCBzdGFydFdpdGhCZWdpbkxvYWRpbmcgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbnZlcnNpb24gZnVuY3Rpb24uIElmIHByb3ZpZGVkLCBhbGxvd1N0cmluZ1ZhbHVlcyBpcyBjb25zaWRlcmVkIHRydWUuXG4gICAqL1xuICBjb252ZXJ0U3RyaW5nVmFsdWU/OiAodGV4dDogc3RyaW5nKSA9PiBUO1xuICAvKipcbiAgICogVXNlZCBmb3IgaGFzaGluZyBkaXNwbGF5IHZhbHVlcyBhbmQgb21pdHRpbmcgcmVwZWF0IHZhbHVlcy5cbiAgICpcbiAgICogSWYgaGFzaEZvclZhbHVlIGlzIG5vdCBwcm92aWRlZCwgdGhlIHZhbHVlJ3MgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgaGFzaEZvclZhbHVlPzogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD47XG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIHNlYXJjaC5cbiAgICovXG4gIHNlYXJjaDogU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbjxULCBNPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHNlYXJjaGVzIG9uIGVtcHR5IHRleHQuIElzIGZhbHNlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBzZWFyY2hPbkVtcHR5VGV4dD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZWZhdWx0IGluamVjdGVkIGNvbmZpZyB0byB1c2UgZm9yIGRpc3BsYXkgdmFsdWVzLlxuICAgKi9cbiAgZGlzcGxheT86IFBhcnRpYWw8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGJ1aWxkaW5nIGEgZGlzcGxheSB2YWx1ZSBnaXZlbiB0aGUgaW5wdXQuXG4gICAqL1xuICBkaXNwbGF5Rm9yVmFsdWU6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gdXNlIHRoZSBhbmNob3IgZmllbGQgb24gdmFsdWUgZWxlbWVudHMuXG4gICAqXG4gICAqIFRoaXMgaGFzIG5vIGRlZmF1bHQgZWZmZWN0IGlmIGEgY29tcG9uZW50IGNsYXNzIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgdXNlQW5jaG9yPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIHJldHJpZXZpbmcgYW4gYW5jaG9yIHZhbHVlIGZvciB2YWx1ZXMgdGhhdCBoYXZlIG5vIGFuY2hvciB2YWx1ZSBzZXQuXG4gICAqXG4gICAqIE9ubHkgdXNlZCB3aGVuIHVzZUFuY2hvciBpcyB0cnVlLlxuICAgKi9cbiAgYW5jaG9yRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyBcIkNsZWFyXCIgaW4gdGhlIGF1dGNvbXBsZXRlIGxpc3QuXG4gICAqL1xuICBzaG93Q2xlYXJWYWx1ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMYWJlbCBmb3IgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJTZWFyY2hcIlxuICAgKi9cbiAgc2VhcmNoTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIG9ic2VydmFibGUgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIGNsZWFyaW5nIG9mIGFsbCBjYWNoZWQgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICByZWZyZXNoRGlzcGxheVZhbHVlcyQ/OiBPYnNlcnZhYmxlPHVua25vd24+O1xufVxuXG4vKipcbiAqIEFic3RyYWN0IHNlYXJjaGFibGUgZmllbGQgdGhhdCBwcm92aWRlcyBhIGZlYXR1cmUgZm9yIHNlYXJjaGluZyBmb3IgdmFsdWVzLCBhbmQgZm9yIGRpc3BsYXlpbmcgdmFsdWVzIHVzaW5nIE9ic2VydmFibGVzLlxuICpcbiAqIERpc3BsYXkgdmFsdWVzIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBDIGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiA9IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxDPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzZXQvZ2V0IHZhbHVlcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIG11bHRpU2VsZWN0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgb3ZlcnJpZGUgc2V0IGJ5IHRoZSBwYXJlbnQgY2xhc3MgZm9yIHBpY2tpbmcgYSBkZWZhdWx0IGRpc3BsYXkgZm9yIHRoaXMgZGlyZWN0aXZlLlxuICAgKi9cbiAgZGVmYXVsdERpc3BsYXk/OiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc7XG5cbiAgQFZpZXdDaGlsZCgndGV4dElucHV0JylcbiAgdGV4dElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGlucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5pbnB1dEN0cmwudmFsdWUpLFxuICAgIG1hcCgoeCkgPT4geCB8fCAnJylcbiAgKTtcbiAgcmVhZG9ubHkgaW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuaW5wdXRWYWx1ZSQucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiA9IHRoaXMuaW5wdXRWYWx1ZVN0cmluZyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHRleHQpID0+XG4gICAgICAodGV4dCB8fCB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0ID8gdGhpcy5zZWFyY2godGV4dCA/PyAnJykgOiBvZihbXSkpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgICAgLy8gUmV0dXJuIGJlZ2luIGxvYWRpbmcgdG8gc2V0dXAgdGhlIGxvYWRpbmcgc3RhdGUuXG4gICAgICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBzZWFyY2hDb250ZXh0ID0gbmV3IExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSh7IG9iczogdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlJDogT2JzZXJ2YWJsZTxUIHwgVFtdPiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSk7XG5cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy52YWx1ZXMkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzd2l0Y2hNYXAoKHZhbHVlczogVFtdKSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlcykpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlcyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQubmFtZSA/PyBjYW1lbENhc2UodGhpcy5sYWJlbCA/PyAodGhpcy5rZXkgYXMgc3RyaW5nKSk7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubGFiZWw7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKTogTWF5YmU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IHNlYXJjaGFibGVGaWVsZCgpOiBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBzZWFyY2hPbkVtcHR5VGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuc2VhcmNoT25FbXB0eVRleHQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gPz8gdGhpcy5rZXkpIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHVzZUFuY2hvcigpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFuY2hvckZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXkoKTogTWF5YmU8UGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmRpc3BsYXk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMgPz8gQm9vbGVhbih0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBnZXQgY29udmVydFN0cmluZ1ZhbHVlKCk6IE1heWJlPCh0ZXh0OiBzdHJpbmcpID0+IFQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuY29udmVydFN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zaG93Q2xlYXJWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3QgaGFzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKCh4KSA9PiBCb29sZWFuKHhbM10pKTtcbiAgICAgICAgY29uc3QgbmVlZHNEaXNwbGF5ID0gbWFwcGluZ1Jlc3VsdC5maWx0ZXIoKHgpID0+ICF4WzNdKTtcbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT47XG5cbiAgICAgICAgaWYgKG5lZWRzRGlzcGxheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gR28gZ2V0IHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNPYnMgPSB0aGlzLmRpc3BsYXlGb3JWYWx1ZShuZWVkc0Rpc3BsYXkubWFwKCh4KSA9PiB4WzJdKSk7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdERpc3BsYXkgPSBtZXJnZURieEluamVjdGlvbkNvbXBvbmVudENvbmZpZ3MoW3RoaXMuZGVmYXVsdERpc3BsYXksIHRoaXMuZGlzcGxheV0pO1xuICAgICAgICAgIGNvbnN0IGFuY2hvckZvclZhbHVlID0gdGhpcy51c2VBbmNob3IgJiYgdGhpcy5hbmNob3JGb3JWYWx1ZTtcblxuICAgICAgICAgIG9icyA9IGRpc3BsYXlWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKGRpc3BsYXlSZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEFzc2lnbiB0aGUgZGVmYXVsdCBjb21wb25lbnQgY2xhc3NlcyB0byBjb21wbGV0ZSBjb25maWd1cmF0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0cy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF4LmRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICAgIHguZGlzcGxheSA9IGRlZmF1bHREaXNwbGF5O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBtZXJnZURieEluamVjdGlvbkNvbXBvbmVudENvbmZpZ3MoW2RlZmF1bHREaXNwbGF5LCB4LmRpc3BsYXldKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXguYW5jaG9yICYmIGFuY2hvckZvclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB4LmFuY2hvciA9IGFuY2hvckZvclZhbHVlKHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbWFwIHRvIHJlLWpvaW4gdmFsdWVzIGxhdGVyLlxuICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5UmVzdWx0c01hcHBpbmc6IFtDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4sIEhdW10gPSAoZGlzcGxheVJlc3VsdHMgYXMgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10pLm1hcCgoeCkgPT4gW3gsIHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpXSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChkaXNwbGF5UmVzdWx0c01hcHBpbmcubWFwKChbeCwgaGFzaF0pID0+IFtoYXNoLCB4XSkpO1xuXG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSBkaXNwbGF5TWFwLiBObyBuZWVkIHRvIHB1c2ggYW4gdXBkYXRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHNNYXBwaW5nLmZvckVhY2goKFt4LCBoYXNoXSkgPT4gZGlzcGxheU1hcC5zZXQoaGFzaCwgeCkpO1xuXG4gICAgICAgICAgICAgIC8vIFppcCB2YWx1ZXMgYmFjayB0b2dldGhlci5cbiAgICAgICAgICAgICAgY29uc3QgbmV3RGlzcGxheVZhbHVlcyA9IG1hcHBpbmdSZXN1bHQubWFwKCh4KSA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBhbGwgZGlzcGxheSB2YWx1ZXMgYXJlIGhhc2hlZCByZXR1cm4gdGhhdC5cbiAgICAgICAgICBvYnMgPSBvZihoYXNEaXNwbGF5Lm1hcCgoeCkgPT4geFszXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9icztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoYWJsZUZpZWxkLnRleHRJbnB1dFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsaWRhdG9ycyh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kZWZhdWx0RGlzcGxheT8uY29tcG9uZW50Q2xhc3MpIHtcbiAgICAgIHRoaXMuZGVmYXVsdERpc3BsYXkgPSB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdERpc3BsYXksXG4gICAgICAgIGNvbXBvbmVudENsYXNzOiBEYnhEZWZhdWx0U2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh4WzBdKSB7XG4gICAgICAgICAgdGhpcy5fc3luY1NpbmdsZVZhbHVlKHhbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLnNlYXJjaENvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc3luYyB0aGUgaW5wdXQgY29udHJvbCB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gbXVsdGlTZWxlY3QgaXMgZmFsc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3N5bmNTaW5nbGVWYWx1ZSh2YWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWx1ZSh2YWx1ZS5sYWJlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2FkZFdpdGhUZXh0VmFsdWUodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaGFibGVGaWVsZC5hbGxvd1N0cmluZ1ZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0ZXh0ID0gKHRleHQgfHwgJycpLnRyaW0oKTtcbiAgICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHRleHQudHJpbSgpKTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZygnQWRkOiAnLCB0ZXh0LCB0aGlzLmlucHV0Q3RybC52YWxpZCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRDdHJsLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0U3RyaW5nVmFsdWUgPyB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSh0ZXh0KSA6ICh0ZXh0IGFzIHVua25vd24gYXMgVCk7XG4gICAgICB0aGlzLmFkZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmFkZFZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICByZW1vdmVXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICBfdHJ5QWRkQ3VycmVudElucHV0VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgbGV0IGFkZGVkVmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmFsbG93U3RyaW5nVmFsdWVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaW5wdXRDdHJsLnZhbHVlIHx8ICcnO1xuXG4gICAgICBpZiAoKHZhbHVlIHx8ICcnKS50cmltKCkpIHtcbiAgICAgICAgdGhpcy5fYWRkV2l0aFRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGFkZGVkVmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRlZFZhbHVlO1xuICB9XG5cbiAgYWRkVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5zZXRWYWx1ZXMoWy4uLnRoaXMudmFsdWVzLCB2YWx1ZV0pO1xuICB9XG5cbiAgcmVtb3ZlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVzO1xuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNoVG9GaWx0ZXIgPSB0aGlzLmhhc2hGb3JWYWx1ZSh2YWx1ZSk7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHggIT09IHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlcyh2YWx1ZXMpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZXMoW10pO1xuICB9XG5cbiAgc2V0VmFsdWVzKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgLy8gVXNlIHRvIGZpbHRlciBub24tdW5pcXVlIHZhbHVlcy5cbiAgICBpZiAodGhpcy5oYXNoRm9yVmFsdWUpIHtcbiAgICAgIHZhbHVlcyA9IGZpbmRVbmlxdWUodmFsdWVzLCB0aGlzLmhhc2hGb3JWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlcyk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBwcm90ZWN0ZWQgX2dldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZU9uRm9ybUNvbnRyb2w6IEFycmF5T3JWYWx1ZTxUPik6IFRbXSB7XG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZU9uRm9ybUNvbnRyb2wgIT0gbnVsbCA/IChbXSBhcyBUW10pLmNvbmNhdCh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107IC8vIEFsd2F5cyByZXR1cm4gYW4gYXJyYXkuXG4gICAgcmV0dXJuIHZhbHVlIGFzIFRbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm11bHRpU2VsZWN0ID8gdmFsdWVzIDogbGFzdFZhbHVlKHZhbHVlcyk7IC8vIHBpY2sgbGFzdCB2YWx1ZSwgYXMgdGhlIGxhc3QgdmFsdWUgYWRkZWQgaXMgdGhlIG5ld2VzdCB2YWx1ZS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbn1cbiJdfQ==
@@ -46,9 +46,9 @@ export class DbxSearchableTextFieldComponent extends AbstractDbxSearchableValueF
46
46
  }
47
47
  }
48
48
  DbxSearchableTextFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxSearchableTextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
49
- DbxSearchableTextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxSearchableTextFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-text-field\" [ngClass]=\"{ 'dbx-searchable-text-field-has-value': (hasValue$ | async), 'dbx-searchable-text-field-show-value': showSelectedValue }\">\n <!-- Result View -->\n <div class=\"dbx-searchable-text-field-value mat-option mat-option-text\" *ngIf=\"showSelectedDisplayValue$ | async\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"(selectedDisplayValue$ | async)!\"></dbx-searchable-field-autocomplete-item>\n </div>\n <div class=\"dbx-searchable-text-field-input\">\n <div class=\"dbx-label\">Search</div>\n <!-- View -->\n <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [matAutocompleteDisabled]=\"readonly\" autocomplete=\"{{ autocomplete }}\" />\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </div>\n</div>\n\n<!-- Autocomplete -->\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let displayValue of searchResults$ | async\" [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n <!-- Add/Pick String Value -->\n <mat-option *ngIf=\"allowStringValues && (inputValue$ | async)\" [value]=\"{ value: (inputValue$ | async) }\">\n <p class=\"dbx-clear-hint text-center\">\"{{ inputValue$ | async }}\"</p>\n </mat-option>\n <!-- Show clear value -->\n <mat-option *ngIf=\"showClearValue && (hasValue$ | async)\" value=\"\">\n <p class=\"dbx-clear-hint text-center\">Clear</p>\n </mat-option>\n</mat-autocomplete>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "context", "loading", "error"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7.DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: ["displayValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
49
+ DbxSearchableTextFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxSearchableTextFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-text-field\" [ngClass]=\"{ 'dbx-searchable-text-field-has-value': (hasValue$ | async), 'dbx-searchable-text-field-show-value': showSelectedValue }\">\n <!-- Result View -->\n <div class=\"dbx-searchable-text-field-value mat-option mat-option-text\" *ngIf=\"showSelectedDisplayValue$ | async\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"(selectedDisplayValue$ | async)!\"></dbx-searchable-field-autocomplete-item>\n </div>\n <div class=\"dbx-searchable-text-field-input\">\n <div *ngIf=\"searchLabel\" class=\"dbx-label\">{{ searchLabel }}</div>\n <!-- View -->\n <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [matAutocompleteDisabled]=\"readonly\" autocomplete=\"{{ autocomplete }}\" />\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </div>\n</div>\n\n<!-- Autocomplete -->\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let displayValue of searchResults$ | async\" [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n <!-- Add/Pick String Value -->\n <mat-option *ngIf=\"allowStringValues && (inputValue$ | async)\" [value]=\"{ value: (inputValue$ | async) }\">\n <p class=\"dbx-clear-hint text-center\">\"{{ inputValue$ | async }}\"</p>\n </mat-option>\n <!-- Show clear value -->\n <mat-option *ngIf=\"showClearValue && (hasValue$ | async)\" value=\"\">\n <p class=\"dbx-clear-hint text-center\">Clear</p>\n </mat-option>\n</mat-autocomplete>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "context", "loading", "error"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7.DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: ["displayValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxSearchableTextFieldComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ template: "<div class=\"dbx-searchable-text-field\" [ngClass]=\"{ 'dbx-searchable-text-field-has-value': (hasValue$ | async), 'dbx-searchable-text-field-show-value': showSelectedValue }\">\n <!-- Result View -->\n <div class=\"dbx-searchable-text-field-value mat-option mat-option-text\" *ngIf=\"showSelectedDisplayValue$ | async\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"(selectedDisplayValue$ | async)!\"></dbx-searchable-field-autocomplete-item>\n </div>\n <div class=\"dbx-searchable-text-field-input\">\n <div class=\"dbx-label\">Search</div>\n <!-- View -->\n <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [matAutocompleteDisabled]=\"readonly\" autocomplete=\"{{ autocomplete }}\" />\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </div>\n</div>\n\n<!-- Autocomplete -->\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let displayValue of searchResults$ | async\" [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n <!-- Add/Pick String Value -->\n <mat-option *ngIf=\"allowStringValues && (inputValue$ | async)\" [value]=\"{ value: (inputValue$ | async) }\">\n <p class=\"dbx-clear-hint text-center\">\"{{ inputValue$ | async }}\"</p>\n </mat-option>\n <!-- Show clear value -->\n <mat-option *ngIf=\"showClearValue && (hasValue$ | async)\" value=\"\">\n <p class=\"dbx-clear-hint text-center\">Clear</p>\n </mat-option>\n</mat-autocomplete>\n" }]
52
+ args: [{ template: "<div class=\"dbx-searchable-text-field\" [ngClass]=\"{ 'dbx-searchable-text-field-has-value': (hasValue$ | async), 'dbx-searchable-text-field-show-value': showSelectedValue }\">\n <!-- Result View -->\n <div class=\"dbx-searchable-text-field-value mat-option mat-option-text\" *ngIf=\"showSelectedDisplayValue$ | async\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"(selectedDisplayValue$ | async)!\"></dbx-searchable-field-autocomplete-item>\n </div>\n <div class=\"dbx-searchable-text-field-input\">\n <div *ngIf=\"searchLabel\" class=\"dbx-label\">{{ searchLabel }}</div>\n <!-- View -->\n <input type=\"search\" [name]=\"name\" matInput #textInput [placeholder]=\"placeholder\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [matAutocompleteDisabled]=\"readonly\" autocomplete=\"{{ autocomplete }}\" />\n <div class=\"searchable-field-form-loading\">\n <dbx-loading [linear]=\"true\" [context]=\"searchContext\"></dbx-loading>\n </div>\n </div>\n</div>\n\n<!-- Autocomplete -->\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let displayValue of searchResults$ | async\" [value]=\"displayValue\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"displayValue\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n <!-- Add/Pick String Value -->\n <mat-option *ngIf=\"allowStringValues && (inputValue$ | async)\" [value]=\"{ value: (inputValue$ | async) }\">\n <p class=\"dbx-clear-hint text-center\">\"{{ inputValue$ | async }}\"</p>\n </mat-option>\n <!-- Show clear value -->\n <mat-option *ngIf=\"showClearValue && (hasValue$ | async)\" value=\"\">\n <p class=\"dbx-clear-hint text-center\">Clear</p>\n </mat-option>\n</mat-autocomplete>\n" }]
53
53
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSx3Q0FBd0MsRUFBbUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN6SCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQU9yRDs7R0FFRztBQUlILE1BQU0sT0FBTywrQkFBdUYsU0FBUSx3Q0FBK0Y7SUFIM007O1FBSVcsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzdCLENBQUM7UUFFTyxjQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsOEJBQXlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDbEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hELG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzdCLENBQUM7UUFVZ0IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFOUIsbUJBQWMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7S0FvQm5EO0lBOUJDLElBQWEsZUFBZTtRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLDZEQUE2RDtJQUN6SSxDQUFDO0lBTVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3RixJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNOLHNCQUFzQjthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFtQztRQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs2SEE1Q1UsK0JBQStCO2lIQUEvQiwrQkFBK0IsMkVDbEI1Qyw0dkRBNkJBOzRGRFhhLCtCQUErQjtrQkFIM0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzIH0gZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBza2lwV2hpbGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXBEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiB7XG4gIHNob3dTZWxlY3RlZFZhbHVlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgc2luZ2xlIGl0ZW0vdmFsdWUuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2VhcmNoYWJsZVRleHRGaWVsZENvbXBvbmVudDxULCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlPFQsIE0sIEgsIFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgc2VsZWN0ZWREaXNwbGF5VmFsdWUkID0gdGhpcy5kaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geFswXSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFwRGV0ZWN0Q2hhbmdlcyh0aGlzLmNkUmVmKVxuICApO1xuXG4gIHJlYWRvbmx5IGhhc1ZhbHVlJCA9IHRoaXMuc2VsZWN0ZWREaXNwbGF5VmFsdWUkLnBpcGUobWFwKCh4KSA9PiBCb29sZWFuKHgpKSk7XG4gIHJlYWRvbmx5IHNob3dTZWxlY3RlZERpc3BsYXlWYWx1ZSQgPSB0aGlzLnNlbGVjdGVkRGlzcGxheVZhbHVlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gdGhpcy5zaG93U2VsZWN0ZWRWYWx1ZSAmJiBCb29sZWFuKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRhcERldGVjdENoYW5nZXModGhpcy5jZFJlZilcbiAgKTtcblxuICBvdmVycmlkZSBnZXQgc2VhcmNoYWJsZUZpZWxkKCk6IFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBzaG93U2VsZWN0ZWRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuc2hvd1NlbGVjdGVkVmFsdWUgPz8gIXRoaXMuYWxsb3dTdHJpbmdWYWx1ZXM7IC8vIFNob3cgdGhlIHNlbGVjdGVkIHZhbHVlIG9ubHkgaWYgc3RyaW5nIHZhbHVlcyBhcmUgYWxsb3dlZC5cbiAgfVxuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IG11bHRpU2VsZWN0ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY2xlYXJJbnB1dFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmlucHV0VmFsdWUkLnBpcGUoc2tpcFdoaWxlKCh4KSA9PiAheCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgaWYgKCF4KSB7XG4gICAgICAgIC8vIHRoaXMuY2xlYXJWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fY2xlYXJJbnB1dFN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICBzZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYWRkV2l0aERpc3BsYXlWYWx1ZShldmVudC5vcHRpb24udmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZFwiIFtuZ0NsYXNzXT1cInsgJ2RieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtaGFzLXZhbHVlJzogKGhhc1ZhbHVlJCB8IGFzeW5jKSwgJ2RieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtc2hvdy12YWx1ZSc6IHNob3dTZWxlY3RlZFZhbHVlIH1cIj5cbiAgPCEtLSBSZXN1bHQgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cImRieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtdmFsdWUgbWF0LW9wdGlvbiBtYXQtb3B0aW9uLXRleHRcIiAqbmdJZj1cInNob3dTZWxlY3RlZERpc3BsYXlWYWx1ZSQgfCBhc3luY1wiPlxuICAgIDxkYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbSBbZGlzcGxheVZhbHVlXT1cIihzZWxlY3RlZERpc3BsYXlWYWx1ZSQgfCBhc3luYykhXCI+PC9kYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYngtc2VhcmNoYWJsZS10ZXh0LWZpZWxkLWlucHV0XCI+XG4gICAgPGRpdiBjbGFzcz1cImRieC1sYWJlbFwiPlNlYXJjaDwvZGl2PlxuICAgIDwhLS0gVmlldyAtLT5cbiAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIFtuYW1lXT1cIm5hbWVcIiBtYXRJbnB1dCAjdGV4dElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJpbnB1dEN0cmxcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbbWF0QXV0b2NvbXBsZXRlRGlzYWJsZWRdPVwicmVhZG9ubHlcIiBhdXRvY29tcGxldGU9XCJ7eyBhdXRvY29tcGxldGUgfX1cIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLWZpZWxkLWZvcm0tbG9hZGluZ1wiPlxuICAgICAgPGRieC1sb2FkaW5nIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cInNlYXJjaENvbnRleHRcIj48L2RieC1sb2FkaW5nPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEF1dG9jb21wbGV0ZSAtLT5cbjxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZC1hdXRvY29tcGxldGVcIiAjYXV0byAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxuICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGlzcGxheVZhbHVlIG9mIHNlYXJjaFJlc3VsdHMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+XG4gICAgPGRieC1zZWFyY2hhYmxlLWZpZWxkLWF1dG9jb21wbGV0ZS1pdGVtIFtkaXNwbGF5VmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+PC9kYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbT5cbiAgPC9tYXQtb3B0aW9uPlxuICA8IS0tIEFkZC9QaWNrIFN0cmluZyBWYWx1ZSAtLT5cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd1N0cmluZ1ZhbHVlcyAmJiAoaW5wdXRWYWx1ZSQgfCBhc3luYylcIiBbdmFsdWVdPVwieyB2YWx1ZTogKGlucHV0VmFsdWUkIHwgYXN5bmMpIH1cIj5cbiAgICA8cCBjbGFzcz1cImRieC1jbGVhci1oaW50IHRleHQtY2VudGVyXCI+XCJ7eyBpbnB1dFZhbHVlJCB8IGFzeW5jIH19XCI8L3A+XG4gIDwvbWF0LW9wdGlvbj5cbiAgPCEtLSBTaG93IGNsZWFyIHZhbHVlIC0tPlxuICA8bWF0LW9wdGlvbiAqbmdJZj1cInNob3dDbGVhclZhbHVlICYmIChoYXNWYWx1ZSQgfCBhc3luYylcIiB2YWx1ZT1cIlwiPlxuICAgIDxwIGNsYXNzPVwiZGJ4LWNsZWFyLWhpbnQgdGV4dC1jZW50ZXJcIj5DbGVhcjwvcD5cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS50ZXh0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSx3Q0FBd0MsRUFBbUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN6SCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7OztBQU9yRDs7R0FFRztBQUlILE1BQU0sT0FBTywrQkFBdUYsU0FBUSx3Q0FBK0Y7SUFIM007O1FBSVcsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3ZELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzdCLENBQUM7UUFFTyxjQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsOEJBQXlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDbEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2hELG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzdCLENBQUM7UUFVZ0IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFOUIsbUJBQWMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7S0FvQm5EO0lBOUJDLElBQWEsZUFBZTtRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLDZEQUE2RDtJQUN6SSxDQUFDO0lBTVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3RixJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNOLHNCQUFzQjthQUN2QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFtQztRQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs2SEE1Q1UsK0JBQStCO2lIQUEvQiwrQkFBK0IsMkVDbEI1Qyw2eERBNkJBOzRGRFhhLCtCQUErQjtrQkFIM0MsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzIH0gZnJvbSAnLi9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBza2lwV2hpbGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXBEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiB7XG4gIHNob3dTZWxlY3RlZFZhbHVlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGNvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgc2luZ2xlIGl0ZW0vdmFsdWUuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NlYXJjaGFibGUudGV4dC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2VhcmNoYWJsZVRleHRGaWVsZENvbXBvbmVudDxULCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlPFQsIE0sIEgsIFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgc2VsZWN0ZWREaXNwbGF5VmFsdWUkID0gdGhpcy5kaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geFswXSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFwRGV0ZWN0Q2hhbmdlcyh0aGlzLmNkUmVmKVxuICApO1xuXG4gIHJlYWRvbmx5IGhhc1ZhbHVlJCA9IHRoaXMuc2VsZWN0ZWREaXNwbGF5VmFsdWUkLnBpcGUobWFwKCh4KSA9PiBCb29sZWFuKHgpKSk7XG4gIHJlYWRvbmx5IHNob3dTZWxlY3RlZERpc3BsYXlWYWx1ZSQgPSB0aGlzLnNlbGVjdGVkRGlzcGxheVZhbHVlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gdGhpcy5zaG93U2VsZWN0ZWRWYWx1ZSAmJiBCb29sZWFuKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRhcERldGVjdENoYW5nZXModGhpcy5jZFJlZilcbiAgKTtcblxuICBvdmVycmlkZSBnZXQgc2VhcmNoYWJsZUZpZWxkKCk6IFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBzaG93U2VsZWN0ZWRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuc2hvd1NlbGVjdGVkVmFsdWUgPz8gIXRoaXMuYWxsb3dTdHJpbmdWYWx1ZXM7IC8vIFNob3cgdGhlIHNlbGVjdGVkIHZhbHVlIG9ubHkgaWYgc3RyaW5nIHZhbHVlcyBhcmUgYWxsb3dlZC5cbiAgfVxuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IG11bHRpU2VsZWN0ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY2xlYXJJbnB1dFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5fY2xlYXJJbnB1dFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmlucHV0VmFsdWUkLnBpcGUoc2tpcFdoaWxlKCh4KSA9PiAheCkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgaWYgKCF4KSB7XG4gICAgICAgIC8vIHRoaXMuY2xlYXJWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fY2xlYXJJbnB1dFN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICBzZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYWRkV2l0aERpc3BsYXlWYWx1ZShldmVudC5vcHRpb24udmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZFwiIFtuZ0NsYXNzXT1cInsgJ2RieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtaGFzLXZhbHVlJzogKGhhc1ZhbHVlJCB8IGFzeW5jKSwgJ2RieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtc2hvdy12YWx1ZSc6IHNob3dTZWxlY3RlZFZhbHVlIH1cIj5cbiAgPCEtLSBSZXN1bHQgVmlldyAtLT5cbiAgPGRpdiBjbGFzcz1cImRieC1zZWFyY2hhYmxlLXRleHQtZmllbGQtdmFsdWUgbWF0LW9wdGlvbiBtYXQtb3B0aW9uLXRleHRcIiAqbmdJZj1cInNob3dTZWxlY3RlZERpc3BsYXlWYWx1ZSQgfCBhc3luY1wiPlxuICAgIDxkYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbSBbZGlzcGxheVZhbHVlXT1cIihzZWxlY3RlZERpc3BsYXlWYWx1ZSQgfCBhc3luYykhXCI+PC9kYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYngtc2VhcmNoYWJsZS10ZXh0LWZpZWxkLWlucHV0XCI+XG4gICAgPGRpdiAqbmdJZj1cInNlYXJjaExhYmVsXCIgY2xhc3M9XCJkYngtbGFiZWxcIj57eyBzZWFyY2hMYWJlbCB9fTwvZGl2PlxuICAgIDwhLS0gVmlldyAtLT5cbiAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIFtuYW1lXT1cIm5hbWVcIiBtYXRJbnB1dCAjdGV4dElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJpbnB1dEN0cmxcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbbWF0QXV0b2NvbXBsZXRlRGlzYWJsZWRdPVwicmVhZG9ubHlcIiBhdXRvY29tcGxldGU9XCJ7eyBhdXRvY29tcGxldGUgfX1cIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hhYmxlLWZpZWxkLWZvcm0tbG9hZGluZ1wiPlxuICAgICAgPGRieC1sb2FkaW5nIFtsaW5lYXJdPVwidHJ1ZVwiIFtjb250ZXh0XT1cInNlYXJjaENvbnRleHRcIj48L2RieC1sb2FkaW5nPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEF1dG9jb21wbGV0ZSAtLT5cbjxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwiZGJ4LXNlYXJjaGFibGUtdGV4dC1maWVsZC1hdXRvY29tcGxldGVcIiAjYXV0byAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxuICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGlzcGxheVZhbHVlIG9mIHNlYXJjaFJlc3VsdHMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+XG4gICAgPGRieC1zZWFyY2hhYmxlLWZpZWxkLWF1dG9jb21wbGV0ZS1pdGVtIFtkaXNwbGF5VmFsdWVdPVwiZGlzcGxheVZhbHVlXCI+PC9kYngtc2VhcmNoYWJsZS1maWVsZC1hdXRvY29tcGxldGUtaXRlbT5cbiAgPC9tYXQtb3B0aW9uPlxuICA8IS0tIEFkZC9QaWNrIFN0cmluZyBWYWx1ZSAtLT5cbiAgPG1hdC1vcHRpb24gKm5nSWY9XCJhbGxvd1N0cmluZ1ZhbHVlcyAmJiAoaW5wdXRWYWx1ZSQgfCBhc3luYylcIiBbdmFsdWVdPVwieyB2YWx1ZTogKGlucHV0VmFsdWUkIHwgYXN5bmMpIH1cIj5cbiAgICA8cCBjbGFzcz1cImRieC1jbGVhci1oaW50IHRleHQtY2VudGVyXCI+XCJ7eyBpbnB1dFZhbHVlJCB8IGFzeW5jIH19XCI8L3A+XG4gIDwvbWF0LW9wdGlvbj5cbiAgPCEtLSBTaG93IGNsZWFyIHZhbHVlIC0tPlxuICA8bWF0LW9wdGlvbiAqbmdJZj1cInNob3dDbGVhclZhbHVlICYmIChoYXNWYWx1ZSQgfCBhc3luYylcIiB2YWx1ZT1cIlwiPlxuICAgIDxwIGNsYXNzPVwiZGJ4LWNsZWFyLWhpbnQgdGV4dC1jZW50ZXJcIj5DbGVhcjwvcD5cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuIl19
@@ -89,7 +89,9 @@ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
89
89
  this._sub.subscription = this.dbxMapboxMapStore.center$.subscribe((center) => {
90
90
  this.dbxMapboxMapStore.centerGivenMargin$.pipe(first()).subscribe(() => {
91
91
  if (!this.isReadonlyOrDisabled) {
92
- this.ngZone.run(() => this.setValue(center));
92
+ this.ngZone.run(() => {
93
+ this.setValue(center);
94
+ });
93
95
  }
94
96
  });
95
97
  });
@@ -119,6 +121,8 @@ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
119
121
  }
120
122
  setValue(latLng) {
121
123
  this.formControl.setValue(latLng ? this._latLngStringFunction(latLng) : latLng);
124
+ this.formControl.markAsTouched();
125
+ this.formControl.markAsDirty();
122
126
  }
123
127
  }
124
128
  DbxFormMapboxLatLngFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2.GeolocationService }, { token: i3.DbxMapboxMapStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -163,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
163
167
  }], ctorParameters: function () { return [{ type: i1.CompactContextStore, decorators: [{
164
168
  type: Optional
165
169
  }] }, { type: i2.GeolocationService }, { type: i3.DbxMapboxMapStore }, { type: i0.NgZone }]; } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL2ZpZWxkL2xhdGxuZy9sYXRsbmcuZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekksT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQXVFLG9CQUFvQixFQUFnQixtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2TSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLHVDQUF1QyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7OztBQTRDcEksTUFBTSxPQUFPLGlDQUE2SCxTQUFRLFNBQTZCO0lBdUM3SyxZQUFpQyxPQUE0QixFQUFtQixZQUFnQyxFQUFXLGlCQUFvQyxFQUFXLE1BQWM7UUFDdEwsS0FBSyxFQUFFLENBQUM7UUFEdUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBbUIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQVcsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVE7UUFyQ2hMLHlCQUFvQixHQUFHLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU1RSxrQkFBYSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQzlELE9BQU8sRUFBRSxnQ0FBZ0M7U0FDMUMsQ0FBQyxDQUFDO1FBRUssU0FBSSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNoQyxZQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDdEMsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUVqRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF5QixTQUFTLENBQUMsQ0FBQztRQUN4RSxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFeEQsV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN0QyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUMzRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUVPLFlBQU8sR0FBNEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzFELFdBQVcsRUFBRSxFQUNiLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sWUFBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtRQUNsQzs7OztXQUlHO1FBQ0gsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQy9CLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUMzQixDQUFDO1FBRU8sVUFBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFJM0MsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMscUJBQXFCLEdBQUcsb0JBQW9CLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4TSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0Msd0JBQXdCO1lBQ3hCLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDekssSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2YsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBbUIsQ0FBQSxDQUFDLENBQzVDLENBQ0YsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7YUFBTTtZQUNMLDZDQUE2QztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMzRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTt3QkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUM5QztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRVEsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqRixJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTJCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRixDQUFDOzsrSEF6SVUsaUNBQWlDO21IQUFqQyxpQ0FBaUMsdUNBSGpDLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxpREFsQjVDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDs0RkFJVSxpQ0FBaUM7a0JBdEI3QyxTQUFTOytCQUNFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCxhQUNVLENBQUMsdUNBQXVDLEVBQUUsQ0FBQzs7MEJBMEN6QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wYWN0Q29udGV4dFN0b3JlLCBtYXBDb21wYWN0TW9kZU9icyB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBza2lwLCBmaXJzdCwgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgbWFwLCBPYnNlcnZhYmxlLCB0aHJvdHRsZVRpbWUsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgTWF5YmUsIExhdExuZ1BvaW50LCBMYXRMbmdQb2ludEZ1bmN0aW9uQ29uZmlnLCBMYXRMbmdTdHJpbmdGdW5jdGlvbiwgbGF0TG5nU3RyaW5nRnVuY3Rpb24sIE1pbGxpc2Vjb25kcywgbGF0TG5nUG9pbnRGdW5jdGlvbiwgaXNEZWZhdWx0TGF0TG5nUG9pbnQsIGlzVmFsaWRMYXRMbmdQb2ludCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgR2VvbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2dlb2xvY2F0aW9uJztcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gJ21hcGJveC1nbCc7XG5pbXBvcnQgeyBEYnhNYXBib3hNYXBTdG9yZSwgTWFwYm94RWFzZVRvLCBNYXBib3hab29tTGV2ZWwsIHByb3ZpZGVNYXBib3hTdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvbWFwYm94JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtTWFwYm94TGF0TG5nQ29tcG9uZW50RmllbGRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBXaGV0aGVyIG9yIG5vdCB0aGUgc2hvdyB0aGUgbWFwLiBJZiB0aGUgbWFwIGlzIG5vdCBzaG93biwgcmVsaWVzIG9uIHRoZSBjZW50ZXIgb2YgdGhlIHBhcmVudCBtYXAgdG8gZGV0ZXJtaW5lIHBvc2l0aW9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBDYXNlcyB3aGVyZSB0aGlzIHdvdWxkIGJlIHNldCBmYWxzZSBpcyBpZiBhbm90aGVyIG1hcCBpcyBiZWluZyB1c2VkLlxuICAgKi9cbiAgc2hvd01hcD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIFpvb20gdG8gc3RhcnQgdGhlIG1hcCBhdC4gSWdub3JlZCBpZiB0aGUgc2hvd01hcCBpcyBmYWxzZS5cbiAgICovXG4gIHpvb20/OiBNYXBib3hab29tTGV2ZWw7XG4gIC8qKlxuICAgKiBUaW1lIHVudGlsIHJlY2VudGVyaW5nIG9uIHRoZSBtYXJrZXIuIElmIHRoZSB0aW1lIGlzIDAgdGhlbiB0aGUgcmVjZW50ZXJpbmcgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWNlbnRlclRpbWU/OiBNaWxsaXNlY29uZHM7XG4gIGxhdExuZ0NvbmZpZz86IExhdExuZ1BvaW50RnVuY3Rpb25Db25maWc7XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkXCIgW25nQ2xhc3NdPVwiKGNvbXBhY3RDbGFzcyQgfCBhc3luYykgPz8gJydcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dNYXBcIiBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtbWFwXCI+XG4gICAgICAgIDxtZ2wtbWFwIGRieE1hcGJveE1hcD5cbiAgICAgICAgICA8bWdsLW1hcmtlciBbbG5nTGF0XT1cIihsYXRMbmckIHwgYXN5bmMpIHx8IFswLCAwXVwiIFtkcmFnZ2FibGVdPVwiIWlzUmVhZG9ubHlPckRpc2FibGVkXCIgKG1hcmtlckRyYWdFbmQpPVwib25NYXJrZXJEcmFnRW5kKCRldmVudClcIj48L21nbC1tYXJrZXI+XG4gICAgICAgIDwvbWdsLW1hcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtaW5wdXRcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInVzZUN1cnJlbnRMb2NhdGlvbigpXCIgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlPckRpc2FibGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPm15X2xvY2F0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtaW5wdXQtZmllbGRcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkNvb3JkaW5hdGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtwcm92aWRlTWFwYm94U3RvcmVJZlBhcmVudElzVW5hdmFpbGFibGUoKV0sXG4gIHN0eWxlVXJsczogWycuLi9tYXBib3guZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtTWFwYm94TGF0TG5nRmllbGRDb21wb25lbnQ8VCBleHRlbmRzIERieEZvcm1NYXBib3hMYXRMbmdDb21wb25lbnRGaWVsZFByb3BzID0gRGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHM+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2xhdExuZ1N0cmluZ0Z1bmN0aW9uITogTGF0TG5nU3RyaW5nRnVuY3Rpb247XG4gIHByaXZhdGUgX2xhdExuZ1BvaW50RnVuY3Rpb24gPSBsYXRMbmdQb2ludEZ1bmN0aW9uKHsgd3JhcDogZmFsc2UsIHZhbGlkYXRlOiBmYWxzZSB9KTtcblxuICByZWFkb25seSBjb21wYWN0Q2xhc3MkID0gbWFwQ29tcGFjdE1vZGVPYnModGhpcy5jb21wYWN0Py5tb2RlJCwge1xuICAgIGNvbXBhY3Q6ICdkYngtbWFwYm94LWlucHV0LWZpZWxkLWNvbXBhY3QnXG4gIH0pO1xuXG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZ2VvU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9jZW50ZXJTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3pvb20gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcGJveFpvb21MZXZlbD4oMTIpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbGF0TG5nJDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4gPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgbWFwKCh4KSA9PiB0aGlzLl9sYXRMbmdQb2ludEZ1bmN0aW9uKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNlbnRlciQgPSB0aGlzLmxhdExuZyQucGlwZShcbiAgICAvKipcbiAgICAgKiBDZW50ZXIgb2JzZXJ2YWJsZSBwYXNzZWQgdG8gdGhlIHN0b3JlLiBEbyBub3QgcGFzcyBpbnZhbGlkIHBvaW50cy5cbiAgICAgKlxuICAgICAqIEFsc28gc2tpcCBhbnkgaW5pdGlhbCAwLDAgdmFsdWVzIHNvIHRoZSBjZW50ZXIgZG9lc24ndCBwb3RlbnRpYWxseSBcIndoaXBcIiBmcm9tIDAsMCB0byBhIGZpbmFsIGxvYWRlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBza2lwV2hpbGUoaXNEZWZhdWx0TGF0TG5nUG9pbnQpLFxuICAgIGZpbHRlcihpc1ZhbGlkTGF0TG5nUG9pbnQpXG4gICk7XG5cbiAgcmVhZG9ubHkgem9vbSQgPSB0aGlzLl96b29tLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHJlYWRvbmx5IGNvbXBhY3Q6IENvbXBhY3RDb250ZXh0U3RvcmUsIHByaXZhdGUgcmVhZG9ubHkgZ2VvbG9jYXRpb24kOiBHZW9sb2NhdGlvblNlcnZpY2UsIHJlYWRvbmx5IGRieE1hcGJveE1hcFN0b3JlOiBEYnhNYXBib3hNYXBTdG9yZSwgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IHpvb20oKTogTWFwYm94Wm9vbUxldmVsIHtcbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5maWVsZC5wcm9wcy56b29tIHx8IDEyLCAxOCk7XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmtleSBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHM/LmxhYmVsO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGlzUmVhZG9ubHlPckRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgc2hvd01hcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5zaG93TWFwID8/IHRydWU7XG4gIH1cblxuICBnZXQgcmVjZW50ZXJUaW1lKCk6IE1pbGxpc2Vjb25kcyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMucmVjZW50ZXJUaW1lIHx8IDEwICogMTAwMDtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2xhdExuZ1N0cmluZ0Z1bmN0aW9uID0gbGF0TG5nU3RyaW5nRnVuY3Rpb24oeyAuLi50aGlzLmZpZWxkLnByb3BzLmxhdExuZ0NvbmZpZywgd3JhcDogdGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWc/LndyYXAgfHwgZmFsc2UsIHZhbGlkYXRlOiB0aGlzLmZpZWxkLnByb3BzLmxhdExuZ0NvbmZpZz8udmFsaWRhdGUgfHwgZmFsc2UgfSk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcbiAgICB0aGlzLl96b29tLm5leHQodGhpcy56b29tKTtcblxuICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuc2V0Q2VudGVyKHRoaXMuY2VudGVyJCk7XG5cbiAgICBpZiAodGhpcy5zaG93TWFwKSB7XG4gICAgICAvLyBTZXQgem9vbSBvbmx5IGlmIHNob3dNYXAgaXMgdHJ1ZVxuICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRab29tKHRoaXMuem9vbSQpO1xuXG4gICAgICAvLyByZWNlbnRlciBwZXJpb2RpY2FsbHlcbiAgICAgIGlmICh0aGlzLnJlY2VudGVyVGltZSA+IDApIHtcbiAgICAgICAgdGhpcy5fY2VudGVyU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuY2VudGVyJC5waXBlKHNraXAoMSksIHRocm90dGxlVGltZSh0aGlzLnJlY2VudGVyVGltZSwgdW5kZWZpbmVkLCB7IGxlYWRpbmc6IGZhbHNlLCB0cmFpbGluZzogdHJ1ZSB9KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmVhc2VUbyhcbiAgICAgICAgICAgIHRoaXMuY2VudGVyJC5waXBlKFxuICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICBtYXAoKHgpID0+ICh7IGNlbnRlcjogeCB9IGFzIE1hcGJveEVhc2VUbykpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVzZSB0aGUgY2VudGVyIG9mIHRoZSBtYXAgdG8gc2V0IGxvY2F0aW9uc1xuICAgICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuY2VudGVyJC5zdWJzY3JpYmUoKGNlbnRlcikgPT4ge1xuICAgICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmNlbnRlckdpdmVuTWFyZ2luJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzUmVhZG9ubHlPckRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5zZXRWYWx1ZShjZW50ZXIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9nZW9TdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3pvb20uY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2NlbnRlclN1Yi5kZXN0cm95KCk7XG4gIH1cblxuICB1c2VDdXJyZW50TG9jYXRpb24oKSB7XG4gICAgdGhpcy5fZ2VvU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZ2VvbG9jYXRpb24kLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChwb3NpdGlvbikgPT4ge1xuICAgICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHsgbGF0aXR1ZGU6IGxhdCwgbG9uZ2l0dWRlOiBsbmcgfSA9IHBvc2l0aW9uLmNvb3JkcztcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh7IGxhdCwgbG5nIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25NYXJrZXJEcmFnRW5kKG1hcmtlcjogTWFya2VyKSB7XG4gICAgdGhpcy5zZXRWYWx1ZShtYXJrZXIuZ2V0TG5nTGF0KCkpO1xuICB9XG5cbiAgc2V0VmFsdWUobGF0TG5nPzogTWF5YmU8TGF0TG5nUG9pbnQ+KSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShsYXRMbmcgPyB0aGlzLl9sYXRMbmdTdHJpbmdGdW5jdGlvbihsYXRMbmcpIDogbGF0TG5nKTtcbiAgfVxufVxuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL2ZpZWxkL2xhdGxuZy9sYXRsbmcuZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekksT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQXVFLG9CQUFvQixFQUFnQixtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2TSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLHVDQUF1QyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7OztBQTRDcEksTUFBTSxPQUFPLGlDQUE2SCxTQUFRLFNBQTZCO0lBdUM3SyxZQUFpQyxPQUE0QixFQUFtQixZQUFnQyxFQUFXLGlCQUFvQyxFQUFXLE1BQWM7UUFDdEwsS0FBSyxFQUFFLENBQUM7UUFEdUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBbUIsaUJBQVksR0FBWixZQUFZLENBQW9C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QUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqRixJQUFJLFFBQVEsRUFBRTtnQkFDWixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTJCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzs7K0hBN0lVLGlDQUFpQzttSEFBakMsaUNBQWlDLHVDQUhqQyxDQUFDLHVDQUF1QyxFQUFFLENBQUMsaURBbEI1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQ7NEZBSVUsaUNBQWlDO2tCQXRCN0MsU0FBUzsrQkFDRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQlQsYUFDVSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7OzBCQTBDekMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcGFjdENvbnRleHRTdG9yZSwgbWFwQ29tcGFjdE1vZGVPYnMgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgc2tpcCwgZmlyc3QsIEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIG1hcCwgT2JzZXJ2YWJsZSwgdGhyb3R0bGVUaW1lLCBza2lwV2hpbGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBMYXRMbmdQb2ludCwgTGF0TG5nUG9pbnRGdW5jdGlvbkNvbmZpZywgTGF0TG5nU3RyaW5nRnVuY3Rpb24sIGxhdExuZ1N0cmluZ0Z1bmN0aW9uLCBNaWxsaXNlY29uZHMsIGxhdExuZ1BvaW50RnVuY3Rpb24sIGlzRGVmYXVsdExhdExuZ1BvaW50LCBpc1ZhbGlkTGF0TG5nUG9pbnQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEdlb2xvY2F0aW9uU2VydmljZSB9IGZyb20gJ0BuZy13ZWItYXBpcy9nZW9sb2NhdGlvbic7XG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tICdtYXBib3gtZ2wnO1xuaW1wb3J0IHsgRGJ4TWFwYm94TWFwU3RvcmUsIE1hcGJveEVhc2VUbywgTWFwYm94Wm9vbUxldmVsLCBwcm92aWRlTWFwYm94U3RvcmVJZlBhcmVudElzVW5hdmFpbGFibGUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViL21hcGJveCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4Rm9ybU1hcGJveExhdExuZ0NvbXBvbmVudEZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgV2hldGhlciBvciBub3QgdGhlIHNob3cgdGhlIG1hcC4gSWYgdGhlIG1hcCBpcyBub3Qgc2hvd24sIHJlbGllcyBvbiB0aGUgY2VudGVyIG9mIHRoZSBwYXJlbnQgbWFwIHRvIGRldGVybWluZSBwb3NpdGlvbi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQ2FzZXMgd2hlcmUgdGhpcyB3b3VsZCBiZSBzZXQgZmFsc2UgaXMgaWYgYW5vdGhlciBtYXAgaXMgYmVpbmcgdXNlZC5cbiAgICovXG4gIHNob3dNYXA/OiBib29sZWFuO1xuICAvKipcbiAgICogKE9wdGlvbmFsKSBab29tIHRvIHN0YXJ0IHRoZSBtYXAgYXQuIElnbm9yZWQgaWYgdGhlIHNob3dNYXAgaXMgZmFsc2UuXG4gICAqL1xuICB6b29tPzogTWFwYm94Wm9vbUxldmVsO1xuICAvKipcbiAgICogVGltZSB1bnRpbCByZWNlbnRlcmluZyBvbiB0aGUgbWFya2VyLiBJZiB0aGUgdGltZSBpcyAwIHRoZW4gdGhlIHJlY2VudGVyaW5nIGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcmVjZW50ZXJUaW1lPzogTWlsbGlzZWNvbmRzO1xuICBsYXRMbmdDb25maWc/OiBMYXRMbmdQb2ludEZ1bmN0aW9uQ29uZmlnO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1pbnB1dC1maWVsZFwiIFtuZ0NsYXNzXT1cIihjb21wYWN0Q2xhc3MkIHwgYXN5bmMpID8/ICcnXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93TWFwXCIgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLW1hcFwiPlxuICAgICAgICA8bWdsLW1hcCBkYnhNYXBib3hNYXA+XG4gICAgICAgICAgPG1nbC1tYXJrZXIgW2xuZ0xhdF09XCIobGF0TG5nJCB8IGFzeW5jKSB8fCBbMCwgMF1cIiBbZHJhZ2dhYmxlXT1cIiFpc1JlYWRvbmx5T3JEaXNhYmxlZFwiIChtYXJrZXJEcmFnRW5kKT1cIm9uTWFya2VyRHJhZ0VuZCgkZXZlbnQpXCI+PC9tZ2wtbWFya2VyPlxuICAgICAgICA8L21nbC1tYXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLWlucHV0XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ1c2VDdXJyZW50TG9jYXRpb24oKVwiIFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5T3JEaXNhYmxlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5teV9sb2NhdGlvbjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Db29yZGluYXRlczwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZU1hcGJveFN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlKCldLFxuICBzdHlsZVVybHM6IFsnLi4vbWFwYm94LmZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybU1hcGJveExhdExuZ0ZpZWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBEYnhGb3JtTWFwYm94TGF0TG5nQ29tcG9uZW50RmllbGRQcm9wcyA9IERieEZvcm1NYXBib3hMYXRMbmdDb21wb25lbnRGaWVsZFByb3BzPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8VD4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9sYXRMbmdTdHJpbmdGdW5jdGlvbiE6IExhdExuZ1N0cmluZ0Z1bmN0aW9uO1xuICBwcml2YXRlIF9sYXRMbmdQb2ludEZ1bmN0aW9uID0gbGF0TG5nUG9pbnRGdW5jdGlvbih7IHdyYXA6IGZhbHNlLCB2YWxpZGF0ZTogZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgY29tcGFjdENsYXNzJCA9IG1hcENvbXBhY3RNb2RlT2JzKHRoaXMuY29tcGFjdD8ubW9kZSQsIHtcbiAgICBjb21wYWN0OiAnZGJ4LW1hcGJveC1pbnB1dC1maWVsZC1jb21wYWN0J1xuICB9KTtcblxuICBwcml2YXRlIF9zdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2dlb1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfY2VudGVyU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF96b29tID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXBib3hab29tTGV2ZWw+KDEyKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGxhdExuZyQ6IE9ic2VydmFibGU8TGF0TG5nUG9pbnQ+ID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIG1hcCgoeCkgPT4gdGhpcy5fbGF0TG5nUG9pbnRGdW5jdGlvbih4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjZW50ZXIkID0gdGhpcy5sYXRMbmckLnBpcGUoXG4gICAgLyoqXG4gICAgICogQ2VudGVyIG9ic2VydmFibGUgcGFzc2VkIHRvIHRoZSBzdG9yZS4gRG8gbm90IHBhc3MgaW52YWxpZCBwb2ludHMuXG4gICAgICpcbiAgICAgKiBBbHNvIHNraXAgYW55IGluaXRpYWwgMCwwIHZhbHVlcyBzbyB0aGUgY2VudGVyIGRvZXNuJ3QgcG90ZW50aWFsbHkgXCJ3aGlwXCIgZnJvbSAwLDAgdG8gYSBmaW5hbCBsb2FkZWQgdmFsdWUuXG4gICAgICovXG4gICAgc2tpcFdoaWxlKGlzRGVmYXVsdExhdExuZ1BvaW50KSxcbiAgICBmaWx0ZXIoaXNWYWxpZExhdExuZ1BvaW50KVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb20kID0gdGhpcy5fem9vbS5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSByZWFkb25seSBjb21wYWN0OiBDb21wYWN0Q29udGV4dFN0b3JlLCBwcml2YXRlIHJlYWRvbmx5IGdlb2xvY2F0aW9uJDogR2VvbG9jYXRpb25TZXJ2aWNlLCByZWFkb25seSBkYnhNYXBib3hNYXBTdG9yZTogRGJ4TWFwYm94TWFwU3RvcmUsIHJlYWRvbmx5IG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCB6b29tKCk6IE1hcGJveFpvb21MZXZlbCB7XG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuZmllbGQucHJvcHMuem9vbSB8fCAxMiwgMTgpO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0gYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNob3dNYXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd01hcCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHJlY2VudGVyVGltZSgpOiBNaWxsaXNlY29uZHMge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnJlY2VudGVyVGltZSB8fCAxMCAqIDEwMDA7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXRMbmdTdHJpbmdGdW5jdGlvbiA9IGxhdExuZ1N0cmluZ0Z1bmN0aW9uKHsgLi4udGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWcsIHdyYXA6IHRoaXMuZmllbGQucHJvcHMubGF0TG5nQ29uZmlnPy53cmFwIHx8IGZhbHNlLCB2YWxpZGF0ZTogdGhpcy5maWVsZC5wcm9wcy5sYXRMbmdDb25maWc/LnZhbGlkYXRlIHx8IGZhbHNlIH0pO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG4gICAgdGhpcy5fem9vbS5uZXh0KHRoaXMuem9vbSk7XG5cbiAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldENlbnRlcih0aGlzLmNlbnRlciQpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01hcCkge1xuICAgICAgLy8gU2V0IHpvb20gb25seSBpZiBzaG93TWFwIGlzIHRydWVcbiAgICAgIHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuc2V0Wm9vbSh0aGlzLnpvb20kKTtcblxuICAgICAgLy8gcmVjZW50ZXIgcGVyaW9kaWNhbGx5XG4gICAgICBpZiAodGhpcy5yZWNlbnRlclRpbWUgPiAwKSB7XG4gICAgICAgIHRoaXMuX2NlbnRlclN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmNlbnRlciQucGlwZShza2lwKDEpLCB0aHJvdHRsZVRpbWUodGhpcy5yZWNlbnRlclRpbWUsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiBmYWxzZSwgdHJhaWxpbmc6IHRydWUgfSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5lYXNlVG8oXG4gICAgICAgICAgICB0aGlzLmNlbnRlciQucGlwZShcbiAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiAoeyBjZW50ZXI6IHggfSBhcyBNYXBib3hFYXNlVG8pKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1c2UgdGhlIGNlbnRlciBvZiB0aGUgbWFwIHRvIHNldCBsb2NhdGlvbnNcbiAgICAgIHRoaXMuX3N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieE1hcGJveE1hcFN0b3JlLmNlbnRlciQuc3Vic2NyaWJlKChjZW50ZXIpID0+IHtcbiAgICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5jZW50ZXJHaXZlbk1hcmdpbiQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pc1JlYWRvbmx5T3JEaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShjZW50ZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLnJlYWRvbmx5KSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX3N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZ2VvU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl96b29tLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jZW50ZXJTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgdXNlQ3VycmVudExvY2F0aW9uKCkge1xuICAgIHRoaXMuX2dlb1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmdlb2xvY2F0aW9uJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocG9zaXRpb24pID0+IHtcbiAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICBjb25zdCB7IGxhdGl0dWRlOiBsYXQsIGxvbmdpdHVkZTogbG5nIH0gPSBwb3NpdGlvbi5jb29yZHM7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoeyBsYXQsIGxuZyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uTWFya2VyRHJhZ0VuZChtYXJrZXI6IE1hcmtlcikge1xuICAgIHRoaXMuc2V0VmFsdWUobWFya2VyLmdldExuZ0xhdCgpKTtcbiAgfVxuXG4gIHNldFZhbHVlKGxhdExuZz86IE1heWJlPExhdExuZ1BvaW50Pikge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobGF0TG5nID8gdGhpcy5fbGF0TG5nU3RyaW5nRnVuY3Rpb24obGF0TG5nKSA6IGxhdExuZyk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICB9XG59XG4iXX0=
@@ -53,6 +53,9 @@ export class DbxFormMapboxZoomFieldComponent extends FieldType {
53
53
  get showMap() {
54
54
  return this.field.props.showMap ?? true;
55
55
  }
56
+ get lockMapToZoomLevels() {
57
+ return this.field.props.lockMapToZoomLevels ?? false;
58
+ }
56
59
  get minZoom() {
57
60
  return mapboxZoomLevel(this.field.props.minZoom || MAPBOX_MIN_ZOOM_LEVEL);
58
61
  }
@@ -79,8 +82,8 @@ export class DbxFormMapboxZoomFieldComponent extends FieldType {
79
82
  this.dbxMapboxMapStore.setZoomDisabled();
80
83
  }
81
84
  }
82
- else {
83
- // set zoom limits
85
+ else if (this.lockMapToZoomLevels) {
86
+ // set zoom limits on the map
84
87
  this.dbxMapboxMapStore.setZoomRange({ min: this.minZoom, max: this.maxZoom });
85
88
  // flat to undo them later if not using the same map
86
89
  this._undoZoomLimit = !this.showMap;
@@ -104,6 +107,8 @@ export class DbxFormMapboxZoomFieldComponent extends FieldType {
104
107
  }
105
108
  setValue(zoom) {
106
109
  this.formControl.setValue(zoom);
110
+ this.formControl.markAsTouched();
111
+ this.formControl.markAsDirty();
107
112
  }
108
113
  }
109
114
  DbxFormMapboxZoomFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormMapboxZoomFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2.DbxMapboxService }, { token: i2.DbxMapboxMapStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -138,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
138
143
  }], ctorParameters: function () { return [{ type: i1.CompactContextStore, decorators: [{
139
144
  type: Optional
140
145
  }] }, { type: i2.DbxMapboxService }, { type: i2.DbxMapboxMapStore }, { type: i0.NgZone }]; } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2xpYi9maWVsZC96b29tL3pvb20uZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQW1CLHVDQUF1QyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUE0Q3ZNLE1BQU0sT0FBTywrQkFBdUgsU0FBUSxTQUE2QjtJQXFCdkssWUFBaUMsT0FBNEIsRUFBVyxnQkFBa0MsRUFBVyxpQkFBb0MsRUFBVyxNQUFjO1FBQ2hMLEtBQUssRUFBRSxDQUFDO1FBRHVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFXLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEIxSyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV0QixrQkFBYSxHQUFHLGlC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QUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUF1QjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs2SEFwSFUsK0JBQStCO2lIQUEvQiwrQkFBK0IsdUNBSC9CLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxpREFiNUM7Ozs7Ozs7Ozs7OztHQVlUOzRGQUlVLCtCQUErQjtrQkFqQjNDLFNBQVM7K0JBQ0U7Ozs7Ozs7Ozs7OztHQVlULGFBQ1UsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDOzswQkF3QnpDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBhY3RDb250ZXh0U3RvcmUsIG1hcENvbXBhY3RNb2RlT2JzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBab29tTGV2ZWwsIE1heWJlLCBMYXRMbmdQb2ludCwgbGF0TG5nUG9pbnQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieE1hcGJveFNlcnZpY2UsIERieE1hcGJveE1hcFN0b3JlLCBNYXBib3hab29tTGV2ZWwsIHByb3ZpZGVNYXBib3hTdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSwgbWFwYm94Wm9vbUxldmVsLCBNQVBCT1hfTUFYX1pPT01fTEVWRUwsIE1BUEJPWF9NSU5fWk9PTV9MRVZFTCB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvbWFwYm94JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtTWFwYm94Wm9vbUNvbXBvbmVudEZpZWxkUHJvcHMgZXh0ZW5kcyBPbWl0PEZvcm1seUZpZWxkUHJvcHMsICdtaW4nIHwgJ21heCc+IHtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgV2hldGhlciBvciBub3QgdGhlIHNob3cgdGhlIG1hcC4gQ2FzZXMgd2hlcmUgdGhpcyB3b3VsZCBiZSBzZXQgZmFsc2UgaXMgaWYgYW5vdGhlciBtYXAgaXMgYmVpbmcgdXNlZC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHNob3dNYXA/OiBib29sZWFuO1xuICAvKipcbiAgICogRGVmYXVsdCBjZW50ZXJcbiAgICovXG4gIGNlbnRlcj86IExhdExuZ1BvaW50O1xuICAvKipcbiAgICogTWluIHpvb20gbGV2ZWwgYWxsb3dlZFxuICAgKi9cbiAgbWluWm9vbT86IE1hcGJveFpvb21MZXZlbDtcbiAgLyoqXG4gICAqIE1heCB6b29tIGxldmVsIGFsbG93ZWQuXG4gICAqL1xuICBtYXhab29tPzogTWFwYm94Wm9vbUxldmVsO1xuICAvKipcbiAgICogU3RlcCBzaXplIHdoZW4gdXNpbmcgYXJyb3cga2V5cy5cbiAgICovXG4gIHpvb21TdGVwPzogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1pbnB1dC1maWVsZFwiIFtuZ0NsYXNzXT1cIihjb21wYWN0Q2xhc3MkIHwgYXN5bmMpID8/ICcnXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93TWFwXCIgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLW1hcFwiPlxuICAgICAgICA8bWdsLW1hcCBkYnhNYXBib3hNYXA+PC9tZ2wtbWFwPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1pbnB1dC1maWVsZC1pbnB1dFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtbWFwYm94LWlucHV0LWZpZWxkLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5ab29tIExldmVsPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtYXRJbnB1dCBbbWluXT1cIm1pblpvb21cIiBbbWF4XT1cIm1heFpvb21cIiBbc3RlcF09XCJ6b29tU3RlcFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZU1hcGJveFN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlKCldLFxuICBzdHlsZVVybHM6IFsnLi4vbWFwYm94LmZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybU1hcGJveFpvb21GaWVsZENvbXBvbmVudDxUIGV4dGVuZHMgRGJ4Rm9ybU1hcGJveFpvb21Db21wb25lbnRGaWVsZFByb3BzID0gRGJ4Rm9ybU1hcGJveFpvb21Db21wb25lbnRGaWVsZFByb3BzPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8VD4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF91bmRvWm9vbUxpbWl0ID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgY29tcGFjdENsYXNzJCA9IG1hcENvbXBhY3RNb2RlT2JzKHRoaXMuY29tcGFjdD8ubW9kZSQsIHtcbiAgICBjb21wYWN0OiAnZGJ4LW1hcGJveC1pbnB1dC1maWVsZC1jb21wYWN0J1xuICB9KTtcblxuICBwcml2YXRlIF9zdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2NlbnRlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8TGF0TG5nUG9pbnQ+Pih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgem9vbSQ6IE9ic2VydmFibGU8TWFwYm94Wm9vbUxldmVsPiA9IHRoaXMudmFsdWUkLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICByZWFkb25seSBjZW50ZXIkID0gdGhpcy5fY2VudGVyLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcmVhZG9ubHkgY29tcGFjdDogQ29tcGFjdENvbnRleHRTdG9yZSwgcmVhZG9ubHkgZGJ4TWFwYm94U2VydmljZTogRGJ4TWFwYm94U2VydmljZSwgcmVhZG9ubHkgZGJ4TWFwYm94TWFwU3RvcmU6IERieE1hcGJveE1hcFN0b3JlLCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgY2VudGVyKCk6IExhdExuZ1BvaW50IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5jZW50ZXIgfHwgbGF0TG5nUG9pbnQodGhpcy5kYnhNYXBib3hTZXJ2aWNlLmRlZmF1bHRDZW50ZXIpO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0IGZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0gYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzPy5sYWJlbDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNob3dNYXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuc2hvd01hcCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IG1pblpvb20oKTogTWFwYm94Wm9vbUxldmVsIHtcbiAgICByZXR1cm4gbWFwYm94Wm9vbUxldmVsKHRoaXMuZmllbGQucHJvcHMubWluWm9vbSB8fCBNQVBCT1hfTUlOX1pPT01fTEVWRUwpO1xuICB9XG5cbiAgZ2V0IG1heFpvb20oKTogTWFwYm94Wm9vbUxldmVsIHtcbiAgICByZXR1cm4gbWFwYm94Wm9vbUxldmVsKHRoaXMuZmllbGQucHJvcHMubWF4Wm9vbSB8fCBNQVBCT1hfTUFYX1pPT01fTEVWRUwpO1xuICB9XG5cbiAgZ2V0IHpvb21TdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG1hcGJveFpvb21MZXZlbCh0aGlzLmZpZWxkLnByb3BzLnpvb21TdGVwIHx8IDEpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcbiAgICB0aGlzLl9jZW50ZXIubmV4dCh0aGlzLmNlbnRlcik7XG5cbiAgICAvLyBzZXQvc3luYyBwcm9wcyBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAodGhpcy5wcm9wcyBhcyBGb3JtbHlGaWVsZFByb3BzKS5taW4gPSB0aGlzLm1pblpvb207XG4gICAgKHRoaXMucHJvcHMgYXMgRm9ybWx5RmllbGRQcm9wcykubWF4ID0gdGhpcy5tYXhab29tO1xuXG4gICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRab29tKHRoaXMuem9vbSQpO1xuXG4gICAgLy8gU2V0IGNlbnRlciBvbmx5IGlmIHNob3dNYXAgaXMgZmFsc2UuXG4gICAgaWYgKHRoaXMuc2hvd01hcCkge1xuICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRDZW50ZXIodGhpcy5jZW50ZXIkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XG5cbiAgICAgIGlmICh0aGlzLnNob3dNYXApIHtcbiAgICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRab29tRGlzYWJsZWQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2V0IHpvb20gbGltaXRzXG4gICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldFpvb21SYW5nZSh7IG1pbjogdGhpcy5taW5ab29tLCBtYXg6IHRoaXMubWF4Wm9vbSB9KTtcblxuICAgICAgLy8gZmxhdCB0byB1bmRvIHRoZW0gbGF0ZXIgaWYgbm90IHVzaW5nIHRoZSBzYW1lIG1hcFxuICAgICAgdGhpcy5fdW5kb1pvb21MaW1pdCA9ICF0aGlzLnNob3dNYXA7XG4gICAgfVxuXG4gICAgdGhpcy5fc3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4TWFwYm94TWFwU3RvcmUuem9vbSQuc3Vic2NyaWJlKCh6b29tKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNSZWFkb25seU9yRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKHpvb20pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jZW50ZXIuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWIuZGVzdHJveSgpO1xuXG4gICAgaWYgKCF0aGlzLl91bmRvWm9vbUxpbWl0KSB7XG4gICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldFpvb21SYW5nZSh7fSk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmFsdWUoem9vbT86IE1heWJlPFpvb21MZXZlbD4pIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHpvb20pO1xuICB9XG59XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2xpYi9maWVsZC96b29tL3pvb20uZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQW1CLHVDQUF1QyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFnRHZNLE1BQU0sT0FBTywrQkFBdUgsU0FBUSxTQUE2QjtJQXFCdkssWUFBaUMsT0FBNEIsRUFBVyxnQkFBa0MsRUFBVyxpQkFBb0MsRUFBVyxNQUFjO1FBQ2hMLEtBQUssRUFBRSxDQUFDO1FBRHVCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFXLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEIxSyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV0QixrQkFBYSxHQUFHLGlC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Q0FBQztJQUVRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQXVCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzs2SEExSFUsK0JBQStCO2lIQUEvQiwrQkFBK0IsdUNBSC9CLENBQUMsdUNBQXVDLEVBQUUsQ0FBQyxpREFiNUM7Ozs7Ozs7Ozs7OztHQVlUOzRGQUlVLCtCQUErQjtrQkFqQjNDLFNBQVM7K0JBQ0U7Ozs7Ozs7Ozs7OztHQVlULGFBQ1UsQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDOzswQkF3QnpDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBhY3RDb250ZXh0U3RvcmUsIG1hcENvbXBhY3RNb2RlT2JzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBab29tTGV2ZWwsIE1heWJlLCBMYXRMbmdQb2ludCwgbGF0TG5nUG9pbnQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieE1hcGJveFNlcnZpY2UsIERieE1hcGJveE1hcFN0b3JlLCBNYXBib3hab29tTGV2ZWwsIHByb3ZpZGVNYXBib3hTdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSwgbWFwYm94Wm9vbUxldmVsLCBNQVBCT1hfTUFYX1pPT01fTEVWRUwsIE1BUEJPWF9NSU5fWk9PTV9MRVZFTCB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvbWFwYm94JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtTWFwYm94Wm9vbUNvbXBvbmVudEZpZWxkUHJvcHMgZXh0ZW5kcyBPbWl0PEZvcm1seUZpZWxkUHJvcHMsICdtaW4nIHwgJ21heCc+IHtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgV2hldGhlciBvciBub3QgdGhlIHNob3cgdGhlIG1hcC4gQ2FzZXMgd2hlcmUgdGhpcyB3b3VsZCBiZSBzZXQgZmFsc2UgaXMgaWYgYW5vdGhlciBtYXAgaXMgYmVpbmcgdXNlZC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHNob3dNYXA/OiBib29sZWFuO1xuICAvKipcbiAgICogRGVmYXVsdCBjZW50ZXJcbiAgICovXG4gIGNlbnRlcj86IExhdExuZ1BvaW50O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gbG9jayB0aGUgbWFwIGl0c2VsZiB0byB0aGUgbWluIGFuZCBtYXggem9vbSBsZXZlbHMuXG4gICAqL1xuICBsb2NrTWFwVG9ab29tTGV2ZWxzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE1pbiB6b29tIGxldmVsIGFsbG93ZWRcbiAgICovXG4gIG1pblpvb20/OiBNYXBib3hab29tTGV2ZWw7XG4gIC8qKlxuICAgKiBNYXggem9vbSBsZXZlbCBhbGxvd2VkLlxuICAgKi9cbiAgbWF4Wm9vbT86IE1hcGJveFpvb21MZXZlbDtcbiAgLyoqXG4gICAqIFN0ZXAgc2l6ZSB3aGVuIHVzaW5nIGFycm93IGtleXMuXG4gICAqL1xuICB6b29tU3RlcD86IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGRcIiBbbmdDbGFzc109XCIoY29tcGFjdENsYXNzJCB8IGFzeW5jKSA/PyAnJ1wiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd01hcFwiIGNsYXNzPVwiZGJ4LW1hcGJveC1pbnB1dC1maWVsZC1tYXBcIj5cbiAgICAgICAgPG1nbC1tYXAgZGJ4TWFwYm94TWFwPjwvbWdsLW1hcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImRieC1tYXBib3gtaW5wdXQtZmllbGQtaW5wdXRcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGJ4LW1hcGJveC1pbnB1dC1maWVsZC1pbnB1dC1maWVsZFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+Wm9vbSBMZXZlbDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgW21pbl09XCJtaW5ab29tXCIgW21heF09XCJtYXhab29tXCIgW3N0ZXBdPVwiem9vbVN0ZXBcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVNYXBib3hTdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSgpXSxcbiAgc3R5bGVVcmxzOiBbJy4uL21hcGJveC5maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1NYXBib3hab29tRmllbGRDb21wb25lbnQ8VCBleHRlbmRzIERieEZvcm1NYXBib3hab29tQ29tcG9uZW50RmllbGRQcm9wcyA9IERieEZvcm1NYXBib3hab29tQ29tcG9uZW50RmllbGRQcm9wcz4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfdW5kb1pvb21MaW1pdCA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IGNvbXBhY3RDbGFzcyQgPSBtYXBDb21wYWN0TW9kZU9icyh0aGlzLmNvbXBhY3Q/Lm1vZGUkLCB7XG4gICAgY29tcGFjdDogJ2RieC1tYXBib3gtaW5wdXQtZmllbGQtY29tcGFjdCdcbiAgfSk7XG5cbiAgcHJpdmF0ZSBfc3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9jZW50ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPExhdExuZ1BvaW50Pj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHpvb20kOiBPYnNlcnZhYmxlPE1hcGJveFpvb21MZXZlbD4gPSB0aGlzLnZhbHVlJC5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkgY2VudGVyJCA9IHRoaXMuX2NlbnRlci5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHJlYWRvbmx5IGNvbXBhY3Q6IENvbXBhY3RDb250ZXh0U3RvcmUsIHJlYWRvbmx5IGRieE1hcGJveFNlcnZpY2U6IERieE1hcGJveFNlcnZpY2UsIHJlYWRvbmx5IGRieE1hcGJveE1hcFN0b3JlOiBEYnhNYXBib3hNYXBTdG9yZSwgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGNlbnRlcigpOiBMYXRMbmdQb2ludCB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuY2VudGVyIHx8IGxhdExuZ1BvaW50KHRoaXMuZGJ4TWFwYm94U2VydmljZS5kZWZhdWx0Q2VudGVyKTtcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXBOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQua2V5IGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcz8ubGFiZWw7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgaXNSZWFkb25seU9yRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBzaG93TWFwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnNob3dNYXAgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBsb2NrTWFwVG9ab29tTGV2ZWxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmxvY2tNYXBUb1pvb21MZXZlbHMgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgbWluWm9vbSgpOiBNYXBib3hab29tTGV2ZWwge1xuICAgIHJldHVybiBtYXBib3hab29tTGV2ZWwodGhpcy5maWVsZC5wcm9wcy5taW5ab29tIHx8IE1BUEJPWF9NSU5fWk9PTV9MRVZFTCk7XG4gIH1cblxuICBnZXQgbWF4Wm9vbSgpOiBNYXBib3hab29tTGV2ZWwge1xuICAgIHJldHVybiBtYXBib3hab29tTGV2ZWwodGhpcy5maWVsZC5wcm9wcy5tYXhab29tIHx8IE1BUEJPWF9NQVhfWk9PTV9MRVZFTCk7XG4gIH1cblxuICBnZXQgem9vbVN0ZXAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbWFwYm94Wm9vbUxldmVsKHRoaXMuZmllbGQucHJvcHMuem9vbVN0ZXAgfHwgMSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX2NlbnRlci5uZXh0KHRoaXMuY2VudGVyKTtcblxuICAgIC8vIHNldC9zeW5jIHByb3BzIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICh0aGlzLnByb3BzIGFzIEZvcm1seUZpZWxkUHJvcHMpLm1pbiA9IHRoaXMubWluWm9vbTtcbiAgICAodGhpcy5wcm9wcyBhcyBGb3JtbHlGaWVsZFByb3BzKS5tYXggPSB0aGlzLm1heFpvb207XG5cbiAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldFpvb20odGhpcy56b29tJCk7XG5cbiAgICAvLyBTZXQgY2VudGVyIG9ubHkgaWYgc2hvd01hcCBpcyBmYWxzZS5cbiAgICBpZiAodGhpcy5zaG93TWFwKSB7XG4gICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldENlbnRlcih0aGlzLmNlbnRlciQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLnJlYWRvbmx5KSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcblxuICAgICAgaWYgKHRoaXMuc2hvd01hcCkge1xuICAgICAgICB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnNldFpvb21EaXNhYmxlZCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5sb2NrTWFwVG9ab29tTGV2ZWxzKSB7XG4gICAgICAvLyBzZXQgem9vbSBsaW1pdHMgb24gdGhlIG1hcFxuICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRab29tUmFuZ2UoeyBtaW46IHRoaXMubWluWm9vbSwgbWF4OiB0aGlzLm1heFpvb20gfSk7XG5cbiAgICAgIC8vIGZsYXQgdG8gdW5kbyB0aGVtIGxhdGVyIGlmIG5vdCB1c2luZyB0aGUgc2FtZSBtYXBcbiAgICAgIHRoaXMuX3VuZG9ab29tTGltaXQgPSAhdGhpcy5zaG93TWFwO1xuICAgIH1cblxuICAgIHRoaXMuX3N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieE1hcGJveE1hcFN0b3JlLnpvb20kLnN1YnNjcmliZSgoem9vbSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzUmVhZG9ubHlPckRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZSh6b29tKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY2VudGVyLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcblxuICAgIGlmICghdGhpcy5fdW5kb1pvb21MaW1pdCkge1xuICAgICAgdGhpcy5kYnhNYXBib3hNYXBTdG9yZS5zZXRab29tUmFuZ2Uoe30pO1xuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKHpvb20/OiBNYXliZTxab29tTGV2ZWw+KSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh6b29tKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIH1cbn1cbiJdfQ==
@@ -124,7 +124,9 @@ class DbxFormMapboxLatLngFieldComponent extends FieldType {
124
124
  this._sub.subscription = this.dbxMapboxMapStore.center$.subscribe((center) => {
125
125
  this.dbxMapboxMapStore.centerGivenMargin$.pipe(first()).subscribe(() => {
126
126
  if (!this.isReadonlyOrDisabled) {
127
- this.ngZone.run(() => this.setValue(center));
127
+ this.ngZone.run(() => {
128
+ this.setValue(center);
129
+ });
128
130
  }
129
131
  });
130
132
  });
@@ -154,6 +156,8 @@ class DbxFormMapboxLatLngFieldComponent extends FieldType {
154
156
  }
155
157
  setValue(latLng) {
156
158
  this.formControl.setValue(latLng ? this._latLngStringFunction(latLng) : latLng);
159
+ this.formControl.markAsTouched();
160
+ this.formControl.markAsDirty();
157
161
  }
158
162
  }
159
163
  DbxFormMapboxLatLngFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2.GeolocationService }, { token: i2$1.DbxMapboxMapStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
@@ -305,6 +309,10 @@ class DbxFormMapboxZoomFieldComponent extends FieldType {
305
309
  var _a;
306
310
  return (_a = this.field.props.showMap) !== null && _a !== void 0 ? _a : true;
307
311
  }
312
+ get lockMapToZoomLevels() {
313
+ var _a;
314
+ return (_a = this.field.props.lockMapToZoomLevels) !== null && _a !== void 0 ? _a : false;
315
+ }
308
316
  get minZoom() {
309
317
  return mapboxZoomLevel(this.field.props.minZoom || MAPBOX_MIN_ZOOM_LEVEL);
310
318
  }
@@ -331,8 +339,8 @@ class DbxFormMapboxZoomFieldComponent extends FieldType {
331
339
  this.dbxMapboxMapStore.setZoomDisabled();
332
340
  }
333
341
  }
334
- else {
335
- // set zoom limits
342
+ else if (this.lockMapToZoomLevels) {
343
+ // set zoom limits on the map
336
344
  this.dbxMapboxMapStore.setZoomRange({ min: this.minZoom, max: this.maxZoom });
337
345
  // flat to undo them later if not using the same map
338
346
  this._undoZoomLimit = !this.showMap;
@@ -356,6 +364,8 @@ class DbxFormMapboxZoomFieldComponent extends FieldType {
356
364
  }
357
365
  setValue(zoom) {
358
366
  this.formControl.setValue(zoom);
367
+ this.formControl.markAsTouched();
368
+ this.formControl.markAsDirty();
359
369
  }
360
370
  }
361
371
  DbxFormMapboxZoomFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormMapboxZoomFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2$1.DbxMapboxService }, { token: i2$1.DbxMapboxMapStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });