@messaia/cdk 13.3.5-rc11 → 13.3.5-rc12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/base/components/generic-reactive-form.component.mjs +4 -2
- package/esm2020/lib/forms/functions/functions.mjs +1 -2
- package/esm2020/lib/select/components/select.component.mjs +16 -3
- package/fesm2015/messaia-cdk.mjs +19 -4
- package/fesm2015/messaia-cdk.mjs.map +1 -1
- package/fesm2020/messaia-cdk.mjs +18 -4
- package/fesm2020/messaia-cdk.mjs.map +1 -1
- package/lib/select/components/select.component.d.ts +7 -1
- package/package.json +1 -1
|
@@ -51,7 +51,9 @@ export class GenericReactiveFormComponent extends GenericFormBaseComponent {
|
|
|
51
51
|
super.onAfterFormBuild();
|
|
52
52
|
if (this.buildFieldGroups && !this.fieldGroups) {
|
|
53
53
|
this.fieldGroups = getFormGroups(new this.entityCtor());
|
|
54
|
-
|
|
54
|
+
if (this.debug) {
|
|
55
|
+
console.log('Field groups', this.fieldGroups);
|
|
56
|
+
}
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
/**
|
|
@@ -70,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
|
70
72
|
}], ctorParameters: function () { return [{ type: i0.Type }, { type: undefined }, { type: i1.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { form: [{
|
|
71
73
|
type: Input
|
|
72
74
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBVyxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sa0NBQWtDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFekUsV0FBVztBQUVYLE1BQU0sT0FBZ0IsNEJBQWdHLFNBQVEsd0JBQTJDO0lBa0NySzs7O09BR0c7SUFDSCxZQUNXLFVBQXlCLEVBQ3RCLE9BQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLGlCQUFvQztRQUU5QyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUw5QyxlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQ3RCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTdCbEQ7O1dBRUc7UUFDTyxzQkFBaUIsR0FBNkIsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBNkJuRixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQTVCRDs7T0FFRztJQUNILElBQVcsU0FBUyxLQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUEyQmxFOztPQUVHO0lBQ08sU0FBUztRQUNmLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLDRCQUE0QjtRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDbEU7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBZ0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV2RixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDTyxnQkFBZ0I7UUFDdEIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqRDtTQUNKO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFNBQVMsQ0FBQyxPQUFrQixJQUFJO1FBQ3RDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBRSxJQUFJLENBQUMsSUFBb0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDOzsrSkFyRmlCLDRCQUE0QjttSkFBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBRGpELFNBQVM7NktBT0MsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IElFbnRpdHksIFNlcnZpY2VMb2NhdG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9mb3JtLXZhbGlkYXRvcnMvbW9kZWxzJztcclxuaW1wb3J0IHsgUHJvcFZhbGlkYXRpb25Db25maWcgfSBmcm9tICcuLi8uLi9mb3JtLXZhbGlkYXRvcnMvbW9kZWxzL3Byb3AtdmFsaWRhdGlvbi1jb25maWcnO1xyXG5pbXBvcnQgeyBSeEZvcm1CdWlsZGVyLCBSeEZvcm1Hcm91cCB9IGZyb20gJy4uLy4uL2Zvcm0tdmFsaWRhdG9ycy9wdWJsaWNfYXBpJztcclxuaW1wb3J0IHsgZ2V0Rm9ybUdyb3VwcyB9IGZyb20gJy4uLy4uL2Zvcm1zL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvaHR0cC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBHZW5lcmljRm9ybUJhc2VDb21wb25lbnQgfSBmcm9tICcuL2dlbmVyaWMtZm9ybS1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG4vLyBAZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlbmVyaWNSZWFjdGl2ZUZvcm1Db21wb25lbnQ8VEVudGl0eSBleHRlbmRzIElFbnRpdHksIFRTZXJ2aWNlIGV4dGVuZHMgR2VuZXJpY1NlcnZpY2U8VEVudGl0eT4+IGV4dGVuZHMgR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHksIFRTZXJ2aWNlPiB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIGdyb3VwXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybSBidWlsZGVyXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogUnhGb3JtQnVpbGRlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZvcm1CdWlsZGVyQ29uZmlnOiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb25cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyQ29uZmlnOiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBuZXcgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGZvcm0gdmFsdWVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBmb3JtVmFsdWUoKTogVEVudGl0eSB8IGFueSB7IHJldHVybiB0aGlzLmZvcm0udmFsdWU7IH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtVmFsaWRhdGlvbjogYW55XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb3JtVmFsaWRhdGlvbjogeyBba2V5OiBzdHJpbmddOiBQcm9wVmFsaWRhdGlvbkNvbmZpZyB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYnVpbGRGaWVsZEdyb3VwczogYm9vbGVhblxyXG4gICAgICogQnVpbGRzIGZpZWxkIGdyb3VwcywgaWYgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYnVpbGRGaWVsZEdyb3VwczogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gc2VydmljZSBcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGVudGl0eUN0b3I6IFR5cGU8VEVudGl0eT4sXHJcbiAgICAgICAgcHJvdGVjdGVkIHNlcnZpY2U6IFRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZW50aXR5Q3Rvciwgc2VydmljZSwgcm91dGUsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyID0gU2VydmljZUxvY2F0b3IuZ2V0U2VydmljZShSeEZvcm1CdWlsZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJ1aWxkcyBhIG5ldyBmb3JtXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBidWlsZEZvcm0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkJlZm9yZUZvcm1CdWlsZCgpO1xyXG5cclxuICAgICAgICAvKiBBZGQgZHluYW1pYyB2YWxpZGF0aW9uICovXHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybVZhbGlkYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtQnVpbGRlckNvbmZpZy5keW5hbWljVmFsaWRhdGlvbiA9IHRoaXMuZm9ybVZhbGlkYXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGhlIGZvcm0gKi9cclxuICAgICAgICB0aGlzLmZvcm0gPSA8UnhGb3JtR3JvdXA+dGhpcy5mb3JtQnVpbGRlci5mb3JtR3JvdXAodGhpcy5pdGVtLCB0aGlzLmZvcm1CdWlsZGVyQ29uZmlnKTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaGFzIGJ1aWx0LlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgb25BZnRlckZvcm1CdWlsZCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5vbkFmdGVyRm9ybUJ1aWxkKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuYnVpbGRGaWVsZEdyb3VwcyAmJiAhdGhpcy5maWVsZEdyb3Vwcykge1xyXG4gICAgICAgICAgICB0aGlzLmZpZWxkR3JvdXBzID0gZ2V0Rm9ybUdyb3VwcyhuZXcgdGhpcy5lbnRpdHlDdG9yKCkpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZpZWxkIGdyb3VwcycsIHRoaXMuZmllbGRHcm91cHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvd3MgZm9ybSBlcnJvcnNcclxuICAgICAqIEBwYXJhbSBmb3JtIFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZGVidWdGb3JtKGZvcm06IEZvcm1Hcm91cCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5kZWJ1Z0Zvcm0oZm9ybSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coKHRoaXMuZm9ybSBhcyBSeEZvcm1Hcm91cCkuZ2V0RXJyb3JTdW1tYXJ5KGZhbHNlKSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -38,7 +38,6 @@ export function getFormGroups(origin) {
|
|
|
38
38
|
}
|
|
39
39
|
/* Sort the groups by index */
|
|
40
40
|
Utils.sortArray(groups, 'index');
|
|
41
|
-
console.log('groups', groups);
|
|
42
41
|
return groups;
|
|
43
42
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvZnVuY3Rpb25zL2Z1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFakY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBYztJQUMzQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUErQixDQUFDO0FBQzVGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFjO0lBQ3hDLCtDQUErQztJQUMvQyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUEwQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFJLHNCQUFzQjtJQUN0QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSx3QkFBd0IsQ0FBQztRQUNqRyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJO1FBQ2hDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUM1QixLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sRUFBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBMEIsRUFBRSxDQUFzQjtZQUM5RixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUE2QjtLQUN2RCxDQUFDLENBQUMsQ0FBQztJQUVKLHVCQUF1QjtJQUN2QixJQUFJLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsSUFBSSxpQkFBaUIsRUFBRTtRQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQzdDO0lBRUQsOEJBQThCO0lBQzlCLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpDLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlscyB9IGZyb20gXCIuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzXCI7XHJcbmltcG9ydCB7IGZvcm1GaWVsZEdyb3Vwc01ldGFkYXRhS2V5LCBmb3JtRmllbGRzTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb25cIjtcclxuXHJcbi8qKlxyXG4gKiBHZXRzIHBvcGVydGllcyBkZWNvYXJhdGVkIHdpdGggQEZvcm1GaWVsZCBncm91cGVkIGJ5IHJvd1xyXG4gKiBAcGFyYW0gb3JpZ2luIFxyXG4gKiBAcmV0dXJucyBcclxuICogQGRlcHJlY2F0ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtR3JvdXBzT2xkKG9yaWdpbjogb2JqZWN0KTogRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uW10ge1xyXG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoZm9ybUZpZWxkc01ldGFkYXRhS2V5LCBvcmlnaW4pIGFzIEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyBwb3BlcnRpZXMgZGVjb2FyYXRlZCB3aXRoIEBGb3JtRmllbGQgZ3JvdXBlZCBieSByb3dcclxuICogQHBhcmFtIG9yaWdpbiBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUdyb3VwcyhvcmlnaW46IG9iamVjdCk6IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdIHtcclxuICAgIC8qIEdldCBtYWluIGZpZWxkcyBncm91cGVkIGJ5IHRoZSBncm91cCBuYW1lICovXHJcbiAgICBjb25zdCBtYWluRmllbGRHcm91cHMgPSBVdGlscy5ncm91cEFycmF5QnkoUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRzTWV0YWRhdGFLZXksIG9yaWdpbikgYXMgRm9ybUZpZWxkRGVmaW5pdGlvbltdLCB4ID0+IHguZ3JvdXBOYW1lKTtcclxuXHJcbiAgICAvKiBHcm91cCB0aGUgZmllbGRzICovXHJcbiAgICB2YXIgZ3JvdXBzID0gQXJyYXkuZnJvbShtYWluRmllbGRHcm91cHMpLm1hcCgoW18sIHZhbHVlXSwgaTogbnVtYmVyKSA9PiBuZXcgRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uKHtcclxuICAgICAgICBuYW1lOiB2YWx1ZVswXS5ncm91cE5hbWUgfHwgbnVsbCxcclxuICAgICAgICBoZWFkZXI6IHZhbHVlWzBdLmdyb3VwSGVhZGVyLFxyXG4gICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgIGdyb3VwczogKE9iamVjdC52YWx1ZXMoKHZhbHVlKS5yZWR1Y2UoZnVuY3Rpb24gKHI6IFtGb3JtRmllbGREZWZpbml0aW9uW11dLCBhOiBGb3JtRmllbGREZWZpbml0aW9uKSB7XHJcbiAgICAgICAgICAgIHJbYS5yb3ddID0gKHJbYS5yb3ddIHx8IFtdKTtcclxuICAgICAgICAgICAgclthLnJvd10ucHVzaChhKTtcclxuICAgICAgICAgICAgclthLnJvd10uZm9yRWFjaCgoeCwgaSkgPT4geC5pbmRleCA9IHguaW5kZXggfHwgaSk7XHJcbiAgICAgICAgICAgIFV0aWxzLnNvcnRBcnJheShyW2Eucm93XSwgJ2luZGV4Jyk7XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpKSBhcyBbRm9ybUZpZWxkRGVmaW5pdGlvbltdXSlcclxuICAgIH0pKTtcclxuXHJcbiAgICAvKiBHZXQgb2JqZWN0IGdyb3VwcyAqL1xyXG4gICAgdmFyIG9iamVjdEZpZWxkR3JvdXBzID0gUmVmbGVjdC5nZXRNZXRhZGF0YShmb3JtRmllbGRHcm91cHNNZXRhZGF0YUtleSwgb3JpZ2luKTtcclxuICAgIGlmIChvYmplY3RGaWVsZEdyb3Vwcykge1xyXG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQob2JqZWN0RmllbGRHcm91cHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIFNvcnQgdGhlIGdyb3VwcyBieSBpbmRleCAqL1xyXG4gICAgVXRpbHMuc29ydEFycmF5KGdyb3VwcywgJ2luZGV4Jyk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwcztcclxufSJdfQ==
|
|
@@ -325,12 +325,25 @@ export class VdSelectComponent extends AbstractMatFormField {
|
|
|
325
325
|
this.filteredOptions = this.options.filter((x) => x[this.text]?.toLowerCase().search(searchText.toLowerCase()) > -1);
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Gets the values of the selected options for the trigger
|
|
330
|
+
* @param options
|
|
331
|
+
* @returns
|
|
332
|
+
*/
|
|
333
|
+
getTriggerValues(options) {
|
|
334
|
+
if (Array.isArray(options)) {
|
|
335
|
+
return (options || [])?.map(x => this.mapper ? x.value : x.viewValue);
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
return this.mapper ? options?.value : options?.viewValue;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
328
341
|
}
|
|
329
342
|
/** @nocollapse */ /** @nocollapse */ VdSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdSelectComponent, deps: [{ token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.ErrorStateMatcher }, { token: i3.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
330
|
-
/** @nocollapse */ /** @nocollapse */ VdSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdSelectComponent, selector: "vd-select", inputs: { multiple: "multiple", disabled: "disabled", sorted: "sorted", textPrefix: "textPrefix", endpoint: "endpoint", params: "params", projection: "projection", enum: "enum", key: "key", text: "text", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", sortBy: "sortBy", mapper: "mapper", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdSelectOptionDirective, descendants: true }, { propertyName: "triggerTemplate", first: true, predicate: VdSelectTriggerDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{select.selected
|
|
343
|
+
/** @nocollapse */ /** @nocollapse */ VdSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdSelectComponent, selector: "vd-select", inputs: { multiple: "multiple", disabled: "disabled", sorted: "sorted", textPrefix: "textPrefix", endpoint: "endpoint", params: "params", projection: "projection", enum: "enum", key: "key", text: "text", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", sortBy: "sortBy", mapper: "mapper", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdSelectOptionDirective, descendants: true }, { propertyName: "triggerTemplate", first: true, predicate: VdSelectTriggerDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{getTriggerValues(select.selected)}}</span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\">\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[key]\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[text], select, option {option} other {{{option[text]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\">\r\n <span *ngIf=\"!multiple\" i18n=\"@@selection\">{currentValue[text], select, option {option} other {{{currentValue[text]}}}}</span>\r\n <ng-container *ngIf=\"multiple\">\r\n <span *ngFor=\"let optionValue of currentValue; let last = last\">\r\n <span i18n=\"@@selection\">{optionValue[text], select, option {option} other {{{optionValue[text]}}}}</span>\r\n <span *ngIf=\"!last\">, </span>\r\n </span>\r\n </ng-container>\r\n </span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"onLaunch?.observers?.length > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;color:#000000a3;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0px;top:9px;font-size:18px;cursor:pointer}.vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:#f5f5f5;outline:none}\n"], components: [{ type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
331
344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdSelectComponent, decorators: [{
|
|
332
345
|
type: Component,
|
|
333
|
-
args: [{ selector: 'vd-select', providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{select.selected
|
|
346
|
+
args: [{ selector: 'vd-select', providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{getTriggerValues(select.selected)}}</span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\">\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[key]\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[text], select, option {option} other {{{option[text]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\">\r\n <span *ngIf=\"!multiple\" i18n=\"@@selection\">{currentValue[text], select, option {option} other {{{currentValue[text]}}}}</span>\r\n <ng-container *ngIf=\"multiple\">\r\n <span *ngFor=\"let optionValue of currentValue; let last = last\">\r\n <span i18n=\"@@selection\">{optionValue[text], select, option {option} other {{{optionValue[text]}}}}</span>\r\n <span *ngIf=\"!last\">, </span>\r\n </span>\r\n </ng-container>\r\n </span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"onLaunch?.observers?.length > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;color:#000000a3;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0px;top:9px;font-size:18px;cursor:pointer}.vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:#f5f5f5;outline:none}\n"] }]
|
|
334
347
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
335
348
|
type: Optional
|
|
336
349
|
}, {
|
|
@@ -405,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
|
405
418
|
}], searchField: [{
|
|
406
419
|
type: Input
|
|
407
420
|
}] } });
|
|
408
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUs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V0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW51bVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWF0Rm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vZm9ybXMvaGVscGVycy9hYnN0cmFjdC1tYXQtZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFZkU2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy92ZC1zZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZkU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdmQtc2VsZWN0LXRyaWdnZXIuZGlyZWN0aXZlJztcclxuXHJcbi8qKlxyXG4gKiBWZFNlbGVjdENvbXBvbmVudCBjbGFzc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1zZWxlY3QnLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRTZWxlY3RDb21wb25lbnQgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RNYXRGb3JtRmllbGQ8YW55PiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaHR0cCBzZXJ2aWNlIGZyb20gdG8gZ2V0IHRoZSBkYXRhXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBPcHRpb24gdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkU2VsZWN0T3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVmRTZWxlY3RPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyaWdnZXIgdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSlcclxuXHRwdWJsaWMgdHJpZ2dlclRlbXBsYXRlOiBWZFNlbGVjdFRyaWdnZXJEaXJlY3RpdmU7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgc2VsZWN0IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTZWxlY3QsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBzZWxlY3RFbDogTWF0U2VsZWN0O1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHNlbGVjdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpbHRlcklucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aXBsZSBzZWxlY3Qgb3B0aW9uXHJcblx0ICovXHJcblx0cHVibGljIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aXBsZSBzZWxlY3Qgb3B0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgbXVsdGlwbGUoKSB7IHJldHVybiB0aGlzLl9tdWx0aXBsZTsgfVxyXG5cdHNldCBtdWx0aXBsZShtdWx0aSkge1xyXG5cdFx0dGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkobXVsdGkpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC5cclxuXHQgKiBAcGFyYW0gZGlzYWJsZWRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGFueSkge1xyXG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzYWJsZWQpO1xyXG5cdFx0aWYgKHRoaXMuZm9jdXNlZCkge1xyXG5cdFx0XHR0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyB0aGUgZGlzYWJsZWQuXHJcblx0ICogQHBhcmFtIGRpc2FibGVkXHJcblx0ICovXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHtcclxuXHRcdGlmICh0aGlzLl9yZWFkb25seSkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc3VwZXIuZGlzYWJsZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0c2V0IHNvcnRlZChtdWx0aSkge1xyXG5cdFx0dGhpcy5fc29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRleHRQcmVmaXg/OiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyB0ZXh0UHJlZml4OiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIHNlbGVjdCBoYXMgYSB2YWx1ZS5cclxuXHQgKi9cclxuXHRnZXQgZW1wdHkoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcmVhZG9ubHkgPyAhdGhpcy5jdXJyZW50VmFsdWUgOiAhdGhpcy5zZWxlY3RFbD8uX3NlbGVjdGlvbk1vZGVsIHx8IHRoaXMuc2VsZWN0RWw/Ll9zZWxlY3Rpb25Nb2RlbD8uaXNFbXB0eSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVwcmVzZW50cyBhIHZhbHVlIHRoYXQgY2hhbmdlcyBvdmVyIHRpbWUuIFxyXG5cdCAqIE9ic2VydmVycyBjYW4gc3Vic2NyaWJlIHRvIHRoZSBzdWJqZWN0IHRvIHJlY2VpdmUgcGRmIGZpbGUgY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2VuZHBvaW50Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgcGRmIGVuZHBvaW50XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2VuZHBvaW50OyB9XHJcblx0c2V0IGVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX2VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBhcmFtczogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0c2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0LyogUmVtb3ZlIGVtcHR5IHBhcmFtcyAqL1xyXG5cdFx0T2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcclxuXHRcdFx0aWYgKChwYXJhbXNba2V5XSA9PSBudWxsIHx8IHBhcmFtc1trZXldID09ICcnIHx8IHBhcmFtc1trZXldID09ICd1bmRlZmluZWQnKSkge1xyXG5cdFx0XHRcdGRlbGV0ZSBwYXJhbXNba2V5XTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuX3BhcmFtcykgIT09IEpTT04uc3RyaW5naWZ5KHBhcmFtcykpIHtcclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLl9wYXJhbXMsIHRoaXMucHJvamVjdGlvbl0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogX3Byb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcHJvamVjdGlvbjogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZykge1xyXG5cdFx0dGhpcy5fcHJvamVjdGlvbiA9IHByb2plY3Rpb247XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGN1cnJlbnQgdmFsdWVcclxuXHQgKi9cclxuXHRnZXQgY3VycmVudFZhbHVlKCk6IGFueSB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXIoKHg6IGFueSkgPT4gKHRoaXMuX3ZhbHVlIHx8IFtdKS5pbmNsdWRlcyh4W3RoaXMua2V5XSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMua2V5XSA9PSB0aGlzLl92YWx1ZSlbMF07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmFtZSBvZiB0aGUgZW5kcG9pbnRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHByaXZhdGUgZW51bTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBhbnkgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdGV4dFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHQ6IGFueSA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByZWZpeFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJlZCBvcHRpb24gbGlzdFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmVkT3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJhYmxlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBjYWNoZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjYWNoZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNvcnRCeT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0Qnk6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogbWFwcGVyOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG1hcHBlcjogRnVuY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSB0aGUgb3B0aW9uIHZhbHVlcyB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmd1bWVudFxyXG5cdCAqIGlzIGEgdmFsdWUgZnJvbSBhbiBvcHRpb24uIFRoZSBzZWNvbmQgaXMgYSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3Rpb24uIEEgYm9vbGVhblxyXG5cdCAqIHNob3VsZCBiZSByZXR1cm5lZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBjb21wYXJlV2l0aCgpOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiB7IHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDsgfVxyXG5cdHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHsgdGhpcy5fY29tcGFyZVdpdGggPSBmbjsgfVxyXG5cdHByaXZhdGUgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuXHJcblx0LyoqXHJcblx0ICogY2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdjaGFuZ2UnKSBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtQ2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtQ2hhbmdlJykgb25JdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnc2VsZWN0ZWQnKSBvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtU2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2l0ZW1TZWxlY3RlZCcpIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBsYXVuY2g/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2xhdW5jaCcpIG9uTGF1bmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KCkgc2VhcmNoRmllbGQ6ICh4OiBhbnkpID0+IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gbmdDb250cm9sIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtR3JvdXAgXHJcblx0ICogQHBhcmFtIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciBcclxuXHQgKiBAcGFyYW0gZm9jdXNNb25pdG9yIFxyXG5cdCAqIEBwYXJhbSBlbGVtZW50UmVmIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSwgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcblx0XHRzdXBlcihcImFwcC12ZC1zZWxlY3RcIiwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmKTtcclxuXHRcdGlmICghdGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuaHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgXHJcblx0ICogdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmVudW0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJhYmxlID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0gRW51bVNlcnZpY2UudG9BcnJheSh0aGlzLmVudW0sIHRoaXMucHJlZml4KTtcclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5vcHRpb25zKSB7XHJcblx0XHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShkZWJvdW5jZVRpbWUoMSkpLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0XHRcdGlmICh0aGlzLmNhY2hlKSB7XHJcblx0XHRcdFx0XHRoZWFkZXJzLnNldCgnQ2xpZW50LUNhY2hlJywgJ1llcycpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogSW5pdCBwYXJhbXMsIGlmIG51bGwgKi9cclxuXHRcdFx0XHRsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFyYW1zIHx8IHt9KTtcclxuXHJcblx0XHRcdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogQWRkIHNvcnRpbmcgKi9cclxuXHRcdFx0XHRpZiAoIXRoaXMucGFyYW1zLnNvcnRCeSAmJiAodGhpcy5zb3J0QnkgfHwgdGhpcy5zb3J0ZWQpKSB7XHJcblx0XHRcdFx0XHRwYXJhbXMuc29ydEJ5ID0gdGhpcy5zb3J0QnkgfHwgdGhpcy50ZXh0O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogR2V0IHJlc3VsdCBmcm9tIHNlcnZlciAqL1xyXG5cdFx0XHRcdHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludCwgeyBwYXJhbXM6IHBhcmFtcywgaGVhZGVyczogaGVhZGVycyB9KVxyXG5cdFx0XHRcdFx0LnBpcGUobWFwKCh4OiBhbnlbXSkgPT4gdGhpcy5tYXBwZXIgPyB0aGlzLm1hcHBlcih4KSA6IHgpKVxyXG5cdFx0XHRcdFx0LnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB4O1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXJcclxuXHQgKiBBbmd1bGFyIGhhcyBjb21wbGV0ZWQgaW5pdGlhbGl6YXRpb24gb2YgYSBjb21wb25lbnQncyB2aWV3LlxyXG5cdCAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIHZpZXcgaXMgaW5zdGFudGlhdGVkLlxyXG5cdCAqXHJcblx0ICovXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWxlY3RFbD8ub3BlbmVkQ2hhbmdlPy5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdGlmICh4ICYmIHRoaXMuZmlsdGVyYWJsZSkge1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGNvbnRyb2wgZm9jdXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdEVsPy5mb2N1cygpO1xyXG5cdFx0dGhpcy5zZWxlY3RFbD8ub3BlbigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHRzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcclxuXHRcdHRoaXMub25TZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuXHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghdGhpcy52YWx1ZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdEVsPy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gYW4gb3B0aW9uIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlQ2hhbmdlKCRldmVudDogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xyXG5cdFx0dGhpcy5oYW5kbGVJdGVtQ2hhbmdlKCRldmVudC52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGl0ZW0gY2hhbmdlc1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlSXRlbVNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+ICh2YWx1ZSB8fCBbXSkuaW5jbHVkZXMoeFt0aGlzLmtleV0pKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMua2V5XSA9PSB2YWx1ZSlbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBpdGVtIGNoYW5nZXNcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUl0ZW1DaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1DaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+ICh2YWx1ZSB8fCBbXSkuaW5jbHVkZXMoeFt0aGlzLmtleV0pKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm9uSXRlbUNoYW5nZS5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgbGF1bmNoIGJ1dHRvbiBjbGlja1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlTGF1bmNoQ2xpY2tlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uTGF1bmNoLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5rZXldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkxhdW5jaC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRlbHMgZmlsdGVyIGV2ZW50XHJcblx0ICogQHBhcmFtIHNlYXJjaFRleHQgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUZpbHRlcihzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB0aGlzLnNlYXJjaEZpZWxkKHgpPy50b0xvd2VyQ2FzZSgpLnNlYXJjaChzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpID4gLTEpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy50ZXh0XT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8bWF0LXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBpMThuLXBsYWNlaG9sZGVyIFsobmdNb2RlbCldPVwidmFsdWVcIiAjc2VsZWN0PVwibWF0U2VsZWN0XCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiICpuZ0lmPVwiIXJlYWRvbmx5XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgZmxleD5cclxuICAgIDwhLS0gI3JlZ2lvbiBGaWx0ZXIgaW5wdXQgLS0+XHJcbiAgICA8aW5wdXQgI2ZpbHRlcklucHV0ICpuZ0lmPVwiZmlsdGVyYWJsZVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJGaWx0ZXIuLi5cIiBjbGFzcz1cInZkLXNlbGVjdC1maWx0ZXJcIiAoa2V5dXApPVwiaGFuZGxlRmlsdGVyKCRldmVudC50YXJnZXQudmFsdWUpXCI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIFRyaWdnZXIgZm9yIGxhdW5jaCBidXR0b24gLS0+XHJcbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyICpuZ0lmPVwib25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxzcGFuPnt7c2VsZWN0LnNlbGVjdGVkP3NlbGVjdC5zZWxlY3RlZFsndmlld1ZhbHVlJ106Jyd9fTwvc3Bhbj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZC1zZWxlY3QtbGF1bmNoXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaGFuZGxlTGF1bmNoQ2xpY2tlZCh2YWx1ZSlcIj5sYXVuY2g8L21hdC1pY29uPlxyXG4gICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIEN1c3RvbSB0cmlnZ2VyIHRlbXBsYXRlIC0tPlxyXG4gICAgPG1hdC1zZWxlY3QtdHJpZ2dlciAqbmdJZj1cIiFvbkxhdW5jaD8ub2JzZXJ2ZXJzPy5sZW5ndGggJiYgdHJpZ2dlclRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRyaWdnZXJUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmlnZ2VyVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdHJpZ2dlcjogKHNlbGVjdC5zZWxlY3RlZHx8W10pWyd2aWV3VmFsdWUnXSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBPcHRpb24gdGVtcGxhdGUgYXMgdHJpZ2dlciAtLT5cclxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgKm5nSWY9XCIhb25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoICYmICF0cmlnZ2VyVGVtcGxhdGU/LnRlbXBsYXRlUmVmICYmIG9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRyaWdnZXI6IChzZWxlY3Quc2VsZWN0ZWR8fFtdKVsndmlld1ZhbHVlJ10gfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gRGVmYXVsdCBvcHRpb24gLS0+XHJcbiAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInRjLWdyZXktNTAwXCIgKm5nSWY9XCIhbXVsdGlwbGVcIiBpMThuPVwiQEBwbGVhc2VTZWxlY3RcIj4tLS0gUGxlYXNlIFNlbGVjdCAtLS08L21hdC1vcHRpb24+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIE9wdGlvbnMgLS0+XHJcbiAgICA8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImZpbHRlcmVkT3B0aW9uc1wiPlxyXG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJtYXBwZXIgPyBvcHRpb24gOiBvcHRpb25ba2V5XVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFvcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBpMThuPVwiQEBzZWxlY3Rpb25cIj57b3B0aW9uW3RleHRdLCBzZWxlY3QsIG9wdGlvbiB7b3B0aW9ufSBvdGhlciB7e3tvcHRpb25bdGV4dF19fX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IG9wdGlvbiB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG48L21hdC1zZWxlY3Q+XHJcblxyXG48IS0tICNyZWdpb24gUmVhZCBvbmx5IHZhbHVlIC0tPlxyXG48ZGl2ICpuZ0lmPVwicmVhZG9ubHlcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50VmFsdWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhb3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFtdWx0aXBsZVwiIGkxOG49XCJAQHNlbGVjdGlvblwiPntjdXJyZW50VmFsdWVbdGV4dF0sIHNlbGVjdCwgb3B0aW9uIHtvcHRpb259IG90aGVyIHt7e2N1cnJlbnRWYWx1ZVt0ZXh0XX19fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgb3B0aW9uVmFsdWUgb2YgY3VycmVudFZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaTE4bj1cIkBAc2VsZWN0aW9uXCI+e29wdGlvblZhbHVlW3RleHRdLCBzZWxlY3QsIG9wdGlvbiB7b3B0aW9ufSBvdGhlciB7e3tvcHRpb25WYWx1ZVt0ZXh0XX19fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxhc3RcIj4sJm5ic3A7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogY3VycmVudFZhbHVlIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIm9uTGF1bmNoPy5vYnNlcnZlcnM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cInZkLXNlbGVjdC1sYXVuY2gtcmVhZG9ubHlcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBoYW5kbGVMYXVuY2hDbGlja2VkKHZhbHVlKVwiPmxhdW5jaDwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhY3VycmVudFZhbHVlXCI+Jm5ic3A7PC9kaXY+XHJcbjwvZGl2PlxyXG48IS0tICNlbmRyZWdpb24gLS0+Il19
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckosT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUs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O2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFPQyxNQUFNO3NCQURaLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO2dCQVNGLFdBQVc7c0JBRGQsS0FBSztnQkFRWSxhQUFhO3NCQUE5QixNQUFNO3VCQUFDLFFBQVE7Z0JBS00sWUFBWTtzQkFBakMsTUFBTTt1QkFBQyxZQUFZO2dCQUtBLFVBQVU7c0JBQTdCLE1BQU07dUJBQUMsVUFBVTtnQkFLTSxjQUFjO3NCQUFyQyxNQUFNO3VCQUFDLGNBQWM7Z0JBS0osUUFBUTtzQkFBekIsTUFBTTt1QkFBQyxRQUFRO2dCQUtQLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciwgTWF0T3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW51bVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWF0Rm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vZm9ybXMvaGVscGVycy9hYnN0cmFjdC1tYXQtZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFZkU2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy92ZC1zZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZkU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdmQtc2VsZWN0LXRyaWdnZXIuZGlyZWN0aXZlJztcclxuXHJcbi8qKlxyXG4gKiBWZFNlbGVjdENvbXBvbmVudCBjbGFzc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1zZWxlY3QnLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRTZWxlY3RDb21wb25lbnQgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RNYXRGb3JtRmllbGQ8YW55PiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaHR0cCBzZXJ2aWNlIGZyb20gdG8gZ2V0IHRoZSBkYXRhXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBPcHRpb24gdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkU2VsZWN0T3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVmRTZWxlY3RPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyaWdnZXIgdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkU2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSlcclxuXHRwdWJsaWMgdHJpZ2dlclRlbXBsYXRlOiBWZFNlbGVjdFRyaWdnZXJEaXJlY3RpdmU7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgc2VsZWN0IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTZWxlY3QsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBzZWxlY3RFbDogTWF0U2VsZWN0O1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHNlbGVjdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpbHRlcklucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aXBsZSBzZWxlY3Qgb3B0aW9uXHJcblx0ICovXHJcblx0cHVibGljIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aXBsZSBzZWxlY3Qgb3B0aW9uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgbXVsdGlwbGUoKSB7IHJldHVybiB0aGlzLl9tdWx0aXBsZTsgfVxyXG5cdHNldCBtdWx0aXBsZShtdWx0aSkge1xyXG5cdFx0dGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkobXVsdGkpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC5cclxuXHQgKiBAcGFyYW0gZGlzYWJsZWRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGFueSkge1xyXG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzYWJsZWQpO1xyXG5cdFx0aWYgKHRoaXMuZm9jdXNlZCkge1xyXG5cdFx0XHR0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyB0aGUgZGlzYWJsZWQuXHJcblx0ICogQHBhcmFtIGRpc2FibGVkXHJcblx0ICovXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHtcclxuXHRcdGlmICh0aGlzLl9yZWFkb25seSkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc3VwZXIuZGlzYWJsZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0c2V0IHNvcnRlZChtdWx0aSkge1xyXG5cdFx0dGhpcy5fc29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHRleHRQcmVmaXg/OiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyB0ZXh0UHJlZml4OiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIHNlbGVjdCBoYXMgYSB2YWx1ZS5cclxuXHQgKi9cclxuXHRnZXQgZW1wdHkoKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcmVhZG9ubHkgPyAhdGhpcy5jdXJyZW50VmFsdWUgOiAhdGhpcy5zZWxlY3RFbD8uX3NlbGVjdGlvbk1vZGVsIHx8IHRoaXMuc2VsZWN0RWw/Ll9zZWxlY3Rpb25Nb2RlbD8uaXNFbXB0eSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVwcmVzZW50cyBhIHZhbHVlIHRoYXQgY2hhbmdlcyBvdmVyIHRpbWUuIFxyXG5cdCAqIE9ic2VydmVycyBjYW4gc3Vic2NyaWJlIHRvIHRoZSBzdWJqZWN0IHRvIHJlY2VpdmUgcGRmIGZpbGUgY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2VuZHBvaW50Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgcGRmIGVuZHBvaW50XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2VuZHBvaW50OyB9XHJcblx0c2V0IGVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX2VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBhcmFtczogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0c2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0LyogUmVtb3ZlIGVtcHR5IHBhcmFtcyAqL1xyXG5cdFx0T2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcclxuXHRcdFx0aWYgKChwYXJhbXNba2V5XSA9PSBudWxsIHx8IHBhcmFtc1trZXldID09ICcnIHx8IHBhcmFtc1trZXldID09ICd1bmRlZmluZWQnKSkge1xyXG5cdFx0XHRcdGRlbGV0ZSBwYXJhbXNba2V5XTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuX3BhcmFtcykgIT09IEpTT04uc3RyaW5naWZ5KHBhcmFtcykpIHtcclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLl9wYXJhbXMsIHRoaXMucHJvamVjdGlvbl0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogX3Byb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcHJvamVjdGlvbjogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZykge1xyXG5cdFx0dGhpcy5fcHJvamVjdGlvbiA9IHByb2plY3Rpb247XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGN1cnJlbnQgdmFsdWVcclxuXHQgKi9cclxuXHRnZXQgY3VycmVudFZhbHVlKCk6IGFueSB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXIoKHg6IGFueSkgPT4gKHRoaXMuX3ZhbHVlIHx8IFtdKS5pbmNsdWRlcyh4W3RoaXMua2V5XSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMua2V5XSA9PSB0aGlzLl92YWx1ZSlbMF07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmFtZSBvZiB0aGUgZW5kcG9pbnRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHByaXZhdGUgZW51bTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBhbnkgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdGV4dFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHQ6IGFueSA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByZWZpeFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJlZCBvcHRpb24gbGlzdFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmVkT3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJhYmxlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBjYWNoZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjYWNoZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNvcnRCeT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0Qnk6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogbWFwcGVyOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG1hcHBlcjogRnVuY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSB0aGUgb3B0aW9uIHZhbHVlcyB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmd1bWVudFxyXG5cdCAqIGlzIGEgdmFsdWUgZnJvbSBhbiBvcHRpb24uIFRoZSBzZWNvbmQgaXMgYSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3Rpb24uIEEgYm9vbGVhblxyXG5cdCAqIHNob3VsZCBiZSByZXR1cm5lZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBjb21wYXJlV2l0aCgpOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiB7IHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDsgfVxyXG5cdHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHsgdGhpcy5fY29tcGFyZVdpdGggPSBmbjsgfVxyXG5cdHByaXZhdGUgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuXHJcblx0LyoqXHJcblx0ICogY2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdjaGFuZ2UnKSBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtQ2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtQ2hhbmdlJykgb25JdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnc2VsZWN0ZWQnKSBvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtU2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2l0ZW1TZWxlY3RlZCcpIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBsYXVuY2g/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2xhdW5jaCcpIG9uTGF1bmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KCkgc2VhcmNoRmllbGQ6ICh4OiBhbnkpID0+IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gbmdDb250cm9sIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtR3JvdXAgXHJcblx0ICogQHBhcmFtIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciBcclxuXHQgKiBAcGFyYW0gZm9jdXNNb25pdG9yIFxyXG5cdCAqIEBwYXJhbSBlbGVtZW50UmVmIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSwgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcblx0XHRzdXBlcihcImFwcC12ZC1zZWxlY3RcIiwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmKTtcclxuXHRcdGlmICghdGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuaHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgXHJcblx0ICogdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmVudW0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJhYmxlID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0gRW51bVNlcnZpY2UudG9BcnJheSh0aGlzLmVudW0sIHRoaXMucHJlZml4KTtcclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5vcHRpb25zKSB7XHJcblx0XHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShkZWJvdW5jZVRpbWUoMSkpLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0XHRcdGlmICh0aGlzLmNhY2hlKSB7XHJcblx0XHRcdFx0XHRoZWFkZXJzLnNldCgnQ2xpZW50LUNhY2hlJywgJ1llcycpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogSW5pdCBwYXJhbXMsIGlmIG51bGwgKi9cclxuXHRcdFx0XHRsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFyYW1zIHx8IHt9KTtcclxuXHJcblx0XHRcdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogQWRkIHNvcnRpbmcgKi9cclxuXHRcdFx0XHRpZiAoIXRoaXMucGFyYW1zLnNvcnRCeSAmJiAodGhpcy5zb3J0QnkgfHwgdGhpcy5zb3J0ZWQpKSB7XHJcblx0XHRcdFx0XHRwYXJhbXMuc29ydEJ5ID0gdGhpcy5zb3J0QnkgfHwgdGhpcy50ZXh0O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogR2V0IHJlc3VsdCBmcm9tIHNlcnZlciAqL1xyXG5cdFx0XHRcdHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludCwgeyBwYXJhbXM6IHBhcmFtcywgaGVhZGVyczogaGVhZGVycyB9KVxyXG5cdFx0XHRcdFx0LnBpcGUobWFwKCh4OiBhbnlbXSkgPT4gdGhpcy5tYXBwZXIgPyB0aGlzLm1hcHBlcih4KSA6IHgpKVxyXG5cdFx0XHRcdFx0LnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB4O1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIG1ldGhvZCB0aGF0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkgYWZ0ZXJcclxuXHQgKiBBbmd1bGFyIGhhcyBjb21wbGV0ZWQgaW5pdGlhbGl6YXRpb24gb2YgYSBjb21wb25lbnQncyB2aWV3LlxyXG5cdCAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIHZpZXcgaXMgaW5zdGFudGlhdGVkLlxyXG5cdCAqXHJcblx0ICovXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZWxlY3RFbD8ub3BlbmVkQ2hhbmdlPy5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdGlmICh4ICYmIHRoaXMuZmlsdGVyYWJsZSkge1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGNvbnRyb2wgZm9jdXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdEVsPy5mb2N1cygpO1xyXG5cdFx0dGhpcy5zZWxlY3RFbD8ub3BlbigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHRzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcclxuXHRcdHRoaXMub25TZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuXHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICghdGhpcy52YWx1ZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdEVsPy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gYW4gb3B0aW9uIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlQ2hhbmdlKCRldmVudDogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xyXG5cdFx0dGhpcy5oYW5kbGVJdGVtQ2hhbmdlKCRldmVudC52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGl0ZW0gY2hhbmdlc1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlSXRlbVNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+ICh2YWx1ZSB8fCBbXSkuaW5jbHVkZXMoeFt0aGlzLmtleV0pKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMua2V5XSA9PSB2YWx1ZSlbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBpdGVtIGNoYW5nZXNcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUl0ZW1DaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1DaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+ICh2YWx1ZSB8fCBbXSkuaW5jbHVkZXMoeFt0aGlzLmtleV0pKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm9uSXRlbUNoYW5nZS5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgbGF1bmNoIGJ1dHRvbiBjbGlja1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlTGF1bmNoQ2xpY2tlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uTGF1bmNoLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5rZXldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkxhdW5jaC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRlbHMgZmlsdGVyIGV2ZW50XHJcblx0ICogQHBhcmFtIHNlYXJjaFRleHQgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUZpbHRlcihzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB0aGlzLnNlYXJjaEZpZWxkKHgpPy50b0xvd2VyQ2FzZSgpLnNlYXJjaChzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpID4gLTEpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy50ZXh0XT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIHZhbHVlcyBvZiB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBmb3IgdGhlIHRyaWdnZXJcclxuXHQgKiBAcGFyYW0gb3B0aW9ucyBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VHJpZ2dlclZhbHVlcyhvcHRpb25zOiBNYXRPcHRpb24gfCBNYXRPcHRpb25bXSk6IGFueSB7XHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xyXG5cdFx0XHRyZXR1cm4gKG9wdGlvbnMgfHwgW10pPy5tYXAoeCA9PiB0aGlzLm1hcHBlciA/IHgudmFsdWUgOiB4LnZpZXdWYWx1ZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5tYXBwZXIgPyBvcHRpb25zPy52YWx1ZSA6IG9wdGlvbnM/LnZpZXdWYWx1ZTtcclxuXHRcdH1cclxuXHR9XHJcbn0iLCI8bWF0LXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBpMThuLXBsYWNlaG9sZGVyIFsobmdNb2RlbCldPVwidmFsdWVcIiAjc2VsZWN0PVwibWF0U2VsZWN0XCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiICpuZ0lmPVwiIXJlYWRvbmx5XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgZmxleD5cclxuICAgIDwhLS0gI3JlZ2lvbiBGaWx0ZXIgaW5wdXQgLS0+XHJcbiAgICA8aW5wdXQgI2ZpbHRlcklucHV0ICpuZ0lmPVwiZmlsdGVyYWJsZVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJGaWx0ZXIuLi5cIiBjbGFzcz1cInZkLXNlbGVjdC1maWx0ZXJcIiAoa2V5dXApPVwiaGFuZGxlRmlsdGVyKCRldmVudC50YXJnZXQudmFsdWUpXCI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIFRyaWdnZXIgZm9yIGxhdW5jaCBidXR0b24gLS0+XHJcbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyICpuZ0lmPVwib25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxzcGFuPnt7Z2V0VHJpZ2dlclZhbHVlcyhzZWxlY3Quc2VsZWN0ZWQpfX08L3NwYW4+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidmQtc2VsZWN0LWxhdW5jaFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGhhbmRsZUxhdW5jaENsaWNrZWQodmFsdWUpXCI+bGF1bmNoPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBDdXN0b20gdHJpZ2dlciB0ZW1wbGF0ZSAtLT5cclxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgKm5nSWY9XCIhb25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoICYmIHRyaWdnZXJUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0cmlnZ2VyVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlclRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRyaWdnZXI6IGdldFRyaWdnZXJWYWx1ZXMoc2VsZWN0LnNlbGVjdGVkKSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBPcHRpb24gdGVtcGxhdGUgYXMgdHJpZ2dlciAtLT5cclxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgKm5nSWY9XCIhb25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoICYmICF0cmlnZ2VyVGVtcGxhdGU/LnRlbXBsYXRlUmVmICYmIG9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRyaWdnZXI6IGdldFRyaWdnZXJWYWx1ZXMoc2VsZWN0LnNlbGVjdGVkKSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBEZWZhdWx0IG9wdGlvbiAtLT5cclxuICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwidGMtZ3JleS01MDBcIiAqbmdJZj1cIiFtdWx0aXBsZVwiIGkxOG49XCJAQHBsZWFzZVNlbGVjdFwiPi0tLSBQbGVhc2UgU2VsZWN0IC0tLTwvbWF0LW9wdGlvbj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gT3B0aW9ucyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uIGxldC1maXJzdD1cImZpcnN0XCIgbmdGb3IgW25nRm9yT2ZdPVwiZmlsdGVyZWRPcHRpb25zXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm1hcHBlciA/IG9wdGlvbiA6IG9wdGlvbltrZXldXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIGkxOG49XCJAQHNlbGVjdGlvblwiPntvcHRpb25bdGV4dF0sIHNlbGVjdCwgb3B0aW9uIHtvcHRpb259IG90aGVyIHt7e29wdGlvblt0ZXh0XX19fX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogb3B0aW9uIH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvbWF0LXNlbGVjdD5cclxuXHJcbjwhLS0gI3JlZ2lvbiBSZWFkIG9ubHkgdmFsdWUgLS0+XHJcbjxkaXYgKm5nSWY9XCJyZWFkb25seVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImN1cnJlbnRWYWx1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFvcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW11bHRpcGxlXCIgaTE4bj1cIkBAc2VsZWN0aW9uXCI+e2N1cnJlbnRWYWx1ZVt0ZXh0XSwgc2VsZWN0LCBvcHRpb24ge29wdGlvbn0gb3RoZXIge3t7Y3VycmVudFZhbHVlW3RleHRdfX19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBvcHRpb25WYWx1ZSBvZiBjdXJyZW50VmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpMThuPVwiQEBzZWxlY3Rpb25cIj57b3B0aW9uVmFsdWVbdGV4dF0sIHNlbGVjdCwgb3B0aW9uIHtvcHRpb259IG90aGVyIHt7e29wdGlvblZhbHVlW3RleHRdfX19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwmbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBjdXJyZW50VmFsdWUgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwib25MYXVuY2g/Lm9ic2VydmVycz8ubGVuZ3RoID4gMFwiIGNsYXNzPVwidmQtc2VsZWN0LWxhdW5jaC1yZWFkb25seVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGhhbmRsZUxhdW5jaENsaWNrZWQodmFsdWUpXCI+bGF1bmNoPC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFjdXJyZW50VmFsdWVcIj4mbmJzcDs8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gI2VuZHJlZ2lvbiAtLT4iXX0=
|
package/fesm2015/messaia-cdk.mjs
CHANGED
|
@@ -3186,7 +3186,6 @@ function getFormGroups(origin) {
|
|
|
3186
3186
|
}
|
|
3187
3187
|
/* Sort the groups by index */
|
|
3188
3188
|
Utils.sortArray(groups, 'index');
|
|
3189
|
-
console.log('groups', groups);
|
|
3190
3189
|
return groups;
|
|
3191
3190
|
}
|
|
3192
3191
|
|
|
@@ -11930,7 +11929,9 @@ class GenericReactiveFormComponent extends GenericFormBaseComponent {
|
|
|
11930
11929
|
super.onAfterFormBuild();
|
|
11931
11930
|
if (this.buildFieldGroups && !this.fieldGroups) {
|
|
11932
11931
|
this.fieldGroups = getFormGroups(new this.entityCtor());
|
|
11933
|
-
|
|
11932
|
+
if (this.debug) {
|
|
11933
|
+
console.log('Field groups', this.fieldGroups);
|
|
11934
|
+
}
|
|
11934
11935
|
}
|
|
11935
11936
|
}
|
|
11936
11937
|
/**
|
|
@@ -13859,12 +13860,26 @@ class VdSelectComponent extends AbstractMatFormField {
|
|
|
13859
13860
|
this.filteredOptions = this.options.filter((x) => { var _a; return ((_a = x[this.text]) === null || _a === void 0 ? void 0 : _a.toLowerCase().search(searchText.toLowerCase())) > -1; });
|
|
13860
13861
|
}
|
|
13861
13862
|
}
|
|
13863
|
+
/**
|
|
13864
|
+
* Gets the values of the selected options for the trigger
|
|
13865
|
+
* @param options
|
|
13866
|
+
* @returns
|
|
13867
|
+
*/
|
|
13868
|
+
getTriggerValues(options) {
|
|
13869
|
+
var _a;
|
|
13870
|
+
if (Array.isArray(options)) {
|
|
13871
|
+
return (_a = (options || [])) === null || _a === void 0 ? void 0 : _a.map(x => this.mapper ? x.value : x.viewValue);
|
|
13872
|
+
}
|
|
13873
|
+
else {
|
|
13874
|
+
return this.mapper ? options === null || options === void 0 ? void 0 : options.value : options === null || options === void 0 ? void 0 : options.viewValue;
|
|
13875
|
+
}
|
|
13876
|
+
}
|
|
13862
13877
|
}
|
|
13863
13878
|
/** @nocollapse */ /** @nocollapse */ VdSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdSelectComponent, deps: [{ token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2$1.ErrorStateMatcher }, { token: i3$2.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
13864
|
-
/** @nocollapse */ /** @nocollapse */ VdSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdSelectComponent, selector: "vd-select", inputs: { multiple: "multiple", disabled: "disabled", sorted: "sorted", textPrefix: "textPrefix", endpoint: "endpoint", params: "params", projection: "projection", enum: "enum", key: "key", text: "text", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", sortBy: "sortBy", mapper: "mapper", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdSelectOptionDirective, descendants: true }, { propertyName: "triggerTemplate", first: true, predicate: VdSelectTriggerDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{select.selected
|
|
13879
|
+
/** @nocollapse */ /** @nocollapse */ VdSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: VdSelectComponent, selector: "vd-select", inputs: { multiple: "multiple", disabled: "disabled", sorted: "sorted", textPrefix: "textPrefix", endpoint: "endpoint", params: "params", projection: "projection", enum: "enum", key: "key", text: "text", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", sortBy: "sortBy", mapper: "mapper", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdSelectOptionDirective, descendants: true }, { propertyName: "triggerTemplate", first: true, predicate: VdSelectTriggerDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{getTriggerValues(select.selected)}}</span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\">\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[key]\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[text], select, option {option} other {{{option[text]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\">\r\n <span *ngIf=\"!multiple\" i18n=\"@@selection\">{currentValue[text], select, option {option} other {{{currentValue[text]}}}}</span>\r\n <ng-container *ngIf=\"multiple\">\r\n <span *ngFor=\"let optionValue of currentValue; let last = last\">\r\n <span i18n=\"@@selection\">{optionValue[text], select, option {option} other {{{optionValue[text]}}}}</span>\r\n <span *ngIf=\"!last\">, </span>\r\n </span>\r\n </ng-container>\r\n </span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"onLaunch?.observers?.length > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;color:#000000a3;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0px;top:9px;font-size:18px;cursor:pointer}.vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:#f5f5f5;outline:none}\n"], components: [{ type: i4$2.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4$2.MatSelectTrigger, selector: "mat-select-trigger" }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
13865
13880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: VdSelectComponent, decorators: [{
|
|
13866
13881
|
type: Component,
|
|
13867
|
-
args: [{ selector: 'vd-select', providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{select.selected
|
|
13882
|
+
args: [{ selector: 'vd-select', providers: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }], template: "<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [compareWith]=\"compareWith\" [disabled]=\"disabled\" flex>\r\n <!-- #region Filter input -->\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <!-- #endregion -->\r\n\r\n <!-- #region Trigger for launch button -->\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{getTriggerValues(select.selected)}}</span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom trigger template -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && triggerTemplate?.templateRef\">\r\n <ng-template *ngIf=\"triggerTemplate?.templateRef\" [ngTemplateOutlet]=\"triggerTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Option template as trigger -->\r\n <mat-select-trigger *ngIf=\"!onLaunch?.observers?.length && !triggerTemplate?.templateRef && optionTemplate?.templateRef\">\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ trigger: getTriggerValues(select.selected) }\"></ng-template>\r\n </mat-select-trigger>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Default option -->\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Options -->\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"mapper ? option : option[key]\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[text], select, option {option} other {{{option[text]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n <!-- #endregion -->\r\n</mat-select>\r\n\r\n<!-- #region Read only value -->\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\">\r\n <span *ngIf=\"!multiple\" i18n=\"@@selection\">{currentValue[text], select, option {option} other {{{currentValue[text]}}}}</span>\r\n <ng-container *ngIf=\"multiple\">\r\n <span *ngFor=\"let optionValue of currentValue; let last = last\">\r\n <span i18n=\"@@selection\">{optionValue[text], select, option {option} other {{{optionValue[text]}}}}</span>\r\n <span *ngIf=\"!last\">, </span>\r\n </span>\r\n </ng-container>\r\n </span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"onLaunch?.observers?.length > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\"> </div>\r\n</div>\r\n<!-- #endregion -->", styles: [".vd-select-launch{position:absolute;right:30px;top:-5px;font-size:18px;cursor:pointer}.readonly-value{padding-right:24px;color:#000000a3;min-height:15px}.vd-select-launch-readonly{position:absolute;right:0px;top:9px;font-size:18px;cursor:pointer}.vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:#f5f5f5;outline:none}\n"] }]
|
|
13868
13883
|
}], ctorParameters: function () {
|
|
13869
13884
|
return [{ type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
13870
13885
|
type: Optional
|