@sumaris-net/ngx-components 1.23.33 → 1.23.34

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.
@@ -189,7 +189,7 @@ export class FormArrayHelper {
189
189
  return this._formArray.at(index);
190
190
  }
191
191
  /**
192
- * Resize the FormArray, then apply values
192
+ * Resize the FormArray, then set values
193
193
  * @param data
194
194
  * @param opts
195
195
  */
@@ -197,6 +197,15 @@ export class FormArrayHelper {
197
197
  this.resize((data === null || data === void 0 ? void 0 : data.length) || 0);
198
198
  this._formArray.setValue(data, opts);
199
199
  }
200
+ /**
201
+ * Resize the FormArray, then patch values
202
+ * @param data
203
+ * @param opts
204
+ */
205
+ patchValue(data, opts) {
206
+ this.resize((data === null || data === void 0 ? void 0 : data.length) || 0);
207
+ this._formArray.patchValue(data, opts);
208
+ }
200
209
  disable(opts) {
201
210
  this._formArray.controls.forEach(c => c.disable(opts));
202
211
  }
@@ -280,4 +289,4 @@ export function resetCalculatedValue(controls, controlName) {
280
289
  AppFormUtils.setCalculatedValue(controls, controlName, undefined);
281
290
  }
282
291
  }
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDNUUsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsT0FBTyxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQUUsaUJBQWlCLEVBQ2xDLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQUUsYUFBYSxFQUNqQyxzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUNoRCxzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLGdCQUFnQixFQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBd0M1Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBQ1csWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQTBCM0IsQ0FBQztJQXpCQyxJQUFJLFFBQVE7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FB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QyxXQUFXLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBMkMsRUFBRSxXQUFtQjtJQUNuRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1FBQzdDLG1EQUFtRDtRQUNuRCxZQUFZLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNuRTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtFbnRpdHl9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge1NoYXJlZEZvcm1BcnJheVZhbGlkYXRvcnN9IGZyb20gJy4uLy4uL3NoYXJlZC92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5pbXBvcnQge3JvdW5kLCB0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtmaWx0ZXJOdW1iZXJJbnB1dCwgc2VsZWN0SW5wdXRDb250ZW50fSBmcm9tICcuLi8uLi9zaGFyZWQvaW5wdXRzJztcbmltcG9ydCB7d2FpdEZvciwgV2FpdEZvck9wdGlvbnN9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1xuICBhZGRWYWx1ZUluQXJyYXksIGNsZWFyVmFsdWVJbkFycmF5LFxuICBjb3B5RW50aXR5MkZvcm0sXG4gIGRpc2FibGVDb250cm9scyxcbiAgZ2V0Q29udHJvbEZyb21QYXRoLCBnZXRGb3JtRXJyb3JzLFxuICBnZXRGb3JtVmFsdWVGcm9tRW50aXR5LFxuICBsb2dGb3JtRXJyb3JzLFxuICBtYXJrQWxsQXNUb3VjaGVkLFxuICBtYXJrQXNVbnRvdWNoZWQsIHJlbW92ZVZhbHVlSW5BcnJheSwgcmVzaXplQXJyYXksXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHksXG4gIHdhaXRJZGxlLFxuICB3YWl0V2hpbGVQZW5kaW5nXG59IGZyb20gJy4uLy4uL3NoYXJlZC9mb3Jtcyc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgSUFwcEZvcm1HZXR0ZXIgPSAoKSA9PiBJQXBwRm9ybTtcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE9uUmVhZHkge1xuICBuZ09uUmVhZHkoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXBwRm9ybSAge1xuICAvLyBGcm9tIEFuZ3VsYXIgZm9ybVxuICBpbnZhbGlkOiBib29sZWFuO1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZGlydHk6IGJvb2xlYW47XG4gIHBlbmRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0b3VjaGVkOiBib29sZWFuO1xuICB1bnRvdWNoZWQ6IGJvb2xlYW47XG5cbiAgLy8gU3BlY2lmaWMgdG8gSUFwcEZvcm1cbiAgZW1wdHk/OiBib29sZWFuO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgcmVhZHkoKTogUHJvbWlzZTx2b2lkPjtcbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuXG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIGVuYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcblxuICBtYXJrQXNQcmlzdGluZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBtYXJrQWxsQXNUb3VjaGVkKG9wdHM/OiB7ZW1pdEV2ZW50PzogYm9vbGVhbn0pO1xuICBtYXJrQXNEaXJ0eShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzTG9hZGluZyhvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzTG9hZGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBtYXJrQXNSZWFkeShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbn1cblxuXG4vKipcbiAqIEEgZm9ybSB0aGF0IGRvIG5vdGhpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIEFwcE51bGxGb3JtIGltcGxlbWVudHMgSUFwcEZvcm0ge1xuICByZWFkb25seSBpbnZhbGlkID0gZmFsc2U7XG4gIHJlYWRvbmx5IHZhbGlkID0gZmFsc2U7XG4gIHJlYWRvbmx5IGRpcnR5ID0gZmFsc2U7XG4gIHJlYWRvbmx5IGVtcHR5ID0gdHJ1ZTtcbiAgcmVhZG9ubHkgcGVuZGluZyA9IGZhbHNlO1xuICByZWFkb25seSBlcnJvciA9IG51bGw7XG4gIHJlYWRvbmx5IGVuYWJsZWQgPSBmYWxzZTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IGZhbHNlO1xuICByZWFkb25seSB0b3VjaGVkID0gZmFsc2U7XG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZW5hYmxlZDtcbiAgfVxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50b3VjaGVkO1xuICB9XG5cbiAgZGlzYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIGVuYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG5cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNVbnRvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHt9XG4gIG1hcmtBc0RpcnR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzTG9hZGluZyhvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc0xvYWRlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc1JlYWR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cblxuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChmYWxzZSk7XG4gIH1cbiAgcmVhZHkoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodHJ1ZSk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgQXBwRm9ybVByb3ZpZGVyPEYgZXh0ZW5kcyBJQXBwRm9ybSA9IElBcHBGb3JtPiBpbXBsZW1lbnRzIElBcHBGb3JtIHtcbiAgc3RhdGljIE5VTExfRk9STSA9IG5ldyBBcHBOdWxsRm9ybSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ2V0dGVyRm46ICgpID0+IEYpIHtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRlbGVnYXRlKCk6IElBcHBGb3JtIHtcbiAgICByZXR1cm4gdGhpcy5nZXR0ZXJGbigpIHx8IEFwcEZvcm1Qcm92aWRlci5OVUxMX0ZPUk07XG4gIH1cblxuICB3YWl0RGVsZWdhdGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxGPiB7XG4gICAgbGV0IGNvbnRlbnQ6IEY7XG4gICAgcmV0dXJuIHdhaXRGb3IoKCkgPT4ge1xuICAgICAgY29udGVudCA9IHRoaXMuZ2V0dGVyRm4oKTtcbiAgICAgIHJldHVybiAhIWNvbnRlbnQ7XG4gICAgfSwgb3B0cykudGhlbihfID0+IGNvbnRlbnQpO1xuICB9XG5cbiAgLyogLS0gZGVsZWdhdGVkIG1ldGhvZHMgLS0gKi9cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbmFibGVkO1xuICB9XG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kaXNhYmxlZDtcbiAgfVxuICBnZXQgZXJyb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lcnJvcjtcbiAgfVxuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5pbnZhbGlkO1xuICB9XG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS52YWxpZDtcbiAgfVxuICBnZXQgZGlydHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZGlydHk7XG4gIH1cbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmVtcHR5O1xuICB9XG4gIGdldCBwZW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnBlbmRpbmc7XG4gIH1cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubG9hZGluZztcbiAgfVxuICBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS50b3VjaGVkO1xuICB9XG4gIGdldCB1bnRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudW50b3VjaGVkO1xuICB9XG4gIHJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUucmVhZHkoKTtcbiAgfVxuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLndhaXRJZGxlKCk7XG4gIH1cbiAgZGlzYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZGlzYWJsZShvcHRzKTtcbiAgfVxuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmVuYWJsZShvcHRzKTtcbiAgfVxuICBtYXJrQXNQcmlzdGluZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzUHJpc3RpbmUob3B0cyk7XG4gIH1cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gIH1cbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzVG91Y2hlZChvcHRzKTtcbiAgfVxuICBtYXJrQWxsQXNUb3VjaGVkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBbGxBc1RvdWNoZWQob3B0cyk7XG4gIH1cbiAgbWFya0FzRGlydHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc0RpcnR5KG9wdHMpO1xuICB9XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNMb2FkaW5nKG9wdHMpO1xuICB9XG4gIG1hcmtBc0xvYWRlZChvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc0xvYWRlZChvcHRzKTtcbiAgfVxuICBtYXJrQXNSZWFkeShvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1JlYWR5KG9wdHMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUFycmF5SGVscGVyT3B0aW9ucyB7XG4gIGFsbG93RW1wdHlBcnJheTogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtQXJyYXlIZWxwZXI8VCA9IEVudGl0eTxhbnk+LCBDIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sID0gQWJzdHJhY3RDb250cm9sPiB7XG5cbiAgc3RhdGljIGdldE9yQ3JlYXRlQXJyYXkoXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICBhcnJheU5hbWU6IHN0cmluZyk6IEZvcm1BcnJheSB7XG4gICAgbGV0IGFycmF5Q29udHJvbCA9IGZvcm0uZ2V0KGFycmF5TmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGlmICghYXJyYXlDb250cm9sKSB7XG4gICAgICBhcnJheUNvbnRyb2wgPSBmb3JtQnVpbGRlci5hcnJheShbXSk7XG4gICAgICBmb3JtLmFkZENvbnRyb2woYXJyYXlOYW1lLCBhcnJheUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlDb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWxsb3dFbXB0eUFycmF5OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuXG4gIGdldCBhbGxvd0VtcHR5QXJyYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93RW1wdHlBcnJheTtcbiAgfVxuXG4gIHNldCBhbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZm9ybUFycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1BcnJheTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1BcnJheTogRm9ybUFycmF5LFxuICAgIHByaXZhdGUgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogVCkgPT4gQyxcbiAgICBwcml2YXRlIGVxdWFsczogKHYxOiBULCB2MjogVCkgPT4gYm9vbGVhbixcbiAgICBwcml2YXRlIGlzRW1wdHk6ICh2YWx1ZTogVCkgPT4gYm9vbGVhbixcbiAgICBvcHRpb25zPzogRm9ybUFycmF5SGVscGVyT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLl92YWxpZGF0b3JzID0gb3B0aW9ucyAmJiBvcHRpb25zLnZhbGlkYXRvcnM7XG5cbiAgICAvLyBlbXB0eSBhcnJheSBub3QgYWxsb3cgYnkgZGVmYXVsdFxuICAgIHRoaXMuc2V0QWxsb3dFbXB0eUFycmF5KHRvQm9vbGVhbihvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dFbXB0eUFycmF5LCBmYWxzZSkpO1xuICB9XG5cbiAgYWRkKHZhbHVlPzogVCwgb3B0aW9ucz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWRkVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5jcmVhdGVDb250cm9sLCB0aGlzLmVxdWFscywgdGhpcy5pc0VtcHR5LCB2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVBdChpbmRleDogbnVtYmVyKSB7XG4gICAgLy8gRG8gbm90IHJlbW92ZSBpZiBsYXN0IGNyaXRlcmlvblxuICAgIGlmICghdGhpcy5fYWxsb3dFbXB0eUFycmF5ICYmIHRoaXMuX2Zvcm1BcnJheS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBjbGVhclZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuaXNFbXB0eSwgaW5kZXgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiByZW1vdmVWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXNpemUobGVuZ3RoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVzaXplQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmNyZWF0ZUNvbnRyb2wsIGxlbmd0aCk7XG4gIH1cblxuICBjbGVhckF0KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgfVxuXG4gIGlzTGFzdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLl9mb3JtQXJyYXkubGVuZ3RoIC0gMSkgPT09IGluZGV4O1xuICB9XG5cbiAgcmVtb3ZlQWxsRW1wdHkoKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZpbmRJbmRleChjID0+IHRoaXMuaXNFbXB0eShjLnZhbHVlKSk7XG4gICAgd2hpbGUoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIGluZGV4ID0gdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZpbmRJbmRleChjID0+IHRoaXMuaXNFbXB0eShjLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9mb3JtQXJyYXkubGVuZ3RoO1xuICB9XG5cbiAgYXQoaW5kZXg6IG51bWJlcik6IEMge1xuICAgIHJldHVybiB0aGlzLl9mb3JtQXJyYXkuYXQoaW5kZXgpIGFzIEM7XG4gIH1cblxuICAvKipcbiAgICogUmVzaXplIHRoZSBGb3JtQXJyYXksIHRoZW4gYXBwbHkgdmFsdWVzXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqL1xuICBzZXRWYWx1ZShkYXRhOiBUW10sIG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZShkYXRhPy5sZW5ndGh8fDApO1xuICAgIHRoaXMuX2Zvcm1BcnJheS5zZXRWYWx1ZShkYXRhLCBvcHRzKTtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5kaXNhYmxlKG9wdHMpKTtcbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmVuYWJsZShvcHRzKSk7XG4gIH1cblxuICBmb3JFYWNoKGl0ZTogKGNvbnRyb2w6IEMpID0+IHZvaWQgKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZSgpO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mb3JtQXJyYXkuYXQoaSkgYXMgQztcbiAgICAgIGlmIChjb250cm9sKSBpdGUoY29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gaW50ZXJuYWwgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXRBbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5ID09PSB2YWx1ZSkgcmV0dXJuOyAvLyBTa2lwIGlmIHNhbWVcblxuICAgIHRoaXMuX2FsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5KSB7XG4gICAgICB0aGlzLl9mb3JtQXJyYXkuc2V0VmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Zvcm1BcnJheS5zZXRWYWxpZGF0b3JzKCh0aGlzLl92YWxpZGF0b3JzIHx8IFtdKS5jb25jYXQoU2hhcmVkRm9ybUFycmF5VmFsaWRhdG9ycy5yZXF1aXJlZEFycmF5TWluTGVuZ3RoKDEpKSk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVE9ETyBjb250aW51ZSB0byB1c2UgdGhpcyBraW5kIG9mIGRlY2xhcmF0aW9uID9cbmV4cG9ydCBjbGFzcyBBcHBGb3JtVXRpbHMge1xuICBzdGF0aWMgY29weUVudGl0eTJGb3JtID0gY29weUVudGl0eTJGb3JtO1xuICBzdGF0aWMgZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eSA9IGdldEZvcm1WYWx1ZUZyb21FbnRpdHk7XG4gIHN0YXRpYyBsb2dGb3JtRXJyb3JzID0gbG9nRm9ybUVycm9ycztcbiAgc3RhdGljIGdldENvbnRyb2xGcm9tUGF0aCA9IGdldENvbnRyb2xGcm9tUGF0aDtcbiAgc3RhdGljIGZpbHRlck51bWJlcklucHV0ID0gZmlsdGVyTnVtYmVySW5wdXQ7XG4gIHN0YXRpYyBkaXNhYmxlQ29udHJvbHMgPSBkaXNhYmxlQ29udHJvbHM7XG4gIHN0YXRpYyBzZWxlY3RJbnB1dENvbnRlbnQgPSBzZWxlY3RJbnB1dENvbnRlbnQ7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbWFya0FsbEFzVG91Y2hlZCgpIGluc3RlYWQgKG5hbWluZyB3YXMgd3JvbmcpXG4gICAqL1xuICBzdGF0aWMgbWFya0FzVG91Y2hlZCA9IG1hcmtBbGxBc1RvdWNoZWQ7XG5cbiAgLyoqXG4gICAqIE1hcmtzIHRoZSBjb250cm9sIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQgY29udHJvbHMgYXMgdG91Y2hlZC5cbiAgICogU2VlIGFsc286XG4gICAqIC0gYG1hcmtBc1RvdWNoZWQoKWBcbiAgICovXG4gIHN0YXRpYyBtYXJrQWxsQXNUb3VjaGVkID0gbWFya0FsbEFzVG91Y2hlZDtcbiAgc3RhdGljIG1hcmtBc1VudG91Y2hlZCA9IG1hcmtBc1VudG91Y2hlZDtcbiAgc3RhdGljIHdhaXRXaGlsZVBlbmRpbmcgPSB3YWl0V2hpbGVQZW5kaW5nO1xuICBzdGF0aWMgd2FpdElkbGUgPSB3YWl0SWRsZTtcbiAgc3RhdGljIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5O1xuXG4gIHN0YXRpYyBnZXRGb3JtRXJyb3JzID0gZ2V0Rm9ybUVycm9ycztcblxuICBzdGF0aWMgaXNGb3JtKG9iamVjdDogYW55KTogb2JqZWN0IGlzIElBcHBGb3JtIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgQXBwRm9ybVByb3ZpZGVyXG4gICAgICB8fCAnZGlydHknIGluIG9iamVjdCAmJiAnZW5hYmxlZCcgaW4gb2JqZWN0ICYmICd2YWxpZCcgaW4gb2JqZWN0O1xuICB9XG5cbiAgLy8gQXJyYXlGb3JtXG4gIHN0YXRpYyBhZGRWYWx1ZUluQXJyYXkgPSBhZGRWYWx1ZUluQXJyYXk7XG4gIHN0YXRpYyByZW1vdmVWYWx1ZUluQXJyYXkgPSByZW1vdmVWYWx1ZUluQXJyYXk7XG4gIHN0YXRpYyByZXNpemVBcnJheSA9IHJlc2l6ZUFycmF5O1xuICBzdGF0aWMgY2xlYXJWYWx1ZUluQXJyYXkgPSBjbGVhclZhbHVlSW5BcnJheTtcblxuICAvLyBDYWxjdWxhdGVkIGZpZWxkc1xuICBzdGF0aWMgY2FsY3VsYXRlZFN1ZmZpeCA9ICdDYWxjdWxhdGVkJztcbiAgc3RhdGljIGlzQ29udHJvbEhhc0lucHV0ID0gaXNDb250cm9sSGFzSW5wdXQ7XG4gIHN0YXRpYyBzZXRDYWxjdWxhdGVkVmFsdWUgPSBzZXRDYWxjdWxhdGVkVmFsdWU7XG4gIHN0YXRpYyByZXNldENhbGN1bGF0ZWRWYWx1ZSA9IHJlc2V0Q2FsY3VsYXRlZFZhbHVlO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRyb2xIYXNJbnB1dChjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIHRydWUgaWYgdGhlIGNvbnRyb2wgaGFzIGEgdmFsdWUgYW5kIGl0cyAnY2FsY3VsYXRlZCcgY29udHJvbCBoYXMgdGhlIHZhbHVlICdmYWxzZSdcbiAgcmV0dXJuIGNvbnRyb2xzW2NvbnRyb2xOYW1lXS52YWx1ZSAmJiAhdG9Cb29sZWFuKGNvbnRyb2xzW2NvbnRyb2xOYW1lICsgQXBwRm9ybVV0aWxzLmNhbGN1bGF0ZWRTdWZmaXhdLnZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDYWxjdWxhdGVkVmFsdWUoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAvLyBzZXQgdmFsdWUgdG8gY29udHJvbFxuICBjb250cm9sc1tjb250cm9sTmFtZV0uc2V0VmFsdWUocm91bmQodmFsdWUpKTtcbiAgLy8gc2V0ICdjYWxjdWxhdGVkJyBjb250cm9sIHRvICd0cnVlJ1xuICBjb250cm9sc1tjb250cm9sTmFtZSArIEFwcEZvcm1VdGlscy5jYWxjdWxhdGVkU3VmZml4XS5zZXRWYWx1ZSh0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Q2FsY3VsYXRlZFZhbHVlKGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sIGNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFpc0NvbnRyb2xIYXNJbnB1dChjb250cm9scywgY29udHJvbE5hbWUpKSB7XG4gICAgLy8gc2V0IHVuZGVmaW5lZCBvbmx5IGlmIGNvbnRyb2wgYWxyZWFkeSBjYWxjdWxhdGVkXG4gICAgQXBwRm9ybVV0aWxzLnNldENhbGN1bGF0ZWRWYWx1ZShjb250cm9scywgY29udHJvbE5hbWUsIHVuZGVmaW5lZCk7XG4gIH1cbn1cblxuIl19
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDNUUsT0FBTyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsT0FBTyxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQUUsaUJBQWlCLEVBQ2xDLGVBQWUsRUFDZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQUUsYUFBYSxFQUNqQyxzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUNoRCxzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLGdCQUFnQixFQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBd0M1Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBQ1csWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQTBCM0IsQ0FBQztJQXpCQyxJQUFJLFFBQVE7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FB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S0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZILENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBMkMsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQzVILHVCQUF1QjtJQUN2QixRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLHFDQUFxQztJQUNyQyxRQUFRLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQTJDLEVBQUUsV0FBbUI7SUFDbkcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUM3QyxtREFBbUQ7UUFDbkQsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDbkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RW50aXR5fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtyb3VuZCwgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7ZmlsdGVyTnVtYmVySW5wdXQsIHNlbGVjdElucHV0Q29udGVudH0gZnJvbSAnLi4vLi4vc2hhcmVkL2lucHV0cyc7XG5pbXBvcnQge3dhaXRGb3IsIFdhaXRGb3JPcHRpb25zfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtcbiAgYWRkVmFsdWVJbkFycmF5LCBjbGVhclZhbHVlSW5BcnJheSxcbiAgY29weUVudGl0eTJGb3JtLFxuICBkaXNhYmxlQ29udHJvbHMsXG4gIGdldENvbnRyb2xGcm9tUGF0aCwgZ2V0Rm9ybUVycm9ycyxcbiAgZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eSxcbiAgbG9nRm9ybUVycm9ycyxcbiAgbWFya0FsbEFzVG91Y2hlZCxcbiAgbWFya0FzVW50b3VjaGVkLCByZW1vdmVWYWx1ZUluQXJyYXksIHJlc2l6ZUFycmF5LFxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5LFxuICB3YWl0SWRsZSxcbiAgd2FpdFdoaWxlUGVuZGluZ1xufSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIElBcHBGb3JtR2V0dGVyID0gKCkgPT4gSUFwcEZvcm07XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBPblJlYWR5IHtcbiAgbmdPblJlYWR5KCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEZvcm0gIHtcbiAgLy8gRnJvbSBBbmd1bGFyIGZvcm1cbiAgaW52YWxpZDogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIGRpcnR5OiBib29sZWFuO1xuICBwZW5kaW5nOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdG91Y2hlZDogYm9vbGVhbjtcbiAgdW50b3VjaGVkOiBib29sZWFuO1xuXG4gIC8vIFNwZWNpZmljIHRvIElBcHBGb3JtXG4gIGVtcHR5PzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHJlYWR5KCk6IFByb21pc2U8dm9pZD47XG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8YW55PjtcblxuICBkaXNhYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG5cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTtcbiAgbWFya0FzRGlydHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc0xvYWRlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgbWFya0FzUmVhZHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG59XG5cblxuLyoqXG4gKiBBIGZvcm0gdGhhdCBkbyBub3RoaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBOdWxsRm9ybSBpbXBsZW1lbnRzIElBcHBGb3JtIHtcbiAgcmVhZG9ubHkgaW52YWxpZCA9IGZhbHNlO1xuICByZWFkb25seSB2YWxpZCA9IGZhbHNlO1xuICByZWFkb25seSBkaXJ0eSA9IGZhbHNlO1xuICByZWFkb25seSBlbXB0eSA9IHRydWU7XG4gIHJlYWRvbmx5IHBlbmRpbmcgPSBmYWxzZTtcbiAgcmVhZG9ubHkgZXJyb3IgPSBudWxsO1xuICByZWFkb25seSBlbmFibGVkID0gZmFsc2U7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBmYWxzZTtcbiAgcmVhZG9ubHkgdG91Y2hlZCA9IGZhbHNlO1xuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmVuYWJsZWQ7XG4gIH1cbiAgZ2V0IHVudG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudG91Y2hlZDtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBlbmFibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzVG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBbGxBc1RvdWNoZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7fVxuICBtYXJrQXNEaXJ0eShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc0xvYWRpbmcob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNMb2FkZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNSZWFkeShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG5cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZmFsc2UpO1xuICB9XG4gIHJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRydWUpO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcEZvcm1Qcm92aWRlcjxGIGV4dGVuZHMgSUFwcEZvcm0gPSBJQXBwRm9ybT4gaW1wbGVtZW50cyBJQXBwRm9ybSB7XG4gIHN0YXRpYyBOVUxMX0ZPUk0gPSBuZXcgQXBwTnVsbEZvcm0oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdldHRlckZuOiAoKSA9PiBGKSB7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZWxlZ2F0ZSgpOiBJQXBwRm9ybSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0dGVyRm4oKSB8fCBBcHBGb3JtUHJvdmlkZXIuTlVMTF9GT1JNO1xuICB9XG5cbiAgd2FpdERlbGVnYXRlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8Rj4ge1xuICAgIGxldCBjb250ZW50OiBGO1xuICAgIHJldHVybiB3YWl0Rm9yKCgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLmdldHRlckZuKCk7XG4gICAgICByZXR1cm4gISFjb250ZW50O1xuICAgIH0sIG9wdHMpLnRoZW4oXyA9PiBjb250ZW50KTtcbiAgfVxuXG4gIC8qIC0tIGRlbGVnYXRlZCBtZXRob2RzIC0tICovXG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZW5hYmxlZDtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZGlzYWJsZWQ7XG4gIH1cbiAgZ2V0IGVycm9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZXJyb3I7XG4gIH1cbiAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuaW52YWxpZDtcbiAgfVxuICBnZXQgdmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudmFsaWQ7XG4gIH1cbiAgZ2V0IGRpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpcnR5O1xuICB9XG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbXB0eTtcbiAgfVxuICBnZXQgcGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wZW5kaW5nO1xuICB9XG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmxvYWRpbmc7XG4gIH1cbiAgZ2V0IHRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUudG91Y2hlZDtcbiAgfVxuICBnZXQgdW50b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnVudG91Y2hlZDtcbiAgfVxuICByZWFkeSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnJlYWR5KCk7XG4gIH1cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS53YWl0SWRsZSgpO1xuICB9XG4gIGRpc2FibGUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpc2FibGUob3B0cyk7XG4gIH1cbiAgZW5hYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5lbmFibGUob3B0cyk7XG4gIH1cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1ByaXN0aW5lKG9wdHMpO1xuICB9XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIH1cbiAgbWFya0FsbEFzVG91Y2hlZChvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQWxsQXNUb3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc0RpcnR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNEaXJ0eShvcHRzKTtcbiAgfVxuICBtYXJrQXNMb2FkaW5nKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzTG9hZGluZyhvcHRzKTtcbiAgfVxuICBtYXJrQXNMb2FkZWQob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNMb2FkZWQob3B0cyk7XG4gIH1cbiAgbWFya0FzUmVhZHkob3B0cz86IHsgb25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNSZWFkeShvcHRzKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1BcnJheUhlbHBlck9wdGlvbnMge1xuICBhbGxvd0VtcHR5QXJyYXk6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybUFycmF5SGVscGVyPFQgPSBFbnRpdHk8YW55PiwgQyBleHRlbmRzIEFic3RyYWN0Q29udHJvbCA9IEFic3RyYWN0Q29udHJvbD4ge1xuXG4gIHN0YXRpYyBnZXRPckNyZWF0ZUFycmF5KFxuICAgIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBmb3JtOiBGb3JtR3JvdXAsXG4gICAgYXJyYXlOYW1lOiBzdHJpbmcpOiBGb3JtQXJyYXkge1xuICAgIGxldCBhcnJheUNvbnRyb2wgPSBmb3JtLmdldChhcnJheU5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBpZiAoIWFycmF5Q29udHJvbCkge1xuICAgICAgYXJyYXlDb250cm9sID0gZm9ybUJ1aWxkZXIuYXJyYXkoW10pO1xuICAgICAgZm9ybS5hZGRDb250cm9sKGFycmF5TmFtZSwgYXJyYXlDb250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5Q29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgX2FsbG93RW1wdHlBcnJheTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXTtcblxuICBnZXQgYWxsb3dFbXB0eUFycmF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd0VtcHR5QXJyYXk7XG4gIH1cblxuICBzZXQgYWxsb3dFbXB0eUFycmF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRBbGxvd0VtcHR5QXJyYXkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGZvcm1BcnJheSgpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtQXJyYXk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtQXJyYXk6IEZvcm1BcnJheSxcbiAgICBwcml2YXRlIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IFQpID0+IEMsXG4gICAgcHJpdmF0ZSBlcXVhbHM6ICh2MTogVCwgdjI6IFQpID0+IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBpc0VtcHR5OiAodmFsdWU6IFQpID0+IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IEZvcm1BcnJheUhlbHBlck9wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5fdmFsaWRhdG9ycyA9IG9wdGlvbnMgJiYgb3B0aW9ucy52YWxpZGF0b3JzO1xuXG4gICAgLy8gZW1wdHkgYXJyYXkgbm90IGFsbG93IGJ5IGRlZmF1bHRcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh0b0Jvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLmFsbG93RW1wdHlBcnJheSwgZmFsc2UpKTtcbiAgfVxuXG4gIGFkZCh2YWx1ZT86IFQsIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFkZFZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuY3JlYXRlQ29udHJvbCwgdGhpcy5lcXVhbHMsIHRoaXMuaXNFbXB0eSwgdmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcikge1xuICAgIC8vIERvIG5vdCByZW1vdmUgaWYgbGFzdCBjcml0ZXJpb25cbiAgICBpZiAoIXRoaXMuX2FsbG93RW1wdHlBcnJheSAmJiB0aGlzLl9mb3JtQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVtb3ZlVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplKGxlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc2l6ZUFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5jcmVhdGVDb250cm9sLCBsZW5ndGgpO1xuICB9XG5cbiAgY2xlYXJBdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNsZWFyVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gIH1cblxuICBpc0xhc3QoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fZm9ybUFycmF5Lmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIHdoaWxlKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCk7XG4gICAgICBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5Lmxlbmd0aDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBDIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5LmF0KGluZGV4KSBhcyBDO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2l6ZSB0aGUgRm9ybUFycmF5LCB0aGVuIHNldCB2YWx1ZXNcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIG9wdHNcbiAgICovXG4gIHNldFZhbHVlKGRhdGE6IFRbXSwgb3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplKGRhdGE/Lmxlbmd0aHx8MCk7XG4gICAgdGhpcy5fZm9ybUFycmF5LnNldFZhbHVlKGRhdGEsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2l6ZSB0aGUgRm9ybUFycmF5LCB0aGVuIHBhdGNoIHZhbHVlc1xuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgcGF0Y2hWYWx1ZShkYXRhOiBUW10sIG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZShkYXRhPy5sZW5ndGh8fDApO1xuICAgIHRoaXMuX2Zvcm1BcnJheS5wYXRjaFZhbHVlKGRhdGEsIG9wdHMpO1xuICB9XG5cbiAgZGlzYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmRpc2FibGUob3B0cykpO1xuICB9XG5cbiAgZW5hYmxlKG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pIHtcbiAgICB0aGlzLl9mb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaChjID0+IGMuZW5hYmxlKG9wdHMpKTtcbiAgfVxuXG4gIGZvckVhY2goaXRlOiAoY29udHJvbDogQykgPT4gdm9pZCApIHtcbiAgICBjb25zdCBzaXplID0gdGhpcy5zaXplKCk7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuX2Zvcm1BcnJheS5hdChpKSBhcyBDO1xuICAgICAgaWYgKGNvbnRyb2wpIGl0ZShjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICAvKiAtLSBpbnRlcm5hbCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIHNldEFsbG93RW1wdHlBcnJheSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9hbGxvd0VtcHR5QXJyYXkgPT09IHZhbHVlKSByZXR1cm47IC8vIFNraXAgaWYgc2FtZVxuXG4gICAgdGhpcy5fYWxsb3dFbXB0eUFycmF5ID0gdmFsdWU7XG5cbiAgICAvLyBTZXQgcmVxdWlyZWQgKG9yIHJlc3RlKSBtaW4gbGVuZ3RoIHZhbGlkYXRvclxuICAgIGlmICh0aGlzLl9hbGxvd0VtcHR5QXJyYXkpIHtcbiAgICAgIHRoaXMuX2Zvcm1BcnJheS5zZXRWYWxpZGF0b3JzKHRoaXMuX3ZhbGlkYXRvcnMgfHwgbnVsbCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fZm9ybUFycmF5LnNldFZhbGlkYXRvcnMoKHRoaXMuX3ZhbGlkYXRvcnMgfHwgW10pLmNvbmNhdChTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzLnJlcXVpcmVkQXJyYXlNaW5MZW5ndGgoMSkpKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBUT0RPIGNvbnRpbnVlIHRvIHVzZSB0aGlzIGtpbmQgb2YgZGVjbGFyYXRpb24gP1xuZXhwb3J0IGNsYXNzIEFwcEZvcm1VdGlscyB7XG4gIHN0YXRpYyBjb3B5RW50aXR5MkZvcm0gPSBjb3B5RW50aXR5MkZvcm07XG4gIHN0YXRpYyBnZXRGb3JtVmFsdWVGcm9tRW50aXR5ID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eTtcbiAgc3RhdGljIGxvZ0Zvcm1FcnJvcnMgPSBsb2dGb3JtRXJyb3JzO1xuICBzdGF0aWMgZ2V0Q29udHJvbEZyb21QYXRoID0gZ2V0Q29udHJvbEZyb21QYXRoO1xuICBzdGF0aWMgZmlsdGVyTnVtYmVySW5wdXQgPSBmaWx0ZXJOdW1iZXJJbnB1dDtcbiAgc3RhdGljIGRpc2FibGVDb250cm9scyA9IGRpc2FibGVDb250cm9scztcbiAgc3RhdGljIHNlbGVjdElucHV0Q29udGVudCA9IHNlbGVjdElucHV0Q29udGVudDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtYXJrQWxsQXNUb3VjaGVkKCkgaW5zdGVhZCAobmFtaW5nIHdhcyB3cm9uZylcbiAgICovXG4gIHN0YXRpYyBtYXJrQXNUb3VjaGVkID0gbWFya0FsbEFzVG91Y2hlZDtcblxuICAvKipcbiAgICogTWFya3MgdGhlIGNvbnRyb2wgYW5kIGFsbCBpdHMgZGVzY2VuZGFudCBjb250cm9scyBhcyB0b3VjaGVkLlxuICAgKiBTZWUgYWxzbzpcbiAgICogLSBgbWFya0FzVG91Y2hlZCgpYFxuICAgKi9cbiAgc3RhdGljIG1hcmtBbGxBc1RvdWNoZWQgPSBtYXJrQWxsQXNUb3VjaGVkO1xuICBzdGF0aWMgbWFya0FzVW50b3VjaGVkID0gbWFya0FzVW50b3VjaGVkO1xuICBzdGF0aWMgd2FpdFdoaWxlUGVuZGluZyA9IHdhaXRXaGlsZVBlbmRpbmc7XG4gIHN0YXRpYyB3YWl0SWRsZSA9IHdhaXRJZGxlO1xuICBzdGF0aWMgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9IHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHk7XG5cbiAgc3RhdGljIGdldEZvcm1FcnJvcnMgPSBnZXRGb3JtRXJyb3JzO1xuXG4gIHN0YXRpYyBpc0Zvcm0ob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSUFwcEZvcm0ge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBBcHBGb3JtUHJvdmlkZXJcbiAgICAgIHx8ICdkaXJ0eScgaW4gb2JqZWN0ICYmICdlbmFibGVkJyBpbiBvYmplY3QgJiYgJ3ZhbGlkJyBpbiBvYmplY3Q7XG4gIH1cblxuICAvLyBBcnJheUZvcm1cbiAgc3RhdGljIGFkZFZhbHVlSW5BcnJheSA9IGFkZFZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlbW92ZVZhbHVlSW5BcnJheSA9IHJlbW92ZVZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlc2l6ZUFycmF5ID0gcmVzaXplQXJyYXk7XG4gIHN0YXRpYyBjbGVhclZhbHVlSW5BcnJheSA9IGNsZWFyVmFsdWVJbkFycmF5O1xuXG4gIC8vIENhbGN1bGF0ZWQgZmllbGRzXG4gIHN0YXRpYyBjYWxjdWxhdGVkU3VmZml4ID0gJ0NhbGN1bGF0ZWQnO1xuICBzdGF0aWMgaXNDb250cm9sSGFzSW5wdXQgPSBpc0NvbnRyb2xIYXNJbnB1dDtcbiAgc3RhdGljIHNldENhbGN1bGF0ZWRWYWx1ZSA9IHNldENhbGN1bGF0ZWRWYWx1ZTtcbiAgc3RhdGljIHJlc2V0Q2FsY3VsYXRlZFZhbHVlID0gcmVzZXRDYWxjdWxhdGVkVmFsdWU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gdHJ1ZSBpZiB0aGUgY29udHJvbCBoYXMgYSB2YWx1ZSBhbmQgaXRzICdjYWxjdWxhdGVkJyBjb250cm9sIGhhcyB0aGUgdmFsdWUgJ2ZhbHNlJ1xuICByZXR1cm4gY29udHJvbHNbY29udHJvbE5hbWVdLnZhbHVlICYmICF0b0Jvb2xlYW4oY29udHJvbHNbY29udHJvbE5hbWUgKyBBcHBGb3JtVXRpbHMuY2FsY3VsYXRlZFN1ZmZpeF0udmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENhbGN1bGF0ZWRWYWx1ZShjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gIC8vIHNldCB2YWx1ZSB0byBjb250cm9sXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lXS5zZXRWYWx1ZShyb3VuZCh2YWx1ZSkpO1xuICAvLyBzZXQgJ2NhbGN1bGF0ZWQnIGNvbnRyb2wgdG8gJ3RydWUnXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lICsgQXBwRm9ybVV0aWxzLmNhbGN1bGF0ZWRTdWZmaXhdLnNldFZhbHVlKHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYWxjdWxhdGVkVmFsdWUoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbE5hbWU6IHN0cmluZykge1xuICBpZiAoIWlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzLCBjb250cm9sTmFtZSkpIHtcbiAgICAvLyBzZXQgdW5kZWZpbmVkIG9ubHkgaWYgY29udHJvbCBhbHJlYWR5IGNhbGN1bGF0ZWRcbiAgICBBcHBGb3JtVXRpbHMuc2V0Q2FsY3VsYXRlZFZhbHVlKGNvbnRyb2xzLCBjb250cm9sTmFtZSwgdW5kZWZpbmVkKTtcbiAgfVxufVxuXG4iXX0=
@@ -4024,7 +4024,7 @@ class FormArrayHelper {
4024
4024
  return this._formArray.at(index);
4025
4025
  }
4026
4026
  /**
4027
- * Resize the FormArray, then apply values
4027
+ * Resize the FormArray, then set values
4028
4028
  * @param data
4029
4029
  * @param opts
4030
4030
  */
@@ -4032,6 +4032,15 @@ class FormArrayHelper {
4032
4032
  this.resize((data === null || data === void 0 ? void 0 : data.length) || 0);
4033
4033
  this._formArray.setValue(data, opts);
4034
4034
  }
4035
+ /**
4036
+ * Resize the FormArray, then patch values
4037
+ * @param data
4038
+ * @param opts
4039
+ */
4040
+ patchValue(data, opts) {
4041
+ this.resize((data === null || data === void 0 ? void 0 : data.length) || 0);
4042
+ this._formArray.patchValue(data, opts);
4043
+ }
4035
4044
  disable(opts) {
4036
4045
  this._formArray.controls.forEach(c => c.disable(opts));
4037
4046
  }