@ardium-ui/ui 3.2.7 → 3.3.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_internal/boolean-component.mjs +1 -1
- package/esm2022/lib/_internal/focusable-component.mjs +8 -6
- package/esm2022/lib/_internal/form-field-component.mjs +57 -0
- package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +4 -1
- package/esm2022/lib/_internal/ngmodel-component.mjs +5 -2
- package/esm2022/lib/_internal/public-api.mjs +2 -0
- package/esm2022/lib/_internal/selectable-list-component.mjs +6 -6
- package/esm2022/lib/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/form-field/error/error.component.mjs +17 -0
- package/esm2022/lib/form-field/error/error.directive.mjs +17 -0
- package/esm2022/lib/form-field/form-field.component.mjs +34 -0
- package/esm2022/lib/form-field/form-field.defaults.mjs +15 -0
- package/esm2022/lib/form-field/form-field.module.mjs +44 -0
- package/esm2022/lib/form-field/hint/hint.component.mjs +17 -0
- package/esm2022/lib/form-field/hint/hint.directive.mjs +30 -0
- package/esm2022/lib/form-field/horizontal-form-field.component.mjs +34 -0
- package/esm2022/lib/form-field/index.mjs +9 -0
- package/esm2022/lib/form-field/label/label.component.mjs +21 -0
- package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +14 -7
- package/esm2022/lib/inputs/_simple-input-base.mjs +4 -4
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +28 -11
- package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +3 -3
- package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +5 -3
- package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
- package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
- package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +13 -5
- package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +3 -3
- package/esm2022/lib/inputs/input/input.component.mjs +12 -3
- package/esm2022/lib/inputs/number-input/number-input.component.mjs +15 -7
- package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +3 -3
- package/esm2022/lib/inputs/password-input/password-input.component.mjs +15 -5
- package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +3 -3
- package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +12 -3
- package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +3 -3
- package/esm2022/lib/segment/segment.component.mjs +3 -3
- package/esm2022/lib/select/select.component.mjs +16 -8
- package/esm2022/lib/select/select.defaults.mjs +3 -3
- package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +1 -1
- package/esm2022/lib/table-pagination/table-pagination.component.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ardium-ui-ui.mjs +383 -65
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/focusable-component.d.ts +4 -3
- package/lib/_internal/form-field-component.d.ts +30 -0
- package/lib/_internal/ngmodel-component.d.ts +1 -0
- package/lib/_internal/public-api.d.ts +3 -0
- package/lib/form-field/error/error.component.d.ts +6 -0
- package/lib/form-field/error/error.directive.d.ts +5 -0
- package/lib/form-field/form-field.component.d.ts +20 -0
- package/lib/form-field/form-field.defaults.d.ts +8 -0
- package/lib/form-field/form-field.module.d.ts +14 -0
- package/lib/form-field/hint/hint.component.d.ts +6 -0
- package/lib/form-field/hint/hint.directive.d.ts +8 -0
- package/lib/form-field/horizontal-form-field.component.d.ts +20 -0
- package/lib/form-field/index.d.ts +8 -0
- package/lib/form-field/label/label.component.d.ts +8 -0
- package/lib/form-field-frame/form-field-frame.component.d.ts +4 -2
- package/lib/inputs/_simple-input-base.d.ts +3 -3
- package/lib/inputs/digit-input/digit-input.component.d.ts +6 -4
- package/lib/inputs/digit-input/digit-input.defaults.d.ts +2 -2
- package/lib/inputs/digit-input/digit-input.model.d.ts +4 -1
- package/lib/inputs/digit-input/digit-input.types.d.ts +1 -0
- package/lib/inputs/digit-input/digit-input.utils.d.ts +1 -0
- package/lib/inputs/hex-input/hex-input.component.d.ts +2 -2
- package/lib/inputs/hex-input/hex-input.defaults.d.ts +2 -2
- package/lib/inputs/number-input/number-input.component.d.ts +2 -2
- package/lib/inputs/number-input/number-input.defaults.d.ts +2 -2
- package/lib/inputs/password-input/password-input.component.d.ts +2 -2
- package/lib/inputs/password-input/password-input.defaults.d.ts +2 -2
- package/lib/select/select.component.d.ts +3 -4
- package/lib/select/select.defaults.d.ts +2 -2
- package/package.json +1 -1
- package/prebuilt-themes/default/chips.css.map +1 -1
- package/prebuilt-themes/default/core.css +3 -1
- package/prebuilt-themes/default/core.css.map +1 -1
- package/prebuilt-themes/default/form-field-frame.css +23 -6
- package/prebuilt-themes/default/form-field-frame.css.map +1 -1
- package/prebuilt-themes/default/form-field.css +90 -0
- package/prebuilt-themes/default/form-field.css.map +1 -0
- package/prebuilt-themes/default/inputs/color-input.css +0 -1
- package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/digit-input.css +67 -5
- package/prebuilt-themes/default/inputs/digit-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/file-input.css +0 -6
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/hex-input.css +0 -1
- package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/input.css +0 -6
- package/prebuilt-themes/default/inputs/input.css.map +1 -1
- package/prebuilt-themes/default/inputs/number-input.css +33 -18
- package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/password-input.css +0 -1
- package/prebuilt-themes/default/inputs/password-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/search-bar.css +0 -1
- package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
- package/prebuilt-themes/default/inputs/simple-input.css +0 -6
- package/prebuilt-themes/default/inputs/simple-input.css.map +1 -1
- package/prebuilt-themes/default/segment.css +18 -1
- package/prebuilt-themes/default/segment.css.map +1 -1
- package/public-api.d.ts +2 -0
- package/themes/default/_mixins.scss +83 -64
- package/themes/default/core.scss +102 -99
- package/themes/default/form-field-frame.scss +79 -78
- package/themes/default/form-field.scss +92 -0
- package/themes/default/inputs/_shared.scss +50 -51
- package/themes/default/inputs/digit-input.scss +95 -56
- package/themes/default/inputs/file-input.scss +0 -6
- package/themes/default/inputs/input.scss +1 -7
- package/themes/default/inputs/number-input.scss +131 -121
- package/themes/default/inputs/simple-input.scss +1 -8
|
@@ -92,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
92
92
|
type: HostBinding,
|
|
93
93
|
args: ['class.ard-selected']
|
|
94
94
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9ib29sZWFuLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQTZCLE1BQU0scUJBQXFCLENBQUM7O0FBR2xILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE4Qix5QkFBeUIsQ0FBQztBQUU5Rjs7R0FFRztBQUVILE1BQU0sT0FBZ0IscUJBQXNCLFNBQVEscUJBQXFCO0lBRHpFOztRQXNCRSxVQUFVO1FBQ1Y7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLE1BQU0sQ0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pEOztXQUVHO1FBQ00sa0JBQWEsR0FBRyxNQUFNLENBQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM3RDs7V0FFRztRQUNNLGdCQUFXLEdBQUcsTUFBTSxDQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFNUQsZ0NBQWdDO1FBQ2hDLHVDQUF1QztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBYTNDOztXQUVHO1FBQ00sbUJBQWMsR0FBRyxNQUFNLEVBQVcsQ0FBQztLQXdCN0M7SUExRUMsMEJBQTBCO0lBQzFCLFVBQVUsQ0FBQyxDQUFNO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELGtCQUFrQjtJQUNsQjs7T0FFRztJQUNPLFdBQVc7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFtQkQ7O09BRUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxDQUFNO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELElBRUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFNRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQTVFbUIscUJBQXFCO21HQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRDFDLFNBQVM7OEJBMkNKLFNBQVM7c0JBRFosS0FBSzt1QkFBQyxVQUFVO2dCQU1iLHNCQUFzQjtzQkFGekIsV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlLCBfbmdNb2RlbENvbXBvbmVudERlZmF1bHRzLCBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9uZ21vZGVsLWNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIF9Cb29sZWFuQ29tcG9uZW50RGVmYXVsdHMgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzIHt9XHJcbmV4cG9ydCBjb25zdCBfYm9vbGVhbkNvbXBvbmVudERlZmF1bHRzOiBfQm9vbGVhbkNvbXBvbmVudERlZmF1bHRzID0gX25nTW9kZWxDb21wb25lbnREZWZhdWx0cztcclxuXHJcbi8qKlxyXG4gKiBDb21tb24gY29kZSBmb3IgY29tcG9uZW50cywgd2hpY2ggb25seSBvcGVyYXRlIG9uIHRoZSBcInNlbGVjdGVkXCIgc3RhdGUuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Cb29sZWFuQ29tcG9uZW50QmFzZSBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0Jvb2xlYW5Db21wb25lbnREZWZhdWx0cztcclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3JcclxuICB3cml0ZVZhbHVlKHY6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB2O1xyXG4gIH1cclxuICAvL2VtaXR0ZXIgZnVuY3Rpb25cclxuICAvKipcclxuICAgKiBFbWl0cyBhbGwgc2VsZWN0LXN0YXRlLXJlbGF0ZWQgZXZlbnRzLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMuc2VsZWN0ZWQoKSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQoKSkgdGhpcy5zZWxlY3RFdmVudC5lbWl0KG51bGwpO1xyXG4gICAgZWxzZSB0aGlzLnVuc2VsZWN0RXZlbnQuZW1pdChudWxsKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZCgpKTtcclxuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGV2ZW50c1xyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBmaXJpbmcgYHNlbGVjdGAgZXZlbnRzLiBGaXJlZCB3aGVuIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGlzIHNldCB0byB0cnVlLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHNlbGVjdEV2ZW50ID0gb3V0cHV0PG51bGw+KHsgYWxpYXM6ICdzZWxlY3QnIH0pO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBldmVudCBlbWl0dGVyIHJlc3BvbnNpYmxlIGZvciBmaXJpbmcgYHVuc2VsZWN0YCBldmVudHMuIEZpcmVkIHdoZW4gdGhlIGBzZWxlY3RlZGAgc3RhdGUgaXMgc2V0IHRvIGZhbHNlLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHVuc2VsZWN0RXZlbnQgPSBvdXRwdXQ8bnVsbD4oeyBhbGlhczogJ3Vuc2VsZWN0JyB9KTtcclxuICAvKipcclxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBjaGFuZ2VgIGV2ZW50cy4gRmlyZWQgd2hlbiB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBpcyBjaGFuZ2VkLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PGJvb2xlYW4+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xyXG5cclxuICAvLyEgWyhzZWxlY3RlZCldIHR3by13YXkgYmluZGluZ1xyXG4gIC8vIGNhbiBiZSBzZXQgdXNpbmcgYSBuby12YWx1ZSBhcmd1bWVudFxyXG4gIHJlYWRvbmx5IHNlbGVjdGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAvKipcclxuICAgKiBUaGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuIENvZXJjaWJsZSBpbnRvIGEgYm9vbGVhbi5cclxuICAgKi9cclxuICBASW5wdXQoJ3NlbGVjdGVkJylcclxuICBzZXQgX3NlbGVjdGVkKHY6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZC5zZXQoY29lcmNlQm9vbGVhblByb3BlcnR5KHYpKTtcclxuICB9XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNlbGVjdGVkJylcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFyZC1zZWxlY3RlZCcpXHJcbiAgZ2V0IF9zZWxlY3RlZEhvc3RBdHRyaWJ1dGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBzZWxlY3RlZENoYW5nZWAgZXZlbnRzLiBGaXJlZCB3aGVuIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGlzIGNoYW5nZWQuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2UgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0ZWQgc3RhdGUuIEVtaXRzIGFsbCBhcHByb3ByaWF0ZSBldmVudHMuXHJcbiAgICovXHJcbiAgdG9nZ2xlU2VsZWN0ZWQoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkLnVwZGF0ZSh2ID0+ICF2KTtcclxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHN0YXRlIHRvIFwic2VsZWN0ZWRcIi4gRW1pdHMgYWxsIGFwcHJvcHJpYXRlIGV2ZW50cyBvbmx5IGlmIHRoZSBzdGF0ZSBjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIHNlbGVjdCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzdGF0ZSB0byBcInVuc2VsZWN0ZWRcIi4gRW1pdHMgYWxsIGFwcHJvcHJpYXRlIGV2ZW50cyBvbmx5IGlmIHRoZSBzdGF0ZSBjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIHVuc2VsZWN0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZC5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computed, Directive, input, output, ViewChildren } from '@angular/core';
|
|
1
|
+
import { computed, Directive, input, output, signal, ViewChildren } from '@angular/core';
|
|
2
2
|
import { coerceNumberProperty } from '@ardium-ui/devkit';
|
|
3
3
|
import { _DisablableComponentBase, _disablableComponentDefaults } from './disablable-component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -16,7 +16,7 @@ export class _FocusableComponentBase extends _DisablableComponentBase {
|
|
|
16
16
|
this.tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));
|
|
17
17
|
this._tabIndex = input(this._DEFAULTS.tabIndex, {
|
|
18
18
|
alias: 'tabIndex',
|
|
19
|
-
transform: v => coerceNumberProperty(v),
|
|
19
|
+
transform: v => coerceNumberProperty(v, 0),
|
|
20
20
|
});
|
|
21
21
|
//! events
|
|
22
22
|
/**
|
|
@@ -31,7 +31,8 @@ export class _FocusableComponentBase extends _DisablableComponentBase {
|
|
|
31
31
|
/**
|
|
32
32
|
* Whether the component is currently focused.
|
|
33
33
|
*/
|
|
34
|
-
this.isFocused = false;
|
|
34
|
+
this.isFocused = signal(false);
|
|
35
|
+
this.wasTouched = signal(false);
|
|
35
36
|
}
|
|
36
37
|
/**
|
|
37
38
|
* Focuses the correct element in the component.
|
|
@@ -62,7 +63,7 @@ export class _FocusableComponentBase extends _DisablableComponentBase {
|
|
|
62
63
|
* @param event The focus event to emit.
|
|
63
64
|
*/
|
|
64
65
|
onFocus(event) {
|
|
65
|
-
this.isFocused
|
|
66
|
+
this.isFocused.set(true);
|
|
66
67
|
this.focusEvent.emit(event);
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
@@ -70,7 +71,8 @@ export class _FocusableComponentBase extends _DisablableComponentBase {
|
|
|
70
71
|
* @param event The focus event to emit.
|
|
71
72
|
*/
|
|
72
73
|
onBlur(event) {
|
|
73
|
-
this.
|
|
74
|
+
this.wasTouched.set(true);
|
|
75
|
+
this.isFocused.set(false);
|
|
74
76
|
this.blurEvent.emit(event);
|
|
75
77
|
}
|
|
76
78
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FocusableComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
@@ -82,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
82
84
|
type: ViewChildren,
|
|
83
85
|
args: ['focusableElement']
|
|
84
86
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL2ZvY3VzYWJsZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBZ0MsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLOUgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQWdDO0lBQ3RFLEdBQUcsNEJBQTRCO0lBQy9CLFFBQVEsRUFBRSxDQUFDO0NBQ1osQ0FBQztBQUdGLE1BQU0sT0FBZ0IsdUJBQXdCLFNBQVEsd0JBQXdCO0lBRDlFOztRQWlDRSxZQUFZO1FBQ1o7O1dBRUc7UUFDTSxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxjQUFTLEdBQUcsS0FBSyxDQUFjLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQy9ELEtBQUssRUFBRSxVQUFVO1lBQ2pCLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsVUFBVTtRQUNWOztXQUVHO1FBQ00sZUFBVSxHQUFHLE1BQU0sQ0FBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdEOztXQUVHO1FBQ00sY0FBUyxHQUFHLE1BQU0sQ0FBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTNELHdCQUF3QjtRQUN4Qjs7V0FFRztRQUNNLGNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbkMsZUFBVSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztLQW1COUM7SUF0RUM7O09BRUc7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUNEOztPQUVHO0lBQ0ksVUFBVTtRQUNmLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBQ0Q7O09BRUc7SUFDSSxJQUFJO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBOEJEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7K0dBNUVtQix1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFENUMsU0FBUzs4QkFNUyxpQkFBaUI7c0JBRGpDLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5wdXQsIG91dHB1dCwgUXVlcnlMaXN0LCBzaWduYWwsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgX0Rpc2FibGFibGVDb21wb25lbnRCYXNlLCBfZGlzYWJsYWJsZUNvbXBvbmVudERlZmF1bHRzLCBfRGlzYWJsYWJsZUNvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9kaXNhYmxhYmxlLWNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIF9Gb2N1c2FibGVDb21wb25lbnREZWZhdWx0cyBleHRlbmRzIF9EaXNhYmxhYmxlQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIHRhYkluZGV4OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGNvbnN0IF9mb2N1c2FibGVDb21wb25lbnREZWZhdWx0czogX0ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzID0ge1xyXG4gIC4uLl9kaXNhYmxhYmxlQ29tcG9uZW50RGVmYXVsdHMsXHJcbiAgdGFiSW5kZXg6IDAsXHJcbn07XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIGV4dGVuZHMgX0Rpc2FibGFibGVDb21wb25lbnRCYXNlIHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzO1xyXG5cclxuICAvLyEgbWFrZSB0aGUgY29tcG9uZW50IGZvY3VzYWJsZSBwcm9ncmFtbWF0aWNhbGx5XHJcbiAgQFZpZXdDaGlsZHJlbignZm9jdXNhYmxlRWxlbWVudCcpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlRWxlbWVudCE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj47XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvY3VzZXMgdGhlIGNvcnJlY3QgZWxlbWVudCBpbiB0aGUgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQ/LmZpcnN0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IG9mIGFsbCBhdmFpbGFibGUgZWxlbWVudHMgaW4gdGhlIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBwdWJsaWMgZm9jdXNGaXJzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRm9jdXNlcyB0aGUgbGFzdCBvZiBhbGwgYXZhaWxhYmxlIGVsZW1lbnRzIGluIHRoZSBjb21wb25lbnQuXHJcbiAgICovXHJcbiAgcHVibGljIGZvY3VzTGFzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQ/Lmxhc3Q/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQmx1cnMgYWxsIGZvY3VzYWJsZSBlbGVtZW50cyBpbiB0aGUgY29tcG9uZW50LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZm9jdXNhYmxlRWxlbWVudD8uZm9yRWFjaChlbCA9PiBlbC5uYXRpdmVFbGVtZW50LmJsdXIoKSk7XHJcbiAgfVxyXG5cclxuICAvLyEgdGFiaW5kZXhcclxuICAvKipcclxuICAgKiBUaGUgY29tcG9uZW50J3Mgb3ZlcmFsbCB0YWIgaW5kZXguIElmIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQsIGl0IGlzIGFsd2F5cyBgLTFgLiBDb2VyY2libGUgaW50byBhIG51bWJlciwgZGVmYXVsdHMgdG8gYDBgLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHRhYkluZGV4ID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuZGlzYWJsZWQoKSA/IC0xIDogdGhpcy5fdGFiSW5kZXgoKSkpO1xyXG4gIHJlYWRvbmx5IF90YWJJbmRleCA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy50YWJJbmRleCwge1xyXG4gICAgYWxpYXM6ICd0YWJJbmRleCcsXHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgMCksXHJcbiAgfSk7XHJcblxyXG4gIC8vISBldmVudHNcclxuICAvKipcclxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBmb2N1c2AgZXZlbnRzLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGZvY3VzRXZlbnQgPSBvdXRwdXQ8Rm9jdXNFdmVudD4oeyBhbGlhczogJ2ZvY3VzJyB9KTtcclxuICAvKipcclxuICAgKiBUaGUgZXZlbnQgZW1pdHRlciByZXNwb25zaWJsZSBmb3IgZmlyaW5nIGBibHVyYCBldmVudHMuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgYmx1ckV2ZW50ID0gb3V0cHV0PEZvY3VzRXZlbnQ+KHsgYWxpYXM6ICdibHVyJyB9KTtcclxuXHJcbiAgLy8hIGZvY3VzIGV2ZW50IGhhbmRsZXJzXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGN1cnJlbnRseSBmb2N1c2VkLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGlzRm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHJlYWRvbmx5IHdhc1RvdWNoZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBoYW5kbGUgd2hlbiBhbiBlbGVtZW50IGlzIGZvY3VzZWQuIFNldHMgYGlzRm9jdXNlZGAgYW5kIGZpcmVzIHRoZSBgZm9jdXNgIGV2ZW50LlxyXG4gICAqIEBwYXJhbSBldmVudCBUaGUgZm9jdXMgZXZlbnQgdG8gZW1pdC5cclxuICAgKi9cclxuICBvbkZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZC5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmZvY3VzRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRvIGhhbmRsZSB3aGVuIGFuIGVsZW1lbnQgaXMgYmx1cnJlZC4gU2V0cyBgaXNGb2N1c2VkYCBhbmQgZmlyZXMgdGhlIGBibHVyYCBldmVudC5cclxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGZvY3VzIGV2ZW50IHRvIGVtaXQuXHJcbiAgICovXHJcbiAgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcbiAgICB0aGlzLndhc1RvdWNoZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQuc2V0KGZhbHNlKTtcclxuICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { computed, Directive, inject, Injector, input, signal } from '@angular/core';
|
|
2
|
+
import { NgControl, Validators } from '@angular/forms';
|
|
3
|
+
import { coerceBooleanProperty } from '@ardium-ui/devkit';
|
|
4
|
+
import { map } from 'rxjs';
|
|
5
|
+
import { TakeChance as Random } from 'take-chance';
|
|
6
|
+
import { _NgModelComponentBase, _ngModelComponentDefaults } from './ngmodel-component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export const _formFieldComponentDefaults = {
|
|
9
|
+
..._ngModelComponentDefaults,
|
|
10
|
+
required: undefined,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Common code for components which implement the ControlValueAccessor.
|
|
14
|
+
*
|
|
15
|
+
* **Warning**: `writeValue` function should be implemented on the child component!
|
|
16
|
+
*/
|
|
17
|
+
export class _FormFieldComponentBase extends _NgModelComponentBase {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this._injector = inject(Injector);
|
|
21
|
+
this._ngControl = null;
|
|
22
|
+
this._required = input(undefined, {
|
|
23
|
+
transform: v => coerceBooleanProperty(v),
|
|
24
|
+
alias: 'required',
|
|
25
|
+
});
|
|
26
|
+
this.htmlId = input(Random.id());
|
|
27
|
+
this._hasError = input(undefined, {
|
|
28
|
+
transform: v => coerceBooleanProperty(v),
|
|
29
|
+
alias: 'hasError',
|
|
30
|
+
});
|
|
31
|
+
this._hasErrorInControl = signal(false);
|
|
32
|
+
this.hasError = computed(() => this._hasError() ?? (this.wasTouched() && this._hasErrorInControl()));
|
|
33
|
+
this.isSuccess = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this._ngControl = this._injector.get(NgControl, null);
|
|
37
|
+
if (this._ngControl) {
|
|
38
|
+
this._ngControl.valueAccessor = this;
|
|
39
|
+
this._hasErrorInControl.set(this._ngControl.status === 'INVALID');
|
|
40
|
+
this._statusChangesSub = this._ngControl.statusChanges
|
|
41
|
+
?.pipe(map(v => v === 'INVALID'))
|
|
42
|
+
.subscribe(v => this._hasErrorInControl.set(v));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
get required() {
|
|
46
|
+
return this._required() ?? !!this._ngControl?.control?.hasValidator(Validators.required);
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
this._statusChangesSub?.unsubscribe();
|
|
50
|
+
}
|
|
51
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
52
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: _FormFieldComponentBase, inputs: { _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, htmlId: { classPropertyName: "htmlId", publicName: "htmlId", isSignal: true, isRequired: false, transformFunction: null }, _hasError: { classPropertyName: "_hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, isSuccess: { classPropertyName: "isSuccess", publicName: "isSuccess", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
53
|
+
}
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldComponentBase, decorators: [{
|
|
55
|
+
type: Directive
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBd0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLElBQUksTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBNkIseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNbEgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQWdDO0lBQ3RFLEdBQUcseUJBQXlCO0lBQzVCLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUM7QUFFRjs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSxxQkFBcUI7SUFEM0U7O1FBSXFCLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFnQnRDLGVBQVUsR0FBcUIsSUFBSSxDQUFDO1FBRXJDLGNBQVMsR0FBRyxLQUFLLENBQTJCLFNBQVMsRUFBRTtZQUM5RCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7WUFDeEMsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQyxDQUFDO1FBS00sV0FBTSxHQUFHLEtBQUssQ0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVwQyxjQUFTLEdBQUcsS0FBSyxDQUEyQixTQUFTLEVBQUU7WUFDOUQsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLEtBQUssRUFBRSxVQUFVO1NBQ2xCLENBQUMsQ0FBQztRQUNjLHVCQUFrQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwRCxhQUFRLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekcsY0FBUyxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FLL0Y7SUFyQ0MsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXRELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUVyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBRWxFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWE7Z0JBQ3BELEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztpQkFDaEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBT0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQWFELFdBQVc7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQzsrR0ExQ21CLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUQ1QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3RvciwgaW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBtYXAsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUYWtlQ2hhbmNlIGFzIFJhbmRvbSB9IGZyb20gJ3Rha2UtY2hhbmNlJztcclxuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlLCBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzLCBfbmdNb2RlbENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi9uZ21vZGVsLWNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIHJlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzOiBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMgPSB7XHJcbiAgLi4uX25nTW9kZWxDb21wb25lbnREZWZhdWx0cyxcclxuICByZXF1aXJlZDogdW5kZWZpbmVkLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIENvbW1vbiBjb2RlIGZvciBjb21wb25lbnRzIHdoaWNoIGltcGxlbWVudCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAqXHJcbiAqICoqV2FybmluZyoqOiBgd3JpdGVWYWx1ZWAgZnVuY3Rpb24gc2hvdWxkIGJlIGltcGxlbWVudGVkIG9uIHRoZSBjaGlsZCBjb21wb25lbnQhXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGV4dGVuZHMgX05nTW9kZWxDb21wb25lbnRCYXNlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RhdHVzQ2hhbmdlc1N1Yj86IFN1YnNjcmlwdGlvbjtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX25nQ29udHJvbCA9IHRoaXMuX2luamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG5cclxuICAgIGlmICh0aGlzLl9uZ0NvbnRyb2wpIHtcclxuICAgICAgdGhpcy5fbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG5cclxuICAgICAgdGhpcy5faGFzRXJyb3JJbkNvbnRyb2wuc2V0KHRoaXMuX25nQ29udHJvbC5zdGF0dXMgPT09ICdJTlZBTElEJyk7XHJcblxyXG4gICAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3ViID0gdGhpcy5fbmdDb250cm9sLnN0YXR1c0NoYW5nZXNcclxuICAgICAgICA/LnBpcGUobWFwKHYgPT4gdiA9PT0gJ0lOVkFMSUQnKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4gdGhpcy5faGFzRXJyb3JJbkNvbnRyb2wuc2V0KHYpKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvdGVjdGVkIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSBfcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkLCBhbnk+KHVuZGVmaW5lZCwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSxcclxuICAgIGFsaWFzOiAncmVxdWlyZWQnLFxyXG4gIH0pO1xyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCgpID8/ICEhdGhpcy5fbmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBodG1sSWQgPSBpbnB1dDxzdHJpbmc+KFJhbmRvbS5pZCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgX2hhc0Vycm9yID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZCwgYW55Pih1bmRlZmluZWQsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodiksXHJcbiAgICBhbGlhczogJ2hhc0Vycm9yJyxcclxuICB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNFcnJvckluQ29udHJvbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgaGFzRXJyb3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLl9oYXNFcnJvcigpID8/ICh0aGlzLndhc1RvdWNoZWQoKSAmJiB0aGlzLl9oYXNFcnJvckluQ29udHJvbCgpKSk7XHJcblxyXG4gIHJlYWRvbmx5IGlzU3VjY2VzcyA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3ViPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -223,6 +223,9 @@ export class ItemStorage {
|
|
|
223
223
|
});
|
|
224
224
|
}
|
|
225
225
|
handleWriteValue(ngModel) {
|
|
226
|
+
if (!isArray(ngModel)) {
|
|
227
|
+
ngModel = [ngModel];
|
|
228
|
+
}
|
|
226
229
|
//defer writing the value if no options are yet loaded
|
|
227
230
|
if (!this._wasValueWriteDeferred() && this._items().length === 0) {
|
|
228
231
|
this._valueToWriteAfterItemsLoad.set(ngModel);
|
|
@@ -443,4 +446,4 @@ export class ItemStorage {
|
|
|
443
446
|
return newFilteredItems;
|
|
444
447
|
}
|
|
445
448
|
}
|
|
446
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9kcm9wZG93bi1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUF5QmxHLE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQTZCLGNBQStCO1FBQS9CLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQVIzQyxZQUFPLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELFdBQU0sR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsTUFBTSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLE1BQU0sQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDbEQsNkJBQXdCLEdBQUcsTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUNsRSxtQkFBYyxHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUlqRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FB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LENBQUM7SUFDRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEYsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDbkUsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZXNvbHZlUGF0aCB9IGZyb20gJ3Jlc29sdmUtb2JqZWN0LXBhdGgnO1xuaW1wb3J0IHsgYW55LCBldmFsdWF0ZSwgaXNBcnJheSwgaXNEZWZpbmVkLCBpc09iamVjdCwgaXNQcmltaXRpdmUsIGlzUHJvbWlzZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IEFkZEN1c3RvbUZuIH0gZnJvbSAnLi4vLi4vc2VsZWN0L3NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyBBcmRJdGVtR3JvdXBNYXAsIEFyZE9wdGlvbiwgQXJkT3B0aW9uR3JvdXAsIENvbXBhcmVXaXRoRm4sIEdyb3VwQnlGbiwgU2VhcmNoRm4gfSBmcm9tICcuLi8uLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBJdGVtU3RvcmFnZUhvc3Qge1xuICByZWFkb25seSB2YWx1ZUZyb206IFNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBsYWJlbEZyb206IFNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBkaXNhYmxlZEZyb206IFNpZ25hbDxzdHJpbmc+O1xuICByZWFkb25seSBpbnZlcnREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xuICByZWFkb25seSBncm91cExhYmVsRnJvbTogU2lnbmFsPHN0cmluZyB8IEdyb3VwQnlGbj47XG4gIHJlYWRvbmx5IGdyb3VwRGlzYWJsZWRGcm9tOiBTaWduYWw8c3RyaW5nPjtcbiAgcmVhZG9ubHkgY2hpbGRyZW5Gcm9tOiBTaWduYWw8c3RyaW5nPjtcbiAgcmVhZG9ubHkgaXRlbXNBbHJlYWR5R3JvdXBlZDogU2lnbmFsPE51bGxhYmxlPGJvb2xlYW4+PjtcbiAgcmVhZG9ubHkgaGlkZVNlbGVjdGVkOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IHNlYXJjaENhc2VTZW5zaXRpdmU6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgc2VhcmNoRm46IFNpZ25hbDxTZWFyY2hGbj47XG4gIHJlYWRvbmx5IGNvbXBhcmVXaXRoOiBTaWduYWw8TnVsbGFibGU8Q29tcGFyZVdpdGhGbj4+O1xuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGU6IFNpZ25hbDxib29sZWFuPjtcbiAgcmVhZG9ubHkgc29ydE11bHRpcGxlVmFsdWVzOiBTaWduYWw8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IG1heFNlbGVjdGVkSXRlbXM6IFNpZ25hbDxOdWxsYWJsZTxudW1iZXI+PjtcbiAgcmVhZG9ubHkgYWRkQ3VzdG9tOiBTaWduYWw8Ym9vbGVhbiB8IEFkZEN1c3RvbUZuPGFueT4gfCBBZGRDdXN0b21GbjxQcm9taXNlPGFueT4+PjtcbiAgcmVhZG9ubHkgX2NvbXBvbmVudElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBJdGVtU3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dyb3VwcyA9IHNpZ25hbDxBcmRJdGVtR3JvdXBNYXA+KHRoaXMuX2NyZWF0ZUVtcHR5R3JvdXBNYXAoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zID0gc2lnbmFsPEFyZE9wdGlvbltdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcmVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGlnaGxpZ2h0ZWRJdGVtcyA9IHNpZ25hbDxBcmRPcHRpb25bXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEdyb3VwcyA9IHNpZ25hbDxBcmRPcHRpb25Hcm91cFtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtID0gc2lnbmFsPE51bGxhYmxlPEFyZE9wdGlvbj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uW10+KFtdKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9hcmRQYXJlbnRDb21wOiBJdGVtU3RvcmFnZUhvc3QpIHt9XG5cbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT5cbiAgICBBcnJheS5mcm9tKHRoaXMuX2dyb3VwcygpLmVudHJpZXMoKSlcbiAgICAgIC5tYXAoKFssIGdyb3VwXSkgPT4gZ3JvdXApXG4gICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmNoaWxkcmVuKCkubGVuZ3RoKVxuICApO1xuICByZWFkb25seSBpdGVtcyA9IHRoaXMuX2l0ZW1zLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2ZpbHRlcmVkSXRlbXMuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBoaWdobGlnaHRlZEl0ZW1zID0gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcy5hc1JlYWRvbmx5KCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5zb3J0TXVsdGlwbGVWYWx1ZXMoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcygpO1xuICB9KTtcbiAgcmVhZG9ubHkgbGFzdFNlbGVjdGVkSXRlbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlcmVkSXRlbXMoKS5sYXN0KDEsIGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcygpKSk7XG4gIHByaXZhdGUgX2l0ZW1zVG9WYWx1ZShpdGVtczogQXJkT3B0aW9uW10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUoKSk7XG4gIH1cblxuICByZWFkb25seSBpc05vSXRlbXNUb1NlbGVjdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2l0ZW1zKCkubGVuZ3RoID09PSB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoKTtcbiAgcmVhZG9ubHkgaXNOb0l0ZW1zRm91bmQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkubGVuZ3RoID09PSAwKTtcbiAgcmVhZG9ubHkgaXNBbnlJdGVtU2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoID4gMCk7XG4gIHJlYWRvbmx5IGlzQW55SXRlbUhpZ2hsaWdodGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xuICByZWFkb25seSBpc0l0ZW1MaW1pdFJlYWNoZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSAmJlxuICAgICAgaXNEZWZpbmVkKHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpKSAmJlxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKCkhIDw9IHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aFxuICApO1xuXG4gIHNldEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tKCkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5pdGVtc0FscmVhZHlHcm91cGVkKCkpIHtcbiAgICAgIGNvbnN0IG5ld0l0ZW1zID0gW107XG4gICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGl0ZW1zKSB7XG4gICAgICAgIGxldCBjaGlsZHJlbjogYW55W107XG4gICAgICAgIFtjaGlsZHJlbiwgYXJlSXRlbXNQcmltaXRpdmVdID0gdGhpcy5fdW5ncm91cEFscmVhZHlHcm91cGVkSXRlbXMoZ3JvdXApO1xuICAgICAgICBuZXdJdGVtcy5wdXNoKC4uLmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIGl0ZW1zID0gbmV3SXRlbXM7XG4gICAgfVxuICAgIGlmIChhbnkoaXRlbXMsIGlzUHJpbWl0aXZlKSkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XG4gICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5faXRlbXMuc2V0KFxuICAgICAgaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0SXRlbXNNYXBGbihpdGVtLCBpbmRleCwgYXJlSXRlbXNQcmltaXRpdmUpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy9hZGQgYWxsIGl0ZW1zIHRvIGZpbHRlciBhcnJheVxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMuc2V0KHRoaXMuX2l0ZW1zKCkpO1xuXG4gICAgLy9hZGQgaXRlbXMgdG8gZ3JvdXBzXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIC8vd3JpdGUgdmFsdWUgaWYgaXQgd2FzXG4gICAgY29uc3QgdG9Xcml0ZSA9IHRoaXMuX3ZhbHVlVG9Xcml0ZUFmdGVySXRlbXNMb2FkKCk7XG4gICAgaWYgKHRvV3JpdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oYW5kbGVXcml0ZVZhbHVlKHRvV3JpdGUpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9hZGRTaW5nbGVJdGVtKGl0ZW06IGFueSk6IEFyZE9wdGlvbiB7XG4gICAgY29uc3QgaXNJdGVtUHJpbWl0aXZlID0gaXNQcmltaXRpdmUoaXRlbSk7XG4gICAgLy9tYXAgYSBwcmltaXRpdmUgaXRlbSB0byBhIHVzYWJsZSBvYmplY3RcbiAgICBpZiAoaXNJdGVtUHJpbWl0aXZlKSB7XG4gICAgICBpdGVtID0gdGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbihpdGVtKTtcbiAgICB9XG4gICAgLy9tYXAgdGhlIGl0ZW0gdG8gY3JlYXRlIGRhdGEgYmluZGluZ3NcbiAgICBjb25zdCBhcmRPcHRpb24gPSB0aGlzLl9zZXRJdGVtc01hcEZuKGl0ZW0sICh0aGlzLl9pdGVtcygpLmxhc3QoKT8uaW5kZXggPz8gMCkgKyAxLCBpc0l0ZW1QcmltaXRpdmUpO1xuXG4gICAgLy9wdXNoIHRoZSBpdGVtIGludG8gYWxsIGl0ZW1zXG4gICAgdGhpcy5faXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIGFyZE9wdGlvbl0pO1xuXG4gICAgLy9hZGQgYWxsIGl0ZW1zIHRvIGZpbHRlciBhcnJheVxuICAgIHRoaXMuX2ZpbHRlcmVkSXRlbXMuc2V0KHRoaXMuX2l0ZW1zKCkpO1xuXG4gICAgLy9hZGQgaXRlbSB0byBncm91cHNcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuXG4gICAgcmV0dXJuIGFyZE9wdGlvbjtcbiAgfVxuICBwcml2YXRlIF9wcmltaXRpdmVJdGVtc01hcEZuPFQ+KGl0ZW06IFQpOiB7IHZhbHVlOiBUIH0ge1xuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XG4gIH1cbiAgcHJpdmF0ZSBfdW5ncm91cEFscmVhZHlHcm91cGVkSXRlbXM8VCBleHRlbmRzIG9iamVjdD4oZ3JvdXA6IFQpOiBbYW55W10sIGJvb2xlYW5dIHtcbiAgICAvL2RldGVybWluZSBncm91cEJ5IChncm91cExhYmVsKSBwYXRoXG4gICAgY29uc3QgZ3JvdXBCeSA9IHRoaXMuX2FyZFBhcmVudENvbXAuZ3JvdXBMYWJlbEZyb20oKTtcblxuICAgIC8vZ2V0IGdyb3VwIGxhYmVsIGZyb20gb2JqZWN0XG4gICAgbGV0IGdyb3VwTmFtZTogYW55O1xuICAgIGlmICh0eXBlb2YgZ3JvdXBCeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGdyb3VwTmFtZSA9IHJlc29sdmVQYXRoKGdyb3VwLCBncm91cEJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBOYW1lID0gZ3JvdXBCeShncm91cCk7XG4gICAgfVxuXG4gICAgLy9kZXRlcm1pbmUgZ3JvdXAgY2hpbGRyZW4gcGF0aFxuICAgIGNvbnN0IGNoaWxkcmVuUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuY2hpbGRyZW5Gcm9tKCk7XG5cbiAgICAvL2dldCBncm91cCBjaGlsZHJlblxuICAgIGxldCBncm91cEl0ZW1zOiBhbnkgPSByZXNvbHZlUGF0aChncm91cCwgY2hpbGRyZW5QYXRoKTtcblxuICAgIC8vcmV0dXJuIGVtcHR5IGFycmF5IGlmIGdyb3VwSXRlbXMgaXMgbm90IGFuIGFycmF5IG9yIGlzIGVtcHR5XG4gICAgaWYgKCFpc0FycmF5KGdyb3VwSXRlbXMpIHx8IGdyb3VwSXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gW1tdLCBmYWxzZV07XG5cbiAgICAvL2NoZWNrIGlmIHRoZSBhcnJheSBpcyBhbiBhcnJheSBvZiBwcmltaXRpdmVzLCBhbmQgbWFwIGl0IGlmIG5lZWRlZFxuICAgIGNvbnN0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XG4gICAgaWYgKGFueShncm91cEl0ZW1zLCBpc1ByaW1pdGl2ZSkpIHtcbiAgICAgIGdyb3VwSXRlbXMgPSBncm91cEl0ZW1zLm1hcCh0aGlzLl9wcmltaXRpdmVJdGVtc01hcEZuKTtcbiAgICB9XG4gICAgLy9hZGQgZ3JvdXAgbmFtZSB0byBldmVyeSBjaGlsZFxuICAgIGdyb3VwSXRlbXMgPSBncm91cEl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBpdGVtLiRhcmRncm91cCA9IGdyb3VwTmFtZTtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtncm91cEl0ZW1zLCBhcmVJdGVtc1ByaW1pdGl2ZV07XG4gIH1cbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvbiB7XG4gICAgaWYgKGFyZUl0ZW1zUHJpbWl0aXZlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtRGF0YTogc2lnbmFsKHJhd0l0ZW1EYXRhKSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICB2YWx1ZTogc2lnbmFsKHJhd0l0ZW1EYXRhLnZhbHVlKSxcbiAgICAgICAgbGFiZWw6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSkpLFxuICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxuICAgICAgICBncm91cDogdW5kZWZpbmVkLFxuICAgICAgICBoaWdobGlnaHRlZF9yZWNlbnRseTogc2lnbmFsKGZhbHNlKSxcbiAgICAgIH07XG4gICAgfVxuICAgIC8vZ2V0IHZhbHVlXG4gICAgY29uc3QgdmFsdWVQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpO1xuICAgIGNvbnN0IHZhbHVlID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIHZhbHVlUGF0aCk7XG5cbiAgICAvL2dldCBsYWJlbFxuICAgIGNvbnN0IGxhYmVsUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAubGFiZWxGcm9tKCkgPz8gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKTtcbiAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBsYWJlbFBhdGgpID8/IHZhbHVlO1xuXG4gICAgLy9nZXQgZGlzYWJsZWRcbiAgICBjb25zdCBkaXNhYmxlZFBhdGggPSB0aGlzLl9hcmRQYXJlbnRDb21wLmRpc2FibGVkRnJvbSgpO1xuICAgIGxldCBkaXNhYmxlZCA9IGV2YWx1YXRlKHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBkaXNhYmxlZFBhdGgpKTtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5pbnZlcnREaXNhYmxlZCgpKSB7XG4gICAgICBkaXNhYmxlZCA9ICFkaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvL2dldCBncm91cHNcbiAgICBsZXQgZ3JvdXA6IGFueSA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBncm91cEJ5ID0gdGhpcy5fYXJkUGFyZW50Q29tcC5ncm91cExhYmVsRnJvbSgpO1xuICAgIGlmIChncm91cEJ5KSB7XG4gICAgICBpZiAocmF3SXRlbURhdGEuJGFyZGdyb3VwKSB7XG4gICAgICAgIGdyb3VwID0gcmF3SXRlbURhdGEuJGFyZGdyb3VwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHR5cGVvZiBncm91cEJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGdyb3VwID0gcmVzb2x2ZVBhdGgocmF3SXRlbURhdGEsIGdyb3VwQnkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwID0gZ3JvdXBCeShyYXdJdGVtRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICB2YWx1ZTogc2lnbmFsKHZhbHVlKSxcbiAgICAgIGxhYmVsOiBzaWduYWwobGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpKSxcbiAgICAgIGRpc2FibGVkOiBzaWduYWwoZGlzYWJsZWQpLFxuICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXG4gICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgIGhpZ2hsaWdodGVkX3JlY2VudGx5OiBzaWduYWwoZmFsc2UpLFxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBfcG9wdWxhdGVHcm91cHMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ3JvdXBzLnNldCh0aGlzLl9jcmVhdGVFbXB0eUdyb3VwTWFwKCkpO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2ZpbHRlcmVkSXRlbXMoKSkge1xuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkgJiYgaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcblxuICAgICAgdGhpcy5fYWRkVG9Hcm91cChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYWRkVG9Hcm91cChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBncm91cEtleSA9IGl0ZW0uZ3JvdXA7XG4gICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLl9ncm91cHMoKS5nZXQoZ3JvdXBLZXkpO1xuICAgIC8vY3JlYXRlIG5ldyBncm91cCBpZiBubyBzdWNoIGdyb3VwIGV4aXN0c1xuICAgIGlmICghdGFyZ2V0R3JvdXApIHtcbiAgICAgIHRoaXMuX2dyb3Vwcy51cGRhdGUodiA9PiB7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAodik7XG4gICAgICAgIG1hcC5zZXQoZ3JvdXBLZXksIHtcbiAgICAgICAgICBsYWJlbDogc2lnbmFsKFN0cmluZyhncm91cEtleSA/PyAnJykpLFxuICAgICAgICAgIGNoaWxkcmVuOiBzaWduYWwoW2l0ZW1dKSxcbiAgICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFyZ2V0R3JvdXAuY2hpbGRyZW4udXBkYXRlKHYgPT4gWy4uLnYsIGl0ZW1dKTtcbiAgfVxuICBwcml2YXRlIF9jcmVhdGVFbXB0eUdyb3VwTWFwKCk6IEFyZEl0ZW1Hcm91cE1hcCB7XG4gICAgcmV0dXJuIG5ldyBNYXAoW1xuICAgICAgW1xuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogc2lnbmFsKCcnKSxcbiAgICAgICAgICBjaGlsZHJlbjogc2lnbmFsKFtdKSxcbiAgICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICBoaWdobGlnaHRlZDogc2lnbmFsKGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgXSkgYXMgQXJkSXRlbUdyb3VwTWFwO1xuICB9XG4gIHByaXZhdGUgX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWw6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5nTW9kZWwuZXZlcnkoaXRlbSA9PiB7XG4gICAgICBpZiAoIWlzRGVmaW5lZCh0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKSAmJiBpc09iamVjdChpdGVtKSAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQVJELVdBJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0wOiBbdmFsdWVGcm9tXSBjYW4gb25seSBwb2ludCB0byBhIHByb3BlcnR5IG9mIGEgcHJpbWl0aXZlIHR5cGUuIERlZmluZSBbY29tcGFyZVdpdGhdIGlmIHVzaW5nIG9iamVjdHMgYXMgYSB2YWx1ZSBpcyBuZWVkZWQuYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZCA9IHNpZ25hbDxhbnk+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGhhbmRsZVdyaXRlVmFsdWUobmdNb2RlbDogYW55W10pOiB2b2lkIHtcbiAgICAvL2RlZmVyIHdyaXRpbmcgdGhlIHZhbHVlIGlmIG5vIG9wdGlvbnMgYXJlIHlldCBsb2FkZWRcbiAgICBpZiAoIXRoaXMuX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCgpICYmIHRoaXMuX2l0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl92YWx1ZVRvV3JpdGVBZnRlckl0ZW1zTG9hZC5zZXQobmdNb2RlbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckFsbFNlbGVjdGVkKCk7XG5cbiAgICBpZiAoIXRoaXMuX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZEl0ZW1CeVZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBBUkQtV0Eke3RoaXMuX2FyZFBhcmVudENvbXAuX2NvbXBvbmVudElkfTE6IENvdWxkbid0IGZpbmQgYW4gaXRlbSB3aXRoIHZhbHVlICR7XG4gICAgICAgICAgdmFsdWU/LnRvU3RyaW5nPy4oKSB8fCBTdHJpbmcodmFsdWUpXG4gICAgICAgIH0gd2hlbiB0cnlpbmcgdG8gc2VsZWN0IGl0LmBcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBvZiBuZ01vZGVsKSB7XG4gICAgICBzZWxlY3RJdGVtQnlWYWx1ZShtb2RlbFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgZmluZEl0ZW1CeVZhbHVlKHZhbHVlVG9GaW5kOiBhbnkpOiBBcmRPcHRpb24gfCB1bmRlZmluZWQge1xuICAgIGxldCBmaW5kQnk6IChpdGVtOiBBcmRPcHRpb24pID0+IGJvb2xlYW47XG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuY29tcGFyZVdpdGgoKSkge1xuICAgICAgZmluZEJ5ID0gaXRlbSA9PiB0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKCkhKHZhbHVlVG9GaW5kLCBpdGVtLnZhbHVlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5kQnkgPSBpdGVtID0+IGl0ZW0udmFsdWUoKSA9PT0gdmFsdWVUb0ZpbmQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pdGVtcygpLmZpbmQoaXRlbSA9PiBmaW5kQnkoaXRlbSkpO1xuICB9XG4gIGFzeW5jIGFkZEN1c3RvbU9wdGlvbih2YWx1ZTogc3RyaW5nLCBmbjogQWRkQ3VzdG9tRm48YW55PiB8IEFkZEN1c3RvbUZuPFByb21pc2U8YW55Pj4pOiBQcm9taXNlPEFyZE9wdGlvbiB8IG51bGw+IHtcbiAgICBjb25zdCBmblJlc3VsdCA9IGZuKHZhbHVlKTtcblxuICAgIGxldCBvcHRpb25WYWx1ZSA9IGZuUmVzdWx0O1xuICAgIGlmIChpc1Byb21pc2Uob3B0aW9uVmFsdWUpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBvcHRpb25WYWx1ZSA9IGF3YWl0IG9wdGlvblZhbHVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBgQVJELU5GJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0yOiBGYWlsZWQgdG8gYWRkIGEgY3VzdG9tIG9wdGlvbi4gVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvcjpgLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld09wdGlvbk9iaiA9IHRoaXMuX2FkZFNpbmdsZUl0ZW0ob3B0aW9uVmFsdWUpO1xuICAgIHJldHVybiBuZXdPcHRpb25PYmo7XG4gIH1cblxuICBjbGVhckFsbFNlbGVjdGVkKHJlcG9wdWxhdGVHcm91cHMgPSBmYWxzZSk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcygpKSB7XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZWRJdGVtVmFsdWVzID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMoKSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zZXQoW10pO1xuXG4gICAgaWYgKHJlcG9wdWxhdGVHcm91cHMgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcblxuICAgIHJldHVybiByZW1vdmVkSXRlbVZhbHVlcztcbiAgfVxuICBjbGVhckxhc3RTZWxlY3RlZCgpOiBBcmRPcHRpb24ge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGFzdCgpO1xuICAgIGlmICghaXRlbSkgcmV0dXJuIGl0ZW07XG4gICAgdGhpcy51bnNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbiAgc2VsZWN0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uW10pOiBbYW55W10sIGFueVtdLCBhbnlbXV0ge1xuICAgIGlmICh0aGlzLmlzSXRlbUxpbWl0UmVhY2hlZCgpKSB7XG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XG4gICAgfVxuICAgIGxldCB1bnNlbGVjdGVkID0gW107XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XG4gICAgICB1bnNlbGVjdGVkID0gdGhpcy5jbGVhckFsbFNlbGVjdGVkKGZhbHNlKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbXNTZWxlY3RlZENvdW50ID0gMDtcbiAgICBjb25zdCBpdGVtc1NlbGVjdGVkID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpdGVtc1NlbGVjdGVkQ291bnQrKztcbiAgICAgIGlmIChpdGVtLnNlbGVjdGVkKCkpIGNvbnRpbnVlO1xuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpdGVtLnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIGl0ZW1dKTtcbiAgICAgIGl0ZW1zU2VsZWN0ZWQucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXMuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XG4gICAgcmV0dXJuIFt0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXNTZWxlY3RlZCksIHVuc2VsZWN0ZWQsIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc0ZhaWxlZFRvU2VsZWN0KV07XG4gIH1cbiAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IGFueVtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmICghaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy51cGRhdGUodiA9PiB2LmZpbHRlcih2ID0+IHYuc2VsZWN0ZWQoKSkpO1xuXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtcyk7XG4gIH1cblxuICBjbGVhckFsbEhpZ2hsaWdodHMoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKSkge1xuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzKCkpIHtcbiAgICAgIGdyb3VwLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLl9oaWdobGlnaHRlZEdyb3Vwcy5zZXQoW10pO1xuICB9XG4gIGhpZ2hsaWdodEdyb3VwKGdyb3VwOiBBcmRPcHRpb25Hcm91cCk6IEFyZE9wdGlvbiB7XG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcbiAgICBncm91cC5oaWdobGlnaHRlZC5zZXQodHJ1ZSk7XG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLmdyb3VwLmNoaWxkcmVuKCkpO1xuICAgIHJldHVybiBncm91cC5jaGlsZHJlbigpLmZpcnN0KCk7XG4gIH1cbiAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtOiBBcmRPcHRpb24pOiBBcmRPcHRpb24gfCBudWxsIHtcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCgpKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XG4gIH1cbiAgaGlnaGxpZ2h0SXRlbSguLi5pdGVtczogQXJkT3B0aW9uW10pOiBBcmRPcHRpb24ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIC4uLml0ZW1zXSk7XG4gICAgcmV0dXJuIGl0ZW1zLmxhc3QoKTtcbiAgfVxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaGlnaGxpZ2h0ZWQpIHJldHVybjtcblxuICAgICAgaXRlbS5oaWdobGlnaHRlZC5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLnVwZGF0ZSh2ID0+IHYuZmlsdGVyKHYgPT4gdi5oaWdobGlnaHRlZCgpKSk7XG4gIH1cbiAgaGlnaGxpZ2h0Rmlyc3RJdGVtKCk6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtc1RvSGlnaGxpZ2h0LmZpcnN0KCkpO1xuICB9XG4gIGhpZ2hsaWdodExhc3RJdGVtKCk6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtc1RvSGlnaGxpZ2h0Lmxhc3QoKSk7XG4gIH1cbiAgcHJpdmF0ZSBfZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTogQXJkT3B0aW9uW10ge1xuICAgIGxldCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZmlsdGVyZWRJdGVtcygpLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKCkpO1xuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmhpZGVTZWxlY3RlZCgpKSB7XG4gICAgICBpdGVtc1RvSGlnaGxpZ2h0ID0gaXRlbXNUb0hpZ2hsaWdodC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zVG9IaWdobGlnaHQ7XG4gIH1cbiAgaGlnaGxpZ2h0QWxsSXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLnRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCkpO1xuICB9XG4gIHByaXZhdGUgX2NsZWFyUmVjZW50bHlIaWdobGlnaHRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0oKSkge1xuICAgICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0oKSEuaGlnaGxpZ2h0ZWRfcmVjZW50bHkuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgc2V0UmVjZW50bHlIaWdobGlnaHRlZChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhclJlY2VudGx5SGlnaGxpZ2h0ZWQoKTtcbiAgICBpdGVtLmhpZ2hsaWdodGVkX3JlY2VudGx5LnNldCh0cnVlKTtcbiAgICB0aGlzLl9yZWNlbnRseUhpZ2hsaWdodGVkSXRlbS5zZXQoaXRlbSk7XG4gIH1cbiAgaGlnaGxpZ2h0TmV4dEl0ZW0ob2Zmc2V0OiBudW1iZXIsIGhhc1NoaWZ0PzogYm9vbGVhbik6IEFyZE9wdGlvbiB8IG51bGwge1xuICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKS5sYXN0KCk7XG4gICAgY29uc3QgaGlnaGxpZ2h0YWJsZUl0ZW1zID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXhJbkZpbHRlcmVkID0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaW5kZXggPT09IGN1cnJlbnRJdGVtLmluZGV4KTtcblxuICAgIGxldCBuZXh0SXRlbUluZGV4ID0gY3VycmVudEluZGV4SW5GaWx0ZXJlZCArIG9mZnNldDtcbiAgICBpZiAobmV4dEl0ZW1JbmRleCA+PSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoKSB7XG4gICAgICBuZXh0SXRlbUluZGV4IC09IGhpZ2hsaWdodGFibGVJdGVtcy5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChuZXh0SXRlbUluZGV4IDwgMCkge1xuICAgICAgbmV4dEl0ZW1JbmRleCArPSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBpdGVtVG9IaWdobGlnaHQgPSBoaWdobGlnaHRhYmxlSXRlbXNbbmV4dEl0ZW1JbmRleF07XG5cbiAgICBpZiAoaGFzU2hpZnQgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSkge1xuICAgICAgaWYgKGl0ZW1Ub0hpZ2hsaWdodC5oaWdobGlnaHRlZCgpKSB7XG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRJdGVtKGN1cnJlbnRJdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbVRvSGlnaGxpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtVG9IaWdobGlnaHQpO1xuICB9XG4gIGZpbHRlcihmaWx0ZXJUZXJtOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgaWYgKCFmaWx0ZXJUZXJtKSB7XG4gICAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMucmVzZXRGaWx0ZXJlZCgpKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLnNlYXJjaENhc2VTZW5zaXRpdmUoKSkge1xuICAgICAgZmlsdGVyVGVybSA9IGZpbHRlclRlcm0udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hGbiA9IHRoaXMuX2FyZFBhcmVudENvbXAuc2VhcmNoRm4oKTtcbiAgICBjb25zdCBuZXdGaWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBzZWFyY2hGbihmaWx0ZXJUZXJtLCBpdGVtKSk7XG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcy5zZXQobmV3RmlsdGVyZWRJdGVtcyk7XG5cbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuXG4gICAgaWYgKCF0aGlzLmlzTm9JdGVtc0ZvdW5kKSB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgIGVsc2UgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcblxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUobmV3RmlsdGVyZWRJdGVtcyk7XG4gIH1cbiAgcmVzZXRGaWx0ZXJlZCgpOiBBcmRPcHRpb25bXSB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlcmVkSXRlbXMoKS5sZW5ndGggPT09IHRoaXMuX2l0ZW1zKCkubGVuZ3RoKSByZXR1cm4gdGhpcy5faXRlbXMoKTtcblxuICAgIGxldCBuZXdGaWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMoKTtcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSAmJiB0aGlzLmlzQW55SXRlbVNlbGVjdGVkKCkpIHtcbiAgICAgIG5ld0ZpbHRlcmVkSXRlbXMgPSBuZXdGaWx0ZXJlZEl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLnNlbGVjdGVkKCkpO1xuICAgIH1cbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xuICAgIHJldHVybiBuZXdGaWx0ZXJlZEl0ZW1zO1xuICB9XG59XG4iXX0=
|
|
449
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9kcm9wZG93bi1pdGVtLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUF5QmxHLE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQTZCLGNBQStCO1FBQS9CLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQVIzQyxZQUFPLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELFdBQU0sR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsTUFBTSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLE1BQU0sQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDbEQsNkJBQXdCLEdBQUcsTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztRQUNsRSxtQkFBYyxHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUlqRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FB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Q0FBQzs7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVoRixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUNuRSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmVzb2x2ZVBhdGggfSBmcm9tICdyZXNvbHZlLW9iamVjdC1wYXRoJztcclxuaW1wb3J0IHsgYW55LCBldmFsdWF0ZSwgaXNBcnJheSwgaXNEZWZpbmVkLCBpc09iamVjdCwgaXNQcmltaXRpdmUsIGlzUHJvbWlzZSB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgQWRkQ3VzdG9tRm4gfSBmcm9tICcuLi8uLi9zZWxlY3Qvc2VsZWN0LnR5cGVzJztcclxuaW1wb3J0IHsgQXJkSXRlbUdyb3VwTWFwLCBBcmRPcHRpb24sIEFyZE9wdGlvbkdyb3VwLCBDb21wYXJlV2l0aEZuLCBHcm91cEJ5Rm4sIFNlYXJjaEZuIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSXRlbVN0b3JhZ2VIb3N0IHtcclxuICByZWFkb25seSB2YWx1ZUZyb206IFNpZ25hbDxzdHJpbmc+O1xyXG4gIHJlYWRvbmx5IGxhYmVsRnJvbTogU2lnbmFsPHN0cmluZz47XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWRGcm9tOiBTaWduYWw8c3RyaW5nPjtcclxuICByZWFkb25seSBpbnZlcnREaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIHJlYWRvbmx5IGdyb3VwTGFiZWxGcm9tOiBTaWduYWw8c3RyaW5nIHwgR3JvdXBCeUZuPjtcclxuICByZWFkb25seSBncm91cERpc2FibGVkRnJvbTogU2lnbmFsPHN0cmluZz47XHJcbiAgcmVhZG9ubHkgY2hpbGRyZW5Gcm9tOiBTaWduYWw8c3RyaW5nPjtcclxuICByZWFkb25seSBpdGVtc0FscmVhZHlHcm91cGVkOiBTaWduYWw8TnVsbGFibGU8Ym9vbGVhbj4+O1xyXG4gIHJlYWRvbmx5IGhpZGVTZWxlY3RlZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIHJlYWRvbmx5IHNlYXJjaENhc2VTZW5zaXRpdmU6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBzZWFyY2hGbjogU2lnbmFsPFNlYXJjaEZuPjtcclxuICByZWFkb25seSBjb21wYXJlV2l0aDogU2lnbmFsPE51bGxhYmxlPENvbXBhcmVXaXRoRm4+PjtcclxuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGU6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBzb3J0TXVsdGlwbGVWYWx1ZXM6IFNpZ25hbDxib29sZWFuPjtcclxuICByZWFkb25seSBtYXhTZWxlY3RlZEl0ZW1zOiBTaWduYWw8TnVsbGFibGU8bnVtYmVyPj47XHJcbiAgcmVhZG9ubHkgYWRkQ3VzdG9tOiBTaWduYWw8Ym9vbGVhbiB8IEFkZEN1c3RvbUZuPGFueT4gfCBBZGRDdXN0b21GbjxQcm9taXNlPGFueT4+PjtcclxuICByZWFkb25seSBfY29tcG9uZW50SWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEl0ZW1TdG9yYWdlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9ncm91cHMgPSBzaWduYWw8QXJkSXRlbUdyb3VwTWFwPih0aGlzLl9jcmVhdGVFbXB0eUdyb3VwTWFwKCkpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zID0gc2lnbmFsPEFyZE9wdGlvbltdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyZWRJdGVtcyA9IHNpZ25hbDxBcmRPcHRpb25bXT4oW10pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hpZ2hsaWdodGVkSXRlbXMgPSBzaWduYWw8QXJkT3B0aW9uW10+KFtdKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9oaWdobGlnaHRlZEdyb3VwcyA9IHNpZ25hbDxBcmRPcHRpb25Hcm91cFtdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0gPSBzaWduYWw8TnVsbGFibGU8QXJkT3B0aW9uPj4odW5kZWZpbmVkKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZEl0ZW1zID0gc2lnbmFsPEFyZE9wdGlvbltdPihbXSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2FyZFBhcmVudENvbXA6IEl0ZW1TdG9yYWdlSG9zdCkge31cclxuXHJcbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT5cclxuICAgIEFycmF5LmZyb20odGhpcy5fZ3JvdXBzKCkuZW50cmllcygpKVxyXG4gICAgICAubWFwKChbLCBncm91cF0pID0+IGdyb3VwKVxyXG4gICAgICAuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmNoaWxkcmVuKCkubGVuZ3RoKVxyXG4gICk7XHJcbiAgcmVhZG9ubHkgaXRlbXMgPSB0aGlzLl9pdGVtcy5hc1JlYWRvbmx5KCk7XHJcbiAgcmVhZG9ubHkgZmlsdGVyZWRJdGVtcyA9IHRoaXMuX2ZpbHRlcmVkSXRlbXMuYXNSZWFkb25seSgpO1xyXG4gIHJlYWRvbmx5IGhpZ2hsaWdodGVkSXRlbXMgPSB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLnNvcnRNdWx0aXBsZVZhbHVlcygpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcygpO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGxhc3RTZWxlY3RlZEl0ZW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkubGFzdCgxLCBpdGVtID0+ICFpdGVtLmRpc2FibGVkKCkpKTtcclxuXHJcbiAgcmVhZG9ubHkgdmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pdGVtc1RvVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKCkpKTtcclxuICBwcml2YXRlIF9pdGVtc1RvVmFsdWUoaXRlbXM6IEFyZE9wdGlvbltdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUoKSk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBpc05vSXRlbXNUb1NlbGVjdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2l0ZW1zKCkubGVuZ3RoID09PSB0aGlzLl9zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoKTtcclxuICByZWFkb25seSBpc05vSXRlbXNGb3VuZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlcmVkSXRlbXMoKS5sZW5ndGggPT09IDApO1xyXG4gIHJlYWRvbmx5IGlzQW55SXRlbVNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xyXG4gIHJlYWRvbmx5IGlzQW55SXRlbUhpZ2hsaWdodGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faGlnaGxpZ2h0ZWRJdGVtcygpLmxlbmd0aCA+IDApO1xyXG4gIHJlYWRvbmx5IGlzSXRlbUxpbWl0UmVhY2hlZCA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgdGhpcy5fYXJkUGFyZW50Q29tcC5tdWx0aXNlbGVjdGFibGUoKSAmJlxyXG4gICAgICBpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5tYXhTZWxlY3RlZEl0ZW1zKCkpICYmXHJcbiAgICAgIHRoaXMuX2FyZFBhcmVudENvbXAubWF4U2VsZWN0ZWRJdGVtcygpISA8PSB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGhcclxuICApO1xyXG5cclxuICBzZXRJdGVtcyhpdGVtczogYW55W10pOiB2b2lkIHtcclxuICAgIGxldCBhcmVJdGVtc1ByaW1pdGl2ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuZ3JvdXBMYWJlbEZyb20oKSAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLml0ZW1zQWxyZWFkeUdyb3VwZWQoKSkge1xyXG4gICAgICBjb25zdCBuZXdJdGVtcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgbGV0IGNoaWxkcmVuOiBhbnlbXTtcclxuICAgICAgICBbY2hpbGRyZW4sIGFyZUl0ZW1zUHJpbWl0aXZlXSA9IHRoaXMuX3VuZ3JvdXBBbHJlYWR5R3JvdXBlZEl0ZW1zKGdyb3VwKTtcclxuICAgICAgICBuZXdJdGVtcy5wdXNoKC4uLmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgICBpdGVtcyA9IG5ld0l0ZW1zO1xyXG4gICAgfVxyXG4gICAgaWYgKGFueShpdGVtcywgaXNQcmltaXRpdmUpKSB7XHJcbiAgICAgIGl0ZW1zID0gaXRlbXMubWFwKHRoaXMuX3ByaW1pdGl2ZUl0ZW1zTWFwRm4pO1xyXG4gICAgICBhcmVJdGVtc1ByaW1pdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faXRlbXMuc2V0KFxyXG4gICAgICBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgaW5kZXgsIGFyZUl0ZW1zUHJpbWl0aXZlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy9hZGQgYWxsIGl0ZW1zIHRvIGZpbHRlciBhcnJheVxyXG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcy5zZXQodGhpcy5faXRlbXMoKSk7XHJcblxyXG4gICAgLy9hZGQgaXRlbXMgdG8gZ3JvdXBzXHJcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG5cclxuICAgIC8vd3JpdGUgdmFsdWUgaWYgaXQgd2FzXHJcbiAgICBjb25zdCB0b1dyaXRlID0gdGhpcy5fdmFsdWVUb1dyaXRlQWZ0ZXJJdGVtc0xvYWQoKTtcclxuICAgIGlmICh0b1dyaXRlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVXcml0ZVZhbHVlKHRvV3JpdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9hZGRTaW5nbGVJdGVtKGl0ZW06IGFueSk6IEFyZE9wdGlvbiB7XHJcbiAgICBjb25zdCBpc0l0ZW1QcmltaXRpdmUgPSBpc1ByaW1pdGl2ZShpdGVtKTtcclxuICAgIC8vbWFwIGEgcHJpbWl0aXZlIGl0ZW0gdG8gYSB1c2FibGUgb2JqZWN0XHJcbiAgICBpZiAoaXNJdGVtUHJpbWl0aXZlKSB7XHJcbiAgICAgIGl0ZW0gPSB0aGlzLl9wcmltaXRpdmVJdGVtc01hcEZuKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgLy9tYXAgdGhlIGl0ZW0gdG8gY3JlYXRlIGRhdGEgYmluZGluZ3NcclxuICAgIGNvbnN0IGFyZE9wdGlvbiA9IHRoaXMuX3NldEl0ZW1zTWFwRm4oaXRlbSwgKHRoaXMuX2l0ZW1zKCkubGFzdCgpPy5pbmRleCA/PyAwKSArIDEsIGlzSXRlbVByaW1pdGl2ZSk7XHJcblxyXG4gICAgLy9wdXNoIHRoZSBpdGVtIGludG8gYWxsIGl0ZW1zXHJcbiAgICB0aGlzLl9pdGVtcy51cGRhdGUodiA9PiBbLi4udiwgYXJkT3B0aW9uXSk7XHJcblxyXG4gICAgLy9hZGQgYWxsIGl0ZW1zIHRvIGZpbHRlciBhcnJheVxyXG4gICAgdGhpcy5fZmlsdGVyZWRJdGVtcy5zZXQodGhpcy5faXRlbXMoKSk7XHJcblxyXG4gICAgLy9hZGQgaXRlbSB0byBncm91cHNcclxuICAgIHRoaXMuX3BvcHVsYXRlR3JvdXBzKCk7XHJcblxyXG4gICAgcmV0dXJuIGFyZE9wdGlvbjtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcHJpbWl0aXZlSXRlbXNNYXBGbjxUPihpdGVtOiBUKTogeyB2YWx1ZTogVCB9IHtcclxuICAgIHJldHVybiB7IHZhbHVlOiBpdGVtIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VuZ3JvdXBBbHJlYWR5R3JvdXBlZEl0ZW1zPFQgZXh0ZW5kcyBvYmplY3Q+KGdyb3VwOiBUKTogW2FueVtdLCBib29sZWFuXSB7XHJcbiAgICAvL2RldGVybWluZSBncm91cEJ5IChncm91cExhYmVsKSBwYXRoXHJcbiAgICBjb25zdCBncm91cEJ5ID0gdGhpcy5fYXJkUGFyZW50Q29tcC5ncm91cExhYmVsRnJvbSgpO1xyXG5cclxuICAgIC8vZ2V0IGdyb3VwIGxhYmVsIGZyb20gb2JqZWN0XHJcbiAgICBsZXQgZ3JvdXBOYW1lOiBhbnk7XHJcbiAgICBpZiAodHlwZW9mIGdyb3VwQnkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGdyb3VwTmFtZSA9IHJlc29sdmVQYXRoKGdyb3VwLCBncm91cEJ5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdyb3VwTmFtZSA9IGdyb3VwQnkoZ3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vZGV0ZXJtaW5lIGdyb3VwIGNoaWxkcmVuIHBhdGhcclxuICAgIGNvbnN0IGNoaWxkcmVuUGF0aCA9IHRoaXMuX2FyZFBhcmVudENvbXAuY2hpbGRyZW5Gcm9tKCk7XHJcblxyXG4gICAgLy9nZXQgZ3JvdXAgY2hpbGRyZW5cclxuICAgIGxldCBncm91cEl0ZW1zOiBhbnkgPSByZXNvbHZlUGF0aChncm91cCwgY2hpbGRyZW5QYXRoKTtcclxuXHJcbiAgICAvL3JldHVybiBlbXB0eSBhcnJheSBpZiBncm91cEl0ZW1zIGlzIG5vdCBhbiBhcnJheSBvciBpcyBlbXB0eVxyXG4gICAgaWYgKCFpc0FycmF5KGdyb3VwSXRlbXMpIHx8IGdyb3VwSXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gW1tdLCBmYWxzZV07XHJcblxyXG4gICAgLy9jaGVjayBpZiB0aGUgYXJyYXkgaXMgYW4gYXJyYXkgb2YgcHJpbWl0aXZlcywgYW5kIG1hcCBpdCBpZiBuZWVkZWRcclxuICAgIGNvbnN0IGFyZUl0ZW1zUHJpbWl0aXZlID0gZmFsc2U7XHJcbiAgICBpZiAoYW55KGdyb3VwSXRlbXMsIGlzUHJpbWl0aXZlKSkge1xyXG4gICAgICBncm91cEl0ZW1zID0gZ3JvdXBJdGVtcy5tYXAodGhpcy5fcHJpbWl0aXZlSXRlbXNNYXBGbik7XHJcbiAgICB9XHJcbiAgICAvL2FkZCBncm91cCBuYW1lIHRvIGV2ZXJ5IGNoaWxkXHJcbiAgICBncm91cEl0ZW1zID0gZ3JvdXBJdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpdGVtLiRhcmRncm91cCA9IGdyb3VwTmFtZTtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gW2dyb3VwSXRlbXMsIGFyZUl0ZW1zUHJpbWl0aXZlXTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2V0SXRlbXNNYXBGbihyYXdJdGVtRGF0YTogYW55LCBpbmRleDogbnVtYmVyLCBhcmVJdGVtc1ByaW1pdGl2ZTogYm9vbGVhbik6IEFyZE9wdGlvbiB7XHJcbiAgICBpZiAoYXJlSXRlbXNQcmltaXRpdmUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpdGVtRGF0YTogc2lnbmFsKHJhd0l0ZW1EYXRhKSxcclxuICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgdmFsdWU6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZSksXHJcbiAgICAgICAgbGFiZWw6IHNpZ25hbChyYXdJdGVtRGF0YS52YWx1ZT8udG9TdHJpbmc/LigpID8/IFN0cmluZyhyYXdJdGVtRGF0YS52YWx1ZSkpLFxyXG4gICAgICAgIGRpc2FibGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgIHNlbGVjdGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgIGdyb3VwOiB1bmRlZmluZWQsXHJcbiAgICAgICAgaGlnaGxpZ2h0ZWRfcmVjZW50bHk6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICAvL2dldCB2YWx1ZVxyXG4gICAgY29uc3QgdmFsdWVQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLmxhYmVsRnJvbSgpO1xyXG4gICAgY29uc3QgdmFsdWUgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgdmFsdWVQYXRoKTtcclxuXHJcbiAgICAvL2dldCBsYWJlbFxyXG4gICAgY29uc3QgbGFiZWxQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5sYWJlbEZyb20oKSA/PyB0aGlzLl9hcmRQYXJlbnRDb21wLnZhbHVlRnJvbSgpO1xyXG4gICAgY29uc3QgbGFiZWwgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgbGFiZWxQYXRoKSA/PyB2YWx1ZTtcclxuXHJcbiAgICAvL2dldCBkaXNhYmxlZFxyXG4gICAgY29uc3QgZGlzYWJsZWRQYXRoID0gdGhpcy5fYXJkUGFyZW50Q29tcC5kaXNhYmxlZEZyb20oKTtcclxuICAgIGxldCBkaXNhYmxlZCA9IGV2YWx1YXRlKHJlc29sdmVQYXRoKHJhd0l0ZW1EYXRhLCBkaXNhYmxlZFBhdGgpKTtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmludmVydERpc2FibGVkKCkpIHtcclxuICAgICAgZGlzYWJsZWQgPSAhZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXQgZ3JvdXBzXHJcbiAgICBsZXQgZ3JvdXA6IGFueSA9IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGdyb3VwQnkgPSB0aGlzLl9hcmRQYXJlbnRDb21wLmdyb3VwTGFiZWxGcm9tKCk7XHJcbiAgICBpZiAoZ3JvdXBCeSkge1xyXG4gICAgICBpZiAocmF3SXRlbURhdGEuJGFyZGdyb3VwKSB7XHJcbiAgICAgICAgZ3JvdXAgPSByYXdJdGVtRGF0YS4kYXJkZ3JvdXA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBncm91cEJ5ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgZ3JvdXAgPSByZXNvbHZlUGF0aChyYXdJdGVtRGF0YSwgZ3JvdXBCeSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGdyb3VwID0gZ3JvdXBCeShyYXdJdGVtRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXRlbURhdGE6IHNpZ25hbChyYXdJdGVtRGF0YSksXHJcbiAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgdmFsdWU6IHNpZ25hbCh2YWx1ZSksXHJcbiAgICAgIGxhYmVsOiBzaWduYWwobGFiZWw/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcobGFiZWwpKSxcclxuICAgICAgZGlzYWJsZWQ6IHNpZ25hbChkaXNhYmxlZCksXHJcbiAgICAgIGdyb3VwOiBncm91cCxcclxuICAgICAgc2VsZWN0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICBoaWdobGlnaHRlZF9yZWNlbnRseTogc2lnbmFsKGZhbHNlKSxcclxuICAgIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX3BvcHVsYXRlR3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ3JvdXBzLnNldCh0aGlzLl9jcmVhdGVFbXB0eUdyb3VwTWFwKCkpO1xyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkpIHtcclxuICAgICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkgJiYgaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcclxuXHJcbiAgICAgIHRoaXMuX2FkZFRvR3JvdXAoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZFRvR3JvdXAoaXRlbTogQXJkT3B0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cEtleSA9IGl0ZW0uZ3JvdXA7XHJcbiAgICBjb25zdCB0YXJnZXRHcm91cCA9IHRoaXMuX2dyb3VwcygpLmdldChncm91cEtleSk7XHJcbiAgICAvL2NyZWF0ZSBuZXcgZ3JvdXAgaWYgbm8gc3VjaCBncm91cCBleGlzdHNcclxuICAgIGlmICghdGFyZ2V0R3JvdXApIHtcclxuICAgICAgdGhpcy5fZ3JvdXBzLnVwZGF0ZSh2ID0+IHtcclxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKHYpO1xyXG4gICAgICAgIG1hcC5zZXQoZ3JvdXBLZXksIHtcclxuICAgICAgICAgIGxhYmVsOiBzaWduYWwoU3RyaW5nKGdyb3VwS2V5ID8/ICcnKSksXHJcbiAgICAgICAgICBjaGlsZHJlbjogc2lnbmFsKFtpdGVtXSksXHJcbiAgICAgICAgICBkaXNhYmxlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgICAgIHNlbGVjdGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgICAgaGlnaGxpZ2h0ZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1hcDtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRhcmdldEdyb3VwLmNoaWxkcmVuLnVwZGF0ZSh2ID0+IFsuLi52LCBpdGVtXSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUVtcHR5R3JvdXBNYXAoKTogQXJkSXRlbUdyb3VwTWFwIHtcclxuICAgIHJldHVybiBuZXcgTWFwKFtcclxuICAgICAgW1xyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogc2lnbmFsKCcnKSxcclxuICAgICAgICAgIGNoaWxkcmVuOiBzaWduYWwoW10pLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IHNpZ25hbChmYWxzZSksXHJcbiAgICAgICAgICBzZWxlY3RlZDogc2lnbmFsKGZhbHNlKSxcclxuICAgICAgICAgIGhpZ2hsaWdodGVkOiBzaWduYWwoZmFsc2UpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICBdKSBhcyBBcmRJdGVtR3JvdXBNYXA7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2lzV3JpdGVWYWx1ZVZhbGlkKG5nTW9kZWw6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbmdNb2RlbC5ldmVyeShpdGVtID0+IHtcclxuICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5fYXJkUGFyZW50Q29tcC5jb21wYXJlV2l0aCkgJiYgaXNPYmplY3QoaXRlbSkgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC52YWx1ZUZyb20oKSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIGBBUkQtV0Eke3RoaXMuX2FyZFBhcmVudENvbXAuX2NvbXBvbmVudElkfTA6IFt2YWx1ZUZyb21dIGNhbiBvbmx5IHBvaW50IHRvIGEgcHJvcGVydHkgb2YgYSBwcmltaXRpdmUgdHlwZS4gRGVmaW5lIFtjb21wYXJlV2l0aF0gaWYgdXNpbmcgb2JqZWN0cyBhcyBhIHZhbHVlIGlzIG5lZWRlZC5gXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWVUb1dyaXRlQWZ0ZXJJdGVtc0xvYWQgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dhc1ZhbHVlV3JpdGVEZWZlcnJlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgaGFuZGxlV3JpdGVWYWx1ZShuZ01vZGVsOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKCFpc0FycmF5KG5nTW9kZWwpKSB7XHJcbiAgICAgIG5nTW9kZWwgPSBbbmdNb2RlbF07XHJcbiAgICB9XHJcbiAgICAvL2RlZmVyIHdyaXRpbmcgdGhlIHZhbHVlIGlmIG5vIG9wdGlvbnMgYXJlIHlldCBsb2FkZWRcclxuICAgIGlmICghdGhpcy5fd2FzVmFsdWVXcml0ZURlZmVycmVkKCkgJiYgdGhpcy5faXRlbXMoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fdmFsdWVUb1dyaXRlQWZ0ZXJJdGVtc0xvYWQuc2V0KG5nTW9kZWwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhckFsbFNlbGVjdGVkKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9pc1dyaXRlVmFsdWVWYWxpZChuZ01vZGVsKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0SXRlbUJ5VmFsdWUgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kSXRlbUJ5VmFsdWUodmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQVJELVdBJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0xOiBDb3VsZG4ndCBmaW5kIGFuIGl0ZW0gd2l0aCB2YWx1ZSAke1xyXG4gICAgICAgICAgdmFsdWU/LnRvU3RyaW5nPy4oKSB8fCBTdHJpbmcodmFsdWUpXHJcbiAgICAgICAgfSB3aGVuIHRyeWluZyB0byBzZWxlY3QgaXQuYFxyXG4gICAgICApO1xyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IG1vZGVsVmFsdWUgb2YgbmdNb2RlbCkge1xyXG4gICAgICBzZWxlY3RJdGVtQnlWYWx1ZShtb2RlbFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZmluZEl0ZW1CeVZhbHVlKHZhbHVlVG9GaW5kOiBhbnkpOiBBcmRPcHRpb24gfCB1bmRlZmluZWQge1xyXG4gICAgbGV0IGZpbmRCeTogKGl0ZW06IEFyZE9wdGlvbikgPT4gYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKCkpIHtcclxuICAgICAgZmluZEJ5ID0gaXRlbSA9PiB0aGlzLl9hcmRQYXJlbnRDb21wLmNvbXBhcmVXaXRoKCkhKHZhbHVlVG9GaW5kLCBpdGVtLnZhbHVlKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmluZEJ5ID0gaXRlbSA9PiBpdGVtLnZhbHVlKCkgPT09IHZhbHVlVG9GaW5kO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zKCkuZmluZChpdGVtID0+IGZpbmRCeShpdGVtKSk7XHJcbiAgfVxyXG4gIGFzeW5jIGFkZEN1c3RvbU9wdGlvbih2YWx1ZTogc3RyaW5nLCBmbjogQWRkQ3VzdG9tRm48YW55PiB8IEFkZEN1c3RvbUZuPFByb21pc2U8YW55Pj4pOiBQcm9taXNlPEFyZE9wdGlvbiB8IG51bGw+IHtcclxuICAgIGNvbnN0IGZuUmVzdWx0ID0gZm4odmFsdWUpO1xyXG5cclxuICAgIGxldCBvcHRpb25WYWx1ZSA9IGZuUmVzdWx0O1xyXG4gICAgaWYgKGlzUHJvbWlzZShvcHRpb25WYWx1ZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBvcHRpb25WYWx1ZSA9IGF3YWl0IG9wdGlvblZhbHVlO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICBgQVJELU5GJHt0aGlzLl9hcmRQYXJlbnRDb21wLl9jb21wb25lbnRJZH0yOiBGYWlsZWQgdG8gYWRkIGEgY3VzdG9tIG9wdGlvbi4gVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvcjpgLFxyXG4gICAgICAgICAgZXJyb3JcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3T3B0aW9uT2JqID0gdGhpcy5fYWRkU2luZ2xlSXRlbShvcHRpb25WYWx1ZSk7XHJcbiAgICByZXR1cm4gbmV3T3B0aW9uT2JqO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxTZWxlY3RlZChyZXBvcHVsYXRlR3JvdXBzID0gZmFsc2UpOiBhbnlbXSB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5fc2VsZWN0ZWRJdGVtcygpKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlbW92ZWRJdGVtVmFsdWVzID0gdGhpcy5faXRlbXNUb1ZhbHVlKHRoaXMuX3NlbGVjdGVkSXRlbXMoKSk7XHJcbiAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNldChbXSk7XHJcblxyXG4gICAgaWYgKHJlcG9wdWxhdGVHcm91cHMgJiYgdGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuXHJcbiAgICByZXR1cm4gcmVtb3ZlZEl0ZW1WYWx1ZXM7XHJcbiAgfVxyXG4gIGNsZWFyTGFzdFNlbGVjdGVkKCk6IEFyZE9wdGlvbiB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5fc2VsZWN0ZWRJdGVtcygpLmxhc3QoKTtcclxuICAgIGlmICghaXRlbSkgcmV0dXJuIGl0ZW07XHJcbiAgICB0aGlzLnVuc2VsZWN0SXRlbShpdGVtKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuICBzZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IFthbnlbXSwgYW55W10sIGFueVtdXSB7XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1MaW1pdFJlYWNoZWQoKSkge1xyXG4gICAgICByZXR1cm4gW1tdLCBbXSwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zKV07XHJcbiAgICB9XHJcbiAgICBsZXQgdW5zZWxlY3RlZCA9IFtdO1xyXG4gICAgaWYgKCF0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XHJcbiAgICAgIHVuc2VsZWN0ZWQgPSB0aGlzLmNsZWFyQWxsU2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpdGVtc1NlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgY29uc3QgaXRlbXNTZWxlY3RlZCA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIGl0ZW1zU2VsZWN0ZWRDb3VudCsrO1xyXG4gICAgICBpZiAoaXRlbS5zZWxlY3RlZCgpKSBjb250aW51ZTtcclxuICAgICAgaWYgKHRoaXMuaXNJdGVtTGltaXRSZWFjaGVkKCkpIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBpdGVtLnNlbGVjdGVkLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy51cGRhdGUodiA9PiBbLi4udiwgaXRlbV0pO1xyXG4gICAgICBpdGVtc1NlbGVjdGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtc0ZhaWxlZFRvU2VsZWN0ID0gaXRlbXMuc2xpY2UoaXRlbXNTZWxlY3RlZENvdW50IC0gMSk7XHJcbiAgICByZXR1cm4gW3RoaXMuX2l0ZW1zVG9WYWx1ZShpdGVtc1NlbGVjdGVkKSwgdW5zZWxlY3RlZCwgdGhpcy5faXRlbXNUb1ZhbHVlKGl0ZW1zRmFpbGVkVG9TZWxlY3QpXTtcclxuICB9XHJcbiAgdW5zZWxlY3RJdGVtKC4uLml0ZW1zOiBBcmRPcHRpb25bXSk6IGFueVtdIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpZiAoIWl0ZW0uc2VsZWN0ZWQoKSkgY29udGludWU7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMudXBkYXRlKHYgPT4gdi5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKCkpKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkge1xyXG4gICAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9pdGVtc1RvVmFsdWUoaXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGxIaWdobGlnaHRzKCk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMoKSkge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzKCkpIHtcclxuICAgICAgZ3JvdXAuaGlnaGxpZ2h0ZWQuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMuc2V0KFtdKTtcclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkR3JvdXBzLnNldChbXSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEdyb3VwKGdyb3VwOiBBcmRPcHRpb25Hcm91cCk6IEFyZE9wdGlvbiB7XHJcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG4gICAgZ3JvdXAuaGlnaGxpZ2h0ZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5oaWdobGlnaHRJdGVtKC4uLmdyb3VwLmNoaWxkcmVuKCkpO1xyXG4gICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuKCkuZmlyc3QoKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0U2luZ2xlSXRlbShpdGVtOiBBcmRPcHRpb24pOiBBcmRPcHRpb24gfCBudWxsIHtcclxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRpc2FibGVkKCkpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEl0ZW0oaXRlbSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogQXJkT3B0aW9uIHtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldCh0cnVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2hpZ2hsaWdodGVkSXRlbXMudXBkYXRlKHYgPT4gWy4uLnYsIC4uLml0ZW1zXSk7XHJcbiAgICByZXR1cm4gaXRlbXMubGFzdCgpO1xyXG4gIH1cclxuICB1bmhpZ2hsaWdodEl0ZW0oLi4uaXRlbXM6IEFyZE9wdGlvbltdKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmhpZ2hsaWdodGVkKSByZXR1cm47XHJcblxyXG4gICAgICBpdGVtLmhpZ2hsaWdodGVkLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9oaWdobGlnaHRlZEl0ZW1zLnVwZGF0ZSh2ID0+IHYuZmlsdGVyKHYgPT4gdi5oaWdobGlnaHRlZCgpKSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodEZpcnN0SXRlbSgpOiBBcmRPcHRpb24gfCBudWxsIHtcclxuICAgIHRoaXMuY2xlYXJBbGxIaWdobGlnaHRzKCk7XHJcbiAgICBjb25zdCBpdGVtc1RvSGlnaGxpZ2h0ID0gdGhpcy5fZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTtcclxuICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodFNpbmdsZUl0ZW0oaXRlbXNUb0hpZ2hsaWdodC5maXJzdCgpKTtcclxuICB9XHJcbiAgaGlnaGxpZ2h0TGFzdEl0ZW0oKTogQXJkT3B0aW9uIHwgbnVsbCB7XHJcbiAgICB0aGlzLmNsZWFyQWxsSGlnaGxpZ2h0cygpO1xyXG4gICAgY29uc3QgaXRlbXNUb0hpZ2hsaWdodCA9IHRoaXMuX2dldEhpZ2xpZ2h0YWJsZUl0ZW1zKCk7XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW1zVG9IaWdobGlnaHQubGFzdCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZ2V0SGlnbGlnaHRhYmxlSXRlbXMoKTogQXJkT3B0aW9uW10ge1xyXG4gICAgbGV0IGl0ZW1zVG9IaWdobGlnaHQgPSB0aGlzLl9maWx0ZXJlZEl0ZW1zKCkuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uZGlzYWJsZWQoKSk7XHJcbiAgICBpZiAodGhpcy5fYXJkUGFyZW50Q29tcC5oaWRlU2VsZWN0ZWQoKSkge1xyXG4gICAgICBpdGVtc1RvSGlnaGxpZ2h0ID0gaXRlbXNUb0hpZ2hsaWdodC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zZWxlY3RlZCgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtc1RvSGlnaGxpZ2h0O1xyXG4gIH1cclxuICBoaWdobGlnaHRBbGxJdGVtcygpOiB2b2lkIHtcclxuICAgIHRoaXMuaGlnaGxpZ2h0SXRlbSguLi50aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2xlYXJSZWNlbnRseUhpZ2hsaWdodGVkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3JlY2VudGx5SGlnaGxpZ2h0ZWRJdGVtKCkpIHtcclxuICAgICAgdGhpcy5fcmVjZW50bHlIaWdobGlnaHRlZEl0ZW0oKSEuaGlnaGxpZ2h0ZWRfcmVjZW50bHkuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0UmVjZW50bHlIaWdobGlnaHRlZChpdGVtOiBBcmRPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX2NsZWFyUmVjZW50bHlIaWdobGlnaHRlZCgpO1xyXG4gICAgaXRlbS5oaWdobGlnaHRlZF9yZWNlbnRseS5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLl9yZWNlbnRseUhpZ2hsaWdodGVkSXRlbS5zZXQoaXRlbSk7XHJcbiAgfVxyXG4gIGhpZ2hsaWdodE5leHRJdGVtKG9mZnNldDogbnVtYmVyLCBoYXNTaGlmdD86IGJvb2xlYW4pOiBBcmRPcHRpb24gfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5pc0FueUl0ZW1IaWdobGlnaHRlZCgpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLmhpZ2hsaWdodGVkSXRlbXMoKS5sYXN0KCk7XHJcbiAgICBjb25zdCBoaWdobGlnaHRhYmxlSXRlbXMgPSB0aGlzLl9nZXRIaWdsaWdodGFibGVJdGVtcygpO1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4SW5GaWx0ZXJlZCA9IGhpZ2hsaWdodGFibGVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmluZGV4ID09PSBjdXJyZW50SXRlbS5pbmRleCk7XHJcblxyXG4gICAgbGV0IG5leHRJdGVtSW5kZXggPSBjdXJyZW50SW5kZXhJbkZpbHRlcmVkICsgb2Zmc2V0O1xyXG4gICAgaWYgKG5leHRJdGVtSW5kZXggPj0gaGlnaGxpZ2h0YWJsZUl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICBuZXh0SXRlbUluZGV4IC09IGhpZ2hsaWdodGFibGVJdGVtcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAobmV4dEl0ZW1JbmRleCA8IDApIHtcclxuICAgICAgbmV4dEl0ZW1JbmRleCArPSBoaWdobGlnaHRhYmxlSXRlbXMubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbVRvSGlnaGxpZ2h0ID0gaGlnaGxpZ2h0YWJsZUl0ZW1zW25leHRJdGVtSW5kZXhdO1xyXG5cclxuICAgIGlmIChoYXNTaGlmdCAmJiB0aGlzLl9hcmRQYXJlbnRDb21wLm11bHRpc2VsZWN0YWJsZSgpKSB7XHJcbiAgICAgIGlmIChpdGVtVG9IaWdobGlnaHQuaGlnaGxpZ2h0ZWQoKSkge1xyXG4gICAgICAgIHRoaXMudW5oaWdobGlnaHRJdGVtKGN1cnJlbnRJdGVtKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRTaW5nbGVJdGVtKGl0ZW1Ub0hpZ2hsaWdodCk7XHJcbiAgfVxyXG4gIGZpbHRlcihmaWx0ZXJUZXJtOiBzdHJpbmcpOiBhbnlbXSB7XHJcbiAgICBpZiAoIWZpbHRlclRlcm0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zVG9WYWx1ZSh0aGlzLnJlc2V0RmlsdGVyZWQoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX2FyZFBhcmVudENvbXAuc2VhcmNoQ2FzZVNlbnNpdGl2ZSgpKSB7XHJcbiAgICAgIGZpbHRlclRlcm0gPSBmaWx0ZXJUZXJtLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VhcmNoRm4gPSB0aGlzLl9hcmRQYXJlbnRDb21wLnNlYXJjaEZuKCk7XHJcbiAgICBjb25zdCBuZXdGaWx0ZXJlZEl0ZW1zID0gdGhpcy5faXRlbXMoKS5maWx0ZXIoaXRlbSA9PiBzZWFyY2hGbihmaWx0ZXJUZXJtLCBpdGVtKSk7XHJcbiAgICB0aGlzLl9maWx0ZXJlZEl0ZW1zLnNldChuZXdGaWx0ZXJlZEl0ZW1zKTtcclxuXHJcbiAgICB0aGlzLl9wb3B1bGF0ZUdyb3VwcygpO1xyXG5cclxuICAgIGlmICghdGhpcy5pc05vSXRlbXNGb3VuZCkgdGhpcy5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcclxuICAgIGVsc2UgdGhpcy5jbGVhckFsbEhpZ2hsaWdodHMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXNUb1ZhbHVlKG5ld0ZpbHRlcmVkSXRlbXMpO1xyXG4gIH1cclxuICByZXNldEZpbHRlcmVkKCk6IEFyZE9wdGlvbltdIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXJlZEl0ZW1zKCkubGVuZ3RoID09PSB0aGlzLl9pdGVtcygpLmxlbmd0aCkgcmV0dXJuIHRoaXMuX2l0ZW1zKCk7XHJcblxyXG4gICAgbGV0IG5ld0ZpbHRlcmVkSXRlbXMgPSB0aGlzLl9pdGVtcygpO1xyXG4gICAgaWYgKHRoaXMuX2FyZFBhcmVudENvbXAuaGlkZVNlbGVjdGVkKCkgJiYgdGhpcy5pc0FueUl0ZW1TZWxlY3RlZCgpKSB7XHJcbiAgICAgIG5ld0ZpbHRlcmVkSXRlbXMgPSBuZXdGaWx0ZXJlZEl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLnNlbGVjdGVkKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcG9wdWxhdGVHcm91cHMoKTtcclxuICAgIHJldHVybiBuZXdGaWx0ZXJlZEl0ZW1zO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Directive } from '@angular/core';
|
|
2
2
|
import { _FocusableComponentBase, _focusableComponentDefaults } from './focusable-component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export const _ngModelComponentDefaults =
|
|
4
|
+
export const _ngModelComponentDefaults = {
|
|
5
|
+
..._focusableComponentDefaults,
|
|
6
|
+
required: undefined,
|
|
7
|
+
};
|
|
5
8
|
/**
|
|
6
9
|
* Common code for components which implement the ControlValueAccessor.
|
|
7
10
|
*
|
|
@@ -40,4 +43,4 @@ export class _NgModelComponentBase extends _FocusableComponentBase {
|
|
|
40
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _NgModelComponentBase, decorators: [{
|
|
41
44
|
type: Directive
|
|
42
45
|
}] });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdtb2RlbC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBK0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNMUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQThCO0lBQ2xFLEdBQUcsMkJBQTJCO0lBQzlCLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUM7QUFFRjs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSx1QkFBdUI7SUFNekU7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFvQjtRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBZ0JELGtCQUFrQjtJQUNULE1BQU0sQ0FBQyxLQUFpQjtRQUMvQixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDaEMsQ0FBQzsrR0E5Q21CLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUQxQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSwgX2ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzLCBfRm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuL2ZvY3VzYWJsZS1jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzIGV4dGVuZHMgX0ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzIHtcclxuICByZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IF9uZ01vZGVsQ29tcG9uZW50RGVmYXVsdHM6IF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMgPSB7XHJcbiAgLi4uX2ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzLFxyXG4gIHJlcXVpcmVkOiB1bmRlZmluZWQsXHJcbn07XHJcblxyXG4vKipcclxuICogQ29tbW9uIGNvZGUgZm9yIGNvbXBvbmVudHMgd2hpY2ggaW1wbGVtZW50IHRoZSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICpcclxuICogKipXYXJuaW5nKio6IGB3cml0ZVZhbHVlYCBmdW5jdGlvbiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gdGhlIGNoaWxkIGNvbXBvbmVudCFcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX05nTW9kZWxDb21wb25lbnRCYXNlIGV4dGVuZHMgX0ZvY3VzYWJsZUNvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHM7XHJcblxyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yXHJcbiAgcHJvdGVjdGVkIF9vbkNoYW5nZVJlZ2lzdGVyZWQhOiAoXzogYW55KSA9PiB2b2lkO1xyXG4gIHByb3RlY3RlZCBfb25Ub3VjaGVkUmVnaXN0ZXJlZCE6ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHRvdWNoZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG4gICAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXIuXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQgPSBmbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHZhbHVlIGNoYW5nZS4gUmVxdWlyZWQgYnkgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcbiAgICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byByZWdpc3Rlci5cclxuICAgKi9cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQgPSBmbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgY29tcG9uZW50J3MgZGlzYWJsZWQgc3RhdGUuIFJlcXVpcmVkIGJ5IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkIHRoZSBuZXcgZGlzYWJsZWQgc3RhdGUuXHJcbiAgICovXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyB0aGUgYSBuZXcgdmFsdWUgaW50byB0aGUgY29tcG9uZW50LiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgKiBAYWJzdHJhY3RcclxuICAgKiBAcGFyYW0gdiBUaGUgbmV3IHZhbHVlIHRvIHdyaXRlLlxyXG4gICAqL1xyXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUodjogYW55KTogdm9pZDsgLy8qIGFic3RyYWN0XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyB0aGUgYSBuZXcgdmFsdWUgaW50byB0aGUgY29tcG9uZW50LiBSZXF1aXJlZCBieSBDb250cm9sVmFsdWVBY2Nlc3Nvci5cclxuICAgKiBAYWJzdHJhY3RcclxuICAgKiBAcGFyYW0gdiBUaGUgbmV3IHZhbHVlIHRvIHdyaXRlLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfZW1pdENoYW5nZSgpOiB2b2lkOyAvLyogYWJzdHJhY3RcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb3ZlcnJpZGUgb25CbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcbiAgICBzdXBlci5vbkJsdXIoZXZlbnQpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZD8uKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvX2ludGVybmFsL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFyZEZvcm1GaWVsZENvbXBvbmVudCBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIHt9XHJcbiJdfQ==
|