@sumaris-net/ngx-components 2.1.3 → 2.1.4-rc1
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.
- package/esm2020/src/app/core/form/form.utils.mjs +7 -2
- package/esm2020/src/app/shared/forms.mjs +2 -2
- package/fesm2015/sumaris-net.ngx-components.mjs +7 -2
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +7 -2
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/form/form.utils.d.ts +4 -0
- package/src/app/shared/forms.d.ts +1 -1
|
@@ -255,7 +255,12 @@ export class AppFormArray extends UntypedFormArray {
|
|
|
255
255
|
* @param options
|
|
256
256
|
*/
|
|
257
257
|
setValue(values, options) {
|
|
258
|
-
setValueInArray(this, this.createControl, values);
|
|
258
|
+
setValueInArray(this, this.createControl, values, options);
|
|
259
|
+
}
|
|
260
|
+
patchValue(values, options) {
|
|
261
|
+
// this.resize(values?.length || 0);
|
|
262
|
+
// super.patchValue(values, options);
|
|
263
|
+
setValueInArray(this, this.createControl, values, options);
|
|
259
264
|
}
|
|
260
265
|
enable(opts) {
|
|
261
266
|
this.controls.forEach(c => c.enable(opts));
|
|
@@ -378,4 +383,4 @@ export function resetCalculatedValue(controls, controlName) {
|
|
|
378
383
|
AppFormUtils.setCalculatedValue(controls, controlName, undefined);
|
|
379
384
|
}
|
|
380
385
|
}
|
|
381
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0RCxnQkFBZ0IsRUFBcUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvSyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLGdCQUFnQixFQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBd0M1Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBQ1csWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQTBCM0IsQ0FBQztJQXpCQyxJQUFJLFFBQVE7UUFD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LG9CQUFvQixDQUFDO0FBSXJELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUEyQyxFQUFFLFdBQW1CO0lBQ2hHLHFGQUFxRjtJQUNyRixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkgsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxRQUEyQyxFQUFFLFdBQW1CLEVBQUUsS0FBeUI7SUFDNUgsdUJBQXVCO0lBQ3ZCLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MscUNBQXFDO0lBQ3JDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBMkMsRUFBRSxXQUFtQjtJQUNuRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFO1FBQzdDLG1EQUFtRDtRQUNuRCxZQUFZLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNuRTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgQWJzdHJhY3RDb250cm9sT3B0aW9ucywgQXN5bmNWYWxpZGF0b3JGbiwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgybVGb3JtQXJyYXlWYWx1ZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFNoYXJlZEZvcm1BcnJheVZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdmFsaWRhdG9yL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgcm91bmQsIHRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgZmlsdGVyTnVtYmVySW5wdXQsIHNlbGVjdElucHV0Q29udGVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9pbnB1dHMnO1xuaW1wb3J0IHsgd2FpdEZvciwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtcbiAgY2xlYXJWYWx1ZUluQXJyYXksXG4gIGNvcHlFbnRpdHkyRm9ybSxcbiAgZGlzYWJsZUNvbnRyb2xzLFxuICBnZXRDb250cm9sRnJvbVBhdGgsXG4gIGdldEZvcm1FcnJvcnMsXG4gIGdldEZvcm1WYWx1ZUZyb21FbnRpdHksXG4gIGxvZ0Zvcm1FcnJvcnMsXG4gIG1hcmtBbGxBc1RvdWNoZWQsXG4gIG1hcmtBc1VudG91Y2hlZCxcbiAgc2V0VmFsdWVJbkFycmF5LFxuICBwdXNoVmFsdWVJbkFycmF5LFxuICByZW1vdmVWYWx1ZUluQXJyYXksXG4gIHJlc2l6ZUFycmF5LFxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5LFxuICB3YWl0SWRsZSxcbiAgd2FpdFdoaWxlUGVuZGluZ1xufSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIElBcHBGb3JtR2V0dGVyID0gKCkgPT4gSUFwcEZvcm07XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBPblJlYWR5IHtcbiAgbmdPblJlYWR5KCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcEZvcm0gIHtcbiAgLy8gRnJvbSBBbmd1bGFyIGZvcm1cbiAgaW52YWxpZDogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIGRpcnR5OiBib29sZWFuO1xuICBwZW5kaW5nOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdG91Y2hlZDogYm9vbGVhbjtcbiAgdW50b3VjaGVkOiBib29sZWFuO1xuXG4gIC8vIFNwZWNpZmljIHRvIElBcHBGb3JtXG4gIGVtcHR5PzogYm9vbGVhbjtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHJlYWR5KCk6IFByb21pc2U8dm9pZD47XG4gIHdhaXRJZGxlKG9wdHM/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/OiBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybUFycmF5SGVscGVyPFQgPSBFbnRpdHk8YW55PiwgQyBleHRlbmRzIEFic3RyYWN0Q29udHJvbCA9IEFic3RyYWN0Q29udHJvbD4ge1xuXG4gIHN0YXRpYyBnZXRPckNyZWF0ZUFycmF5KFxuICAgIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cCxcbiAgICBhcnJheU5hbWU6IHN0cmluZyk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIGxldCBhcnJheUNvbnRyb2wgPSBmb3JtLmdldChhcnJheU5hbWUpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgaWYgKCFhcnJheUNvbnRyb2wpIHtcbiAgICAgIGFycmF5Q29udHJvbCA9IGZvcm1CdWlsZGVyLmFycmF5KFtdKTtcbiAgICAgIGZvcm0uYWRkQ29udHJvbChhcnJheU5hbWUsIGFycmF5Q29udHJvbCk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheUNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIF9hbGxvd0VtcHR5QXJyYXk6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW107XG5cbiAgZ2V0IGFsbG93RW1wdHlBcnJheSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dFbXB0eUFycmF5O1xuICB9XG5cbiAgc2V0IGFsbG93RW1wdHlBcnJheSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0QWxsb3dFbXB0eUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBmb3JtQXJyYXkoKTogVW50eXBlZEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1BcnJheTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1BcnJheTogVW50eXBlZEZvcm1BcnJheSxcbiAgICBwcml2YXRlIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IFQpID0+IEMsXG4gICAgcHJpdmF0ZSBlcXVhbHM6ICh2MTogVCwgdjI6IFQpID0+IGJvb2xlYW4sXG4gICAgcHJpdmF0ZSBpc0VtcHR5OiAodmFsdWU6IFQpID0+IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IEZvcm1BcnJheUhlbHBlck9wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5fdmFsaWRhdG9ycyA9IG9wdGlvbnMgJiYgb3B0aW9ucy52YWxpZGF0b3JzO1xuXG4gICAgLy8gZW1wdHkgYXJyYXkgbm90IGFsbG93IGJ5IGRlZmF1bHRcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh0b0Jvb2xlYW4ob3B0aW9ucz8uYWxsb3dFbXB0eUFycmF5LCBmYWxzZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgcHVzaCgpIGluc3RlYWRcbiAgICovXG4gIGFkZCh2YWx1ZT86IFQsIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHB1c2hWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmNyZWF0ZUNvbnRyb2wsIHRoaXMuZXF1YWxzLCB0aGlzLmlzRW1wdHksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1c2godmFsdWU/OiBULCBvcHRpb25zPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwdXNoVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgKCkgPT4gdGhpcy5jcmVhdGVDb250cm9sKHZhbHVlKSwgdGhpcy5lcXVhbHMsIHRoaXMuaXNFbXB0eSwgdmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcikge1xuICAgIC8vIERvIG5vdCByZW1vdmUgaWYgbGFzdCBjcml0ZXJpb25cbiAgICBpZiAoIXRoaXMuX2FsbG93RW1wdHlBcnJheSAmJiB0aGlzLl9mb3JtQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVtb3ZlVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplKGxlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc2l6ZUFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5jcmVhdGVDb250cm9sLCBsZW5ndGgpO1xuICB9XG5cbiAgY2xlYXJBdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNsZWFyVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gIH1cblxuICBpc0xhc3QoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fZm9ybUFycmF5Lmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIHdoaWxlKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5yZW1vdmVBdChpbmRleCk7XG4gICAgICBpbmRleCA9IHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5Lmxlbmd0aDtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBDIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUFycmF5LmF0KGluZGV4KSBhcyBDO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoIGEgRm9ybUFycmF5LCB1c2luZyBkZWZhdWx0IHZhbHVlc1xuICAgKiBAcGFyYW0gdmFsdWVzIGRlZmF1bHQgdmFsdWVzIHRvIGFwcGx5LlxuICAgKiBAcGFyYW0gb3B0c1xuICAgKiBAcmV0dXJuIHRydWUgaWYgZm9ybSBhcnJ5IGhhcyBiZWVuIGNoYW5nZWRcbiAgICovXG4gIHNldFZhbHVlKHZhbHVlczogVFtdLCBvcHRpb25zPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNldFZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuY3JlYXRlQ29udHJvbCwgdmFsdWVzKTtcbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5kaXNhYmxlKG9wdHMpKTtcbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5fZm9ybUFycmF5LmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmVuYWJsZShvcHRzKSk7XG4gIH1cblxuICBmb3JFYWNoKGl0ZTogKGNvbnRyb2w6IEMpID0+IHZvaWQgKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZSgpO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9mb3JtQXJyYXkuYXQoaSkgYXMgQztcbiAgICAgIGlmIChjb250cm9sKSBpdGUoY29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0gaW50ZXJuYWwgbWV0aG9kcyAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXRBbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5ID09PSB2YWx1ZSkgcmV0dXJuOyAvLyBTa2lwIGlmIHNhbWVcblxuICAgIHRoaXMuX2FsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5KSB7XG4gICAgICB0aGlzLl9mb3JtQXJyYXkuc2V0VmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzIHx8IG51bGwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuX2Zvcm1BcnJheS5zZXRWYWxpZGF0b3JzKCh0aGlzLl92YWxpZGF0b3JzIHx8IFtdKS5jb25jYXQoU2hhcmVkRm9ybUFycmF5VmFsaWRhdG9ycy5yZXF1aXJlZEFycmF5TWluTGVuZ3RoKDEpKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwRm9ybUFycmF5T3B0aW9ucyBleHRlbmRzIEFic3RyYWN0Q29udHJvbE9wdGlvbnN7XG4gIGFsbG93RW1wdHlBcnJheTogYm9vbGVhbjtcbn1cblxuXG5leHBvcnQgY2xhc3MgQXBwRm9ybUFycmF5PFQgZXh0ZW5kcyBFbnRpdHk8VD4sIEMgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w+IGV4dGVuZHMgVW50eXBlZEZvcm1BcnJheSB7XG5cbiAgcHJpdmF0ZSBfYWxsb3dFbXB0eUFycmF5OiBib29sZWFuO1xuXG4gIGdldCBhbGxvd0VtcHR5QXJyYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93RW1wdHlBcnJheTtcbiAgfVxuXG4gIHNldCBhbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IFQpID0+IEMsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXF1YWxzOiAodjE6IFQsIHYyOiBUKSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICBwcml2YXRlIGlzRW1wdHk6ICh2YWx1ZTogVCkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBvcHRpb25zPzogQXBwRm9ybUFycmF5T3B0aW9ucyB8IG51bGxcbiAgKSB7XG4gICAgc3VwZXIoW10sIG9wdGlvbnMpOy8vIGVtcHR5IGFycmF5IG5vdCBhbGxvdyBieSBkZWZhdWx0XG4gICAgdGhpcy5zZXRBbGxvd0VtcHR5QXJyYXkodG9Cb29sZWFuKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0VtcHR5QXJyYXksIGZhbHNlKSk7XG4gIH1cblxuICAvKipcbiAgICogV0lsbCByZWJ1aWxkIHRoZSBhcnJheSwgdXNpbmcgdGhlIGdpdmVuIHZhbHVlc1xuICAgKiBAcGFyYW0gdmFsdWVzXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZXM6IGFueVtdLCBvcHRpb25zPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KTogdm9pZCB7XG4gICAgc2V0VmFsdWVJbkFycmF5KHRoaXMsIHRoaXMuY3JlYXRlQ29udHJvbCwgdmFsdWVzKTtcbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5lbmFibGUob3B0cykpO1xuICB9XG5cbiAgZm9yRWFjaChpdGU6IChjb250cm9sOiBDKSA9PiB2b2lkICkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLmxlbmd0aDtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5hdChpKSBhcyBDO1xuICAgICAgaWYgKGNvbnRyb2wpIGl0ZShjb250cm9sKTtcbiAgICB9XG4gIH1cblxuICByZXNpemUobGVuZ3RoOiBudW1iZXIpIHtcbiAgICByZXR1cm4gcmVzaXplQXJyYXkodGhpcywgdGhpcy5jcmVhdGVDb250cm9sLCBsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgcHVzaCgpIGluc3RlYWRcbiAgICovXG4gIGFkZCh2YWx1ZT86IFQsIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHB1c2hWYWx1ZUluQXJyYXkodGhpcywgdGhpcy5jcmVhdGVDb250cm9sLCB0aGlzLmVxdWFscywgdGhpcy5pc0VtcHR5LCB2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdXNoKHZhbHVlPzogVCwgb3B0aW9ucz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcHVzaFZhbHVlSW5BcnJheSh0aGlzLCAoKSA9PiB0aGlzLmNyZWF0ZUNvbnRyb2wodmFsdWUpLCB0aGlzLmVxdWFscywgdGhpcy5pc0VtcHR5LCB2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVBdChpbmRleDogbnVtYmVyKSB7XG4gICAgLy8gRG8gbm90IHJlbW92ZSBpZiBsYXN0IGNyaXRlcmlvblxuICAgIGlmICghdGhpcy5fYWxsb3dFbXB0eUFycmF5ICYmIHRoaXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcywgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIHJlbW92ZVZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBjbGVhckF0KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2xlYXJWYWx1ZUluQXJyYXkodGhpcywgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gIH1cblxuICBpc0xhc3QoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSA9PT0gaW5kZXg7XG4gIH1cblxuICByZW1vdmVBbGxFbXB0eSgpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IHRoaXMuaXNFbXB0eShjLnZhbHVlKSk7XG4gICAgd2hpbGUoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0KGluZGV4KTtcbiAgICAgIGluZGV4ID0gdGhpcy5jb250cm9scy5maW5kSW5kZXgoYyA9PiB0aGlzLmlzRW1wdHkoYy52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGRpc2FibGUob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjID0+IGMuZGlzYWJsZShvcHRzKSk7XG4gIH1cblxuICAvKiAtLSBpbnRlcm5hbCAtLSAqL1xuXG4gIHByb3RlY3RlZCBzZXRBbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5ID09PSB2YWx1ZSkgcmV0dXJuOyAvLyBTa2lwIGlmIHNhbWVcblxuICAgIHRoaXMuX2FsbG93RW1wdHlBcnJheSA9IHZhbHVlO1xuXG4gICAgLy8gU2V0IHJlcXVpcmVkIChvciByZXN0ZSkgbWluIGxlbmd0aCB2YWxpZGF0b3JcbiAgICBpZiAodGhpcy5fYWxsb3dFbXB0eUFycmF5KSB7XG4gICAgICB0aGlzLnNldFZhbGlkYXRvcnModGhpcy5vcHRpb25zLnZhbGlkYXRvcnMgfHwgbnVsbCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMub3B0aW9ucz8udmFsaWRhdG9ycyB8fCBbXTtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyhcbiAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsaWRhdG9ycykgPyB2YWxpZGF0b3JzIDogW3ZhbGlkYXRvcnNdKVxuICAgICAgICAgIC5jb25jYXQoU2hhcmVkRm9ybUFycmF5VmFsaWRhdG9ycy5yZXF1aXJlZEFycmF5TWluTGVuZ3RoKDEpKSk7XG4gICAgfVxuICB9XG59XG5cbi8vIFRPRE8gY29udGludWUgdG8gdXNlIHRoaXMga2luZCBvZiBkZWNsYXJhdGlvbiA/XG5leHBvcnQgY2xhc3MgQXBwRm9ybVV0aWxzIHtcbiAgc3RhdGljIGNvcHlFbnRpdHkyRm9ybSA9IGNvcHlFbnRpdHkyRm9ybTtcbiAgc3RhdGljIGdldEZvcm1WYWx1ZUZyb21FbnRpdHkgPSBnZXRGb3JtVmFsdWVGcm9tRW50aXR5O1xuICBzdGF0aWMgbG9nRm9ybUVycm9ycyA9IGxvZ0Zvcm1FcnJvcnM7XG4gIHN0YXRpYyBnZXRDb250cm9sRnJvbVBhdGggPSBnZXRDb250cm9sRnJvbVBhdGg7XG4gIHN0YXRpYyBmaWx0ZXJOdW1iZXJJbnB1dCA9IGZpbHRlck51bWJlcklucHV0O1xuICBzdGF0aWMgZGlzYWJsZUNvbnRyb2xzID0gZGlzYWJsZUNvbnRyb2xzO1xuICBzdGF0aWMgc2VsZWN0SW5wdXRDb250ZW50ID0gc2VsZWN0SW5wdXRDb250ZW50O1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIG1hcmtBbGxBc1RvdWNoZWQoKSBpbnN0ZWFkIChuYW1pbmcgd2FzIHdyb25nKVxuICAgKi9cbiAgc3RhdGljIG1hcmtBc1RvdWNoZWQgPSBtYXJrQWxsQXNUb3VjaGVkO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB0aGUgY29udHJvbCBhbmQgYWxsIGl0cyBkZXNjZW5kYW50IGNvbnRyb2xzIGFzIHRvdWNoZWQuXG4gICAqIFNlZSBhbHNvOlxuICAgKiAtIGBtYXJrQXNUb3VjaGVkKClgXG4gICAqL1xuICBzdGF0aWMgbWFya0FsbEFzVG91Y2hlZCA9IG1hcmtBbGxBc1RvdWNoZWQ7XG4gIHN0YXRpYyBtYXJrQXNVbnRvdWNoZWQgPSBtYXJrQXNVbnRvdWNoZWQ7XG4gIHN0YXRpYyB3YWl0V2hpbGVQZW5kaW5nID0gd2FpdFdoaWxlUGVuZGluZztcbiAgc3RhdGljIHdhaXRJZGxlID0gd2FpdElkbGU7XG4gIHN0YXRpYyB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5ID0gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eTtcblxuICBzdGF0aWMgZ2V0Rm9ybUVycm9ycyA9IGdldEZvcm1FcnJvcnM7XG5cbiAgc3RhdGljIGlzRm9ybShvYmplY3Q6IGFueSk6IG9iamVjdCBpcyBJQXBwRm9ybSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIEFwcEZvcm1Qcm92aWRlclxuICAgICAgfHwgJ2RpcnR5JyBpbiBvYmplY3QgJiYgJ2VuYWJsZWQnIGluIG9iamVjdCAmJiAndmFsaWQnIGluIG9iamVjdDtcbiAgfVxuXG4gIC8vIEFycmF5Rm9ybVxuICBzdGF0aWMgcHVzaFZhbHVlSW5BcnJheSA9IHB1c2hWYWx1ZUluQXJyYXk7XG4gIHN0YXRpYyByZW1vdmVWYWx1ZUluQXJyYXkgPSByZW1vdmVWYWx1ZUluQXJyYXk7XG4gIHN0YXRpYyByZXNpemVBcnJheSA9IHJlc2l6ZUFycmF5O1xuICBzdGF0aWMgY2xlYXJWYWx1ZUluQXJyYXkgPSBjbGVhclZhbHVlSW5BcnJheTtcblxuICAvLyBDYWxjdWxhdGVkIGZpZWxkc1xuICBzdGF0aWMgY2FsY3VsYXRlZFN1ZmZpeCA9ICdDYWxjdWxhdGVkJztcbiAgc3RhdGljIGlzQ29udHJvbEhhc0lucHV0ID0gaXNDb250cm9sSGFzSW5wdXQ7XG4gIHN0YXRpYyBzZXRDYWxjdWxhdGVkVmFsdWUgPSBzZXRDYWxjdWxhdGVkVmFsdWU7XG4gIHN0YXRpYyByZXNldENhbGN1bGF0ZWRWYWx1ZSA9IHJlc2V0Q2FsY3VsYXRlZFZhbHVlO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRyb2xIYXNJbnB1dChjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIHRydWUgaWYgdGhlIGNvbnRyb2wgaGFzIGEgdmFsdWUgYW5kIGl0cyAnY2FsY3VsYXRlZCcgY29udHJvbCBoYXMgdGhlIHZhbHVlICdmYWxzZSdcbiAgcmV0dXJuIGNvbnRyb2xzW2NvbnRyb2xOYW1lXS52YWx1ZSAmJiAhdG9Cb29sZWFuKGNvbnRyb2xzW2NvbnRyb2xOYW1lICsgQXBwRm9ybVV0aWxzLmNhbGN1bGF0ZWRTdWZmaXhdLnZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRDYWxjdWxhdGVkVmFsdWUoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAvLyBzZXQgdmFsdWUgdG8gY29udHJvbFxuICBjb250cm9sc1tjb250cm9sTmFtZV0uc2V0VmFsdWUocm91bmQodmFsdWUpKTtcbiAgLy8gc2V0ICdjYWxjdWxhdGVkJyBjb250cm9sIHRvICd0cnVlJ1xuICBjb250cm9sc1tjb250cm9sTmFtZSArIEFwcEZvcm1VdGlscy5jYWxjdWxhdGVkU3VmZml4XS5zZXRWYWx1ZSh0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Q2FsY3VsYXRlZFZhbHVlKGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sIGNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFpc0NvbnRyb2xIYXNJbnB1dChjb250cm9scywgY29udHJvbE5hbWUpKSB7XG4gICAgLy8gc2V0IHVuZGVmaW5lZCBvbmx5IGlmIGNvbnRyb2wgYWxyZWFkeSBjYWxjdWxhdGVkXG4gICAgQXBwRm9ybVV0aWxzLnNldENhbGN1bGF0ZWRWYWx1ZShjb250cm9scywgY29udHJvbE5hbWUsIHVuZGVmaW5lZCk7XG4gIH1cbn1cblxuIl19
|
|
386
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL2Zvcm0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0RCxnQkFBZ0IsRUFBcUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvSyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLGdCQUFnQixFQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBd0M1Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBQ1csWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztJQTBCM0IsQ0FBQztJQXpCQyxJQUFJLFFBQVE7UUFD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O0FBQzFCLDhCQUFpQixHQUFHLGlCQUFpQixDQUFDO0FBRTdDLG9CQUFvQjtBQUNiLDZCQUFnQixHQUFHLFlBQVksQ0FBQztBQUNoQyw4QkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztBQUN0QywrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUN4QyxpQ0FBb0IsR0FBRyxvQkFBb0IsQ0FBQztBQUlyRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBMkMsRUFBRSxXQUFtQjtJQUNoRyxxRkFBcUY7SUFDckYsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZILENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBMkMsRUFBRSxXQUFtQixFQUFFLEtBQXlCO0lBQzVILHVCQUF1QjtJQUN2QixRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLHFDQUFxQztJQUNyQyxRQUFRLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQTJDLEVBQUUsV0FBbUI7SUFDbkcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUM3QyxtREFBbUQ7UUFDbkQsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDbkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEFic3RyYWN0Q29udHJvbE9wdGlvbnMsIEFzeW5jVmFsaWRhdG9yRm4sIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIMm1Rm9ybUFycmF5VmFsdWV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3ZhbGlkYXRvci92YWxpZGF0b3JzJztcbmltcG9ydCB7IHJvdW5kLCB0b0Jvb2xlYW4gfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IGZpbHRlck51bWJlcklucHV0LCBzZWxlY3RJbnB1dENvbnRlbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvaW5wdXRzJztcbmltcG9ydCB7IHdhaXRGb3IsIFdhaXRGb3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL29ic2VydmFibGVzJztcbmltcG9ydCB7XG4gIGNsZWFyVmFsdWVJbkFycmF5LFxuICBjb3B5RW50aXR5MkZvcm0sXG4gIGRpc2FibGVDb250cm9scyxcbiAgZ2V0Q29udHJvbEZyb21QYXRoLFxuICBnZXRGb3JtRXJyb3JzLFxuICBnZXRGb3JtVmFsdWVGcm9tRW50aXR5LFxuICBsb2dGb3JtRXJyb3JzLFxuICBtYXJrQWxsQXNUb3VjaGVkLFxuICBtYXJrQXNVbnRvdWNoZWQsXG4gIHNldFZhbHVlSW5BcnJheSxcbiAgcHVzaFZhbHVlSW5BcnJheSxcbiAgcmVtb3ZlVmFsdWVJbkFycmF5LFxuICByZXNpemVBcnJheSxcbiAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSxcbiAgd2FpdElkbGUsXG4gIHdhaXRXaGlsZVBlbmRpbmdcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm1zJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBJQXBwRm9ybUdldHRlciA9ICgpID0+IElBcHBGb3JtO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgT25SZWFkeSB7XG4gIG5nT25SZWFkeSgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBcHBGb3JtICB7XG4gIC8vIEZyb20gQW5ndWxhciBmb3JtXG4gIGludmFsaWQ6IGJvb2xlYW47XG4gIHZhbGlkOiBib29sZWFuO1xuICBkaXJ0eTogYm9vbGVhbjtcbiAgcGVuZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZztcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHRvdWNoZWQ6IGJvb2xlYW47XG4gIHVudG91Y2hlZDogYm9vbGVhbjtcblxuICAvLyBTcGVjaWZpYyB0byBJQXBwRm9ybVxuICBlbXB0eT86IGJvb2xlYW47XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICByZWFkeSgpOiBQcm9taXNlPHZvaWQ+O1xuICB3YWl0SWRsZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPGFueT47XG5cbiAgZGlzYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbjt9KTtcbiAgZW5hYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBtYXJrQXNVbnRvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBbGxBc1RvdWNoZWQob3B0cz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSk7XG4gIG1hcmtBc0RpcnR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBtYXJrQXNMb2FkaW5nKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xuICBtYXJrQXNMb2FkZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW47fSk7XG4gIG1hcmtBc1JlYWR5KG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuO30pO1xufVxuXG5cbi8qKlxuICogQSBmb3JtIHRoYXQgZG8gbm90aGluZ1xuICovXG5leHBvcnQgY2xhc3MgQXBwTnVsbEZvcm0gaW1wbGVtZW50cyBJQXBwRm9ybSB7XG4gIHJlYWRvbmx5IGludmFsaWQgPSBmYWxzZTtcbiAgcmVhZG9ubHkgdmFsaWQgPSBmYWxzZTtcbiAgcmVhZG9ubHkgZGlydHkgPSBmYWxzZTtcbiAgcmVhZG9ubHkgZW1wdHkgPSB0cnVlO1xuICByZWFkb25seSBwZW5kaW5nID0gZmFsc2U7XG4gIHJlYWRvbmx5IGVycm9yID0gbnVsbDtcbiAgcmVhZG9ubHkgZW5hYmxlZCA9IGZhbHNlO1xuICByZWFkb25seSBsb2FkaW5nID0gZmFsc2U7XG4gIHJlYWRvbmx5IHRvdWNoZWQgPSBmYWxzZTtcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5lbmFibGVkO1xuICB9XG4gIGdldCB1bnRvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnRvdWNoZWQ7XG4gIH1cblxuICBkaXNhYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgZW5hYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cblxuICBtYXJrQXNQcmlzdGluZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KXt9XG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQWxsQXNUb3VjaGVkKG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge31cbiAgbWFya0FzRGlydHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuICBtYXJrQXNMb2FkaW5nKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzTG9hZGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pe31cbiAgbWFya0FzUmVhZHkob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSl7fVxuXG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGZhbHNlKTtcbiAgfVxuICByZWFkeSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0cnVlKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBBcHBGb3JtUHJvdmlkZXI8RiBleHRlbmRzIElBcHBGb3JtID0gSUFwcEZvcm0+IGltcGxlbWVudHMgSUFwcEZvcm0ge1xuICBzdGF0aWMgTlVMTF9GT1JNID0gbmV3IEFwcE51bGxGb3JtKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnZXR0ZXJGbjogKCkgPT4gRikge1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZGVsZWdhdGUoKTogSUFwcEZvcm0ge1xuICAgIHJldHVybiB0aGlzLmdldHRlckZuKCkgfHwgQXBwRm9ybVByb3ZpZGVyLk5VTExfRk9STTtcbiAgfVxuXG4gIHdhaXREZWxlZ2F0ZShvcHRzPzogV2FpdEZvck9wdGlvbnMpOiBQcm9taXNlPEY+IHtcbiAgICBsZXQgY29udGVudDogRjtcbiAgICByZXR1cm4gd2FpdEZvcigoKSA9PiB7XG4gICAgICBjb250ZW50ID0gdGhpcy5nZXR0ZXJGbigpO1xuICAgICAgcmV0dXJuICEhY29udGVudDtcbiAgICB9LCBvcHRzKS50aGVuKF8gPT4gY29udGVudCk7XG4gIH1cblxuICAvKiAtLSBkZWxlZ2F0ZWQgbWV0aG9kcyAtLSAqL1xuXG4gIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmVuYWJsZWQ7XG4gIH1cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmRpc2FibGVkO1xuICB9XG4gIGdldCBlcnJvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmVycm9yO1xuICB9XG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLmludmFsaWQ7XG4gIH1cbiAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnZhbGlkO1xuICB9XG4gIGdldCBkaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kaXJ0eTtcbiAgfVxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZW1wdHk7XG4gIH1cbiAgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUucGVuZGluZztcbiAgfVxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5sb2FkaW5nO1xuICB9XG4gIGdldCB0b3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLnRvdWNoZWQ7XG4gIH1cbiAgZ2V0IHVudG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS51bnRvdWNoZWQ7XG4gIH1cbiAgcmVhZHkoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5yZWFkeSgpO1xuICB9XG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUud2FpdElkbGUoKTtcbiAgfVxuICBkaXNhYmxlKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kaXNhYmxlKG9wdHMpO1xuICB9XG4gIGVuYWJsZShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZW5hYmxlKG9wdHMpO1xuICB9XG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgfVxuICBtYXJrQXNVbnRvdWNoZWQob3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc1VudG91Y2hlZChvcHRzKTtcbiAgfVxuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5tYXJrQXNUb3VjaGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBbGxBc1RvdWNoZWQob3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FsbEFzVG91Y2hlZChvcHRzKTtcbiAgfVxuICBtYXJrQXNEaXJ0eShvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzRGlydHkob3B0cyk7XG4gIH1cbiAgbWFya0FzTG9hZGluZyhvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiB0aGlzLmRlbGVnYXRlLm1hcmtBc0xvYWRpbmcob3B0cyk7XG4gIH1cbiAgbWFya0FzTG9hZGVkKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzTG9hZGVkKG9wdHMpO1xuICB9XG4gIG1hcmtBc1JlYWR5KG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubWFya0FzUmVhZHkob3B0cyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQXJyYXlIZWxwZXJPcHRpb25zIHtcbiAgYWxsb3dFbXB0eUFycmF5OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1BcnJheUhlbHBlcjxUID0gRW50aXR5PGFueT4sIEMgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2wgPSBBYnN0cmFjdENvbnRyb2w+IHtcblxuICBzdGF0aWMgZ2V0T3JDcmVhdGVBcnJheShcbiAgICBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgYXJyYXlOYW1lOiBzdHJpbmcpOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgYXJyYXlDb250cm9sID0gZm9ybS5nZXQoYXJyYXlOYW1lKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICAgIGlmICghYXJyYXlDb250cm9sKSB7XG4gICAgICBhcnJheUNvbnRyb2wgPSBmb3JtQnVpbGRlci5hcnJheShbXSk7XG4gICAgICBmb3JtLmFkZENvbnRyb2woYXJyYXlOYW1lLCBhcnJheUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlDb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWxsb3dFbXB0eUFycmF5OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuXG4gIGdldCBhbGxvd0VtcHR5QXJyYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93RW1wdHlBcnJheTtcbiAgfVxuXG4gIHNldCBhbGxvd0VtcHR5QXJyYXkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldEFsbG93RW1wdHlBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZm9ybUFycmF5KCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtQXJyYXk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgcHJpdmF0ZSBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBUKSA9PiBDLFxuICAgIHByaXZhdGUgZXF1YWxzOiAodjE6IFQsIHYyOiBUKSA9PiBib29sZWFuLFxuICAgIHByaXZhdGUgaXNFbXB0eTogKHZhbHVlOiBUKSA9PiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiBGb3JtQXJyYXlIZWxwZXJPcHRpb25zXG4gICkge1xuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSBvcHRpb25zICYmIG9wdGlvbnMudmFsaWRhdG9ycztcblxuICAgIC8vIGVtcHR5IGFycmF5IG5vdCBhbGxvdyBieSBkZWZhdWx0XG4gICAgdGhpcy5zZXRBbGxvd0VtcHR5QXJyYXkodG9Cb29sZWFuKG9wdGlvbnM/LmFsbG93RW1wdHlBcnJheSwgZmFsc2UpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHB1c2goKSBpbnN0ZWFkXG4gICAqL1xuICBhZGQodmFsdWU/OiBULCBvcHRpb25zPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwdXNoVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5jcmVhdGVDb250cm9sLCB0aGlzLmVxdWFscywgdGhpcy5pc0VtcHR5LCB2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdXNoKHZhbHVlPzogVCwgb3B0aW9ucz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcHVzaFZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksICgpID0+IHRoaXMuY3JlYXRlQ29udHJvbCh2YWx1ZSksIHRoaXMuZXF1YWxzLCB0aGlzLmlzRW1wdHksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICAvLyBEbyBub3QgcmVtb3ZlIGlmIGxhc3QgY3JpdGVyaW9uXG4gICAgaWYgKCF0aGlzLl9hbGxvd0VtcHR5QXJyYXkgJiYgdGhpcy5fZm9ybUFycmF5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIGNsZWFyVmFsdWVJbkFycmF5KHRoaXMuX2Zvcm1BcnJheSwgdGhpcy5pc0VtcHR5LCBpbmRleCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmV0dXJuIHJlbW92ZVZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuaXNFbXB0eSwgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2l6ZShsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNpemVBcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuY3JlYXRlQ29udHJvbCwgbGVuZ3RoKTtcbiAgfVxuXG4gIGNsZWFyQXQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjbGVhclZhbHVlSW5BcnJheSh0aGlzLl9mb3JtQXJyYXksIHRoaXMuaXNFbXB0eSwgaW5kZXgpO1xuICB9XG5cbiAgaXNMYXN0KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuX2Zvcm1BcnJheS5sZW5ndGggLSAxKSA9PT0gaW5kZXg7XG4gIH1cblxuICByZW1vdmVBbGxFbXB0eSgpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLl9mb3JtQXJyYXkuY29udHJvbHMuZmluZEluZGV4KGMgPT4gdGhpcy5pc0VtcHR5KGMudmFsdWUpKTtcbiAgICB3aGlsZShpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgaW5kZXggPSB0aGlzLl9mb3JtQXJyYXkuY29udHJvbHMuZmluZEluZGV4KGMgPT4gdGhpcy5pc0VtcHR5KGMudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1BcnJheS5sZW5ndGg7XG4gIH1cblxuICBhdChpbmRleDogbnVtYmVyKTogQyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1BcnJheS5hdChpbmRleCkgYXMgQztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCBhIEZvcm1BcnJheSwgdXNpbmcgZGVmYXVsdCB2YWx1ZXNcbiAgICogQHBhcmFtIHZhbHVlcyBkZWZhdWx0IHZhbHVlcyB0byBhcHBseS5cbiAgICogQHBhcmFtIG9wdHNcbiAgICogQHJldHVybiB0cnVlIGlmIGZvcm0gYXJyeSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZXM6IFRbXSwgb3B0aW9ucz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZXRWYWx1ZUluQXJyYXkodGhpcy5fZm9ybUFycmF5LCB0aGlzLmNyZWF0ZUNvbnRyb2wsIHZhbHVlcyk7XG4gIH1cblxuICBkaXNhYmxlKG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pIHtcbiAgICB0aGlzLl9mb3JtQXJyYXkuY29udHJvbHMuZm9yRWFjaChjID0+IGMuZGlzYWJsZShvcHRzKSk7XG4gIH1cblxuICBlbmFibGUob3B0cz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHRoaXMuX2Zvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5lbmFibGUob3B0cykpO1xuICB9XG5cbiAgZm9yRWFjaChpdGU6IChjb250cm9sOiBDKSA9PiB2b2lkICkge1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLnNpemUoKTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5fZm9ybUFycmF5LmF0KGkpIGFzIEM7XG4gICAgICBpZiAoY29udHJvbCkgaXRlKGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIGludGVybmFsIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgc2V0QWxsb3dFbXB0eUFycmF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX2FsbG93RW1wdHlBcnJheSA9PT0gdmFsdWUpIHJldHVybjsgLy8gU2tpcCBpZiBzYW1lXG5cbiAgICB0aGlzLl9hbGxvd0VtcHR5QXJyYXkgPSB2YWx1ZTtcblxuICAgIC8vIFNldCByZXF1aXJlZCAob3IgcmVzdGUpIG1pbiBsZW5ndGggdmFsaWRhdG9yXG4gICAgaWYgKHRoaXMuX2FsbG93RW1wdHlBcnJheSkge1xuICAgICAgdGhpcy5fZm9ybUFycmF5LnNldFZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyB8fCBudWxsKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9mb3JtQXJyYXkuc2V0VmFsaWRhdG9ycygodGhpcy5fdmFsaWRhdG9ycyB8fCBbXSkuY29uY2F0KFNoYXJlZEZvcm1BcnJheVZhbGlkYXRvcnMucmVxdWlyZWRBcnJheU1pbkxlbmd0aCgxKSkpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEZvcm1BcnJheU9wdGlvbnMgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2xPcHRpb25ze1xuICBhbGxvd0VtcHR5QXJyYXk6IGJvb2xlYW47XG59XG5cblxuZXhwb3J0IGNsYXNzIEFwcEZvcm1BcnJheTxUIGV4dGVuZHMgRW50aXR5PFQ+LCBDIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPiBleHRlbmRzIFVudHlwZWRGb3JtQXJyYXkge1xuXG4gIHByaXZhdGUgX2FsbG93RW1wdHlBcnJheTogYm9vbGVhbjtcblxuICBnZXQgYWxsb3dFbXB0eUFycmF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd0VtcHR5QXJyYXk7XG4gIH1cblxuICBzZXQgYWxsb3dFbXB0eUFycmF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRBbGxvd0VtcHR5QXJyYXkodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBUKSA9PiBDLFxuICAgICAgICAgICAgICBwcml2YXRlIGVxdWFsczogKHYxOiBULCB2MjogVCkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpc0VtcHR5OiAodmFsdWU6IFQpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgIHByaXZhdGUgb3B0aW9ucz86IEFwcEZvcm1BcnJheU9wdGlvbnMgfCBudWxsXG4gICkge1xuICAgIHN1cGVyKFtdLCBvcHRpb25zKTsvLyBlbXB0eSBhcnJheSBub3QgYWxsb3cgYnkgZGVmYXVsdFxuICAgIHRoaXMuc2V0QWxsb3dFbXB0eUFycmF5KHRvQm9vbGVhbihvcHRpb25zICYmIG9wdGlvbnMuYWxsb3dFbXB0eUFycmF5LCBmYWxzZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdJbGwgcmVidWlsZCB0aGUgYXJyYXksIHVzaW5nIHRoZSBnaXZlbiB2YWx1ZXNcbiAgICogQHBhcmFtIHZhbHVlc1xuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgc2V0VmFsdWUodmFsdWVzOiBhbnlbXSwgb3B0aW9ucz86IHtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSk6IHZvaWQge1xuICAgIHNldFZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmNyZWF0ZUNvbnRyb2wsIHZhbHVlcywgb3B0aW9ucyk7XG4gIH1cblxuICBwYXRjaFZhbHVlKHZhbHVlczogYW55W10sIG9wdGlvbnM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG5cbiAgfSk6IHZvaWQge1xuICAgIC8vIHRoaXMucmVzaXplKHZhbHVlcz8ubGVuZ3RoIHx8IDApO1xuICAgIC8vIHN1cGVyLnBhdGNoVmFsdWUodmFsdWVzLCBvcHRpb25zKTtcbiAgICBzZXRWYWx1ZUluQXJyYXkodGhpcywgdGhpcy5jcmVhdGVDb250cm9sLCB2YWx1ZXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgZW5hYmxlKG9wdHM/OiB7XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pIHtcbiAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goYyA9PiBjLmVuYWJsZShvcHRzKSk7XG4gIH1cblxuICBmb3JFYWNoKGl0ZTogKGNvbnRyb2w6IEMpID0+IHZvaWQgKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMubGVuZ3RoO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmF0KGkpIGFzIEM7XG4gICAgICBpZiAoY29udHJvbCkgaXRlKGNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2l6ZShsZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiByZXNpemVBcnJheSh0aGlzLCB0aGlzLmNyZWF0ZUNvbnRyb2wsIGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEBkZXByZWNhdGVkIFVzZSBwdXNoKCkgaW5zdGVhZFxuICAgKi9cbiAgYWRkKHZhbHVlPzogVCwgb3B0aW9ucz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcHVzaFZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmNyZWF0ZUNvbnRyb2wsIHRoaXMuZXF1YWxzLCB0aGlzLmlzRW1wdHksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1c2godmFsdWU/OiBULCBvcHRpb25zPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwdXNoVmFsdWVJbkFycmF5KHRoaXMsICgpID0+IHRoaXMuY3JlYXRlQ29udHJvbCh2YWx1ZSksIHRoaXMuZXF1YWxzLCB0aGlzLmlzRW1wdHksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJlbW92ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICAvLyBEbyBub3QgcmVtb3ZlIGlmIGxhc3QgY3JpdGVyaW9uXG4gICAgaWYgKCF0aGlzLl9hbGxvd0VtcHR5QXJyYXkgJiYgdGhpcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBjbGVhclZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gcmVtb3ZlVmFsdWVJbkFycmF5KHRoaXMsIHRoaXMuaXNFbXB0eSwgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQXQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjbGVhclZhbHVlSW5BcnJheSh0aGlzLCB0aGlzLmlzRW1wdHksIGluZGV4KTtcbiAgfVxuXG4gIGlzTGFzdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpID09PSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZUFsbEVtcHR5KCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuY29udHJvbHMuZmluZEluZGV4KGMgPT4gdGhpcy5pc0VtcHR5KGMudmFsdWUpKTtcbiAgICB3aGlsZShpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgaW5kZXggPSB0aGlzLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IHRoaXMuaXNFbXB0eShjLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZShvcHRzPzoge1xuICAgIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICB9KSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGMgPT4gYy5kaXNhYmxlKG9wdHMpKTtcbiAgfVxuXG4gIC8qIC0tIGludGVybmFsIC0tICovXG5cbiAgcHJvdGVjdGVkIHNldEFsbG93RW1wdHlBcnJheSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9hbGxvd0VtcHR5QXJyYXkgPT09IHZhbHVlKSByZXR1cm47IC8vIFNraXAgaWYgc2FtZVxuXG4gICAgdGhpcy5fYWxsb3dFbXB0eUFycmF5ID0gdmFsdWU7XG5cbiAgICAvLyBTZXQgcmVxdWlyZWQgKG9yIHJlc3RlKSBtaW4gbGVuZ3RoIHZhbGlkYXRvclxuICAgIGlmICh0aGlzLl9hbGxvd0VtcHR5QXJyYXkpIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9ycyh0aGlzLm9wdGlvbnMudmFsaWRhdG9ycyB8fCBudWxsKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5vcHRpb25zPy52YWxpZGF0b3JzIHx8IFtdO1xuICAgICAgdGhpcy5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWxpZGF0b3JzKSA/IHZhbGlkYXRvcnMgOiBbdmFsaWRhdG9yc10pXG4gICAgICAgICAgLmNvbmNhdChTaGFyZWRGb3JtQXJyYXlWYWxpZGF0b3JzLnJlcXVpcmVkQXJyYXlNaW5MZW5ndGgoMSkpKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETyBjb250aW51ZSB0byB1c2UgdGhpcyBraW5kIG9mIGRlY2xhcmF0aW9uID9cbmV4cG9ydCBjbGFzcyBBcHBGb3JtVXRpbHMge1xuICBzdGF0aWMgY29weUVudGl0eTJGb3JtID0gY29weUVudGl0eTJGb3JtO1xuICBzdGF0aWMgZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eSA9IGdldEZvcm1WYWx1ZUZyb21FbnRpdHk7XG4gIHN0YXRpYyBsb2dGb3JtRXJyb3JzID0gbG9nRm9ybUVycm9ycztcbiAgc3RhdGljIGdldENvbnRyb2xGcm9tUGF0aCA9IGdldENvbnRyb2xGcm9tUGF0aDtcbiAgc3RhdGljIGZpbHRlck51bWJlcklucHV0ID0gZmlsdGVyTnVtYmVySW5wdXQ7XG4gIHN0YXRpYyBkaXNhYmxlQ29udHJvbHMgPSBkaXNhYmxlQ29udHJvbHM7XG4gIHN0YXRpYyBzZWxlY3RJbnB1dENvbnRlbnQgPSBzZWxlY3RJbnB1dENvbnRlbnQ7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbWFya0FsbEFzVG91Y2hlZCgpIGluc3RlYWQgKG5hbWluZyB3YXMgd3JvbmcpXG4gICAqL1xuICBzdGF0aWMgbWFya0FzVG91Y2hlZCA9IG1hcmtBbGxBc1RvdWNoZWQ7XG5cbiAgLyoqXG4gICAqIE1hcmtzIHRoZSBjb250cm9sIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQgY29udHJvbHMgYXMgdG91Y2hlZC5cbiAgICogU2VlIGFsc286XG4gICAqIC0gYG1hcmtBc1RvdWNoZWQoKWBcbiAgICovXG4gIHN0YXRpYyBtYXJrQWxsQXNUb3VjaGVkID0gbWFya0FsbEFzVG91Y2hlZDtcbiAgc3RhdGljIG1hcmtBc1VudG91Y2hlZCA9IG1hcmtBc1VudG91Y2hlZDtcbiAgc3RhdGljIHdhaXRXaGlsZVBlbmRpbmcgPSB3YWl0V2hpbGVQZW5kaW5nO1xuICBzdGF0aWMgd2FpdElkbGUgPSB3YWl0SWRsZTtcbiAgc3RhdGljIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5O1xuXG4gIHN0YXRpYyBnZXRGb3JtRXJyb3JzID0gZ2V0Rm9ybUVycm9ycztcblxuICBzdGF0aWMgaXNGb3JtKG9iamVjdDogYW55KTogb2JqZWN0IGlzIElBcHBGb3JtIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgQXBwRm9ybVByb3ZpZGVyXG4gICAgICB8fCAnZGlydHknIGluIG9iamVjdCAmJiAnZW5hYmxlZCcgaW4gb2JqZWN0ICYmICd2YWxpZCcgaW4gb2JqZWN0O1xuICB9XG5cbiAgLy8gQXJyYXlGb3JtXG4gIHN0YXRpYyBwdXNoVmFsdWVJbkFycmF5ID0gcHVzaFZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlbW92ZVZhbHVlSW5BcnJheSA9IHJlbW92ZVZhbHVlSW5BcnJheTtcbiAgc3RhdGljIHJlc2l6ZUFycmF5ID0gcmVzaXplQXJyYXk7XG4gIHN0YXRpYyBjbGVhclZhbHVlSW5BcnJheSA9IGNsZWFyVmFsdWVJbkFycmF5O1xuXG4gIC8vIENhbGN1bGF0ZWQgZmllbGRzXG4gIHN0YXRpYyBjYWxjdWxhdGVkU3VmZml4ID0gJ0NhbGN1bGF0ZWQnO1xuICBzdGF0aWMgaXNDb250cm9sSGFzSW5wdXQgPSBpc0NvbnRyb2xIYXNJbnB1dDtcbiAgc3RhdGljIHNldENhbGN1bGF0ZWRWYWx1ZSA9IHNldENhbGN1bGF0ZWRWYWx1ZTtcbiAgc3RhdGljIHJlc2V0Q2FsY3VsYXRlZFZhbHVlID0gcmVzZXRDYWxjdWxhdGVkVmFsdWU7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH0sIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gdHJ1ZSBpZiB0aGUgY29udHJvbCBoYXMgYSB2YWx1ZSBhbmQgaXRzICdjYWxjdWxhdGVkJyBjb250cm9sIGhhcyB0aGUgdmFsdWUgJ2ZhbHNlJ1xuICByZXR1cm4gY29udHJvbHNbY29udHJvbE5hbWVdLnZhbHVlICYmICF0b0Jvb2xlYW4oY29udHJvbHNbY29udHJvbE5hbWUgKyBBcHBGb3JtVXRpbHMuY2FsY3VsYXRlZFN1ZmZpeF0udmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENhbGN1bGF0ZWRWYWx1ZShjb250cm9sczogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2x9LCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gIC8vIHNldCB2YWx1ZSB0byBjb250cm9sXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lXS5zZXRWYWx1ZShyb3VuZCh2YWx1ZSkpO1xuICAvLyBzZXQgJ2NhbGN1bGF0ZWQnIGNvbnRyb2wgdG8gJ3RydWUnXG4gIGNvbnRyb2xzW2NvbnRyb2xOYW1lICsgQXBwRm9ybVV0aWxzLmNhbGN1bGF0ZWRTdWZmaXhdLnNldFZhbHVlKHRydWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYWxjdWxhdGVkVmFsdWUoY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sfSwgY29udHJvbE5hbWU6IHN0cmluZykge1xuICBpZiAoIWlzQ29udHJvbEhhc0lucHV0KGNvbnRyb2xzLCBjb250cm9sTmFtZSkpIHtcbiAgICAvLyBzZXQgdW5kZWZpbmVkIG9ubHkgaWYgY29udHJvbCBhbHJlYWR5IGNhbGN1bGF0ZWRcbiAgICBBcHBGb3JtVXRpbHMuc2V0Q2FsY3VsYXRlZFZhbHVlKGNvbnRyb2xzLCBjb250cm9sTmFtZSwgdW5kZWZpbmVkKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -228,7 +228,7 @@ export function pushValueInArray(arrayControl, createControl, equals, isEmpty, v
|
|
|
228
228
|
return hasChanged;
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
231
|
-
*
|
|
231
|
+
* Set an array using given default values. Each default value will be pass to the 'createControl()' function
|
|
232
232
|
* @param arrayControl
|
|
233
233
|
* @param createControl
|
|
234
234
|
* @param values
|
|
@@ -371,4 +371,4 @@ export function waitIdle(form, opts) {
|
|
|
371
371
|
const predicate = () => form.loading !== true;
|
|
372
372
|
return waitFor(predicate, opts);
|
|
373
373
|
}
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFDLEtBQUssRUFBZ0IsZUFBZSxFQUFZLGVBQWUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxPQUFPLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBT3REOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBVyxFQUFFLE1BQXdCLEVBQUUsSUFBa0Q7SUFDdkgsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBcUIsRUFBRSxJQUFzQjtJQUNsRixPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQTJCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFxQixFQUFFLE9BQXdCLEVBQUUsSUFBYTtJQUNoRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUxQyxhQUFhO0lBQ2IsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHdDQUF3QztRQUN4QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDbkc7UUFDRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsUUFBUTtJQUNSLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1FBRXZDLG9DQUFvQztRQUNwQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUVELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNsRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFDO1lBQy9ILE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBVSxDQUFDO1FBRXpILDhCQUE4QjtRQUM5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxJQUFJLGdCQUFnQixZQUFZLGtCQUFrQixFQUFFO2dCQUNsRCxLQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDeEU7YUFDRjtpQkFDSTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxJQUFJLElBQUUsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO2dCQUN0RyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFFRCw0QkFBNEI7YUFDdkIsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDdkMsMERBQTBEO1lBQzFELEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELGVBQWU7SUFDZixJQUFJLE9BQU8sWUFBWSxrQkFBa0IsRUFBRTtRQUN6QyxPQUFPO1FBQ1AsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEIsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEM7UUFDRCxxREFBcUQ7UUFDckQsdURBQXVEO2FBQ2xEO1lBQ0gsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEM7S0FDRjtBQUVILENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXdCLEVBQUUsU0FBa0IsRUFBRSxJQUFhO0lBQ3ZGLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUs7UUFBRSxPQUFPO0lBQ3RDLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO0lBQzVCLGFBQWE7SUFDYixJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRTtRQUN2QyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLGVBQWUsQ0FBQyxDQUFDO1FBQ3JELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsT0FBTyxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQ3pELENBQUM7U0FDSDtRQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDNUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7YUFDekcsQ0FBQztTQUNIO0tBQ0Y7SUFDRCxhQUFhO1NBQ1IsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDNUMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxPQUFPLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FDekQsQ0FBQztTQUNIO1FBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtRQUM5RixDQUFDLENBQUMsQ0FBQztLQUNKO0lBQ0QseUJBQXlCO1NBQ3BCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDMUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsT0FBTyxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQ3pELENBQUM7S0FDSDtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXdCLEVBQUUsSUFJdkQ7SUFDQyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFaEQsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUVoQyxhQUFhO0lBQ2IsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDdkMsY0FBYztRQUNkLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHO29CQUM5QixHQUFHLE9BQU8sQ0FBQyxNQUFNO2lCQUNsQixDQUFDO2FBQ0g7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRztvQkFDWixHQUFHLElBQUksQ0FBQyxNQUFNO29CQUNkLEdBQUcsT0FBTyxDQUFDLE1BQU07aUJBQ2xCLENBQUM7YUFDSDtTQUNGO1FBRUQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUNyQyw0QkFBNEI7WUFDNUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUMxQixhQUFhLENBQUMsS0FBSyxFQUFFO3dCQUNuQixHQUFHLElBQUk7d0JBQ1AsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7d0JBQ3ZFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLDJDQUEyQztxQkFDaEUsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtLQUNGO0lBRUQsYUFBYTtTQUNSLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1FBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLEdBQUcsSUFBSTtnQkFDUCxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLO2dCQUNuRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQywyQ0FBMkM7YUFDaEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELDZDQUE2QztTQUN4QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7UUFDdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHO2dCQUM5QixHQUFHLE9BQU8sQ0FBQyxNQUFNO2FBQ2xCLENBQUM7U0FDSDthQUNJO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDWixHQUFHLElBQUksQ0FBQyxNQUFNO2dCQUNkLEdBQUcsT0FBTyxDQUFDLE1BQU07YUFDbEIsQ0FBQztTQUNIO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDckIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQVk7SUFDckUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM1QjtJQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxnQkFBZ0IsRUFBRTtRQUNsRCxPQUFPLGtCQUFrQixDQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFzQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDNUY7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLDJCQUEyQixDQUFDLENBQUM7QUFDekUsQ0FBQztBQUdELE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBc0IsRUFBRSxLQUFlLEVBQUUsSUFBaUQ7SUFDeEgsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzNCLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLE9BQU87WUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUdELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxZQUE4QixFQUM5QixhQUErQyxFQUMvQyxNQUFxQyxFQUNyQyxPQUFnQyxFQUNoQyxLQUFVLEVBQ1YsT0FBZ0M7SUFDL0QsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUV2QyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDdkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFZixpQ0FBaUM7SUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNuQixLQUFLLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyRTtJQUVELHVEQUF1RDtJQUN2RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbEcsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDO0lBRUQsNkJBQTZCO0lBQzdCLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDbkI7S0FDRjtTQUFNO1FBQ0wsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQUksVUFBVSxFQUFFO1FBQ2QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDakQsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25CLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUM1QjtTQUNGO0tBQ0Y7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFlBQThCLEVBQzlCLGFBQStDLEVBQy9DLGFBQW9CLEVBQ3BCLE9BQStCO0lBQzdELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN2QixPQUFPLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzlCLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUNELENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLFlBQThCLEVBQzlCLGFBQW9DLEVBQ3BDLE1BQWM7SUFDeEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFFbEQsZ0JBQWdCO0lBQ2hCLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUU7UUFDaEMsT0FBTyxZQUFZLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRTtZQUNuQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDcEM7S0FDRjtJQUVELFlBQVk7U0FDUCxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUU7WUFDbkMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO0tBQ0Y7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFlBQThCLEVBQzlCLE9BQWdDLEVBQ2hDLEtBQWE7SUFDOUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFlBQThCLEVBQzlCLE9BQWdDLEVBQ2hDLEtBQWE7SUFFN0MsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQywyQkFBMkI7SUFFckUsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDdkMsZUFBZSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUM5QjtTQUNJLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1FBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDdEI7U0FDSTtRQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDeEI7SUFDRCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQXdCLEVBQUUsSUFBaUQ7SUFDMUcsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPO0lBQ3JCLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1FBQ3ZDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0tBQzlFO1NBQ0ksSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDNUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsRUFBQyxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0tBQzdHO1NBQ0k7UUFDSCxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUMsR0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7S0FDM0Q7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQXNCLEVBQUUsSUFBaUQ7SUFDOUcsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNsQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQXdCLEVBQUUsSUFBaUQ7SUFDOUcsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPO0lBQ3JCLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1FBQ3ZDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0tBQ3pFO1NBQ0ksSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDNUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7S0FDOUc7U0FDSTtRQUNILE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztLQUMzRDtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsSUFBc0IsRUFBRSxJQUFpRDtJQUM5RyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87SUFDbEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDbEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1lBQ3ZDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO1NBQzlFO2FBQ0k7WUFDSCxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBc0IsRUFBRSxJQUE0QjtJQUNsRixJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87SUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksT0FBTyxZQUFZLGdCQUFnQixFQUFFO1lBQ3ZDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtTQUM5RDthQUNJO1lBQ0gsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQWlDLElBQU8sRUFBRSxJQUFxQjtJQUM3RixNQUFNLFNBQVMsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7SUFDL0QsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBaUMsSUFBTyxFQUFFLElBQXFCO0lBQ3JGLE1BQU0sU0FBUyxHQUFvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7aXNNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge2lzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIG51bGxJZlVuZGVmaW5lZH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHt0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4vZGF0ZXMnO1xuaW1wb3J0IHt3YWl0Rm9yLCBXYWl0Rm9yT3B0aW9uc30gZnJvbSAnLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVycm9ycyB7XG4gIFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25FcnJvcnM7XG59XG5cbi8qKlxuICogRmlsbCBhIGZvcm0gdXNpbmcgYSBzb3VyY2UgZW50aXR5XG4gKlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGVudGl0eVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlFbnRpdHkyRm9ybShlbnRpdHk6IGFueSwgdGFyZ2V0OiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBjb25zdCBqc29uID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHksIHRhcmdldCk7XG4gIHRhcmdldC5wYXRjaFZhbHVlKGpzb24sIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHk6IGFueXx1bmRlZmluZWQsIGZvcm06IFVudHlwZWRGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgcmV0dXJuIGFkYXB0VmFsdWVUb0NvbnRyb2woZW50aXR5LCBmb3JtKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhbiBlbnRpdHkgaW50byBhIHNpbXBsZSBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCB0aGUgZ2l2ZW4gZm9ybVxuICpcbiAqIEBwYXJhbSBzb3VyY2UgYW4gZW50aXR5IChvciBzdWJlbnRpdHkpXG4gKiBAcGFyYW0gY29udHJvbFxuICogQHBhcmFtIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlOiBhbnl8dW5kZWZpbmVkLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg/OiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCBwYXRoUHJlZml4ID0gcGF0aCA/IHBhdGggKyAnLicgOiAnJztcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlICYmIHNvdXJjZVtrZXldLCBjb250cm9sLmNvbnRyb2xzW2tleV0sIHBhdGhQcmVmaXggKyBrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQXJyYXlcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG5cbiAgICAvLyBTcGxpdCwgaWYgbWFueSB2YWx1ZXMgaW4gYSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZSA9IHNvdXJjZS5zcGxpdCgnfCcpO1xuICAgIH1cblxuICAgIC8vIFNraXAgaWYgdmFsdWUgaXMgbm90IGFuIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkgfHwgY29udHJvbC5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoc291cmNlKSkgY29uc29sZS53YXJuKGBXQVJOOiBwbGVhc2UgcmVzaXplIHRoZSBGb3JtQXJyYXkgJyR7cGF0aH0nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIGZpcnN0IGZvcm0gZ3JvdXAsIGFzIG1vZGVsXG4gICAgY29uc3QgZmlyc3RJdGVtQ29udHJvbCA9IGNvbnRyb2wuYXQoMCk7XG4gICAgbGV0IHJlc3VsdCA9IHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBhZGFwdFZhbHVlVG9Db250cm9sKGl0ZW0sIGZpcnN0SXRlbUNvbnRyb2wsIHBhdGhQcmVmaXggKyAnIycgKyBpbmRleCkpIGFzIGFueVtdO1xuXG4gICAgLy8gVHJ1bmNhdGUgaWYgdG9vIG1hbnkgdmFsdWVzXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiBjb250cm9sLmxlbmd0aCkge1xuICAgICAgaWYgKGZpcnN0SXRlbUNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRyb2wubGVuZ3RoOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29udHJvbC5wdXNoKG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgZmlyc3RJdGVtQ29udHJvbC52YWxpZGF0b3IpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgV0FSTjogcGxlYXNlIHJlc2l6ZSB0aGUgRm9ybUFycmF5ICcke3BhdGh8fCcnfScgdG8gdGhlIHNhbWUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBhcnJheWApO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgY29udHJvbC5sZW5ndGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCB2YWx1ZXMgaWYgbm90IGVub3VnaHRcbiAgICBlbHNlIGlmIChyZXN1bHQubGVuZ3RoIDwgY29udHJvbC5sZW5ndGgpIHtcbiAgICAgIC8vY29uc29sZS53YXJuKGBXQVJOOiBBZGRpbmcgbnVsbCB2YWx1ZSB0byBhcnJheSB2YWx1ZXNgKTtcbiAgICAgIGZvciAobGV0IGkgPSByZXN1bHQubGVuZ3RoOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQucHVzaChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIEZvcm0gY29udHJvbFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIC8vIERhdGVcbiAgICBpZiAoaXNNb21lbnQoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRvRGF0ZUlTT1N0cmluZyhzb3VyY2UpO1xuICAgIH1cbiAgICAvLyBBbnkgb3RoZXIgY29udHJvbDogcmVwbGFjZSB1bmRlZmluZWQgYnkgbnVsbCB2YWx1ZVxuICAgIC8vIGJlY2F1c2UgVW5kZWZpbmVkIGlzIG5vdCBhdXRob3JpemVkIGFzIGNvbnRyb2wgdmFsdWVcbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsSWZVbmRlZmluZWQoc291cmNlKTtcbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nRm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGxvZ1ByZWZpeD86IHN0cmluZywgcGF0aD86IHN0cmluZykge1xuICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC52YWxpZCkgcmV0dXJuO1xuICBsb2dQcmVmaXggPSBsb2dQcmVmaXggfHwgJyc7XG4gIC8vIEZvcm0gZ3JvdXBcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKCFwYXRoKSBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4fSBGb3JtIGVycm9yczpgKTtcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC5jb250cm9scykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykuZm9yRWFjaChjaGlsZCA9PlxuICAgICAgICBsb2dGb3JtRXJyb3JzKGNvbnRyb2wuY29udHJvbHNbY2hpbGRdLCBsb2dQcmVmaXgsIChwYXRoID8gYCR7cGF0aH0uJHtjaGlsZH1gIDogY2hpbGQpKSAvLyBSZWN1cnNpdmUgY2FsbFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgLy8gRm9ybSBhcnJheVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBsb2dGb3JtRXJyb3JzKGNoaWxkLCBsb2dQcmVmaXgsIChwYXRoID8gYCR7cGF0aH0uJHtpbmRleH1gIDogYCR7aW5kZXh9YCkpOyAvLyBSZWN1cnNpdmUgY2FsbFxuICAgIH0pO1xuICB9XG4gIC8vIE90aGVyIGNvbnRyb2wncyBlcnJvcnNcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaChlcnJvciA9PlxuICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtcbiAgY29udHJvbE5hbWU/OiBzdHJpbmc7XG4gIHJlc3VsdD86IEZvcm1FcnJvcnM7XG4gIHJlY3Vyc2l2ZT86IGJvb2xlYW47XG59KTogRm9ybUVycm9ycyB7XG4gIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIG9wdHMgPSBvcHRzIHx8wqB7fTtcbiAgb3B0cy5yZXN1bHQgPSBvcHRzLnJlc3VsdCB8fCB7fTtcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIC8vIENvcHkgZXJyb3JzXG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgICBvcHRzLnJlc3VsdFtvcHRzLmNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAgIC4uLm9wdHMucmVzdWx0LFxuICAgICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMucmVjdXJzaXZlICE9PSBmYWxzZSkge1xuICAgICAgLy8gTG9vcCBvbiBjaGlsZHJlbiBjb250cm9sc1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNvbnRyb2wuY29udHJvbHNba2V5XTtcbiAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmVuYWJsZWQpIHtcbiAgICAgICAgICBnZXRGb3JtRXJyb3JzKGNoaWxkLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgY29udHJvbE5hbWU6IG9wdHMuY29udHJvbE5hbWUgPyBbb3B0cy5jb250cm9sTmFtZSwga2V5XS5qb2luKCcuJykgOiBrZXksXG4gICAgICAgICAgICByZXN1bHQ6IG9wdHMucmVzdWx0IC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZSBzYW1lIHJlc3VsdCBvYmplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gYXJyYXlcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgZ2V0Rm9ybUVycm9ycyhjaGlsZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBjb250cm9sTmFtZTogKG9wdHMuY29udHJvbE5hbWUgfHwgJycpICsgJy4nICsgaW5kZXgsXG4gICAgICAgIHJlc3VsdDogb3B0cy5yZXN1bHQgLy8gTWFrZSBzdXJlIHRvIGtlZXAgdGhlIHNhbWUgcmVzdWx0IG9iamVjdFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBPdGhlciB0eXBlIG9mIGNvbnRyb2wgKGUuZyBzaW1wbGUgY29udHJvbClcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgb3B0cy5yZXN1bHRbb3B0cy5jb250cm9sTmFtZV0gPSB7XG4gICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAuLi5vcHRzLnJlc3VsdCxcbiAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRzLnJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xGcm9tUGF0aChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpOiBBYnN0cmFjdENvbnRyb2wge1xuICBjb25zdCBpID0gcGF0aC5pbmRleE9mKCcuJyk7XG4gIGlmIChpID09PSAtMSkge1xuICAgIHJldHVybiBmb3JtLmNvbnRyb2xzW3BhdGhdO1xuICB9XG4gIGNvbnN0IGtleSA9IHBhdGguc3Vic3RyaW5nKDAsIGkpO1xuICBpZiAoZm9ybS5jb250cm9sc1trZXldIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHJldHVybiBnZXRDb250cm9sRnJvbVBhdGgoKGZvcm0uY29udHJvbHNba2V5XSBhcyBVbnR5cGVkRm9ybUdyb3VwKSwgcGF0aC5zdWJzdHJpbmcoaSArIDEpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybSBwYXRoOiAnJHtrZXl9JyBzaG91bGQgYmUgYSBmb3JtIGdyb3VwLmApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlQ29udHJvbHMoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgcGF0aHM6IHN0cmluZ1tdLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIChwYXRocyB8fCBbXSkuZm9yRWFjaChwYXRoID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZ2V0Q29udHJvbEZyb21QYXRoKGZvcm0sIHBhdGgpO1xuICAgIGlmIChjb250cm9sKSBjb250cm9sLmRpc2FibGUob3B0cyk7XG4gIH0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBwdXNoVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IGFueSkgPT4gQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiAodjE6IGFueSwgdjI6IGFueSkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHtlbWl0RXZlbnQ6IHRydWV9O1xuXG4gIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIC8vIFNlYXJjaCBpZiB2YWx1ZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoIWlzRW1wdHkodmFsdWUpKSB7XG4gICAgaW5kZXggPSAoYXJyYXlDb250cm9sLnZhbHVlIHx8IFtdKS5maW5kSW5kZXgodiA9PiBlcXVhbHModmFsdWUsIHYpKTtcbiAgfVxuXG4gIC8vIElmIHZhbHVlIG5vdCBleGlzdHMsIGJ1dCBsYXN0IHZhbHVlIGlzIGVtcHR5OiB1c2UgaXRcbiAgaWYgKGluZGV4ID09PSAtMSAmJiBhcnJheUNvbnRyb2wubGVuZ3RoICYmIGlzRW1wdHkoYXJyYXlDb250cm9sLmF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxKS52YWx1ZSkpIHtcbiAgICBpbmRleCA9IGFycmF5Q29udHJvbC5sZW5ndGggLSAxO1xuICB9XG5cbiAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgIGFycmF5Q29udHJvbC5hdChpbmRleCkucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBoYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuICAgIGFycmF5Q29udHJvbC5wdXNoKGNvbnRyb2wpO1xuICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICBpZiAoaXNOaWwob3B0aW9ucy5lbWl0RXZlbnQpIHx8IG9wdGlvbnMuZW1pdEV2ZW50KSB7XG4gICAgICAvLyBNYXJrIGFycmF5IGNvbnRyb2wgZGlydHlcbiAgICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc0NoYW5nZWQ7XG59XG5cbi8qKlxuICogUGF0Y2ggYW4gYXJyYXkgdXNpbmcgZ2l2ZW4gZGVmYXVsdCB2YWx1ZXMuIEVhY2ggZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHBhc3MgdG8gdGhlICdjcmVhdGVDb250cm9sKCknIGZ1bmN0aW9uXG4gKiBAcGFyYW0gYXJyYXlDb250cm9sXG4gKiBAcGFyYW0gY3JlYXRlQ29udHJvbFxuICogQHBhcmFtIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogYW55KSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXM6IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogYm9vbGVhbiB7XG4gIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gIHdoaWxlIChhcnJheUNvbnRyb2wubGVuZ3RoID4gMCkge1xuICAgIGFycmF5Q29udHJvbC5yZW1vdmVBdChhcnJheUNvbnRyb2wubGVuZ3RoIC0gMSwgb3B0aW9ucyk7XG4gICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gIH1cbiAgKGRlZmF1bHRWYWx1ZXMgfHwgW10pLmZvckVhY2godmFsdWUgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBjcmVhdGVDb250cm9sKHZhbHVlKTtcbiAgICBhcnJheUNvbnRyb2wucHVzaChjb250cm9sLCBvcHRpb25zKTtcbiAgICBoYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiBoYXNDaGFuZ2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICgpID0+IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICBjb25zdCBoYXNDaGFuZ2VkID0gYXJyYXlDb250cm9sLmxlbmd0aCAhPT0gbGVuZ3RoO1xuXG4gIC8vIEluY3JlYXNlIHNpemVcbiAgaWYgKGFycmF5Q29udHJvbC5sZW5ndGggPCBsZW5ndGgpIHtcbiAgICB3aGlsZSAoYXJyYXlDb250cm9sLmxlbmd0aCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlDb250cm9sLnB1c2goY3JlYXRlQ29udHJvbCgpKTtcbiAgICB9XG4gIH1cblxuICAvLyBPciByZWR1Y2VcbiAgZWxzZSBpZiAoYXJyYXlDb250cm9sLmxlbmd0aCA+IGxlbmd0aCkge1xuICAgIHdoaWxlIChhcnJheUNvbnRyb2wubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICBhcnJheUNvbnRyb2wucmVtb3ZlQXQoYXJyYXlDb250cm9sLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoYXNDaGFuZ2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblxuICBjb25zdCBjb250cm9sID0gYXJyYXlDb250cm9sLmF0KGluZGV4KTtcbiAgaWYgKGlzRW1wdHkoY29udHJvbC52YWx1ZSkpIHJldHVybiBmYWxzZTsgLy8gc2tpcCAobm90IG5lZWQgdG8gY2xlYXIpXG5cbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgY29weUVudGl0eTJGb3JtKHt9LCBjb250cm9sKTtcbiAgfVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gIH1cbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FsbEFzVG91Y2hlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFjb250cm9sKSByZXR1cm47XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIG1hcmtGb3JtR3JvdXBBc1RvdWNoZWQoY29udHJvbCwgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgKGNvbnRyb2wuY29udHJvbHMgfHwgW10pLmZvckVhY2goYyA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0Zvcm1Hcm91cEFzVG91Y2hlZChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjb250cm9sLCBvcHRzKSk7XG4gIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDb250cm9sQXNUb3VjaGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWNvbnRyb2wpIHJldHVybjtcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgbWFya0FsbEFzVG91Y2hlZChjb250cm9sLCB7IC4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAoY29udHJvbC5jb250cm9scyB8fCBbXSkuZm9yRWFjaChjID0+IG1hcmtDb250cm9sQXNUb3VjaGVkKGMsIHsgLi4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAgICAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjb250cm9sLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNVbnRvdWNoZWQoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBpZiAoIWZvcm0pIHJldHVybjtcbiAgZm9ybS5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZvcm0uY29udHJvbHMpXG4gICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChrZXkpO1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIG1hcmtBc1VudG91Y2hlZChjb250cm9sLCB7b25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvbiAobm90IHBlbmRpbmcpLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IHtwZW5kaW5nOiBib29sZWFufVxuICogcmV0dXJuIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0V2hpbGVQZW5kaW5nPFQgZXh0ZW5kcyB7IHBlbmRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5wZW5kaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuXG4vKipcbiAqIFdhaXQgZm9ybSBpcyBpZGxlIChub3QgbG9hZGluZykuIFRoaXMgbmVlZCB0byBpbXBsZW1lbnQge2xvYWRpbmc6IGJvb2xlYW59XG4gKiBAcGFyYW0gZm9ybVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRJZGxlPFQgZXh0ZW5kcyB7IGxvYWRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5sb2FkaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuIl19
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFDLEtBQUssRUFBZ0IsZUFBZSxFQUFZLGVBQWUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxPQUFPLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBT3REOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBVyxFQUFFLE1BQXdCLEVBQUUsSUFBa0Q7SUFDdkgsTUFBTSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBcUIsRUFBRSxJQUFzQjtJQUNsRixPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQTJCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFxQixFQUFFLE9BQXdCLEVBQUUsSUFBYTtJQUNoRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUUxQyxhQUFhO0lBQ2IsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUU7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xC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QUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQWlDLElBQU8sRUFBRSxJQUFxQjtJQUM3RixNQUFNLFNBQVMsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7SUFDL0QsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBaUMsSUFBTyxFQUFFLElBQXFCO0lBQ3JGLE1BQU0sU0FBUyxHQUFvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7aXNNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge2lzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIG51bGxJZlVuZGVmaW5lZH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHt0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4vZGF0ZXMnO1xuaW1wb3J0IHt3YWl0Rm9yLCBXYWl0Rm9yT3B0aW9uc30gZnJvbSAnLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVycm9ycyB7XG4gIFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25FcnJvcnM7XG59XG5cbi8qKlxuICogRmlsbCBhIGZvcm0gdXNpbmcgYSBzb3VyY2UgZW50aXR5XG4gKlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGVudGl0eVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlFbnRpdHkyRm9ybShlbnRpdHk6IGFueSwgdGFyZ2V0OiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBjb25zdCBqc29uID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHksIHRhcmdldCk7XG4gIHRhcmdldC5wYXRjaFZhbHVlKGpzb24sIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHk6IGFueXx1bmRlZmluZWQsIGZvcm06IFVudHlwZWRGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgcmV0dXJuIGFkYXB0VmFsdWVUb0NvbnRyb2woZW50aXR5LCBmb3JtKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhbiBlbnRpdHkgaW50byBhIHNpbXBsZSBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCB0aGUgZ2l2ZW4gZm9ybVxuICpcbiAqIEBwYXJhbSBzb3VyY2UgYW4gZW50aXR5IChvciBzdWJlbnRpdHkpXG4gKiBAcGFyYW0gY29udHJvbFxuICogQHBhcmFtIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlOiBhbnl8dW5kZWZpbmVkLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg/OiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCBwYXRoUHJlZml4ID0gcGF0aCA/IHBhdGggKyAnLicgOiAnJztcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlICYmIHNvdXJjZVtrZXldLCBjb250cm9sLmNvbnRyb2xzW2tleV0sIHBhdGhQcmVmaXggKyBrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQXJyYXlcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG5cbiAgICAvLyBTcGxpdCwgaWYgbWFueSB2YWx1ZXMgaW4gYSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZSA9IHNvdXJjZS5zcGxpdCgnfCcpO1xuICAgIH1cblxuICAgIC8vIFNraXAgaWYgdmFsdWUgaXMgbm90IGFuIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkgfHwgY29udHJvbC5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoc291cmNlKSkgY29uc29sZS53YXJuKGBXQVJOOiBwbGVhc2UgcmVzaXplIHRoZSBGb3JtQXJyYXkgJyR7cGF0aH0nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIGZpcnN0IGZvcm0gZ3JvdXAsIGFzIG1vZGVsXG4gICAgY29uc3QgZmlyc3RJdGVtQ29udHJvbCA9IGNvbnRyb2wuYXQoMCk7XG4gICAgbGV0IHJlc3VsdCA9IHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBhZGFwdFZhbHVlVG9Db250cm9sKGl0ZW0sIGZpcnN0SXRlbUNvbnRyb2wsIHBhdGhQcmVmaXggKyAnIycgKyBpbmRleCkpIGFzIGFueVtdO1xuXG4gICAgLy8gVHJ1bmNhdGUgaWYgdG9vIG1hbnkgdmFsdWVzXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiBjb250cm9sLmxlbmd0aCkge1xuICAgICAgaWYgKGZpcnN0SXRlbUNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRyb2wubGVuZ3RoOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29udHJvbC5wdXNoKG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgZmlyc3RJdGVtQ29udHJvbC52YWxpZGF0b3IpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgV0FSTjogcGxlYXNlIHJlc2l6ZSB0aGUgRm9ybUFycmF5ICcke3BhdGh8fCcnfScgdG8gdGhlIHNhbWUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBhcnJheWApO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgY29udHJvbC5sZW5ndGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCB2YWx1ZXMgaWYgbm90IGVub3VnaHRcbiAgICBlbHNlIGlmIChyZXN1bHQubGVuZ3RoIDwgY29udHJvbC5sZW5ndGgpIHtcbiAgICAgIC8vY29uc29sZS53YXJuKGBXQVJOOiBBZGRpbmcgbnVsbCB2YWx1ZSB0byBhcnJheSB2YWx1ZXNgKTtcbiAgICAgIGZvciAobGV0IGkgPSByZXN1bHQubGVuZ3RoOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQucHVzaChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIEZvcm0gY29udHJvbFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIC8vIERhdGVcbiAgICBpZiAoaXNNb21lbnQoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRvRGF0ZUlTT1N0cmluZyhzb3VyY2UpO1xuICAgIH1cbiAgICAvLyBBbnkgb3RoZXIgY29udHJvbDogcmVwbGFjZSB1bmRlZmluZWQgYnkgbnVsbCB2YWx1ZVxuICAgIC8vIGJlY2F1c2UgVW5kZWZpbmVkIGlzIG5vdCBhdXRob3JpemVkIGFzIGNvbnRyb2wgdmFsdWVcbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsSWZVbmRlZmluZWQoc291cmNlKTtcbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nRm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGxvZ1ByZWZpeD86IHN0cmluZywgcGF0aD86IHN0cmluZykge1xuICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC52YWxpZCkgcmV0dXJuO1xuICBsb2dQcmVmaXggPSBsb2dQcmVmaXggfHwgJyc7XG4gIC8vIEZvcm0gZ3JvdXBcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKCFwYXRoKSBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4fSBGb3JtIGVycm9yczpgKTtcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC5jb250cm9scykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykuZm9yRWFjaChjaGlsZCA9PlxuICAgICAgICBsb2dGb3JtRXJyb3JzKGNvbnRyb2wuY29udHJvbHNbY2hpbGRdLCBsb2dQcmVmaXgsIChwYXRoID8gYCR7cGF0aH0uJHtjaGlsZH1gIDogY2hpbGQpKSAvLyBSZWN1cnNpdmUgY2FsbFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgLy8gRm9ybSBhcnJheVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBsb2dGb3JtRXJyb3JzKGNoaWxkLCBsb2dQcmVmaXgsIChwYXRoID8gYCR7cGF0aH0uJHtpbmRleH1gIDogYCR7aW5kZXh9YCkpOyAvLyBSZWN1cnNpdmUgY2FsbFxuICAgIH0pO1xuICB9XG4gIC8vIE90aGVyIGNvbnRyb2wncyBlcnJvcnNcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaChlcnJvciA9PlxuICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtcbiAgY29udHJvbE5hbWU/OiBzdHJpbmc7XG4gIHJlc3VsdD86IEZvcm1FcnJvcnM7XG4gIHJlY3Vyc2l2ZT86IGJvb2xlYW47XG59KTogRm9ybUVycm9ycyB7XG4gIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIG9wdHMgPSBvcHRzIHx8wqB7fTtcbiAgb3B0cy5yZXN1bHQgPSBvcHRzLnJlc3VsdCB8fCB7fTtcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIC8vIENvcHkgZXJyb3JzXG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgICBvcHRzLnJlc3VsdFtvcHRzLmNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAgIC4uLm9wdHMucmVzdWx0LFxuICAgICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMucmVjdXJzaXZlICE9PSBmYWxzZSkge1xuICAgICAgLy8gTG9vcCBvbiBjaGlsZHJlbiBjb250cm9sc1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNvbnRyb2wuY29udHJvbHNba2V5XTtcbiAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmVuYWJsZWQpIHtcbiAgICAgICAgICBnZXRGb3JtRXJyb3JzKGNoaWxkLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgY29udHJvbE5hbWU6IG9wdHMuY29udHJvbE5hbWUgPyBbb3B0cy5jb250cm9sTmFtZSwga2V5XS5qb2luKCcuJykgOiBrZXksXG4gICAgICAgICAgICByZXN1bHQ6IG9wdHMucmVzdWx0IC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZSBzYW1lIHJlc3VsdCBvYmplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gYXJyYXlcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgZ2V0Rm9ybUVycm9ycyhjaGlsZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBjb250cm9sTmFtZTogKG9wdHMuY29udHJvbE5hbWUgfHwgJycpICsgJy4nICsgaW5kZXgsXG4gICAgICAgIHJlc3VsdDogb3B0cy5yZXN1bHQgLy8gTWFrZSBzdXJlIHRvIGtlZXAgdGhlIHNhbWUgcmVzdWx0IG9iamVjdFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBPdGhlciB0eXBlIG9mIGNvbnRyb2wgKGUuZyBzaW1wbGUgY29udHJvbClcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgb3B0cy5yZXN1bHRbb3B0cy5jb250cm9sTmFtZV0gPSB7XG4gICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAuLi5vcHRzLnJlc3VsdCxcbiAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRzLnJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xGcm9tUGF0aChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpOiBBYnN0cmFjdENvbnRyb2wge1xuICBjb25zdCBpID0gcGF0aC5pbmRleE9mKCcuJyk7XG4gIGlmIChpID09PSAtMSkge1xuICAgIHJldHVybiBmb3JtLmNvbnRyb2xzW3BhdGhdO1xuICB9XG4gIGNvbnN0IGtleSA9IHBhdGguc3Vic3RyaW5nKDAsIGkpO1xuICBpZiAoZm9ybS5jb250cm9sc1trZXldIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHJldHVybiBnZXRDb250cm9sRnJvbVBhdGgoKGZvcm0uY29udHJvbHNba2V5XSBhcyBVbnR5cGVkRm9ybUdyb3VwKSwgcGF0aC5zdWJzdHJpbmcoaSArIDEpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybSBwYXRoOiAnJHtrZXl9JyBzaG91bGQgYmUgYSBmb3JtIGdyb3VwLmApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlQ29udHJvbHMoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgcGF0aHM6IHN0cmluZ1tdLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIChwYXRocyB8fCBbXSkuZm9yRWFjaChwYXRoID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZ2V0Q29udHJvbEZyb21QYXRoKGZvcm0sIHBhdGgpO1xuICAgIGlmIChjb250cm9sKSBjb250cm9sLmRpc2FibGUob3B0cyk7XG4gIH0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBwdXNoVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IGFueSkgPT4gQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiAodjE6IGFueSwgdjI6IGFueSkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHtlbWl0RXZlbnQ6IHRydWV9O1xuXG4gIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIC8vIFNlYXJjaCBpZiB2YWx1ZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoIWlzRW1wdHkodmFsdWUpKSB7XG4gICAgaW5kZXggPSAoYXJyYXlDb250cm9sLnZhbHVlIHx8IFtdKS5maW5kSW5kZXgodiA9PiBlcXVhbHModmFsdWUsIHYpKTtcbiAgfVxuXG4gIC8vIElmIHZhbHVlIG5vdCBleGlzdHMsIGJ1dCBsYXN0IHZhbHVlIGlzIGVtcHR5OiB1c2UgaXRcbiAgaWYgKGluZGV4ID09PSAtMSAmJiBhcnJheUNvbnRyb2wubGVuZ3RoICYmIGlzRW1wdHkoYXJyYXlDb250cm9sLmF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxKS52YWx1ZSkpIHtcbiAgICBpbmRleCA9IGFycmF5Q29udHJvbC5sZW5ndGggLSAxO1xuICB9XG5cbiAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgIGFycmF5Q29udHJvbC5hdChpbmRleCkucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBoYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuICAgIGFycmF5Q29udHJvbC5wdXNoKGNvbnRyb2wpO1xuICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICBpZiAoaXNOaWwob3B0aW9ucy5lbWl0RXZlbnQpIHx8IG9wdGlvbnMuZW1pdEV2ZW50KSB7XG4gICAgICAvLyBNYXJrIGFycmF5IGNvbnRyb2wgZGlydHlcbiAgICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc0NoYW5nZWQ7XG59XG5cbi8qKlxuICogU2V0IGFuIGFycmF5IHVzaW5nIGdpdmVuIGRlZmF1bHQgdmFsdWVzLiBFYWNoIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSBwYXNzIHRvIHRoZSAnY3JlYXRlQ29udHJvbCgpJyBmdW5jdGlvblxuICogQHBhcmFtIGFycmF5Q29udHJvbFxuICogQHBhcmFtIGNyZWF0ZUNvbnRyb2xcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlSW5BcnJheShhcnJheUNvbnRyb2w6IFVudHlwZWRGb3JtQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICh2YWx1ZT86IGFueSkgPT4gQWJzdHJhY3RDb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWVzOiBhbnlbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSk6IGJvb2xlYW4ge1xuICBsZXQgaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICB3aGlsZSAoYXJyYXlDb250cm9sLmxlbmd0aCA+IDApIHtcbiAgICBhcnJheUNvbnRyb2wucmVtb3ZlQXQoYXJyYXlDb250cm9sLmxlbmd0aCAtIDEsIG9wdGlvbnMpO1xuICAgIGhhc0NoYW5nZWQgPSB0cnVlO1xuICB9XG4gIChkZWZhdWx0VmFsdWVzIHx8IFtdKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbCh2YWx1ZSk7XG4gICAgYXJyYXlDb250cm9sLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gaGFzQ2hhbmdlZDtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaXplQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRyb2w6ICgpID0+IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICBjb25zdCBoYXNDaGFuZ2VkID0gYXJyYXlDb250cm9sLmxlbmd0aCAhPT0gbGVuZ3RoO1xuXG4gIC8vIEluY3JlYXNlIHNpemVcbiAgaWYgKGFycmF5Q29udHJvbC5sZW5ndGggPCBsZW5ndGgpIHtcbiAgICB3aGlsZSAoYXJyYXlDb250cm9sLmxlbmd0aCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlDb250cm9sLnB1c2goY3JlYXRlQ29udHJvbCgpKTtcbiAgICB9XG4gIH1cblxuICAvLyBPciByZWR1Y2VcbiAgZWxzZSBpZiAoYXJyYXlDb250cm9sLmxlbmd0aCA+IGxlbmd0aCkge1xuICAgIHdoaWxlIChhcnJheUNvbnRyb2wubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICBhcnJheUNvbnRyb2wucmVtb3ZlQXQoYXJyYXlDb250cm9sLmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoYXNDaGFuZ2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblxuICBjb25zdCBjb250cm9sID0gYXJyYXlDb250cm9sLmF0KGluZGV4KTtcbiAgaWYgKGlzRW1wdHkoY29udHJvbC52YWx1ZSkpIHJldHVybiBmYWxzZTsgLy8gc2tpcCAobm90IG5lZWQgdG8gY2xlYXIpXG5cbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgY29weUVudGl0eTJGb3JtKHt9LCBjb250cm9sKTtcbiAgfVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gIH1cbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FsbEFzVG91Y2hlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFjb250cm9sKSByZXR1cm47XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIG1hcmtGb3JtR3JvdXBBc1RvdWNoZWQoY29udHJvbCwgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgKGNvbnRyb2wuY29udHJvbHMgfHwgW10pLmZvckVhY2goYyA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0Zvcm1Hcm91cEFzVG91Y2hlZChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjb250cm9sLCBvcHRzKSk7XG4gIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDb250cm9sQXNUb3VjaGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWNvbnRyb2wpIHJldHVybjtcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgbWFya0FsbEFzVG91Y2hlZChjb250cm9sLCB7IC4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAoY29udHJvbC5jb250cm9scyB8fCBbXSkuZm9yRWFjaChjID0+IG1hcmtDb250cm9sQXNUb3VjaGVkKGMsIHsgLi4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAgICAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjb250cm9sLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNVbnRvdWNoZWQoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBpZiAoIWZvcm0pIHJldHVybjtcbiAgZm9ybS5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZvcm0uY29udHJvbHMpXG4gICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChrZXkpO1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIG1hcmtBc1VudG91Y2hlZChjb250cm9sLCB7b25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvbiAobm90IHBlbmRpbmcpLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IHtwZW5kaW5nOiBib29sZWFufVxuICogcmV0dXJuIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0V2hpbGVQZW5kaW5nPFQgZXh0ZW5kcyB7IHBlbmRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5wZW5kaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuXG4vKipcbiAqIFdhaXQgZm9ybSBpcyBpZGxlIChub3QgbG9hZGluZykuIFRoaXMgbmVlZCB0byBpbXBsZW1lbnQge2xvYWRpbmc6IGJvb2xlYW59XG4gKiBAcGFyYW0gZm9ybVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRJZGxlPFQgZXh0ZW5kcyB7IGxvYWRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5sb2FkaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuIl19
|
|
@@ -4195,7 +4195,7 @@ function pushValueInArray(arrayControl, createControl, equals, isEmpty, value, o
|
|
|
4195
4195
|
return hasChanged;
|
|
4196
4196
|
}
|
|
4197
4197
|
/**
|
|
4198
|
-
*
|
|
4198
|
+
* Set an array using given default values. Each default value will be pass to the 'createControl()' function
|
|
4199
4199
|
* @param arrayControl
|
|
4200
4200
|
* @param createControl
|
|
4201
4201
|
* @param values
|
|
@@ -4590,7 +4590,12 @@ class AppFormArray extends UntypedFormArray {
|
|
|
4590
4590
|
* @param options
|
|
4591
4591
|
*/
|
|
4592
4592
|
setValue(values, options) {
|
|
4593
|
-
setValueInArray(this, this.createControl, values);
|
|
4593
|
+
setValueInArray(this, this.createControl, values, options);
|
|
4594
|
+
}
|
|
4595
|
+
patchValue(values, options) {
|
|
4596
|
+
// this.resize(values?.length || 0);
|
|
4597
|
+
// super.patchValue(values, options);
|
|
4598
|
+
setValueInArray(this, this.createControl, values, options);
|
|
4594
4599
|
}
|
|
4595
4600
|
enable(opts) {
|
|
4596
4601
|
this.controls.forEach(c => c.enable(opts));
|