@impartner/design-components 2.1.1 → 2.2.0
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/alert/alert.component.mjs +11 -4
- package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs +10 -10
- package/esm2022/lib/datetime-picker/constants/datetime-picker-defaults.mjs +2 -2
- package/esm2022/lib/file-upload/file-upload.module.mjs +14 -6
- package/esm2022/lib/form-field/controls/select/select.component.mjs +4 -1
- package/esm2022/lib/modal/modal.component.mjs +9 -3
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +19 -3
- package/esm2022/lib/table/components/bulk-actions/bulk-actions.component.mjs +6 -1
- package/esm2022/lib/table/constants/table.constants.mjs +1 -2
- package/esm2022/lib/table/containers/table.component.mjs +91 -20
- package/esm2022/lib/table/directives/collapse-monitor.directive.mjs +42 -0
- package/esm2022/lib/table/directives/index.mjs +2 -1
- package/esm2022/lib/table/directives/table-inject-component.directive.mjs +1 -1
- package/esm2022/lib/table/directives/table.directive.mjs +24 -4
- package/esm2022/lib/table/index.mjs +2 -2
- package/esm2022/lib/table/interfaces/cell-renderer.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/collapsible-row-content-context.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/index.mjs +3 -1
- package/esm2022/lib/table/interfaces/sort-by-payload.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-event-payload.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +1 -1
- package/esm2022/lib/table/interfaces/table-row-collapse-change.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-row-item.interface.mjs +1 -1
- package/esm2022/lib/table/table.module.mjs +12 -7
- package/esm2022/lib/text-highlight/text-highlight.component.mjs +9 -4
- package/fesm2022/impartner-design-components.mjs +226 -45
- package/fesm2022/impartner-design-components.mjs.map +1 -1
- package/lib/alert/alert.component.d.ts +5 -1
- package/lib/datetime-picker/components/datetime-picker/datetime-picker.component.d.ts +3 -3
- package/lib/datetime-picker/constants/datetime-picker-defaults.d.ts +1 -1
- package/lib/file-upload/file-upload.module.d.ts +1 -1
- package/lib/modal/modal.component.d.ts +5 -1
- package/lib/progress-bar/progress-bar.component.d.ts +10 -1
- package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +5 -0
- package/lib/table/constants/table.constants.d.ts +0 -1
- package/lib/table/containers/table.component.d.ts +58 -13
- package/lib/table/directives/collapse-monitor.directive.d.ts +12 -0
- package/lib/table/directives/index.d.ts +1 -0
- package/lib/table/directives/table-inject-component.directive.d.ts +2 -2
- package/lib/table/directives/table.directive.d.ts +11 -3
- package/lib/table/index.d.ts +1 -1
- package/lib/table/interfaces/cell-renderer.interface.d.ts +10 -3
- package/lib/table/interfaces/collapsible-row-content-context.interface.d.ts +39 -0
- package/lib/table/interfaces/index.d.ts +2 -0
- package/lib/table/interfaces/sort-by-payload.interface.d.ts +6 -0
- package/lib/table/interfaces/table-column-defs.type.d.ts +30 -6
- package/lib/table/interfaces/table-event-payload.interface.d.ts +8 -1
- package/lib/table/interfaces/table-row-action-payload.interface.d.ts +8 -1
- package/lib/table/interfaces/table-row-action.interface.d.ts +10 -2
- package/lib/table/interfaces/table-row-collapse-change.interface.d.ts +11 -0
- package/lib/table/interfaces/table-row-item.interface.d.ts +3 -4
- package/lib/table/table.module.d.ts +18 -17
- package/package.json +1 -1
|
@@ -32,6 +32,10 @@ export class AlertComponent {
|
|
|
32
32
|
* Removes the Alert icon provided by the theme or projected into the icon area using the `icon` directive.
|
|
33
33
|
*/
|
|
34
34
|
this.hideIcon = false;
|
|
35
|
+
/**
|
|
36
|
+
* Removes the Alert border and background colors to only style icon and text according to theme.
|
|
37
|
+
*/
|
|
38
|
+
this.borderless = false;
|
|
35
39
|
/**
|
|
36
40
|
* Allows the Alert to be dismissed.
|
|
37
41
|
*/
|
|
@@ -53,7 +57,8 @@ export class AlertComponent {
|
|
|
53
57
|
: '';
|
|
54
58
|
const inlineClass = this.inline ? ' alert-inline' : '';
|
|
55
59
|
const dismissibleClass = this.dismissible ? ' alert-dismissible' : '';
|
|
56
|
-
|
|
60
|
+
const borderless = this.borderless ? ' borderless' : '';
|
|
61
|
+
return themeClass + inlineClass + dismissibleClass + borderless;
|
|
57
62
|
}
|
|
58
63
|
get themeIconName() {
|
|
59
64
|
return this.theme === 'warning'
|
|
@@ -74,11 +79,11 @@ export class AlertComponent {
|
|
|
74
79
|
this.dismiss.emit();
|
|
75
80
|
}
|
|
76
81
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", borderless: "borderless", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}.impdc.alert.borderless{border:none;background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
|
|
78
83
|
}
|
|
79
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, decorators: [{
|
|
80
85
|
type: Component,
|
|
81
|
-
args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div
|
|
86
|
+
args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}.impdc.alert.borderless{border:none;background-color:transparent}\n"] }]
|
|
82
87
|
}], propDecorators: { theme: [{
|
|
83
88
|
type: Input
|
|
84
89
|
}], show: [{
|
|
@@ -91,9 +96,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
91
96
|
type: Input
|
|
92
97
|
}], hideIcon: [{
|
|
93
98
|
type: Input
|
|
99
|
+
}], borderless: [{
|
|
100
|
+
type: Input
|
|
94
101
|
}], dismissible: [{
|
|
95
102
|
type: Input
|
|
96
103
|
}], dismiss: [{
|
|
97
104
|
type: Output
|
|
98
105
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFHdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGNBQWM7SUFMM0I7UUFNRTs7V0FFRztRQUVILFVBQUssR0FBZSxTQUFTLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRXRCOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXZCOztXQUVHO1FBQ00sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTVCOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFNUI7O1dBRUc7UUFFSCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQXNDcEM7SUFwQ0MsSUFBSSxnQkFBZ0I7UUFDbEIsTUFBTSxVQUFVLEdBQ2QsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ3RCLENBQUMsQ0FBQyxlQUFlO1lBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU07Z0JBQ3ZCLENBQUMsQ0FBQyxZQUFZO2dCQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVE7b0JBQ3pCLENBQUMsQ0FBQyxjQUFjO29CQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO3dCQUMxQixDQUFDLENBQUMsZUFBZTt3QkFDakIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNULE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLFVBQVUsR0FBRyxXQUFXLEdBQUcsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztZQUM3QixDQUFDLENBQUMsb0JBQW9CO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU07Z0JBQ3ZCLENBQUMsQ0FBQyxhQUFhO2dCQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVE7b0JBQ3pCLENBQUMsQ0FBQyxjQUFjO29CQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTO3dCQUMxQixDQUFDLENBQUMsY0FBYzt3QkFDaEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOzhHQW5GVSxjQUFjO2tHQUFkLGNBQWMsNlJDWjNCLGdrREFxREE7OzJGRHpDYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLDRCQUE0Qjs4QkFTdEMsS0FBSztzQkFESixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1OLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFRoZW1lIH0gZnJvbSAnLi90aGVtZSc7XG5cbi8qKlxuICogVGhlIGBBbGVydENvbXBvbmVudGAgKGA8aW1wZGMtYWxlcnRgIG9yIGA8YW55IGltcGRjLWFsZXJ0YCkgaXMgaW50ZW5kZWQgdG8gc2hvdyBpbmZvcm1hdGlvbiBvciBmZWVkYmFjayBpbmxpbmUgd2l0aCBjb250ZW50LlxuICogVG8gdXNlLCBpbXBvcnQgYEFsZXJ0TW9kdWxlYCBvciBhbm90aGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgYW5kIGV4cG9ydHMgdGhhdCBtb2R1bGUgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLWFsZXJ0LCBbaW1wZGMtYWxlcnRdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdGhlbWUgb2YgdGhlIEFsZXJ0IGFmZmVjdGluZyB0ZXh0LCBpY29ucywgYmFja2dyb3VuZHMsIGFuZCBib3JkZXJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgdGhlbWU6IEFsZXJ0VGhlbWUgPSAnd2FybmluZyc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIEFsZXJ0IHNob3VsZCBiZSBzaG93biBpbW1lZGlhdGVseS5cbiAgICovXG4gIEBJbnB1dCgpIHNob3cgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgdGV4dCBvZiB0aGUgQWxlcnQuIENvbnRlbnQgY2FuIGFsc28gYmUgcHJvamVjdGVkIGluIHRoZSBoZWFkaW5nIGFyZWEgdXNpbmcgYSBgaGVhZGluZ2AgZGlyZWN0aXZlLlxuICAgKi9cbiAgQElucHV0KCkgaGVhZGluZ1RleHQgPSAnJztcblxuICAvKipcbiAgICogVGhlIGJvZHkgdGV4dCBvZiB0aGUgQWxlcnQuIENvbnRlbnQgY2FuIGFsc28gYmUgcHJvamVjdGVkIGludG8gdGhlIGJvZHkgYXJlYSB1c2luZyBkZWZhdWx0IHByb2plY3Rpb24uXG4gICAqL1xuICBASW5wdXQoKSBib2R5VGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBhbiBBbGVydCBpcyBhIFwiZmxvYXRpbmdcIiBub3RpZmljYXRpb24uIFdoZW4gc2V0IHRvIFwiaW5saW5lXCIsIHRoZXNlIFwiZmxvYXRpbmdcIiBzdHlsZXMgYXJlIHJlcGxhY2VkLlxuICAgKi9cbiAgQElucHV0KCkgaW5saW5lID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIEFsZXJ0IGljb24gcHJvdmlkZWQgYnkgdGhlIHRoZW1lIG9yIHByb2plY3RlZCBpbnRvIHRoZSBpY29uIGFyZWEgdXNpbmcgdGhlIGBpY29uYCBkaXJlY3RpdmUuXG4gICAqL1xuICBASW5wdXQoKSBoaWRlSWNvbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBBbGVydCBib3JkZXIgYW5kIGJhY2tncm91bmQgY29sb3JzIHRvIG9ubHkgc3R5bGUgaWNvbiBhbmQgdGV4dCBhY2NvcmRpbmcgdG8gdGhlbWUuXG4gICAqL1xuICBASW5wdXQoKSBib3JkZXJsZXNzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgQWxlcnQgdG8gYmUgZGlzbWlzc2VkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzbWlzc2libGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIEFsZXJ0IGlzIGRpc21pc3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBjb21wb25lbnRDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGhlbWVDbGFzcyA9XG4gICAgICB0aGlzLnRoZW1lID09PSAnd2FybmluZydcbiAgICAgICAgPyAnYWxlcnQtd2FybmluZydcbiAgICAgICAgOiB0aGlzLnRoZW1lID09PSAnaW5mbydcbiAgICAgICAgPyAnYWxlcnQtaW5mbydcbiAgICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgICA/ICdhbGVydC1kYW5nZXInXG4gICAgICAgIDogdGhpcy50aGVtZSA9PT0gJ3N1Y2Nlc3MnXG4gICAgICAgID8gJ2FsZXJ0LXN1Y2Nlc3MnXG4gICAgICAgIDogJyc7XG4gICAgY29uc3QgaW5saW5lQ2xhc3MgPSB0aGlzLmlubGluZSA/ICcgYWxlcnQtaW5saW5lJyA6ICcnO1xuICAgIGNvbnN0IGRpc21pc3NpYmxlQ2xhc3MgPSB0aGlzLmRpc21pc3NpYmxlID8gJyBhbGVydC1kaXNtaXNzaWJsZScgOiAnJztcbiAgICBjb25zdCBib3JkZXJsZXNzID0gdGhpcy5ib3JkZXJsZXNzID8gJyBib3JkZXJsZXNzJyA6ICcnO1xuICAgIHJldHVybiB0aGVtZUNsYXNzICsgaW5saW5lQ2xhc3MgKyBkaXNtaXNzaWJsZUNsYXNzICsgYm9yZGVybGVzcztcbiAgfVxuXG4gIGdldCB0aGVtZUljb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICd3YXJuaW5nJ1xuICAgICAgPyAnZXhjbGFtYXRpb24tY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnaW5mbydcbiAgICAgID8gJ2luZm8tY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgPyAndGltZXMtY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnc3VjY2VzcydcbiAgICAgID8gJ2NoZWNrLWNpcmNsZSdcbiAgICAgIDogJyc7XG4gIH1cblxuICBjbG9zZUFsZXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwiaW1wZGMgYWxlcnRcIiBbbmdDbGFzc109XCJjb21wb25lbnRDbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUljb25cIj5cbiAgICA8c3BhbiAjYWxlcnRJY29uIFtoaWRkZW5dPVwiIWFsZXJ0SWNvbi5jaGlsZHJlbi5sZW5ndGhcIiBjbGFzcz1cImFsZXJ0LWljb25cIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpY29uXVwiPjwvbmctY29udGVudD5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWxlcnRJY29uLmNoaWxkcmVuLmxlbmd0aFwiIGNsYXNzPVwiYWxlcnQtaWNvblwiPlxuICAgICAgPHNwYW4gaW1wZGMtaWNvbiBbbmFtZV09XCJ0aGVtZUljb25OYW1lXCI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWxlcnQtY29udGVudFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2FsZXJ0LWNvbnRlbnQtaGVhZGluZy1vbmx5JzpcbiAgICAgICAgIWJvZHlUZXh0ICYmXG4gICAgICAgICFwcm9qZWN0ZWRCb2R5LmNoaWxkcmVuLmxlbmd0aCAmJlxuICAgICAgICAhcHJvamVjdGVkQm9keS5pbm5lckhUTUwgJiZcbiAgICAgICAgIWFsZXJ0QWN0aW9ucy5jaGlsZHJlbi5sZW5ndGhcbiAgICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkaW5nXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGluZ1RleHRcIj57eyBoZWFkaW5nVGV4dCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAjYm9keUNvbnRlbnRcbiAgICAgIGNsYXNzPVwiYWxlcnQtYm9keVwiXG4gICAgICBbaGlkZGVuXT1cIiFib2R5Q29udGVudC5jaGlsZHJlbi5sZW5ndGhcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJib2R5VGV4dFwiPnt7IGJvZHlUZXh0IH19PC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI3Byb2plY3RlZEJvZHlcbiAgICAgICAgW2hpZGRlbl09XCIhcHJvamVjdGVkQm9keS5jaGlsZHJlbi5sZW5ndGggJiYgIXByb2plY3RlZEJvZHkuaW5uZXJIVE1MXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICNhbGVydEFjdGlvbnNcbiAgICAgICAgW2hpZGRlbl09XCIhYWxlcnRBY3Rpb25zLmNoaWxkcmVuLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiYWxlcnQtYWN0aW9uc1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYWN0aW9uXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8YVxuICAgICpuZ0lmPVwiZGlzbWlzc2libGVcIlxuICAgIGNsYXNzPVwiY2xvc2UtaWNvblwiXG4gICAgKGNsaWNrKT1cImNsb3NlQWxlcnQoKVwiXG4gICAgZGF0YS1icy1kaXNtaXNzPVwiYWxlcnRcIlxuICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgIDxzcGFuIGltcGRjLWljb24gbmFtZT1cInRpbWVzXCIgdGhlbWU9XCJyZWd1bGFyXCI+PC9zcGFuPlxuICA8L2E+XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/lib/datetime-picker/components/datetime-picker/datetime-picker.component.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { NgbDateAdapter, NgbDatepicker, NgbDatepickerModule, NgbTimepickerModule
|
|
|
6
6
|
import { nanoid } from 'nanoid';
|
|
7
7
|
import { Subject, debounceTime } from 'rxjs';
|
|
8
8
|
import { IMPDC_FORM_ROOT, ImpdcFormFieldControl, ImpdcFormsModule, mixinDisabled, mixinErrorState, mixinTabIndex } from '../../../form-field';
|
|
9
|
-
import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE,
|
|
9
|
+
import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE, DEFAULT_USE_24HR_TIME_LABEL } from '../../constants';
|
|
10
10
|
import { DatepickerTemplateHostComponent } from '../datepicker-template-host';
|
|
11
11
|
import { DatetimePickerInputFooterComponent } from '../datetime-picker-input-footer';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
@@ -91,7 +91,7 @@ export class DatetimePickerComponent extends _DatetimePickerComponentBase {
|
|
|
91
91
|
this.formGroup = inject(FormBuilder).group({
|
|
92
92
|
date: new FormControl(null),
|
|
93
93
|
time: new FormControl(null),
|
|
94
|
-
|
|
94
|
+
use24hrTime: new FormControl(false, { nonNullable: true })
|
|
95
95
|
});
|
|
96
96
|
this.cvaOnChange = (_) => { };
|
|
97
97
|
this.cvaOnTouched = () => { };
|
|
@@ -101,7 +101,7 @@ export class DatetimePickerComponent extends _DatetimePickerComponentBase {
|
|
|
101
101
|
/**
|
|
102
102
|
* Label to be displayed with time controls to allow the user to input 24-hour or meridian-based (AM, PM) time.
|
|
103
103
|
*/
|
|
104
|
-
this.meridianToggleLabel =
|
|
104
|
+
this.meridianToggleLabel = DEFAULT_USE_24HR_TIME_LABEL;
|
|
105
105
|
/**
|
|
106
106
|
* Set whether to display controls for selecting a time value in addition to the date.
|
|
107
107
|
*/
|
|
@@ -243,11 +243,11 @@ export class DatetimePickerComponent extends _DatetimePickerComponentBase {
|
|
|
243
243
|
return this._focused;
|
|
244
244
|
}
|
|
245
245
|
/* Internals */
|
|
246
|
-
get
|
|
247
|
-
return this.formGroup.getRawValue().
|
|
246
|
+
get use24hrTime() {
|
|
247
|
+
return this.formGroup.getRawValue().use24hrTime;
|
|
248
248
|
}
|
|
249
|
-
get
|
|
250
|
-
return this.meridianToggleLabel?.trim() ||
|
|
249
|
+
get use24hrTimeLabelText() {
|
|
250
|
+
return this.meridianToggleLabel?.trim() || DEFAULT_USE_24HR_TIME_LABEL;
|
|
251
251
|
}
|
|
252
252
|
handleFocusOut(evt) {
|
|
253
253
|
if (!evt.relatedTarget ||
|
|
@@ -294,7 +294,7 @@ export class DatetimePickerComponent extends _DatetimePickerComponentBase {
|
|
|
294
294
|
provide: ImpdcFormFieldControl,
|
|
295
295
|
useExisting: DatetimePickerComponent
|
|
296
296
|
}
|
|
297
|
-
], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: NgbDatepicker, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"
|
|
297
|
+
], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: NgbDatepicker, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"use24hrTimeLabelText\"\n formControlName=\"use24hrTime\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"!use24hrTime\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n", styles: [":host{display:block}ngb-datepicker{border:0}ngb-timepicker{font-size:var(--impd-font-size-sm)}::ng-deep .ngb-dp-header{display:none}::ng-deep .ngb-tp-spacer{width:var(--impd-size-4)}.impdc-datetime-picker--datepicker,.impdc-datetime-picker--timepicker{max-width:312px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: NgbDatepickerModule }, { kind: "component", type: i4.NgbDatepicker, selector: "ngb-datepicker", inputs: ["contentTemplate", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "maxDate", "minDate", "navigation", "outsideDays", "showWeekNumbers", "startDate", "weekdays"], outputs: ["navigate", "dateSelect"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: NgbTimepickerModule }, { kind: "component", type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "component", type: DatepickerTemplateHostComponent, selector: "impdc-datepicker-template-host" }, { kind: "ngmodule", type: ImpdcFormsModule }, { kind: "directive", type: i5.RootFormGroupDirective, selector: "[formGroup]" }, { kind: "component", type: i6.CheckboxComponent, selector: "impdc-checkbox", inputs: ["tabIndex", "id", "label", "description", "isSwitch", "switchIcons", "inline", "layout", "checked", "indeterminate", "disabled", "errorStateMatcher", "required"], outputs: ["change", "indeterminateChange"], exportAs: ["impdcCheckControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
298
298
|
}
|
|
299
299
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: DatetimePickerComponent, decorators: [{
|
|
300
300
|
type: Component,
|
|
@@ -324,7 +324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
324
324
|
provide: ImpdcFormFieldControl,
|
|
325
325
|
useExisting: DatetimePickerComponent
|
|
326
326
|
}
|
|
327
|
-
], template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"
|
|
327
|
+
], template: "<impdc-datepicker-template-host #templateHost></impdc-datepicker-template-host>\n<div\n [formGroup]=\"formGroup\"\n class=\"d-flex\"\n [ngClass]=\"{\n 'flex-column': withTime && timeLayout.layout === 'stacked'\n }\"\n (focusout)=\"handleFocusOut($event)\">\n <ngb-datepicker\n class=\"impdc-datetime-picker--datepicker\"\n formControlName=\"date\"\n [dayTemplate]=\"templateHost.dayTemplateRef\"\n [contentTemplate]=\"templateHost.contentTemplateRef\"\n [showWeekNumbers]=\"false\"\n outsideDays=\"visible\"\n [weekdays]=\"NgTranslationWidth.Abbreviated\"\n [markDisabled]=\"markDateDisabledFn\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\" />\n @if (withTime) {\n <div\n class=\"impdc-datetime-picker--timepicker d-flex flex-column gap-4 p-4 w-100\"\n [ngClass]=\"{\n 'border-0': !timeLayout.border,\n 'border-gray-200': timeLayout.border,\n 'mt-2': timeLayout.layout === 'stacked',\n 'border-top': timeLayout.border && timeLayout.layout === 'stacked',\n 'ms-2': timeLayout.layout === 'inline',\n 'border-start': timeLayout.border && timeLayout.layout === 'inline'\n }\">\n <impdc-checkbox\n [label]=\"use24hrTimeLabelText\"\n formControlName=\"use24hrTime\"\n [isSwitch]=\"true\"\n layout=\"check-end\" />\n <ngb-timepicker\n formControlName=\"time\"\n [meridian]=\"!use24hrTime\"\n [seconds]=\"false\"\n [spinners]=\"false\"\n size=\"medium\"></ngb-timepicker>\n </div>\n }\n</div>\n", styles: [":host{display:block}ngb-datepicker{border:0}ngb-timepicker{font-size:var(--impd-font-size-sm)}::ng-deep .ngb-dp-header{display:none}::ng-deep .ngb-tp-spacer{width:var(--impd-size-4)}.impdc-datetime-picker--datepicker,.impdc-datetime-picker--timepicker{max-width:312px}\n"] }]
|
|
328
328
|
}], ctorParameters: () => [{ type: i1.ErrorStateMatcher }, { type: undefined, decorators: [{
|
|
329
329
|
type: Optional
|
|
330
330
|
}, {
|
|
@@ -367,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
367
367
|
type: Input,
|
|
368
368
|
args: [{ transform: booleanAttribute }]
|
|
369
369
|
}] } });
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZXRpbWUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFFVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxXQUFXLEVBQ1gsV0FBVyxFQUlYLG1CQUFtQixFQUNuQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsY0FBYyxFQUVkLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ3BCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3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LHNCQUFzQixFQUFFLHFCQUFxQjt3QkFDN0MscUJBQXFCLEVBQUUsWUFBWTt3QkFDbkMsb0JBQW9CLEVBQUUsWUFBWTt3QkFDbEMsa0NBQWtDLEVBQUUsTUFBTTt3QkFDMUMseUNBQXlDLEVBQUUsVUFBVTt3QkFDckQseUNBQXlDLEVBQUUsVUFBVTt3QkFDckQsd0NBQXdDLEVBQUUsWUFBWTt3QkFDdEQsc0NBQXNDLEVBQUUsT0FBTzt3QkFDL0MsU0FBUyxFQUFFLHFCQUFxQjtxQkFDakMsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLHlCQUF5Qjt5QkFDckM7cUJBQ0Y7OzBCQTBIRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFDUixRQUFROzswQkFDUixJQUFJOzswQkFBSSxRQUFRO3lDQTlGVCxhQUFhO3NCQUR0QixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBV25DLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFZSyxPQUFPO3NCQURqQixLQUFLO2dCQWVLLE9BQU87c0JBRGpCLEtBQUs7Z0JBYUssVUFBVTtzQkFEcEIsS0FBSztnQkFnQkMsbUJBQW1CO3NCQUR6QixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFJVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBU1UsV0FBVztzQkFEMUIsTUFBTTtnQkFTUyxJQUFJO3NCQUZuQixNQUFNO2dCQXVJSSxLQUFLO3NCQURmLEtBQUs7Z0JBU0ssRUFBRTtzQkFEWixLQUFLO2dCQWlCSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIFRyYW5zbGF0aW9uV2lkdGggfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE5nYkRhdGVBZGFwdGVyLFxuICBOZ2JEYXRlU3RydWN0LFxuICBOZ2JEYXRlcGlja2VyLFxuICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxuICBOZ2JUaW1lcGlja2VyTW9kdWxlXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gJ25hbm9pZCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgRXJyb3JTdGF0ZU1hdGNoZXIsXG4gIElDYW5VcGRhdGVFcnJvclN0YXRlLFxuICBJSGFzRXJyb3JTdGF0ZSxcbiAgSU1QRENfRk9STV9ST09ULFxuICBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gIEltcGRjRm9ybVJvb3QsXG4gIEltcGRjRm9ybXNNb2R1bGUsXG4gIG1peGluRGlzYWJsZWQsXG4gIG1peGluRXJyb3JTdGF0ZSxcbiAgbWl4aW5UYWJJbmRleFxufSBmcm9tICcuLi8uLi8uLi9mb3JtLWZpZWxkJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUFYX0RBVEUsXG4gIERFRkFVTFRfTUlOX0RBVEUsXG4gIERFRkFVTFRfVVNFX01FUklESUFOX0xBQkVMXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJRGF0ZXRpbWVQaWNrZXJWYWx1ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IERhdGVwaWNrZXJUZW1wbGF0ZUhvc3RDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLXRlbXBsYXRlLWhvc3QnO1xuaW1wb3J0IHsgRGF0ZXRpbWVQaWNrZXJJbnB1dEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGV0aW1lLXBpY2tlci1pbnB1dC1mb290ZXInO1xuXG5pbnRlcmZhY2UgSVRpbWVPcHRpb25zIHtcbiAgcmVhZG9ubHkgYm9yZGVyOiBib29sZWFuO1xuICByZWFkb25seSBsYXlvdXQ6ICdpbmxpbmUnIHwgJ3N0YWNrZWQnO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0xBWU9VVDogSVRpbWVPcHRpb25zID0ge1xuICBib3JkZXI6IGZhbHNlLFxuICBsYXlvdXQ6ICdpbmxpbmUnXG59IGFzIGNvbnN0O1xuXG5jb25zdCBfRGF0ZXRpbWVQaWNrZXJDb21wb25lbnRCYXNlID0gbWl4aW5UYWJJbmRleChcbiAgbWl4aW5EaXNhYmxlZChcbiAgICBtaXhpbkVycm9yU3RhdGUoXG4gICAgICBjbGFzcyB7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgICBwdWJsaWMgX2Zvcm1Sb290OiBJbXBkY0Zvcm1Sb290LFxuICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgICAgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbFxuICAgICAgICApIHt9XG4gICAgICB9XG4gICAgKVxuICApXG4pO1xuXG4vKipcbiAqIEEgY29udHJvbCBmb3Igc2VsZWN0aW5nIGRhdGUgb3IgZGF0ZXRpbWUgdmlhIGFuIGlubGluZSBjYWxlbmRhciBjb250cm9sLlxuICpcbiAqIEltcGxlbWVudHMgW0NvbnRyb2xWYWx1ZUFjY2Vzc29yXShodHRwczovL2FuZ3VsYXIuaW8vYXBpL2Zvcm1zL0NvbnRyb2xWYWx1ZUFjY2Vzc29yKSB0byBzdXBwb3J0IHR3by13YXkgYmluZGluZyB3aXRoXG4gKiBBbmd1bGFyIGZvcm1zIHZpYSB1c2FnZSBvZiB0aGUgXFxgWyhuZ01vZGVsKV1cXGAsIFxcYFtmb3JtQ29udHJvbF1cXGAsIGFuZCBcXGBbZm9ybUNvbnRyb2xOYW1lXVxcYCBkaXJlY3RpdmVzLlxuICpcbiAqIFRoZSBkYXRlIGFuZCB0aW1lIGNvbnRyb2xzIGluc2lkZSB0aGlzIGNvbXBvbmVudCBsZXZlcmFnZSB0aGUgdmFsdWUgYWRhcHRlciBwYXR0ZXJucyBhbmQgc2VydmljZXMgb2YgTkctQm9vdHN0cmFwJ3NcbiAqIFtEYXRlcGlja2VyXShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvb3ZlcnZpZXcjZGF0ZS1tb2RlbCkgYW5kXG4gKiBbVGltZXBpY2tlcl0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy90aW1lcGlja2VyL2V4YW1wbGVzI2FkYXB0ZXIpIGNvbXBvbmVudHMgd2hlbiB3b3JraW5nIHdpdGggaW5wdXQgdmFsdWVzLlxuICogVGhpcyBtZWFucyB0aGF0IGBkYXRlYCB2YWx1ZXMgd2lsbCBiZSBbTmdiRGF0ZVN0cnVjdF0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JEYXRlU3RydWN0KVxuICogb2JqZWN0cyBhbmQgYHRpbWVgIHZhbHVlcyB3aWxsIGJlIFtOZ2JUaW1lU3RydWN0XShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL3RpbWVwaWNrZXIvYXBpI05nYlRpbWVTdHJ1Y3QpIG9iamVjdHNcbiAqIGJ5IGRlZmF1bHQsIGFuZCB0aGUgW05nYkRhdGVBZGFwdGVyXShodHRwczovL25nLWJvb3RzdHJhcC5naXRodWIuaW8vIy9jb21wb25lbnRzL2RhdGVwaWNrZXIvYXBpI05nYkRhdGVBZGFwdGVyKSBhbmRcbiAqIFtOZ2JUaW1lQWRhcHRlcl0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy90aW1lcGlja2VyL2FwaSNOZ2JUaW1lQWRhcHRlcikgc2VydmljZXMgd2lsbCBiZSB1c2VkIHRvIGhhbmRsZSB0aGVtIHJlc3BlY3RpdmVseS5cbiAqIElmIHVzYWdlIG9mIGFsdGVybmF0aXZlIGRhdGUgYW5kIHRpbWUgbW9kZWxzIGlzIGRlc2lyZWQsIGNvbnN1bHQgTkctQm9vdHN0cmFwJ3MgZG9jdW1lbnRhdGlvbiBmb3IgZGlyZWN0aW9ucy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtZGF0ZXRpbWUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nYkRhdGVwaWNrZXJNb2R1bGUsXG4gICAgTmdiVGltZXBpY2tlck1vZHVsZSxcbiAgICBEYXRlcGlja2VyVGVtcGxhdGVIb3N0Q29tcG9uZW50LFxuICAgIERhdGV0aW1lUGlja2VySW5wdXRGb290ZXJDb21wb25lbnQsXG4gICAgSW1wZGNGb3Jtc01vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndGFiSW5kZXgnXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAnW2F0dHIuYXJpYS1yZXF1aXJlZF0nOiAncmVxdWlyZWQudG9TdHJpbmcoKScsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaXMtaW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1mb3JtLWZpZWxkLWNvbnRyb2xdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuaW1wZGMtZGF0ZXRpbWUtcGlja2VyLS1yZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtZGF0ZXRpbWUtcGlja2VyLS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtZGF0ZXRpbWUtcGlja2VyLS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmltcGRjLWRhdGV0aW1lLXBpY2tlci0tZW1wdHldJzogJ2VtcHR5JyxcbiAgICAnKGZvY3VzKSc6ICdfb25Gb2N1cygpOyBmb2N1cygpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogRGF0ZXRpbWVQaWNrZXJDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnRcbiAgZXh0ZW5kcyBfRGF0ZXRpbWVQaWNrZXJDb21wb25lbnRCYXNlXG4gIGltcGxlbWVudHNcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBEb0NoZWNrLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIEltcGRjRm9ybUZpZWxkQ29udHJvbDxJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxhbnksIGFueT4gfCBudWxsPixcbiAgICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgICBJSGFzRXJyb3JTdGF0ZVxue1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3RFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZ2JEYXRlQWRhcHRlciA9IGluamVjdChOZ2JEYXRlQWRhcHRlcjxhbnk+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdWlkID0gYGltcGRjLWRhdGV0aW1lLXBpY2tlci0ke25hbm9pZCgpfWA7XG4gIHByaXZhdGUgX3ByZXZpb3VzQ29udHJvbD86IEFic3RyYWN0Q29udHJvbCB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IE5nVHJhbnNsYXRpb25XaWR0aCA9IFRyYW5zbGF0aW9uV2lkdGg7XG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtR3JvdXAgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLmdyb3VwKHtcbiAgICBkYXRlOiBuZXcgRm9ybUNvbnRyb2w8YW55PihudWxsKSxcbiAgICB0aW1lOiBuZXcgRm9ybUNvbnRyb2w8YW55PihudWxsKSxcbiAgICB1c2VNZXJpZGlhbjogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4+KHRydWUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSlcbiAgfSk7XG4gIHByb3RlY3RlZCBjdmFPbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICBwcm90ZWN0ZWQgY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgQFZpZXdDaGlsZChOZ2JEYXRlcGlja2VyLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgbmdiRGF0ZXBpY2tlciE6IE5nYkRhdGVwaWNrZXI7XG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBjYW4gYmUgZXZhbHVhdGVkIHRvIGRlY2lkZSBpZiBhIGdpdmVuIGRhdGUgaXMgZGlzYWJsZWRcbiAgICogaW4gdGhlIGNhbGVuZGFyIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlIEFuIFtgTmdiRGF0ZWBdKGh0dHBzOi8vbmctYm9vdHN0cmFwLmdpdGh1Yi5pby8jL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9hcGkjTmdiRGF0ZSkgdmFsdWUgZGVzY3JpYmluZyB0aGUgc2luZ3VsYXIgZGF0ZSBiZWluZyBldmFsdWF0ZWQuXG4gICAqIEBwYXJhbSBjdXJyZW50IFRoZSBtb250aCBhbmQgeWVhciBzZWxlY3RlZCBmb3IgdGhlIGN1cnJlbnQgY2FsZW5kYXIgdmlldy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXJrRGF0ZURpc2FibGVkPzogKFxuICAgIGRhdGU6IE5nYkRhdGVTdHJ1Y3QsXG4gICAgY3VycmVudD86IHsgbW9udGg6IG51bWJlcjsgeWVhcjogbnVtYmVyIH1cbiAgKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZWFybGllc3QgYWxsb3dhYmxlIGRhdGUgZm9yIGRpc3BsYXkgb3Igc2VsZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7IHllYXI6IDE5MDAsIG1vbnRoOiAxLCBkYXk6IDEgfVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBtaW5EYXRlKCk6IE5nYkRhdGVTdHJ1Y3Qge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX21pbkRhdGUgfTtcbiAgfVxuICBwdWJsaWMgc2V0IG1pbkRhdGUodmFsdWU6IE5nYkRhdGVTdHJ1Y3QgfCBudWxsKSB7XG4gICAgdGhpcy5fbWluRGF0ZSA9IHZhbHVlIHx8IERFRkFVTFRfTUlOX0RBVEU7XG4gIH1cbiAgcHJpdmF0ZSBfbWluRGF0ZTogTmdiRGF0ZVN0cnVjdCA9IERFRkFVTFRfTUlOX0RBVEU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgYWxsb3dhYmxlIGRhdGUgZm9yIGRpc3BsYXkgb3Igc2VsZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7IHllYXI6IDIwOTksIG1vbnRoOiAxMiwgZGF5OiAzMSB9XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG1heERhdGUoKTogTmdiRGF0ZVN0cnVjdCB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fbWF4RGF0ZSB9O1xuICB9XG4gIHB1YmxpYyBzZXQgbWF4RGF0ZSh2YWx1ZTogTmdiRGF0ZVN0cnVjdCB8IG51bGwpIHtcbiAgICB0aGlzLl9tYXhEYXRlID0gdmFsdWUgfHwgREVGQVVMVF9NQVhfREFURTtcbiAgfVxuICBwcml2YXRlIF9tYXhEYXRlOiBOZ2JEYXRlU3RydWN0ID0gREVGQVVMVF9NQVhfREFURTtcblxuICAvKipcbiAgICogQ29uZmlndXJhYmxlIG9wdGlvbnMgZm9yIHNldHRpbmcgdGhlIGxheW91dCBvZiB0aGUgZGF0ZSBhbmQgdGltZSBjb250cm9scyB3aXRoaW4gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdGltZUxheW91dCgpOiBJVGltZU9wdGlvbnMge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX3RpbWVMYXlvdXQgfTtcbiAgfVxuICBwdWJsaWMgc2V0IHRpbWVMYXlvdXQodmFsdWU6IFBhcnRpYWw8SVRpbWVPcHRpb25zPikge1xuICAgIHRoaXMuX3RpbWVMYXlvdXQgPSB7XG4gICAgICAuLi5ERUZBVUxUX1RJTUVfTEFZT1VULFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuICB9XG4gIHByaXZhdGUgX3RpbWVMYXlvdXQ6IElUaW1lT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9USU1FX0xBWU9VVCB9O1xuXG4gIC8qKlxuICAgKiBMYWJlbCB0byBiZSBkaXNwbGF5ZWQgd2l0aCB0aW1lIGNvbnRyb2xzIHRvIGFsbG93IHRoZSB1c2VyIHRvIGlucHV0IDI0LWhvdXIgb3IgbWVyaWRpYW4tYmFzZWQgKEFNLCBQTSkgdGltZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXJpZGlhblRvZ2dsZUxhYmVsOiBzdHJpbmcgPSBERUZBVUxUX1VTRV9NRVJJRElBTl9MQUJFTDtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgdG8gZGlzcGxheSBjb250cm9scyBmb3Igc2VsZWN0aW5nIGEgdGltZSB2YWx1ZSBpbiBhZGRpdGlvbiB0byB0aGUgZGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3aXRoVGltZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBlcnJvclN0YXRlTWF0Y2hlciE6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gIC8qKlxuICAgKiBFdmVudHMgZmlyZSB3aGVuIHJhdyB2YWx1ZSBvZiBwaWNrZXIgaW5wdXQgY2hhbmdlcy4gTWFpbmx5IGV4aXN0cyB0byBoYW5kbGVcbiAgICogdHdvLXdheSBiaW5kaW5nIG9mIGB2YWx1ZWAgaW5wdXQgcHJvcGVydHkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxcbiAgICBhbnksXG4gICAgYW55XG4gID4gfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8SURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+IHwgbnVsbD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHB1YmxpYyByZWFkb25seSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSU1QRENfRk9STV9ST09UKSBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICBfZm9ybVJvb3QsXG4gICAgICBfcGFyZW50Rm9ybSxcbiAgICAgIF9wYXJlbnRGb3JtR3JvdXAsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm5nYkRhdGVwaWNrZXIuZm9jdXMoKTtcbiAgfVxuXG4gIC8qIExpZmVjeWNsZSBIb29rcyAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICBpZiAoIW5nQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IG5nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIG5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IHRoaXMuZGlzYWJsZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gbmdDb250cm9sPy5kaXNhYmxlZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJldmlvdXNDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIE1hbmFnaW5nIGRpc2FibGVkIHN0YXRlIGlzIGhhbmRsZWQgdmlhIHRoZSBgbWl4aW5EaXNhYmxlZGAgbWl4aW4vZ2VuZXJhdG9yLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBzaWduYWxcbiAgICAvLyB0byB0aGUgcGFyZW50IGZvcm0gZmllbGQgc28gaXQgY2FuIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gZGlzYWJsZWQgc3RhdGUgaXMgY2hhbmdlZC5cbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLCBkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlVmFsdWUgPSB0aGlzLl9nZXRWYWx1ZUZyb21Gb3JtTW9kZWwoZm9ybVZhbHVlKTtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZShjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIHRoaXMuY3ZhT25Ub3VjaGVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxhbnksIGFueT4gfCBhbnkpOiB2b2lkIHtcbiAgICBsZXQgbmV3VmFsdWU6IFBhcnRpYWw8SURhdGV0aW1lUGlja2VyVmFsdWU+ID0ge307XG4gICAgaWYgKG9iaiAmJiAnZGF0ZScgaW4gb2JqKSB7XG4gICAgICBuZXdWYWx1ZSA9IHtcbiAgICAgICAgLi4ubmV3VmFsdWUsXG4gICAgICAgIGRhdGU6IG9iai5kYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpdGhUaW1lICYmIG9iaiAmJiAndGltZScgaW4gb2JqKSB7XG4gICAgICBuZXdWYWx1ZSA9IHtcbiAgICAgICAgLi4ubmV3VmFsdWUsXG4gICAgICAgIHRpbWU6IG9iai50aW1lXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUobmV3VmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBpZiAoJ2RhdGUnIGluIG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXIuZm9jdXNEYXRlKFxuICAgICAgICB0aGlzLl9uZ2JEYXRlQWRhcHRlci5mcm9tTW9kZWwobmV3VmFsdWUuZGF0ZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wgKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZUZyb21Gb3JtTW9kZWwodGhpcy5mb3JtR3JvdXAudmFsdWUpO1xuICB9XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGwpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9pZCE6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgcmVxdWlyZWRuZXNzIG9mIGNvbnRyb2wgaW4gYSB0ZW1wbGF0ZS1iYXNlZCBtYW5uZXI7XG4gICAqIG5vdCBuZWNlc3Nhcnkgd2hlbiB1c2luZyB0aGUgQW5ndWxhciByZWFjdGl2ZSBmb3JtcyBBUEkgYW5kIGByZXF1aXJlZGAgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX3JlcXVpcmVkID8/XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/XG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZDtcbiAgfVxuICBwcm90ZWN0ZWQgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbXBkYy1kYXRldGltZS1waWNrZXInO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNBZmZpeGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogSW50ZXJuYWxzICovXG5cbiAgcHJvdGVjdGVkIGdldCB1c2VNZXJpZGlhbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKS51c2VNZXJpZGlhbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdXNlTWVyaWRpYW5MYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tZXJpZGlhblRvZ2dsZUxhYmVsPy50cmltKCkgfHwgREVGQVVMVF9VU0VfTUVSSURJQU5fTEFCRUw7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRm9jdXNPdXQoZXZ0OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIWV2dC5yZWxhdGVkVGFyZ2V0IHx8XG4gICAgICAhdGhpcy5faG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldnQucmVsYXRlZFRhcmdldClcbiAgICApIHtcbiAgICAgIHRoaXMuX29uQmx1cihldnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFZhbHVlRnJvbUZvcm1Nb2RlbChcbiAgICBmb3JtVmFsdWU6IFBhcnRpYWw8eyBkYXRlOiBhbnk7IHRpbWU6IGFueTsgdXNlTWVyaWRpYW46IGFueSB9PlxuICApOiBJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxhbnksIGFueT4gfCBudWxsIHtcbiAgICBpZiAoIWZvcm1WYWx1ZS5kYXRlICYmICFmb3JtVmFsdWUudGltZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogSURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+ID0ge1xuICAgICAgZGF0ZTogZm9ybVZhbHVlLmRhdGVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMud2l0aFRpbWUpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICB0aW1lOiBmb3JtVmFsdWUudGltZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF0ZUlzT3V0c2lkZUN1cnJlbnRNb250aChcbiAgICBkYXRlOiBOZ2JEYXRlU3RydWN0LFxuICAgIGN1cnJlbnQ/OiB7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlciB9XG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWN1cnJlbnQgJiYgZGF0ZS5tb250aCAhPT0gY3VycmVudC5tb250aDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBtYXJrRGF0ZURpc2FibGVkRm4gPSAoXG4gICAgZGF0ZTogTmdiRGF0ZVN0cnVjdCxcbiAgICBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfVxuICApID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fZGF0ZUlzT3V0c2lkZUN1cnJlbnRNb250aChkYXRlLCBjdXJyZW50KSB8fFxuICAgICAgKCEhdGhpcy5tYXJrRGF0ZURpc2FibGVkICYmIHRoaXMubWFya0RhdGVEaXNhYmxlZChkYXRlLCBjdXJyZW50KSlcbiAgICApO1xuICB9O1xuXG4gIHByb3RlY3RlZCBfb25Gb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfb25CbHVyKGZvY3VzRXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY3ZhT25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmJsdXIuZW1pdChmb2N1c0V2ZW50KTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGltcGRjLWRhdGVwaWNrZXItdGVtcGxhdGUtaG9zdCAjdGVtcGxhdGVIb3N0PjwvaW1wZGMtZGF0ZXBpY2tlci10ZW1wbGF0ZS1ob3N0PlxuPGRpdlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gIGNsYXNzPVwiZC1mbGV4XCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdmbGV4LWNvbHVtbic6IHdpdGhUaW1lICYmIHRpbWVMYXlvdXQubGF5b3V0ID09PSAnc3RhY2tlZCdcbiAgfVwiXG4gIChmb2N1c291dCk9XCJoYW5kbGVGb2N1c091dCgkZXZlbnQpXCI+XG4gIDxuZ2ItZGF0ZXBpY2tlclxuICAgIGNsYXNzPVwiaW1wZGMtZGF0ZXRpbWUtcGlja2VyLS1kYXRlcGlja2VyXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJkYXRlXCJcbiAgICBbZGF5VGVtcGxhdGVdPVwidGVtcGxhdGVIb3N0LmRheVRlbXBsYXRlUmVmXCJcbiAgICBbY29udGVudFRlbXBsYXRlXT1cInRlbXBsYXRlSG9zdC5jb250ZW50VGVtcGxhdGVSZWZcIlxuICAgIFtzaG93V2Vla051bWJlcnNdPVwiZmFsc2VcIlxuICAgIG91dHNpZGVEYXlzPVwidmlzaWJsZVwiXG4gICAgW3dlZWtkYXlzXT1cIk5nVHJhbnNsYXRpb25XaWR0aC5BYmJyZXZpYXRlZFwiXG4gICAgW21hcmtEaXNhYmxlZF09XCJtYXJrRGF0ZURpc2FibGVkRm5cIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIiAvPlxuICBAaWYgKHdpdGhUaW1lKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cImltcGRjLWRhdGV0aW1lLXBpY2tlci0tdGltZXBpY2tlciBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTQgcC00IHctMTAwXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnYm9yZGVyLTAnOiAhdGltZUxheW91dC5ib3JkZXIsXG4gICAgICAnYm9yZGVyLWdyYXktMjAwJzogdGltZUxheW91dC5ib3JkZXIsXG4gICAgICAnbXQtMic6IHRpbWVMYXlvdXQubGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAnYm9yZGVyLXRvcCc6IHRpbWVMYXlvdXQuYm9yZGVyICYmIHRpbWVMYXlvdXQubGF5b3V0ID09PSAnc3RhY2tlZCcsXG4gICAgICAnbXMtMic6IHRpbWVMYXlvdXQubGF5b3V0ID09PSAnaW5saW5lJyxcbiAgICAgICdib3JkZXItc3RhcnQnOiB0aW1lTGF5b3V0LmJvcmRlciAmJiB0aW1lTGF5b3V0LmxheW91dCA9PT0gJ2lubGluZSdcbiAgICB9XCI+XG4gICAgPGltcGRjLWNoZWNrYm94XG4gICAgICBbbGFiZWxdPVwidXNlTWVyaWRpYW5MYWJlbFRleHRcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlTWVyaWRpYW5cIlxuICAgICAgW2lzU3dpdGNoXT1cInRydWVcIlxuICAgICAgbGF5b3V0PVwiY2hlY2stZW5kXCIgLz5cbiAgICA8bmdiLXRpbWVwaWNrZXJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpbWVcIlxuICAgICAgW21lcmlkaWFuXT1cInVzZU1lcmlkaWFuXCJcbiAgICAgIFtzZWNvbmRzXT1cImZhbHNlXCJcbiAgICAgIFtzcGlubmVyc109XCJmYWxzZVwiXG4gICAgICBzaXplPVwibWVkaXVtXCI+PC9uZ2ItdGltZXBpY2tlcj5cbiAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZXRpbWUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2RhdGV0aW1lLXBpY2tlci9jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlci9kYXRldGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFFVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxXQUFXLEVBQ1gsV0FBVyxFQUlYLG1CQUFtQixFQUNuQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsY0FBYyxFQUVkLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ3BCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3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LHNCQUFzQixFQUFFLHFCQUFxQjt3QkFDN0MscUJBQXFCLEVBQUUsWUFBWTt3QkFDbkMsb0JBQW9CLEVBQUUsWUFBWTt3QkFDbEMsa0NBQWtDLEVBQUUsTUFBTTt3QkFDMUMseUNBQXlDLEVBQUUsVUFBVTt3QkFDckQseUNBQXlDLEVBQUUsVUFBVTt3QkFDckQsd0NBQXdDLEVBQUUsWUFBWTt3QkFDdEQsc0NBQXNDLEVBQUUsT0FBTzt3QkFDL0MsU0FBUyxFQUFFLHFCQUFxQjtxQkFDakMsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLHlCQUF5Qjt5QkFDckM7cUJBQ0Y7OzBCQTBIRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFDUixRQUFROzswQkFDUixJQUFJOzswQkFBSSxRQUFRO3lDQTlGVCxhQUFhO3NCQUR0QixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBV25DLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFZSyxPQUFPO3NCQURqQixLQUFLO2dCQWVLLE9BQU87c0JBRGpCLEtBQUs7Z0JBYUssVUFBVTtzQkFEcEIsS0FBSztnQkFnQkMsbUJBQW1CO3NCQUR6QixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFJVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBU1UsV0FBVztzQkFEMUIsTUFBTTtnQkFTUyxJQUFJO3NCQUZuQixNQUFNO2dCQXVJSSxLQUFLO3NCQURmLEtBQUs7Z0JBU0ssRUFBRTtzQkFEWixLQUFLO2dCQWlCSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIFRyYW5zbGF0aW9uV2lkdGggfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE5nYkRhdGVBZGFwdGVyLFxuICBOZ2JEYXRlU3RydWN0LFxuICBOZ2JEYXRlcGlja2VyLFxuICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxuICBOZ2JUaW1lcGlja2VyTW9kdWxlXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gJ25hbm9pZCc7XG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgRXJyb3JTdGF0ZU1hdGNoZXIsXG4gIElDYW5VcGRhdGVFcnJvclN0YXRlLFxuICBJSGFzRXJyb3JTdGF0ZSxcbiAgSU1QRENfRk9STV9ST09ULFxuICBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gIEltcGRjRm9ybVJvb3QsXG4gIEltcGRjRm9ybXNNb2R1bGUsXG4gIG1peGluRGlzYWJsZWQsXG4gIG1peGluRXJyb3JTdGF0ZSxcbiAgbWl4aW5UYWJJbmRleFxufSBmcm9tICcuLi8uLi8uLi9mb3JtLWZpZWxkJztcbmltcG9ydCB7XG4gIERFRkFVTFRfTUFYX0RBVEUsXG4gIERFRkFVTFRfTUlOX0RBVEUsXG4gIERFRkFVTFRfVVNFXzI0SFJfVElNRV9MQUJFTFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSURhdGV0aW1lUGlja2VyVmFsdWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyVGVtcGxhdGVIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci10ZW1wbGF0ZS1ob3N0JztcbmltcG9ydCB7IERhdGV0aW1lUGlja2VySW5wdXRGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRldGltZS1waWNrZXItaW5wdXQtZm9vdGVyJztcblxuaW50ZXJmYWNlIElUaW1lT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJvcmRlcjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGF5b3V0OiAnaW5saW5lJyB8ICdzdGFja2VkJztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRV9MQVlPVVQ6IElUaW1lT3B0aW9ucyA9IHtcbiAgYm9yZGVyOiBmYWxzZSxcbiAgbGF5b3V0OiAnaW5saW5lJ1xufSBhcyBjb25zdDtcblxuY29uc3QgX0RhdGV0aW1lUGlja2VyQ29tcG9uZW50QmFzZSA9IG1peGluVGFiSW5kZXgoXG4gIG1peGluRGlzYWJsZWQoXG4gICAgbWl4aW5FcnJvclN0YXRlKFxuICAgICAgY2xhc3Mge1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgICAgICAgKSB7fVxuICAgICAgfVxuICAgIClcbiAgKVxuKTtcblxuLyoqXG4gKiBBIGNvbnRyb2wgZm9yIHNlbGVjdGluZyBkYXRlIG9yIGRhdGV0aW1lIHZpYSBhbiBpbmxpbmUgY2FsZW5kYXIgY29udHJvbC5cbiAqXG4gKiBJbXBsZW1lbnRzIFtDb250cm9sVmFsdWVBY2Nlc3Nvcl0oaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9mb3Jtcy9Db250cm9sVmFsdWVBY2Nlc3NvcikgdG8gc3VwcG9ydCB0d28td2F5IGJpbmRpbmcgd2l0aFxuICogQW5ndWxhciBmb3JtcyB2aWEgdXNhZ2Ugb2YgdGhlIFxcYFsobmdNb2RlbCldXFxgLCBcXGBbZm9ybUNvbnRyb2xdXFxgLCBhbmQgXFxgW2Zvcm1Db250cm9sTmFtZV1cXGAgZGlyZWN0aXZlcy5cbiAqXG4gKiBUaGUgZGF0ZSBhbmQgdGltZSBjb250cm9scyBpbnNpZGUgdGhpcyBjb21wb25lbnQgbGV2ZXJhZ2UgdGhlIHZhbHVlIGFkYXB0ZXIgcGF0dGVybnMgYW5kIHNlcnZpY2VzIG9mIE5HLUJvb3RzdHJhcCdzXG4gKiBbRGF0ZXBpY2tlcl0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy9kYXRlcGlja2VyL292ZXJ2aWV3I2RhdGUtbW9kZWwpIGFuZFxuICogW1RpbWVwaWNrZXJdKGh0dHBzOi8vbmctYm9vdHN0cmFwLmdpdGh1Yi5pby8jL2NvbXBvbmVudHMvdGltZXBpY2tlci9leGFtcGxlcyNhZGFwdGVyKSBjb21wb25lbnRzIHdoZW4gd29ya2luZyB3aXRoIGlucHV0IHZhbHVlcy5cbiAqIFRoaXMgbWVhbnMgdGhhdCBgZGF0ZWAgdmFsdWVzIHdpbGwgYmUgW05nYkRhdGVTdHJ1Y3RdKGh0dHBzOi8vbmctYm9vdHN0cmFwLmdpdGh1Yi5pby8jL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9hcGkjTmdiRGF0ZVN0cnVjdClcbiAqIG9iamVjdHMgYW5kIGB0aW1lYCB2YWx1ZXMgd2lsbCBiZSBbTmdiVGltZVN0cnVjdF0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy90aW1lcGlja2VyL2FwaSNOZ2JUaW1lU3RydWN0KSBvYmplY3RzXG4gKiBieSBkZWZhdWx0LCBhbmQgdGhlIFtOZ2JEYXRlQWRhcHRlcl0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JEYXRlQWRhcHRlcikgYW5kXG4gKiBbTmdiVGltZUFkYXB0ZXJdKGh0dHBzOi8vbmctYm9vdHN0cmFwLmdpdGh1Yi5pby8jL2NvbXBvbmVudHMvdGltZXBpY2tlci9hcGkjTmdiVGltZUFkYXB0ZXIpIHNlcnZpY2VzIHdpbGwgYmUgdXNlZCB0byBoYW5kbGUgdGhlbSByZXNwZWN0aXZlbHkuXG4gKiBJZiB1c2FnZSBvZiBhbHRlcm5hdGl2ZSBkYXRlIGFuZCB0aW1lIG1vZGVscyBpcyBkZXNpcmVkLCBjb25zdWx0IE5HLUJvb3RzdHJhcCdzIGRvY3VtZW50YXRpb24gZm9yIGRpcmVjdGlvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLWRhdGV0aW1lLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ2JEYXRlcGlja2VyTW9kdWxlLFxuICAgIE5nYlRpbWVwaWNrZXJNb2R1bGUsXG4gICAgRGF0ZXBpY2tlclRlbXBsYXRlSG9zdENvbXBvbmVudCxcbiAgICBEYXRldGltZVBpY2tlcklucHV0Rm9vdGVyQ29tcG9uZW50LFxuICAgIEltcGRjRm9ybXNNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3RhYkluZGV4J10sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmlzLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmltcGRjLWRhdGV0aW1lLXBpY2tlci0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLWRhdGV0aW1lLXBpY2tlci0tZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmltcGRjLWRhdGV0aW1lLXBpY2tlci0taW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1kYXRldGltZS1waWNrZXItLWVtcHR5XSc6ICdlbXB0eScsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKTsgZm9jdXMoKSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSW1wZGNGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IERhdGV0aW1lUGlja2VyQ29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGV0aW1lUGlja2VyQ29tcG9uZW50XG4gIGV4dGVuZHMgX0RhdGV0aW1lUGlja2VyQ29tcG9uZW50QmFzZVxuICBpbXBsZW1lbnRzXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRG9DaGVjayxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBJbXBkY0Zvcm1GaWVsZENvbnRyb2w8SURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+IHwgbnVsbD4sXG4gICAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgSUhhc0Vycm9yU3RhdGVcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0RWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdiRGF0ZUFkYXB0ZXIgPSBpbmplY3QoTmdiRGF0ZUFkYXB0ZXI8YW55Pik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VpZCA9IGBpbXBkYy1kYXRldGltZS1waWNrZXItJHtuYW5vaWQoKX1gO1xuICBwcml2YXRlIF9wcmV2aW91c0NvbnRyb2w/OiBBYnN0cmFjdENvbnRyb2wgfCBudWxsO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBOZ1RyYW5zbGF0aW9uV2lkdGggPSBUcmFuc2xhdGlvbldpZHRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUdyb3VwID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ncm91cCh7XG4gICAgZGF0ZTogbmV3IEZvcm1Db250cm9sPGFueT4obnVsbCksXG4gICAgdGltZTogbmV3IEZvcm1Db250cm9sPGFueT4obnVsbCksXG4gICAgdXNlMjRoclRpbWU6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KVxuICB9KTtcbiAgcHJvdGVjdGVkIGN2YU9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIHByb3RlY3RlZCBjdmFPblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBAVmlld0NoaWxkKE5nYkRhdGVwaWNrZXIsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCBuZ2JEYXRlcGlja2VyITogTmdiRGF0ZXBpY2tlcjtcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNhbiBiZSBldmFsdWF0ZWQgdG8gZGVjaWRlIGlmIGEgZ2l2ZW4gZGF0ZSBpcyBkaXNhYmxlZFxuICAgKiBpbiB0aGUgY2FsZW5kYXIgdmlldy5cbiAgICpcbiAgICogQHBhcmFtIGRhdGUgQW4gW2BOZ2JEYXRlYF0oaHR0cHM6Ly9uZy1ib290c3RyYXAuZ2l0aHViLmlvLyMvY29tcG9uZW50cy9kYXRlcGlja2VyL2FwaSNOZ2JEYXRlKSB2YWx1ZSBkZXNjcmliaW5nIHRoZSBzaW5ndWxhciBkYXRlIGJlaW5nIGV2YWx1YXRlZC5cbiAgICogQHBhcmFtIGN1cnJlbnQgVGhlIG1vbnRoIGFuZCB5ZWFyIHNlbGVjdGVkIGZvciB0aGUgY3VycmVudCBjYWxlbmRhciB2aWV3LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1hcmtEYXRlRGlzYWJsZWQ/OiAoXG4gICAgZGF0ZTogTmdiRGF0ZVN0cnVjdCxcbiAgICBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfVxuICApID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBlYXJsaWVzdCBhbGxvd2FibGUgZGF0ZSBmb3IgZGlzcGxheSBvciBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgeWVhcjogMTkwMCwgbW9udGg6IDEsIGRheTogMSB9XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG1pbkRhdGUoKTogTmdiRGF0ZVN0cnVjdCB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fbWluRGF0ZSB9O1xuICB9XG4gIHB1YmxpYyBzZXQgbWluRGF0ZSh2YWx1ZTogTmdiRGF0ZVN0cnVjdCB8IG51bGwpIHtcbiAgICB0aGlzLl9taW5EYXRlID0gdmFsdWUgfHwgREVGQVVMVF9NSU5fREFURTtcbiAgfVxuICBwcml2YXRlIF9taW5EYXRlOiBOZ2JEYXRlU3RydWN0ID0gREVGQVVMVF9NSU5fREFURTtcblxuICAvKipcbiAgICogVGhlIGxhdGVzdCBhbGxvd2FibGUgZGF0ZSBmb3IgZGlzcGxheSBvciBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgeWVhcjogMjA5OSwgbW9udGg6IDEyLCBkYXk6IDMxIH1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbWF4RGF0ZSgpOiBOZ2JEYXRlU3RydWN0IHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9tYXhEYXRlIH07XG4gIH1cbiAgcHVibGljIHNldCBtYXhEYXRlKHZhbHVlOiBOZ2JEYXRlU3RydWN0IHwgbnVsbCkge1xuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSB8fCBERUZBVUxUX01BWF9EQVRFO1xuICB9XG4gIHByaXZhdGUgX21heERhdGU6IE5nYkRhdGVTdHJ1Y3QgPSBERUZBVUxUX01BWF9EQVRFO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmFibGUgb3B0aW9ucyBmb3Igc2V0dGluZyB0aGUgbGF5b3V0IG9mIHRoZSBkYXRlIGFuZCB0aW1lIGNvbnRyb2xzIHdpdGhpbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0aW1lTGF5b3V0KCk6IElUaW1lT3B0aW9ucyB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fdGltZUxheW91dCB9O1xuICB9XG4gIHB1YmxpYyBzZXQgdGltZUxheW91dCh2YWx1ZTogUGFydGlhbDxJVGltZU9wdGlvbnM+KSB7XG4gICAgdGhpcy5fdGltZUxheW91dCA9IHtcbiAgICAgIC4uLkRFRkFVTFRfVElNRV9MQVlPVVQsXG4gICAgICAuLi52YWx1ZVxuICAgIH07XG4gIH1cbiAgcHJpdmF0ZSBfdGltZUxheW91dDogSVRpbWVPcHRpb25zID0geyAuLi5ERUZBVUxUX1RJTUVfTEFZT1VUIH07XG5cbiAgLyoqXG4gICAqIExhYmVsIHRvIGJlIGRpc3BsYXllZCB3aXRoIHRpbWUgY29udHJvbHMgdG8gYWxsb3cgdGhlIHVzZXIgdG8gaW5wdXQgMjQtaG91ciBvciBtZXJpZGlhbi1iYXNlZCAoQU0sIFBNKSB0aW1lLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG1lcmlkaWFuVG9nZ2xlTGFiZWw6IHN0cmluZyA9IERFRkFVTFRfVVNFXzI0SFJfVElNRV9MQUJFTDtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgdG8gZGlzcGxheSBjb250cm9scyBmb3Igc2VsZWN0aW5nIGEgdGltZSB2YWx1ZSBpbiBhZGRpdGlvbiB0byB0aGUgZGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3aXRoVGltZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvdmVycmlkZSBlcnJvclN0YXRlTWF0Y2hlciE6IEVycm9yU3RhdGVNYXRjaGVyO1xuXG4gIC8qKlxuICAgKiBFdmVudHMgZmlyZSB3aGVuIHJhdyB2YWx1ZSBvZiBwaWNrZXIgaW5wdXQgY2hhbmdlcy4gTWFpbmx5IGV4aXN0cyB0byBoYW5kbGVcbiAgICogdHdvLXdheSBiaW5kaW5nIG9mIGB2YWx1ZWAgaW5wdXQgcHJvcGVydHkuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxcbiAgICBhbnksXG4gICAgYW55XG4gID4gfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8SURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+IHwgbnVsbD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHB1YmxpYyByZWFkb25seSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSU1QRENfRk9STV9ST09UKSBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICBfZm9ybVJvb3QsXG4gICAgICBfcGFyZW50Rm9ybSxcbiAgICAgIF9wYXJlbnRGb3JtR3JvdXAsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLm5nYkRhdGVwaWNrZXIuZm9jdXMoKTtcbiAgfVxuXG4gIC8qIExpZmVjeWNsZSBIb29rcyAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICBpZiAoIW5nQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IG5nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIG5nQ29udHJvbC5kaXNhYmxlZCAhPT0gbnVsbCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IHRoaXMuZGlzYWJsZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gbmdDb250cm9sPy5kaXNhYmxlZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHJldmlvdXNDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIE1hbmFnaW5nIGRpc2FibGVkIHN0YXRlIGlzIGhhbmRsZWQgdmlhIHRoZSBgbWl4aW5EaXNhYmxlZGAgbWl4aW4vZ2VuZXJhdG9yLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBzaWduYWxcbiAgICAvLyB0byB0aGUgcGFyZW50IGZvcm0gZmllbGQgc28gaXQgY2FuIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW4gZGlzYWJsZWQgc3RhdGUgaXMgY2hhbmdlZC5cbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSkge1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLCBkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgY29uc3QgY2hhbmdlVmFsdWUgPSB0aGlzLl9nZXRWYWx1ZUZyb21Gb3JtTW9kZWwoZm9ybVZhbHVlKTtcbiAgICAgICAgdGhpcy5jdmFPbkNoYW5nZShjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjaGFuZ2VWYWx1ZSk7XG4gICAgICAgIHRoaXMuY3ZhT25Ub3VjaGVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBJRGF0ZXRpbWVQaWNrZXJWYWx1ZTxhbnksIGFueT4gfCBhbnkpOiB2b2lkIHtcbiAgICBsZXQgbmV3VmFsdWU6IFBhcnRpYWw8SURhdGV0aW1lUGlja2VyVmFsdWU+ID0ge307XG4gICAgaWYgKG9iaiAmJiAnZGF0ZScgaW4gb2JqKSB7XG4gICAgICBuZXdWYWx1ZSA9IHtcbiAgICAgICAgLi4ubmV3VmFsdWUsXG4gICAgICAgIGRhdGU6IG9iai5kYXRlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpdGhUaW1lICYmIG9iaiAmJiAndGltZScgaW4gb2JqKSB7XG4gICAgICBuZXdWYWx1ZSA9IHtcbiAgICAgICAgLi4ubmV3VmFsdWUsXG4gICAgICAgIHRpbWU6IG9iai50aW1lXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUobmV3VmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBpZiAoJ2RhdGUnIGluIG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXIuZm9jdXNEYXRlKFxuICAgICAgICB0aGlzLl9uZ2JEYXRlQWRhcHRlci5mcm9tTW9kZWwobmV3VmFsdWUuZGF0ZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wgKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZUZyb21Gb3JtTW9kZWwodGhpcy5mb3JtR3JvdXAudmFsdWUpO1xuICB9XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiB8IG51bGwpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9pZCE6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgcmVxdWlyZWRuZXNzIG9mIGNvbnRyb2wgaW4gYSB0ZW1wbGF0ZS1iYXNlZCBtYW5uZXI7XG4gICAqIG5vdCBuZWNlc3Nhcnkgd2hlbiB1c2luZyB0aGUgQW5ndWxhciByZWFjdGl2ZSBmb3JtcyBBUEkgYW5kIGByZXF1aXJlZGAgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX3JlcXVpcmVkID8/XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/XG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZDtcbiAgfVxuICBwcm90ZWN0ZWQgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbXBkYy1kYXRldGltZS1waWNrZXInO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNBZmZpeGVzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyogSW50ZXJuYWxzICovXG5cbiAgcHJvdGVjdGVkIGdldCB1c2UyNGhyVGltZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKS51c2UyNGhyVGltZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdXNlMjRoclRpbWVMYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tZXJpZGlhblRvZ2dsZUxhYmVsPy50cmltKCkgfHwgREVGQVVMVF9VU0VfMjRIUl9USU1FX0xBQkVMO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZvY3VzT3V0KGV2dDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICFldnQucmVsYXRlZFRhcmdldCB8fFxuICAgICAgIXRoaXMuX2hvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZ0LnJlbGF0ZWRUYXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLl9vbkJsdXIoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZUZyb21Gb3JtTW9kZWwoXG4gICAgZm9ybVZhbHVlOiBQYXJ0aWFsPHsgZGF0ZTogYW55OyB0aW1lOiBhbnk7IHVzZTI0aHJUaW1lOiBhbnkgfT5cbiAgKTogSURhdGV0aW1lUGlja2VyVmFsdWU8YW55LCBhbnk+IHwgbnVsbCB7XG4gICAgaWYgKCFmb3JtVmFsdWUuZGF0ZSAmJiAhZm9ybVZhbHVlLnRpbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IElEYXRldGltZVBpY2tlclZhbHVlPGFueSwgYW55PiA9IHtcbiAgICAgIGRhdGU6IGZvcm1WYWx1ZS5kYXRlXG4gICAgfTtcblxuICAgIGlmICh0aGlzLndpdGhUaW1lKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgdGltZTogZm9ybVZhbHVlLnRpbWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGVJc091dHNpZGVDdXJyZW50TW9udGgoXG4gICAgZGF0ZTogTmdiRGF0ZVN0cnVjdCxcbiAgICBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfVxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFjdXJyZW50ICYmIGRhdGUubW9udGggIT09IGN1cnJlbnQubW9udGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWFya0RhdGVEaXNhYmxlZEZuID0gKFxuICAgIGRhdGU6IE5nYkRhdGVTdHJ1Y3QsXG4gICAgY3VycmVudD86IHsgbW9udGg6IG51bWJlcjsgeWVhcjogbnVtYmVyIH1cbiAgKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX2RhdGVJc091dHNpZGVDdXJyZW50TW9udGgoZGF0ZSwgY3VycmVudCkgfHxcbiAgICAgICghIXRoaXMubWFya0RhdGVEaXNhYmxlZCAmJiB0aGlzLm1hcmtEYXRlRGlzYWJsZWQoZGF0ZSwgY3VycmVudCkpXG4gICAgKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgX29uRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX29uQmx1cihmb2N1c0V2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fZm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmN2YU9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5ibHVyLmVtaXQoZm9jdXNFdmVudCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpbXBkYy1kYXRlcGlja2VyLXRlbXBsYXRlLWhvc3QgI3RlbXBsYXRlSG9zdD48L2ltcGRjLWRhdGVwaWNrZXItdGVtcGxhdGUtaG9zdD5cbjxkaXZcbiAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICBjbGFzcz1cImQtZmxleFwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZmxleC1jb2x1bW4nOiB3aXRoVGltZSAmJiB0aW1lTGF5b3V0LmxheW91dCA9PT0gJ3N0YWNrZWQnXG4gIH1cIlxuICAoZm9jdXNvdXQpPVwiaGFuZGxlRm9jdXNPdXQoJGV2ZW50KVwiPlxuICA8bmdiLWRhdGVwaWNrZXJcbiAgICBjbGFzcz1cImltcGRjLWRhdGV0aW1lLXBpY2tlci0tZGF0ZXBpY2tlclwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZVwiXG4gICAgW2RheVRlbXBsYXRlXT1cInRlbXBsYXRlSG9zdC5kYXlUZW1wbGF0ZVJlZlwiXG4gICAgW2NvbnRlbnRUZW1wbGF0ZV09XCJ0ZW1wbGF0ZUhvc3QuY29udGVudFRlbXBsYXRlUmVmXCJcbiAgICBbc2hvd1dlZWtOdW1iZXJzXT1cImZhbHNlXCJcbiAgICBvdXRzaWRlRGF5cz1cInZpc2libGVcIlxuICAgIFt3ZWVrZGF5c109XCJOZ1RyYW5zbGF0aW9uV2lkdGguQWJicmV2aWF0ZWRcIlxuICAgIFttYXJrRGlzYWJsZWRdPVwibWFya0RhdGVEaXNhYmxlZEZuXCJcbiAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCIgLz5cbiAgQGlmICh3aXRoVGltZSkge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJpbXBkYy1kYXRldGltZS1waWNrZXItLXRpbWVwaWNrZXIgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC00IHAtNCB3LTEwMFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2JvcmRlci0wJzogIXRpbWVMYXlvdXQuYm9yZGVyLFxuICAgICAgJ2JvcmRlci1ncmF5LTIwMCc6IHRpbWVMYXlvdXQuYm9yZGVyLFxuICAgICAgJ210LTInOiB0aW1lTGF5b3V0LmxheW91dCA9PT0gJ3N0YWNrZWQnLFxuICAgICAgJ2JvcmRlci10b3AnOiB0aW1lTGF5b3V0LmJvcmRlciAmJiB0aW1lTGF5b3V0LmxheW91dCA9PT0gJ3N0YWNrZWQnLFxuICAgICAgJ21zLTInOiB0aW1lTGF5b3V0LmxheW91dCA9PT0gJ2lubGluZScsXG4gICAgICAnYm9yZGVyLXN0YXJ0JzogdGltZUxheW91dC5ib3JkZXIgJiYgdGltZUxheW91dC5sYXlvdXQgPT09ICdpbmxpbmUnXG4gICAgfVwiPlxuICAgIDxpbXBkYy1jaGVja2JveFxuICAgICAgW2xhYmVsXT1cInVzZTI0aHJUaW1lTGFiZWxUZXh0XCJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZTI0aHJUaW1lXCJcbiAgICAgIFtpc1N3aXRjaF09XCJ0cnVlXCJcbiAgICAgIGxheW91dD1cImNoZWNrLWVuZFwiIC8+XG4gICAgPG5nYi10aW1lcGlja2VyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lXCJcbiAgICAgIFttZXJpZGlhbl09XCIhdXNlMjRoclRpbWVcIlxuICAgICAgW3NlY29uZHNdPVwiZmFsc2VcIlxuICAgICAgW3NwaW5uZXJzXT1cImZhbHNlXCJcbiAgICAgIHNpemU9XCJtZWRpdW1cIj48L25nYi10aW1lcGlja2VyPlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const DEFAULT_USE_24HR_TIME_LABEL = 'Use 24-hour format';
|
|
2
2
|
export const DEFAULT_MIN_DATE = {
|
|
3
3
|
year: 1900,
|
|
4
4
|
month: 1,
|
|
@@ -9,4 +9,4 @@ export const DEFAULT_MAX_DATE = {
|
|
|
9
9
|
month: 12,
|
|
10
10
|
day: 31
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtcGlja2VyLWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9kYXRldGltZS1waWNrZXIvY29uc3RhbnRzL2RhdGV0aW1lLXBpY2tlci1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxvQkFBb0IsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBa0I7SUFDN0MsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsQ0FBQztJQUNSLEdBQUcsRUFBRSxDQUFDO0NBQ0UsQ0FBQztBQUNYLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFrQjtJQUM3QyxJQUFJLEVBQUUsSUFBSTtJQUNWLEtBQUssRUFBRSxFQUFFO0lBQ1QsR0FBRyxFQUFFLEVBQUU7Q0FDQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdiRGF0ZVN0cnVjdCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVNFXzI0SFJfVElNRV9MQUJFTCA9ICdVc2UgMjQtaG91ciBmb3JtYXQnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUlOX0RBVEU6IE5nYkRhdGVTdHJ1Y3QgPSB7XG4gIHllYXI6IDE5MDAsXG4gIG1vbnRoOiAxLFxuICBkYXk6IDFcbn0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVhfREFURTogTmdiRGF0ZVN0cnVjdCA9IHtcbiAgeWVhcjogMjA5OSxcbiAgbW9udGg6IDEyLFxuICBkYXk6IDMxXG59IGFzIGNvbnN0O1xuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
1
2
|
import { NgModule } from '@angular/core';
|
|
2
3
|
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { FileDropDirective } from './directives';
|
|
4
|
-
import { FileUploadComponent } from './file-upload.component';
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
4
|
import { ButtonModule } from '../button';
|
|
7
5
|
import { IconModule } from '../icon';
|
|
6
|
+
import { FileDropDirective } from './directives';
|
|
7
|
+
import { FileUploadComponent } from './file-upload.component';
|
|
8
8
|
import { HumanReadableByteSizePipe } from './pipes';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class FileUploadModule {
|
|
@@ -12,7 +12,10 @@ export class FileUploadModule {
|
|
|
12
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
13
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, declarations: [FileDropDirective,
|
|
14
14
|
FileUploadComponent,
|
|
15
|
-
HumanReadableByteSizePipe], imports: [CommonModule, FormsModule, ButtonModule, IconModule], exports: [IconModule,
|
|
15
|
+
HumanReadableByteSizePipe], imports: [CommonModule, FormsModule, ButtonModule, IconModule], exports: [IconModule,
|
|
16
|
+
FileDropDirective,
|
|
17
|
+
FileUploadComponent,
|
|
18
|
+
HumanReadableByteSizePipe] }); }
|
|
16
19
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, imports: [CommonModule, FormsModule, ButtonModule, IconModule, IconModule] }); }
|
|
17
20
|
}
|
|
18
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: FileUploadModule, decorators: [{
|
|
@@ -24,7 +27,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
24
27
|
FileUploadComponent,
|
|
25
28
|
HumanReadableByteSizePipe
|
|
26
29
|
],
|
|
27
|
-
exports: [
|
|
30
|
+
exports: [
|
|
31
|
+
IconModule,
|
|
32
|
+
FileDropDirective,
|
|
33
|
+
FileUploadComponent,
|
|
34
|
+
HumanReadableByteSizePipe
|
|
35
|
+
]
|
|
28
36
|
}]
|
|
29
37
|
}], ctorParameters: () => [] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQWdCcEQsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixnQkFBZSxDQUFDOzhHQURMLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQVh6QixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLHlCQUF5QixhQUpqQixZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLGFBTzNELFVBQVU7WUFDVixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLHlCQUF5QjsrR0FHaEIsZ0JBQWdCLFlBYmpCLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFPM0QsVUFBVTs7MkZBTUQsZ0JBQWdCO2tCQWQ1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQztvQkFDOUQsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQix5QkFBeUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQix5QkFBeUI7cUJBQzFCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uJztcbmltcG9ydCB7IEZpbGVEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdW1hblJlYWRhYmxlQnl0ZVNpemVQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCdXR0b25Nb2R1bGUsIEljb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaWxlRHJvcERpcmVjdGl2ZSxcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgIEh1bWFuUmVhZGFibGVCeXRlU2l6ZVBpcGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEljb25Nb2R1bGUsXG4gICAgRmlsZURyb3BEaXJlY3RpdmUsXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICBIdW1hblJlYWRhYmxlQnl0ZVNpemVQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZE1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==
|