valtech-components 2.0.565 → 2.0.566
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/components/molecules/alert-box/alert-box.component.mjs +55 -13
- package/esm2022/lib/components/molecules/card/card.component.mjs +125 -82
- package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +48 -18
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +49 -21
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +68 -18
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +49 -19
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/fesm2022/valtech-components.mjs +380 -163
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +24 -5
- package/lib/components/molecules/card/card.component.d.ts +24 -5
- package/lib/components/molecules/email-input/email-input.component.d.ts +25 -6
- package/lib/components/molecules/password-input/password-input.component.d.ts +25 -6
- package/lib/components/molecules/select-input/select-input.component.d.ts +26 -6
- package/lib/components/molecules/text-input/text-input.component.d.ts +26 -26
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Component, inject, Input } from '@angular/core';
|
|
3
|
+
import { PresetService } from '../../../services/presets';
|
|
3
4
|
import { BoxComponent } from '../../atoms/box/box.component';
|
|
4
5
|
import { IconComponent } from '../../atoms/icon/icon.component';
|
|
5
6
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
@@ -8,28 +9,67 @@ import * as i0 from "@angular/core";
|
|
|
8
9
|
* val-alert-box
|
|
9
10
|
*
|
|
10
11
|
* Displays an alert box with an icon and text, using a styled box container.
|
|
12
|
+
* Supports presets for reusable configurations.
|
|
11
13
|
*
|
|
12
|
-
* @example
|
|
14
|
+
* @example With preset (recommended):
|
|
15
|
+
* <val-alert-box preset="warning" [props]="{ text: 'Advertencia!' }"></val-alert-box>
|
|
16
|
+
*
|
|
17
|
+
* @example Static (backwards compatible):
|
|
13
18
|
* <val-alert-box [props]="{ box: {...}, icon: {...}, text: { content: 'Alerta' } }"></val-alert-box>
|
|
14
19
|
*
|
|
15
|
-
* @input
|
|
20
|
+
* @input preset: string - Name of preset to apply (e.g., 'info', 'success', 'warning', 'error')
|
|
21
|
+
* @input props: AlertBoxMetadata | ReactiveAlertBoxMetadata - Configuration for the alert box (overrides preset values)
|
|
16
22
|
*/
|
|
17
23
|
export class AlertBoxComponent {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.presets = inject(PresetService);
|
|
26
|
+
/**
|
|
27
|
+
* Alert box configuration object. Values here override preset values.
|
|
28
|
+
* Supports both legacy AlertBoxMetadata and ReactiveAlertBoxMetadata patterns.
|
|
29
|
+
*/
|
|
30
|
+
this.props = {};
|
|
31
|
+
/**
|
|
32
|
+
* Resolved props after merging preset + explicit props.
|
|
33
|
+
*/
|
|
34
|
+
this.resolvedProps = {};
|
|
35
|
+
}
|
|
18
36
|
/** Whether this is using the legacy props pattern */
|
|
19
37
|
get isLegacyProps() {
|
|
20
|
-
return 'text' in this.
|
|
38
|
+
return 'text' in this.resolvedProps && typeof this.resolvedProps.text === 'object';
|
|
21
39
|
}
|
|
22
40
|
/** Get text props for legacy pattern */
|
|
23
41
|
getLegacyTextProps() {
|
|
24
|
-
return this.
|
|
42
|
+
return this.resolvedProps.text;
|
|
25
43
|
}
|
|
26
44
|
ngOnInit() {
|
|
45
|
+
this.resolveProps();
|
|
27
46
|
if (!this.isLegacyProps) {
|
|
28
47
|
this.initializeTextProps();
|
|
29
48
|
}
|
|
30
49
|
}
|
|
50
|
+
ngOnChanges(changes) {
|
|
51
|
+
if (changes['preset'] || changes['props']) {
|
|
52
|
+
this.resolveProps();
|
|
53
|
+
if (!this.isLegacyProps) {
|
|
54
|
+
this.initializeTextProps();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Merge preset configuration with explicit props.
|
|
60
|
+
* Explicit props take precedence over preset values.
|
|
61
|
+
*/
|
|
62
|
+
resolveProps() {
|
|
63
|
+
const presetProps = this.preset
|
|
64
|
+
? this.presets.get('alertBox', this.preset)
|
|
65
|
+
: {};
|
|
66
|
+
this.resolvedProps = {
|
|
67
|
+
...presetProps,
|
|
68
|
+
...this.props,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
31
71
|
initializeTextProps() {
|
|
32
|
-
const reactiveProps = this.
|
|
72
|
+
const reactiveProps = this.resolvedProps;
|
|
33
73
|
// Base text properties with styling
|
|
34
74
|
this.computedTextProps = {
|
|
35
75
|
size: reactiveProps.textStyle?.size || 'medium',
|
|
@@ -42,10 +82,10 @@ export class AlertBoxComponent {
|
|
|
42
82
|
}
|
|
43
83
|
}
|
|
44
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertBoxComponent, isStandalone: true, selector: "val-alert-box", inputs: { props: "props" }, ngImport: i0, template: `
|
|
46
|
-
<val-box [props]="
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlertBoxComponent, isStandalone: true, selector: "val-alert-box", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
|
|
86
|
+
<val-box [props]="resolvedProps.box">
|
|
47
87
|
<div class="content-container" body>
|
|
48
|
-
<val-icon [props]="
|
|
88
|
+
<val-icon [props]="resolvedProps.icon"></val-icon>
|
|
49
89
|
<!-- Support both legacy and reactive patterns -->
|
|
50
90
|
@if (isLegacyProps) {
|
|
51
91
|
<val-text class="text" [props]="getLegacyTextProps()" />
|
|
@@ -59,9 +99,9 @@ export class AlertBoxComponent {
|
|
|
59
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertBoxComponent, decorators: [{
|
|
60
100
|
type: Component,
|
|
61
101
|
args: [{ selector: 'val-alert-box', standalone: true, imports: [CommonModule, BoxComponent, IconComponent, TextComponent], template: `
|
|
62
|
-
<val-box [props]="
|
|
102
|
+
<val-box [props]="resolvedProps.box">
|
|
63
103
|
<div class="content-container" body>
|
|
64
|
-
<val-icon [props]="
|
|
104
|
+
<val-icon [props]="resolvedProps.icon"></val-icon>
|
|
65
105
|
<!-- Support both legacy and reactive patterns -->
|
|
66
106
|
@if (isLegacyProps) {
|
|
67
107
|
<val-text class="text" [props]="getLegacyTextProps()" />
|
|
@@ -71,7 +111,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
71
111
|
</div>
|
|
72
112
|
</val-box>
|
|
73
113
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.text{margin-left:.25rem}.content-container{display:flex;align-items:flex-start}\n"] }]
|
|
74
|
-
}], propDecorators: {
|
|
114
|
+
}], propDecorators: { preset: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], props: [{
|
|
75
117
|
type: Input
|
|
76
118
|
}] } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvYWxlcnQtYm94L2FsZXJ0LWJveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQXNCaEU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBbEM5QjtRQW1DVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBV3hDOzs7V0FHRztRQUNNLFVBQUssR0FBeUQsRUFBRSxDQUFDO1FBRTFFOztXQUVHO1FBQ0gsa0JBQWEsR0FBZ0QsRUFBc0IsQ0FBQztLQTZEckY7SUF4REMscURBQXFEO0lBQ3JELElBQUksYUFBYTtRQUNmLE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksT0FBUSxJQUFJLENBQUMsYUFBcUIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0lBQzlGLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsa0JBQWtCO1FBQ2hCLE9BQVEsSUFBSSxDQUFDLGFBQWtDLENBQUMsSUFBSSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDN0IsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUEwRDtZQUNyRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixHQUFHLFdBQVc7WUFDZCxHQUFHLElBQUksQ0FBQyxLQUFLO1NBQ2lDLENBQUM7SUFDbkQsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBeUMsQ0FBQztRQUVyRSxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLElBQUksRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxRQUFRO1lBQy9DLEtBQUssRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLEtBQUs7WUFDckMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLEtBQUs7U0FDN0MsQ0FBQztRQUVGLHFDQUFxQztRQUNyQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDOytHQWpGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw0SUE5QmxCOzs7Ozs7Ozs7Ozs7R0FZVCwrcEZBYlMsWUFBWSwrQkFBRSxZQUFZLDZGQUFFLGFBQWEsd0VBQUUsYUFBYTs7NEZBK0J2RCxpQkFBaUI7a0JBbEM3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUMsWUFDekQ7Ozs7Ozs7Ozs7OztHQVlUOzhCQTRCUSxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IEJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEFsZXJ0Qm94TWV0YWRhdGEsIFJlYWN0aXZlQWxlcnRCb3hNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYWxlcnQtYm94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQm94Q29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWJveCBbcHJvcHNdPVwicmVzb2x2ZWRQcm9wcy5ib3hcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNvbnRhaW5lclwiIGJvZHk+XG4gICAgICAgIDx2YWwtaWNvbiBbcHJvcHNdPVwicmVzb2x2ZWRQcm9wcy5pY29uXCI+PC92YWwtaWNvbj5cbiAgICAgICAgPCEtLSBTdXBwb3J0IGJvdGggbGVnYWN5IGFuZCByZWFjdGl2ZSBwYXR0ZXJucyAtLT5cbiAgICAgICAgQGlmIChpc0xlZ2FjeVByb3BzKSB7XG4gICAgICAgICAgPHZhbC10ZXh0IGNsYXNzPVwidGV4dFwiIFtwcm9wc109XCJnZXRMZWdhY3lUZXh0UHJvcHMoKVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx2YWwtdGV4dCBjbGFzcz1cInRleHRcIiBbcHJvcHNdPVwiY29tcHV0ZWRUZXh0UHJvcHNcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbC1ib3g+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LWJveC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWFsZXJ0LWJveFxuICpcbiAqIERpc3BsYXlzIGFuIGFsZXJ0IGJveCB3aXRoIGFuIGljb24gYW5kIHRleHQsIHVzaW5nIGEgc3R5bGVkIGJveCBjb250YWluZXIuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC1hbGVydC1ib3ggcHJlc2V0PVwid2FybmluZ1wiIFtwcm9wc109XCJ7IHRleHQ6ICdBZHZlcnRlbmNpYSEnIH1cIj48L3ZhbC1hbGVydC1ib3g+XG4gKlxuICogQGV4YW1wbGUgU3RhdGljIChiYWNrd2FyZHMgY29tcGF0aWJsZSk6XG4gKiA8dmFsLWFsZXJ0LWJveCBbcHJvcHNdPVwieyBib3g6IHsuLi59LCBpY29uOiB7Li4ufSwgdGV4dDogeyBjb250ZW50OiAnQWxlcnRhJyB9IH1cIj48L3ZhbC1hbGVydC1ib3g+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHkgKGUuZy4sICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZycsICdlcnJvcicpXG4gKiBAaW5wdXQgcHJvcHM6IEFsZXJ0Qm94TWV0YWRhdGEgfCBSZWFjdGl2ZUFsZXJ0Qm94TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgYWxlcnQgYm94IChvdmVycmlkZXMgcHJlc2V0IHZhbHVlcylcbiAqL1xuZXhwb3J0IGNsYXNzIEFsZXJ0Qm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBhbGVydCBjb25maWd1cmF0aW9uc1xuICAgKiAoY29sb3IsIGljb24sIGJveCBzdHlsZSkgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhcHAgbGV2ZWwuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtYWxlcnQtYm94IHByZXNldD1cIndhcm5pbmdcIiBbcHJvcHNdPVwieyB0ZXh0OiAnV2FybmluZyBtZXNzYWdlJyB9XCI+PC92YWwtYWxlcnQtYm94PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGVydCBib3ggY29uZmlndXJhdGlvbiBvYmplY3QuIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqIFN1cHBvcnRzIGJvdGggbGVnYWN5IEFsZXJ0Qm94TWV0YWRhdGEgYW5kIFJlYWN0aXZlQWxlcnRCb3hNZXRhZGF0YSBwYXR0ZXJucy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPEFsZXJ0Qm94TWV0YWRhdGEgfCBSZWFjdGl2ZUFsZXJ0Qm94TWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBBbGVydEJveE1ldGFkYXRhIHwgUmVhY3RpdmVBbGVydEJveE1ldGFkYXRhID0ge30gYXMgQWxlcnRCb3hNZXRhZGF0YTtcblxuICAvKiogQ29tcHV0ZWQgdGV4dCBwcm9wZXJ0aWVzIGZvciByZWFjdGl2ZSBwYXR0ZXJuICovXG4gIGNvbXB1dGVkVGV4dFByb3BzOiBhbnk7XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyB1c2luZyB0aGUgbGVnYWN5IHByb3BzIHBhdHRlcm4gKi9cbiAgZ2V0IGlzTGVnYWN5UHJvcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICd0ZXh0JyBpbiB0aGlzLnJlc29sdmVkUHJvcHMgJiYgdHlwZW9mICh0aGlzLnJlc29sdmVkUHJvcHMgYXMgYW55KS50ZXh0ID09PSAnb2JqZWN0JztcbiAgfVxuXG4gIC8qKiBHZXQgdGV4dCBwcm9wcyBmb3IgbGVnYWN5IHBhdHRlcm4gKi9cbiAgZ2V0TGVnYWN5VGV4dFByb3BzKCk6IGFueSB7XG4gICAgcmV0dXJuICh0aGlzLnJlc29sdmVkUHJvcHMgYXMgQWxlcnRCb3hNZXRhZGF0YSkudGV4dDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgaWYgKCF0aGlzLmlzTGVnYWN5UHJvcHMpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRQcm9wcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIGlmICghdGhpcy5pc0xlZ2FjeVByb3BzKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRQcm9wcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBwcmVzZXQgY29uZmlndXJhdGlvbiB3aXRoIGV4cGxpY2l0IHByb3BzLlxuICAgKiBFeHBsaWNpdCBwcm9wcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldFxuICAgICAgPyAodGhpcy5wcmVzZXRzLmdldCgnYWxlcnRCb3gnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxBbGVydEJveE1ldGFkYXRhIHwgUmVhY3RpdmVBbGVydEJveE1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBBbGVydEJveE1ldGFkYXRhIHwgUmVhY3RpdmVBbGVydEJveE1ldGFkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGV4dFByb3BzKCkge1xuICAgIGNvbnN0IHJlYWN0aXZlUHJvcHMgPSB0aGlzLnJlc29sdmVkUHJvcHMgYXMgUmVhY3RpdmVBbGVydEJveE1ldGFkYXRhO1xuXG4gICAgLy8gQmFzZSB0ZXh0IHByb3BlcnRpZXMgd2l0aCBzdHlsaW5nXG4gICAgdGhpcy5jb21wdXRlZFRleHRQcm9wcyA9IHtcbiAgICAgIHNpemU6IHJlYWN0aXZlUHJvcHMudGV4dFN0eWxlPy5zaXplIHx8ICdtZWRpdW0nLFxuICAgICAgY29sb3I6IHJlYWN0aXZlUHJvcHMudGV4dFN0eWxlPy5jb2xvcixcbiAgICAgIGJvbGQ6IHJlYWN0aXZlUHJvcHMudGV4dFN0eWxlPy5ib2xkIHx8IGZhbHNlLFxuICAgIH07XG5cbiAgICAvLyBBZGQgY29udGVudCAtIHVzZSBzdGF0aWMgdGV4dCBvbmx5XG4gICAgaWYgKHJlYWN0aXZlUHJvcHMudGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvbXB1dGVkVGV4dFByb3BzLmNvbnRlbnQgPSByZWFjdGl2ZVByb3BzLnRleHQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
3
3
|
import { IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonIcon, } from '@ionic/angular/standalone';
|
|
4
|
+
import { PresetService } from '../../../services/presets';
|
|
4
5
|
import { AvatarComponent } from '../../atoms/avatar/avatar.component';
|
|
5
6
|
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
6
7
|
import { ImageComponent } from '../../atoms/image/image.component';
|
|
@@ -13,15 +14,37 @@ import * as i1 from "@angular/common";
|
|
|
13
14
|
* val-card
|
|
14
15
|
*
|
|
15
16
|
* A flexible card component supporting images, titles, content, actions, and custom sections.
|
|
17
|
+
* Supports presets for reusable configurations.
|
|
16
18
|
*
|
|
17
|
-
* @example
|
|
18
|
-
* <val-card [props]="{
|
|
19
|
+
* @example With preset (recommended):
|
|
20
|
+
* <val-card preset="feature" [props]="{ title: 'Card', image: 'url', content: '...' }" (onClick)="handler($event)"></val-card>
|
|
19
21
|
*
|
|
20
|
-
* @
|
|
22
|
+
* @example Static (backwards compatible):
|
|
23
|
+
* <val-card [props]="{ type: 'native', title: 'Card', image: 'url', content: '...' }" (onClick)="handler($event)"></val-card>
|
|
24
|
+
*
|
|
25
|
+
* @input preset: string - Name of preset to apply (e.g., 'feature', 'compact')
|
|
26
|
+
* @input props: CardMetadata - Configuration for the card (overrides preset values)
|
|
21
27
|
* @output onClick - Emits a CardClickEvent when the card or an action is clicked
|
|
22
28
|
*/
|
|
23
29
|
export class CardComponent {
|
|
24
30
|
constructor() {
|
|
31
|
+
this.presets = inject(PresetService);
|
|
32
|
+
/**
|
|
33
|
+
* Card configuration object. Values here override preset values.
|
|
34
|
+
* @type {CardMetadata}
|
|
35
|
+
* @property type - The card type (see CardType).
|
|
36
|
+
* @property title - The card title.
|
|
37
|
+
* @property image - The card image URL.
|
|
38
|
+
* @property content - The card content.
|
|
39
|
+
* @property actions - Array of action buttons (optional).
|
|
40
|
+
* @property sections - Custom card sections (optional).
|
|
41
|
+
* @property overtitle - Subtitle or overtitle (optional).
|
|
42
|
+
*/
|
|
43
|
+
this.props = {};
|
|
44
|
+
/**
|
|
45
|
+
* Resolved props after merging preset + explicit props.
|
|
46
|
+
*/
|
|
47
|
+
this.resolvedProps = {};
|
|
25
48
|
/**
|
|
26
49
|
* Event emitted when the card or an action is clicked.
|
|
27
50
|
*/
|
|
@@ -30,64 +53,82 @@ export class CardComponent {
|
|
|
30
53
|
this.actionTypes = ToolbarActionType;
|
|
31
54
|
this.sections = CardSection;
|
|
32
55
|
}
|
|
33
|
-
ngOnInit() {
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
this.resolveProps();
|
|
58
|
+
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
if (changes['preset'] || changes['props']) {
|
|
61
|
+
this.resolveProps();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Merge preset configuration with explicit props.
|
|
66
|
+
* Explicit props take precedence over preset values.
|
|
67
|
+
*/
|
|
68
|
+
resolveProps() {
|
|
69
|
+
const presetProps = this.preset ? this.presets.get('card', this.preset) : {};
|
|
70
|
+
this.resolvedProps = {
|
|
71
|
+
...presetProps,
|
|
72
|
+
...this.props,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
34
75
|
clickHandler(section, token) {
|
|
35
76
|
this.onClick.emit({ section, token });
|
|
36
77
|
}
|
|
37
78
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "val-card", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
|
|
39
|
-
<ion-card *ngIf="
|
|
40
|
-
<img alt="image" [src]="
|
|
41
|
-
<ion-card-header *ngIf="
|
|
42
|
-
<ion-card-title *ngIf="
|
|
43
|
-
<ion-card-subtitle *ngIf="
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "val-card", inputs: { preset: "preset", props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
|
|
80
|
+
<ion-card *ngIf="resolvedProps.type === types.native">
|
|
81
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
82
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
83
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
84
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
44
85
|
</ion-card-header>
|
|
45
86
|
|
|
46
|
-
<ion-card-content *ngIf="
|
|
87
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
47
88
|
|
|
48
89
|
<val-button
|
|
49
|
-
*ngFor="let b of
|
|
90
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
50
91
|
[props]="b"
|
|
51
92
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
52
93
|
></val-button>
|
|
53
94
|
</ion-card>
|
|
54
95
|
|
|
55
96
|
<ion-card
|
|
56
|
-
*ngIf="
|
|
57
|
-
(click)="clickHandler(sections.content,
|
|
97
|
+
*ngIf="resolvedProps.type === types.tappable"
|
|
98
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
58
99
|
class="tapable"
|
|
59
100
|
>
|
|
60
|
-
<img alt="image" [src]="
|
|
61
|
-
<ion-card-header *ngIf="
|
|
62
|
-
<ion-card-title *ngIf="
|
|
63
|
-
<ion-card-subtitle *ngIf="
|
|
101
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
102
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
103
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
104
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
64
105
|
</ion-card-header>
|
|
65
106
|
|
|
66
|
-
<ion-card-content *ngIf="
|
|
107
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
67
108
|
</ion-card>
|
|
68
109
|
|
|
69
110
|
<ion-card
|
|
70
|
-
*ngIf="
|
|
71
|
-
(click)="clickHandler(sections.content,
|
|
111
|
+
*ngIf="resolvedProps.type === types.checker"
|
|
112
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
72
113
|
class="tapable"
|
|
73
114
|
>
|
|
74
|
-
<ion-card-header *ngIf="
|
|
115
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="checker">
|
|
75
116
|
<div>
|
|
76
|
-
<ion-card-subtitle *ngIf="
|
|
77
|
-
<ion-card-title *ngIf="
|
|
117
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
118
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
78
119
|
</div>
|
|
79
120
|
<div>
|
|
80
|
-
<ion-checkbox [checked]="
|
|
121
|
+
<ion-checkbox [checked]="resolvedProps.selected"></ion-checkbox>
|
|
81
122
|
</div>
|
|
82
123
|
</ion-card-header>
|
|
83
124
|
|
|
84
|
-
<ion-card-content *ngIf="
|
|
125
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
85
126
|
</ion-card>
|
|
86
127
|
|
|
87
|
-
<ion-card *ngIf="
|
|
128
|
+
<ion-card *ngIf="resolvedProps.type === types.complex" class="complex">
|
|
88
129
|
<ion-card-header class="complex-header">
|
|
89
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
90
|
-
<ng-container *ngFor="let action of
|
|
130
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.leftActions?.length > 0">
|
|
131
|
+
<ng-container *ngFor="let action of resolvedProps.leftActions">
|
|
91
132
|
<ion-button
|
|
92
133
|
*ngIf="action.type === actionTypes.ICON"
|
|
93
134
|
(click)="clickHandler(sections.headerLeft, action.token)"
|
|
@@ -111,13 +152,13 @@ export class CardComponent {
|
|
|
111
152
|
>
|
|
112
153
|
{{ action.description }}
|
|
113
154
|
</ion-button>
|
|
114
|
-
<div *ngIf="
|
|
115
|
-
<val-text [props]="{ content:
|
|
155
|
+
<div *ngIf="resolvedProps.headerText">
|
|
156
|
+
<val-text [props]="{ content: resolvedProps.headerText, color: 'dark', bold: true, size: 'medium' }" />
|
|
116
157
|
</div>
|
|
117
158
|
</ng-container>
|
|
118
159
|
</ion-buttons>
|
|
119
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
120
|
-
<ng-container *ngFor="let action of
|
|
160
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.rightActions?.length > 0">
|
|
161
|
+
<ng-container *ngFor="let action of resolvedProps.rightActions">
|
|
121
162
|
<ion-button
|
|
122
163
|
*ngIf="action.type === actionTypes.ICON"
|
|
123
164
|
(click)="clickHandler(sections.headerRight, action.token)"
|
|
@@ -145,27 +186,27 @@ export class CardComponent {
|
|
|
145
186
|
</ion-buttons>
|
|
146
187
|
</ion-card-header>
|
|
147
188
|
|
|
148
|
-
<div class="tapable" (click)="clickHandler(sections.content,
|
|
149
|
-
<ion-card-header *ngIf="
|
|
189
|
+
<div class="tapable" (click)="clickHandler(sections.content, resolvedProps.token)">
|
|
190
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="complex-header">
|
|
150
191
|
<div>
|
|
151
|
-
<ion-card-subtitle *ngIf="
|
|
152
|
-
<ion-card-title *ngIf="
|
|
192
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
193
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
153
194
|
</div>
|
|
154
195
|
</ion-card-header>
|
|
155
196
|
|
|
156
|
-
<img alt="image" [src]="
|
|
157
|
-
<ion-card-content *ngIf="
|
|
197
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
198
|
+
<ion-card-content *ngIf="resolvedProps.content" class="complex-content">{{ resolvedProps.content }}</ion-card-content>
|
|
158
199
|
</div>
|
|
159
200
|
<val-button
|
|
160
|
-
*ngFor="let b of
|
|
201
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
161
202
|
[props]="b"
|
|
162
203
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
163
204
|
></val-button>
|
|
164
205
|
<ion-buttons
|
|
165
206
|
style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
|
|
166
|
-
*ngIf="
|
|
207
|
+
*ngIf="resolvedProps.footerComplexActions?.length > 0"
|
|
167
208
|
>
|
|
168
|
-
<ng-container *ngFor="let action of
|
|
209
|
+
<ng-container *ngFor="let action of resolvedProps.footerComplexActions">
|
|
169
210
|
<ion-button
|
|
170
211
|
*ngIf="action.type === actionTypes.ICON"
|
|
171
212
|
(click)="clickHandler(sections.footerExtra, action.token)"
|
|
@@ -213,58 +254,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
213
254
|
IonButton,
|
|
214
255
|
IonIcon,
|
|
215
256
|
], template: `
|
|
216
|
-
<ion-card *ngIf="
|
|
217
|
-
<img alt="image" [src]="
|
|
218
|
-
<ion-card-header *ngIf="
|
|
219
|
-
<ion-card-title *ngIf="
|
|
220
|
-
<ion-card-subtitle *ngIf="
|
|
257
|
+
<ion-card *ngIf="resolvedProps.type === types.native">
|
|
258
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
259
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
260
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
261
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
221
262
|
</ion-card-header>
|
|
222
263
|
|
|
223
|
-
<ion-card-content *ngIf="
|
|
264
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
224
265
|
|
|
225
266
|
<val-button
|
|
226
|
-
*ngFor="let b of
|
|
267
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
227
268
|
[props]="b"
|
|
228
269
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
229
270
|
></val-button>
|
|
230
271
|
</ion-card>
|
|
231
272
|
|
|
232
273
|
<ion-card
|
|
233
|
-
*ngIf="
|
|
234
|
-
(click)="clickHandler(sections.content,
|
|
274
|
+
*ngIf="resolvedProps.type === types.tappable"
|
|
275
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
235
276
|
class="tapable"
|
|
236
277
|
>
|
|
237
|
-
<img alt="image" [src]="
|
|
238
|
-
<ion-card-header *ngIf="
|
|
239
|
-
<ion-card-title *ngIf="
|
|
240
|
-
<ion-card-subtitle *ngIf="
|
|
278
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
279
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle">
|
|
280
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
281
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
241
282
|
</ion-card-header>
|
|
242
283
|
|
|
243
|
-
<ion-card-content *ngIf="
|
|
284
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
244
285
|
</ion-card>
|
|
245
286
|
|
|
246
287
|
<ion-card
|
|
247
|
-
*ngIf="
|
|
248
|
-
(click)="clickHandler(sections.content,
|
|
288
|
+
*ngIf="resolvedProps.type === types.checker"
|
|
289
|
+
(click)="clickHandler(sections.content, resolvedProps.token)"
|
|
249
290
|
class="tapable"
|
|
250
291
|
>
|
|
251
|
-
<ion-card-header *ngIf="
|
|
292
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="checker">
|
|
252
293
|
<div>
|
|
253
|
-
<ion-card-subtitle *ngIf="
|
|
254
|
-
<ion-card-title *ngIf="
|
|
294
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
295
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
255
296
|
</div>
|
|
256
297
|
<div>
|
|
257
|
-
<ion-checkbox [checked]="
|
|
298
|
+
<ion-checkbox [checked]="resolvedProps.selected"></ion-checkbox>
|
|
258
299
|
</div>
|
|
259
300
|
</ion-card-header>
|
|
260
301
|
|
|
261
|
-
<ion-card-content *ngIf="
|
|
302
|
+
<ion-card-content *ngIf="resolvedProps.content">{{ resolvedProps.content }}</ion-card-content>
|
|
262
303
|
</ion-card>
|
|
263
304
|
|
|
264
|
-
<ion-card *ngIf="
|
|
305
|
+
<ion-card *ngIf="resolvedProps.type === types.complex" class="complex">
|
|
265
306
|
<ion-card-header class="complex-header">
|
|
266
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
267
|
-
<ng-container *ngFor="let action of
|
|
307
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.leftActions?.length > 0">
|
|
308
|
+
<ng-container *ngFor="let action of resolvedProps.leftActions">
|
|
268
309
|
<ion-button
|
|
269
310
|
*ngIf="action.type === actionTypes.ICON"
|
|
270
311
|
(click)="clickHandler(sections.headerLeft, action.token)"
|
|
@@ -288,13 +329,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
288
329
|
>
|
|
289
330
|
{{ action.description }}
|
|
290
331
|
</ion-button>
|
|
291
|
-
<div *ngIf="
|
|
292
|
-
<val-text [props]="{ content:
|
|
332
|
+
<div *ngIf="resolvedProps.headerText">
|
|
333
|
+
<val-text [props]="{ content: resolvedProps.headerText, color: 'dark', bold: true, size: 'medium' }" />
|
|
293
334
|
</div>
|
|
294
335
|
</ng-container>
|
|
295
336
|
</ion-buttons>
|
|
296
|
-
<ion-buttons style="display: flex; align-items: center" *ngIf="
|
|
297
|
-
<ng-container *ngFor="let action of
|
|
337
|
+
<ion-buttons style="display: flex; align-items: center" *ngIf="resolvedProps.rightActions?.length > 0">
|
|
338
|
+
<ng-container *ngFor="let action of resolvedProps.rightActions">
|
|
298
339
|
<ion-button
|
|
299
340
|
*ngIf="action.type === actionTypes.ICON"
|
|
300
341
|
(click)="clickHandler(sections.headerRight, action.token)"
|
|
@@ -322,27 +363,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
322
363
|
</ion-buttons>
|
|
323
364
|
</ion-card-header>
|
|
324
365
|
|
|
325
|
-
<div class="tapable" (click)="clickHandler(sections.content,
|
|
326
|
-
<ion-card-header *ngIf="
|
|
366
|
+
<div class="tapable" (click)="clickHandler(sections.content, resolvedProps.token)">
|
|
367
|
+
<ion-card-header *ngIf="resolvedProps.title || resolvedProps.overtitle" class="complex-header">
|
|
327
368
|
<div>
|
|
328
|
-
<ion-card-subtitle *ngIf="
|
|
329
|
-
<ion-card-title *ngIf="
|
|
369
|
+
<ion-card-subtitle *ngIf="resolvedProps.overtitle">{{ resolvedProps.overtitle }}</ion-card-subtitle>
|
|
370
|
+
<ion-card-title *ngIf="resolvedProps.title">{{ resolvedProps.title }}</ion-card-title>
|
|
330
371
|
</div>
|
|
331
372
|
</ion-card-header>
|
|
332
373
|
|
|
333
|
-
<img alt="image" [src]="
|
|
334
|
-
<ion-card-content *ngIf="
|
|
374
|
+
<img alt="image" [src]="resolvedProps.image" />
|
|
375
|
+
<ion-card-content *ngIf="resolvedProps.content" class="complex-content">{{ resolvedProps.content }}</ion-card-content>
|
|
335
376
|
</div>
|
|
336
377
|
<val-button
|
|
337
|
-
*ngFor="let b of
|
|
378
|
+
*ngFor="let b of resolvedProps.footerActions"
|
|
338
379
|
[props]="b"
|
|
339
380
|
(onClick)="clickHandler(sections.footer, b.token)"
|
|
340
381
|
></val-button>
|
|
341
382
|
<ion-buttons
|
|
342
383
|
style="display: flex; align-items: center; justify-content: flex-end; margin: 8px"
|
|
343
|
-
*ngIf="
|
|
384
|
+
*ngIf="resolvedProps.footerComplexActions?.length > 0"
|
|
344
385
|
>
|
|
345
|
-
<ng-container *ngFor="let action of
|
|
386
|
+
<ng-container *ngFor="let action of resolvedProps.footerComplexActions">
|
|
346
387
|
<ion-button
|
|
347
388
|
*ngIf="action.type === actionTypes.ICON"
|
|
348
389
|
(click)="clickHandler(sections.footerExtra, action.token)"
|
|
@@ -371,9 +412,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
371
412
|
</ion-buttons>
|
|
372
413
|
</ion-card>
|
|
373
414
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}ion-card.tapable{transition:transform .3s ease,box-shadow .3s ease}ion-card.tapable:hover{transform:scale(1.01);box-shadow:.1875rem .625rem .5rem #1219541a}.tapable{cursor:pointer}.checker{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-header{padding:10px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.complex-content{padding-left:10px;padding-top:4px;padding-bottom:10px}.complex{border-radius:16px}img{border-radius:24px}\n"] }]
|
|
374
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
415
|
+
}], ctorParameters: () => [], propDecorators: { preset: [{
|
|
416
|
+
type: Input
|
|
417
|
+
}], props: [{
|
|
375
418
|
type: Input
|
|
376
419
|
}], onClick: [{
|
|
377
420
|
type: Output
|
|
378
421
|
}] } });
|
|
379
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsT0FBTyxHQUNSLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQWdDLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQXNMOUU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBeUJ4QjtRQVZBOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTdDLFVBQUssR0FBRyxRQUFRLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxhQUFRLEdBQUcsV0FBVyxDQUFDO0lBRVIsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLFlBQVksQ0FBQyxPQUFvQixFQUFFLEtBQWM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQS9CVSxhQUFhO21HQUFiLGFBQWEsaUlBNUtkOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThKVCxxa0dBN0tDLFlBQVksZ1FBQ1osZUFBZSwwR0FDZixlQUFlLGdHQUNmLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixPQUFPLHlMQUNQLGNBQWMsK0VBQ2QsYUFBYSxzR0FDYixZQUFZLHNGQUNaLGVBQWUseUZBQ2YsV0FBVyxxTUFDWCxVQUFVLDhFQUNWLFNBQVMsb1BBQ1QsT0FBTzs7NEZBOEtFLGFBQWE7a0JBL0x6QixTQUFTOytCQUNFLFVBQVUsY0FDUixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxPQUFPO3FCQUNSLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEpUO3dEQTJCRCxLQUFLO3NCQURKLEtBQUs7Z0JBT04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uQnV0dG9ucyxcbiAgSW9uQ2FyZCxcbiAgSW9uQ2FyZENvbnRlbnQsXG4gIElvbkNhcmRIZWFkZXIsXG4gIElvbkNhcmRTdWJ0aXRsZSxcbiAgSW9uQ2FyZFRpdGxlLFxuICBJb25DaGVja2JveCxcbiAgSW9uSWNvbixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2ltYWdlL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYmFyQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IENhcmRDbGlja0V2ZW50LCBDYXJkTWV0YWRhdGEsIENhcmRTZWN0aW9uLCBDYXJkVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICBJbWFnZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIElvbkNhcmQsXG4gICAgSW9uQ2FyZENvbnRlbnQsXG4gICAgSW9uQ2FyZEhlYWRlcixcbiAgICBJb25DYXJkVGl0bGUsXG4gICAgSW9uQ2FyZFN1YnRpdGxlLFxuICAgIElvbkNoZWNrYm94LFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkljb24sXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1jYXJkICpuZ0lmPVwicHJvcHMudHlwZSA9PT0gdHlwZXMubmF0aXZlXCI+XG4gICAgICA8aW1nIGFsdD1cImltYWdlXCIgW3NyY109XCJwcm9wcy5pbWFnZVwiIC8+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyICpuZ0lmPVwicHJvcHMudGl0bGUgfHwgcHJvcHMub3ZlcnRpdGxlXCI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSAqbmdJZj1cInByb3BzLnRpdGxlXCI+e3sgcHJvcHMudGl0bGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGUgKm5nSWY9XCJwcm9wcy5vdmVydGl0bGVcIj57eyBwcm9wcy5vdmVydGl0bGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50ICpuZ0lmPVwicHJvcHMuY29udGVudFwiPnt7IHByb3BzLmNvbnRlbnQgfX08L2lvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBiIG9mIHByb3BzLmZvb3RlckFjdGlvbnNcIlxuICAgICAgICBbcHJvcHNdPVwiYlwiXG4gICAgICAgIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5mb290ZXIsIGIudG9rZW4pXCJcbiAgICAgID48L3ZhbC1idXR0b24+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDxpb24tY2FyZFxuICAgICAgKm5nSWY9XCJwcm9wcy50eXBlID09PSB0eXBlcy50YXBwYWJsZVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmNvbnRlbnQsIHByb3BzLnRva2VuKVwiXG4gICAgICBjbGFzcz1cInRhcGFibGVcIlxuICAgID5cbiAgICAgIDxpbWcgYWx0PVwiaW1hZ2VcIiBbc3JjXT1cInByb3BzLmltYWdlXCIgLz5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXIgKm5nSWY9XCJwcm9wcy50aXRsZSB8fCBwcm9wcy5vdmVydGl0bGVcIj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlICpuZ0lmPVwicHJvcHMudGl0bGVcIj57eyBwcm9wcy50aXRsZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZSAqbmdJZj1cInByb3BzLm92ZXJ0aXRsZVwiPnt7IHByb3BzLm92ZXJ0aXRsZSB9fTwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJwcm9wcy5jb250ZW50XCI+e3sgcHJvcHMuY29udGVudCB9fTwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPGlvbi1jYXJkXG4gICAgICAqbmdJZj1cInByb3BzLnR5cGUgPT09IHR5cGVzLmNoZWNrZXJcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5jb250ZW50LCBwcm9wcy50b2tlbilcIlxuICAgICAgY2xhc3M9XCJ0YXBhYmxlXCJcbiAgICA+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyICpuZ0lmPVwicHJvcHMudGl0bGUgfHwgcHJvcHMub3ZlcnRpdGxlXCIgY2xhc3M9XCJjaGVja2VyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlICpuZ0lmPVwicHJvcHMub3ZlcnRpdGxlXCI+e3sgcHJvcHMub3ZlcnRpdGxlIH19PC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICA8aW9uLWNhcmQtdGl0bGUgKm5nSWY9XCJwcm9wcy50aXRsZVwiPnt7IHByb3BzLnRpdGxlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGlvbi1jaGVja2JveCBbY2hlY2tlZF09XCJwcm9wcy5zZWxlY3RlZFwiPjwvaW9uLWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuXG4gICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cInByb3BzLmNvbnRlbnRcIj57eyBwcm9wcy5jb250ZW50IH19PC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG5cbiAgICA8aW9uLWNhcmQgKm5nSWY9XCJwcm9wcy50eXBlID09PSB0eXBlcy5jb21wbGV4XCIgY2xhc3M9XCJjb21wbGV4XCI+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiY29tcGxleC1oZWFkZXJcIj5cbiAgICAgICAgPGlvbi1idXR0b25zIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlclwiICpuZ0lmPVwicHJvcHMubGVmdEFjdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBwcm9wcy5sZWZ0QWN0aW9uc1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSUNPTlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuaGVhZGVyTGVmdCwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDx2YWwtYXZhdGFyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHg7IGN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkFWQVRBUlwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGltYWdlOiBhY3Rpb24uZGVzY3JpcHRpb24sIGRlZmF1bHQ6ICcnIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuaGVhZGVyTGVmdCwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtYXZhdGFyPlxuICAgICAgICAgICAgPHZhbC1pbWFnZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JTUFHRVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJhY3Rpb24uaW1hZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmhlYWRlckxlZnQsIGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLWltYWdlPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQlVUVE9OXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5oZWFkZXJMZWZ0LCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgYWN0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcHMuaGVhZGVyVGV4dFwiPlxuICAgICAgICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgY29udGVudDogcHJvcHMuaGVhZGVyVGV4dCwgY29sb3I6ICdkYXJrJywgYm9sZDogdHJ1ZSwgc2l6ZTogJ21lZGl1bScgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgPGlvbi1idXR0b25zIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlclwiICpuZ0lmPVwicHJvcHMucmlnaHRBY3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgcHJvcHMucmlnaHRBY3Rpb25zXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JQ09OXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5oZWFkZXJSaWdodCwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDx2YWwtYXZhdGFyXG4gICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHg7IGN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkFWQVRBUlwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGltYWdlOiBhY3Rpb24uZGVzY3JpcHRpb24sIGRlZmF1bHQ6ICcnIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuaGVhZGVyUmlnaHQsIGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPjwvdmFsLWF2YXRhcj5cbiAgICAgICAgICAgIDx2YWwtaW1hZ2VcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSU1BR0VcIlxuICAgICAgICAgICAgICBbcHJvcHNdPVwiYWN0aW9uLmltYWdlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5oZWFkZXJSaWdodCwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtaW1hZ2U+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5CVVRUT05cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmhlYWRlclJpZ2h0LCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgYWN0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRhcGFibGVcIiAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmNvbnRlbnQsIHByb3BzLnRva2VuKVwiPlxuICAgICAgICA8aW9uLWNhcmQtaGVhZGVyICpuZ0lmPVwicHJvcHMudGl0bGUgfHwgcHJvcHMub3ZlcnRpdGxlXCIgY2xhc3M9XCJjb21wbGV4LWhlYWRlclwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGUgKm5nSWY9XCJwcm9wcy5vdmVydGl0bGVcIj57eyBwcm9wcy5vdmVydGl0bGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlICpuZ0lmPVwicHJvcHMudGl0bGVcIj57eyBwcm9wcy50aXRsZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuXG4gICAgICAgIDxpbWcgYWx0PVwiaW1hZ2VcIiBbc3JjXT1cInByb3BzLmltYWdlXCIgLz5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJwcm9wcy5jb250ZW50XCIgY2xhc3M9XCJjb21wbGV4LWNvbnRlbnRcIj57eyBwcm9wcy5jb250ZW50IH19PC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgYiBvZiBwcm9wcy5mb290ZXJBY3Rpb25zXCJcbiAgICAgICAgW3Byb3BzXT1cImJcIlxuICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuZm9vdGVyLCBiLnRva2VuKVwiXG4gICAgICA+PC92YWwtYnV0dG9uPlxuICAgICAgPGlvbi1idXR0b25zXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgbWFyZ2luOiA4cHhcIlxuICAgICAgICAqbmdJZj1cInByb3BzLmZvb3RlckNvbXBsZXhBY3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgcHJvcHMuZm9vdGVyQ29tcGxleEFjdGlvbnNcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSUNPTlwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmZvb3RlckV4dHJhLCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtuYW1lXT1cImFjdGlvbi5kZXNjcmlwdGlvblwiIGNvbG9yPVwiZGFya1wiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDx2YWwtYXZhdGFyXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNHB4OyBjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQVZBVEFSXCJcbiAgICAgICAgICAgIFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGltYWdlOiBhY3Rpb24uZGVzY3JpcHRpb24sIGRlZmF1bHQ6ICcnIH1cIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmZvb3RlckV4dHJhLCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICA+PC92YWwtYXZhdGFyPlxuICAgICAgICAgIDx2YWwtaW1hZ2VcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklNQUdFXCJcbiAgICAgICAgICAgIFtwcm9wc109XCJhY3Rpb24uaW1hZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5mb290ZXJFeHRyYSwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgPjwvdmFsLWltYWdlPlxuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5CVVRUT05cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5mb290ZXJFeHRyYSwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2lvbi1idXR0b25zPlxuICAgIDwvaW9uLWNhcmQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1jYXJkXG4gKlxuICogQSBmbGV4aWJsZSBjYXJkIGNvbXBvbmVudCBzdXBwb3J0aW5nIGltYWdlcywgdGl0bGVzLCBjb250ZW50LCBhY3Rpb25zLCBhbmQgY3VzdG9tIHNlY3Rpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWNhcmQgW3Byb3BzXT1cInsgdHlwZTogJ25hdGl2ZScsIHRpdGxlOiAnQ2FyZCcsIGltYWdlOiAndXJsJywgY29udGVudDogJy4uLicsIGFjdGlvbnM6IFsuLi5dIH1cIiAob25DbGljayk9XCJoYW5kbGVyKCRldmVudClcIj48L3ZhbC1jYXJkPlxuICpcbiAqIEBpbnB1dCBwcm9wczogQ2FyZE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNhcmQgKHR5cGUsIHRpdGxlLCBpbWFnZSwgY29udGVudCwgYWN0aW9ucywgZXRjLilcbiAqIEBvdXRwdXQgb25DbGljayAtIEVtaXRzIGEgQ2FyZENsaWNrRXZlbnQgd2hlbiB0aGUgY2FyZCBvciBhbiBhY3Rpb24gaXMgY2xpY2tlZFxuICovXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDYXJkIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7Q2FyZE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgdHlwZSAtIFRoZSBjYXJkIHR5cGUgKHNlZSBDYXJkVHlwZSkuXG4gICAqIEBwcm9wZXJ0eSB0aXRsZSAtIFRoZSBjYXJkIHRpdGxlLlxuICAgKiBAcHJvcGVydHkgaW1hZ2UgLSBUaGUgY2FyZCBpbWFnZSBVUkwuXG4gICAqIEBwcm9wZXJ0eSBjb250ZW50IC0gVGhlIGNhcmQgY29udGVudC5cbiAgICogQHByb3BlcnR5IGFjdGlvbnMgLSBBcnJheSBvZiBhY3Rpb24gYnV0dG9ucyAob3B0aW9uYWwpLlxuICAgKiBAcHJvcGVydHkgc2VjdGlvbnMgLSBDdXN0b20gY2FyZCBzZWN0aW9ucyAob3B0aW9uYWwpLlxuICAgKiBAcHJvcGVydHkgb3ZlcnRpdGxlIC0gU3VidGl0bGUgb3Igb3ZlcnRpdGxlIChvcHRpb25hbCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogQ2FyZE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNhcmQgb3IgYW4gYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZENsaWNrRXZlbnQ+KCk7XG5cbiAgdHlwZXMgPSBDYXJkVHlwZTtcbiAgYWN0aW9uVHlwZXMgPSBUb29sYmFyQWN0aW9uVHlwZTtcbiAgc2VjdGlvbnMgPSBDYXJkU2VjdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGNsaWNrSGFuZGxlcihzZWN0aW9uOiBDYXJkU2VjdGlvbiwgdG9rZW4/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IHNlY3Rpb24sIHRva2VuIH0pO1xuICB9XG59XG4iXX0=
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsT0FBTyxHQUNSLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFnQyxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFzTDlFOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBd0N4QjtRQXZDUSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBV3hDOzs7Ozs7Ozs7O1dBVUc7UUFDTSxVQUFLLEdBQTBCLEVBQUUsQ0FBQztRQUUzQzs7V0FFRztRQUNILGtCQUFhLEdBQWlCLEVBQWtCLENBQUM7UUFFakQ7O1dBRUc7UUFFSCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFN0MsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUNqQixnQkFBVyxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLGFBQVEsR0FBRyxXQUFXLENBQUM7SUFFUixDQUFDO0lBRWhCLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxZQUFZO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUEyQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFeEcsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixHQUFHLFdBQVc7WUFDZCxHQUFHLElBQUksQ0FBQyxLQUFLO1NBQ0UsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQW9CLEVBQUUsS0FBYztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7K0dBbkVVLGFBQWE7bUdBQWIsYUFBYSx3S0FqTGQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEpULHFrR0E3S0MsWUFBWSxnUUFDWixlQUFlLDBHQUNmLGVBQWUsZ0dBQ2YsY0FBYyx5RUFDZCxhQUFhLHdFQUNiLE9BQU8seUxBQ1AsY0FBYywrRUFDZCxhQUFhLHNHQUNiLFlBQVksc0ZBQ1osZUFBZSx5RkFDZixXQUFXLHFNQUNYLFVBQVUsOEVBQ1YsU0FBUyxvUEFDVCxPQUFPOzs0RkFtTEUsYUFBYTtrQkFwTXpCLFNBQVM7K0JBQ0UsVUFBVSxjQUNSLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixTQUFTO3dCQUNULE9BQU87cUJBQ1IsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4SlQ7d0RBNkJRLE1BQU07c0JBQWQsS0FBSztnQkFhRyxLQUFLO3NCQUFiLEtBQUs7Z0JBV04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNhcmQsXG4gIElvbkNhcmRDb250ZW50LFxuICBJb25DYXJkSGVhZGVyLFxuICBJb25DYXJkU3VidGl0bGUsXG4gIElvbkNhcmRUaXRsZSxcbiAgSW9uQ2hlY2tib3gsXG4gIElvbkljb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBDYXJkQ2xpY2tFdmVudCwgQ2FyZE1ldGFkYXRhLCBDYXJkU2VjdGlvbiwgQ2FyZFR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgSW1hZ2VDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBJb25DYXJkLFxuICAgIElvbkNhcmRDb250ZW50LFxuICAgIElvbkNhcmRIZWFkZXIsXG4gICAgSW9uQ2FyZFRpdGxlLFxuICAgIElvbkNhcmRTdWJ0aXRsZSxcbiAgICBJb25DaGVja2JveCxcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tY2FyZCAqbmdJZj1cInJlc29sdmVkUHJvcHMudHlwZSA9PT0gdHlwZXMubmF0aXZlXCI+XG4gICAgICA8aW1nIGFsdD1cImltYWdlXCIgW3NyY109XCJyZXNvbHZlZFByb3BzLmltYWdlXCIgLz5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXIgKm5nSWY9XCJyZXNvbHZlZFByb3BzLnRpdGxlIHx8IHJlc29sdmVkUHJvcHMub3ZlcnRpdGxlXCI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSAqbmdJZj1cInJlc29sdmVkUHJvcHMudGl0bGVcIj57eyByZXNvbHZlZFByb3BzLnRpdGxlIH19PC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPGlvbi1jYXJkLXN1YnRpdGxlICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy5vdmVydGl0bGVcIj57eyByZXNvbHZlZFByb3BzLm92ZXJ0aXRsZSB9fTwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJyZXNvbHZlZFByb3BzLmNvbnRlbnRcIj57eyByZXNvbHZlZFByb3BzLmNvbnRlbnQgfX08L2lvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBiIG9mIHJlc29sdmVkUHJvcHMuZm9vdGVyQWN0aW9uc1wiXG4gICAgICAgIFtwcm9wc109XCJiXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmZvb3RlciwgYi50b2tlbilcIlxuICAgICAgPjwvdmFsLWJ1dHRvbj5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPGlvbi1jYXJkXG4gICAgICAqbmdJZj1cInJlc29sdmVkUHJvcHMudHlwZSA9PT0gdHlwZXMudGFwcGFibGVcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5jb250ZW50LCByZXNvbHZlZFByb3BzLnRva2VuKVwiXG4gICAgICBjbGFzcz1cInRhcGFibGVcIlxuICAgID5cbiAgICAgIDxpbWcgYWx0PVwiaW1hZ2VcIiBbc3JjXT1cInJlc29sdmVkUHJvcHMuaW1hZ2VcIiAvPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlciAqbmdJZj1cInJlc29sdmVkUHJvcHMudGl0bGUgfHwgcmVzb2x2ZWRQcm9wcy5vdmVydGl0bGVcIj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy50aXRsZVwiPnt7IHJlc29sdmVkUHJvcHMudGl0bGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGUgKm5nSWY9XCJyZXNvbHZlZFByb3BzLm92ZXJ0aXRsZVwiPnt7IHJlc29sdmVkUHJvcHMub3ZlcnRpdGxlIH19PC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuXG4gICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cInJlc29sdmVkUHJvcHMuY29udGVudFwiPnt7IHJlc29sdmVkUHJvcHMuY29udGVudCB9fTwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPGlvbi1jYXJkXG4gICAgICAqbmdJZj1cInJlc29sdmVkUHJvcHMudHlwZSA9PT0gdHlwZXMuY2hlY2tlclwiXG4gICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmNvbnRlbnQsIHJlc29sdmVkUHJvcHMudG9rZW4pXCJcbiAgICAgIGNsYXNzPVwidGFwYWJsZVwiXG4gICAgPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlciAqbmdJZj1cInJlc29sdmVkUHJvcHMudGl0bGUgfHwgcmVzb2x2ZWRQcm9wcy5vdmVydGl0bGVcIiBjbGFzcz1cImNoZWNrZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGUgKm5nSWY9XCJyZXNvbHZlZFByb3BzLm92ZXJ0aXRsZVwiPnt7IHJlc29sdmVkUHJvcHMub3ZlcnRpdGxlIH19PC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgICAgICA8aW9uLWNhcmQtdGl0bGUgKm5nSWY9XCJyZXNvbHZlZFByb3BzLnRpdGxlXCI+e3sgcmVzb2x2ZWRQcm9wcy50aXRsZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxpb24tY2hlY2tib3ggW2NoZWNrZWRdPVwicmVzb2x2ZWRQcm9wcy5zZWxlY3RlZFwiPjwvaW9uLWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuXG4gICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cInJlc29sdmVkUHJvcHMuY29udGVudFwiPnt7IHJlc29sdmVkUHJvcHMuY29udGVudCB9fTwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPGlvbi1jYXJkICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy50eXBlID09PSB0eXBlcy5jb21wbGV4XCIgY2xhc3M9XCJjb21wbGV4XCI+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyIGNsYXNzPVwiY29tcGxleC1oZWFkZXJcIj5cbiAgICAgICAgPGlvbi1idXR0b25zIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlclwiICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy5sZWZ0QWN0aW9ucz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByZXNvbHZlZFByb3BzLmxlZnRBY3Rpb25zXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JQ09OXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5oZWFkZXJMZWZ0LCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBbbmFtZV09XCJhY3Rpb24uZGVzY3JpcHRpb25cIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPHZhbC1hdmF0YXJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDRweDsgY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQVZBVEFSXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgaW1hZ2U6IGFjdGlvbi5kZXNjcmlwdGlvbiwgZGVmYXVsdDogJycgfVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5oZWFkZXJMZWZ0LCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC1hdmF0YXI+XG4gICAgICAgICAgICA8dmFsLWltYWdlXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklNQUdFXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cImFjdGlvbi5pbWFnZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuaGVhZGVyTGVmdCwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtaW1hZ2U+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5CVVRUT05cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmhlYWRlckxlZnQsIGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhY3Rpb24uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXNvbHZlZFByb3BzLmhlYWRlclRleHRcIj5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJlc29sdmVkUHJvcHMuaGVhZGVyVGV4dCwgY29sb3I6ICdkYXJrJywgYm9sZDogdHJ1ZSwgc2l6ZTogJ21lZGl1bScgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgPGlvbi1idXR0b25zIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlclwiICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy5yaWdodEFjdGlvbnM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgcmVzb2x2ZWRQcm9wcy5yaWdodEFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLklDT05cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmhlYWRlclJpZ2h0LCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBbbmFtZV09XCJhY3Rpb24uZGVzY3JpcHRpb25cIiBjb2xvcj1cImRhcmtcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPHZhbC1hdmF0YXJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDRweDsgY3Vyc29yOiBwb2ludGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuQVZBVEFSXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgaW1hZ2U6IGFjdGlvbi5kZXNjcmlwdGlvbiwgZGVmYXVsdDogJycgfVwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcihzZWN0aW9ucy5oZWFkZXJSaWdodCwgYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICA+PC92YWwtYXZhdGFyPlxuICAgICAgICAgICAgPHZhbC1pbWFnZVxuICAgICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JTUFHRVwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJhY3Rpb24uaW1hZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmhlYWRlclJpZ2h0LCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgID48L3ZhbC1pbWFnZT5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkJVVFRPTlwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuaGVhZGVyUmlnaHQsIGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBhY3Rpb24uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGFwYWJsZVwiIChjbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuY29udGVudCwgcmVzb2x2ZWRQcm9wcy50b2tlbilcIj5cbiAgICAgICAgPGlvbi1jYXJkLWhlYWRlciAqbmdJZj1cInJlc29sdmVkUHJvcHMudGl0bGUgfHwgcmVzb2x2ZWRQcm9wcy5vdmVydGl0bGVcIiBjbGFzcz1cImNvbXBsZXgtaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZSAqbmdJZj1cInJlc29sdmVkUHJvcHMub3ZlcnRpdGxlXCI+e3sgcmVzb2x2ZWRQcm9wcy5vdmVydGl0bGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlICpuZ0lmPVwicmVzb2x2ZWRQcm9wcy50aXRsZVwiPnt7IHJlc29sdmVkUHJvcHMudGl0bGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgICA8aW1nIGFsdD1cImltYWdlXCIgW3NyY109XCJyZXNvbHZlZFByb3BzLmltYWdlXCIgLz5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJyZXNvbHZlZFByb3BzLmNvbnRlbnRcIiBjbGFzcz1cImNvbXBsZXgtY29udGVudFwiPnt7IHJlc29sdmVkUHJvcHMuY29udGVudCB9fTwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IGIgb2YgcmVzb2x2ZWRQcm9wcy5mb290ZXJBY3Rpb25zXCJcbiAgICAgICAgW3Byb3BzXT1cImJcIlxuICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuZm9vdGVyLCBiLnRva2VuKVwiXG4gICAgICA+PC92YWwtYnV0dG9uPlxuICAgICAgPGlvbi1idXR0b25zXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgbWFyZ2luOiA4cHhcIlxuICAgICAgICAqbmdJZj1cInJlc29sdmVkUHJvcHMuZm9vdGVyQ29tcGxleEFjdGlvbnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgcmVzb2x2ZWRQcm9wcy5mb290ZXJDb21wbGV4QWN0aW9uc1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5JQ09OXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuZm9vdGVyRXh0cmEsIGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW25hbWVdPVwiYWN0aW9uLmRlc2NyaXB0aW9uXCIgY29sb3I9XCJkYXJrXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPHZhbC1hdmF0YXJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHg7IGN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvbi50eXBlID09PSBhY3Rpb25UeXBlcy5BVkFUQVJcIlxuICAgICAgICAgICAgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgaW1hZ2U6IGFjdGlvbi5kZXNjcmlwdGlvbiwgZGVmYXVsdDogJycgfVwiXG4gICAgICAgICAgICAob25DbGljayk9XCJjbGlja0hhbmRsZXIoc2VjdGlvbnMuZm9vdGVyRXh0cmEsIGFjdGlvbi50b2tlbilcIlxuICAgICAgICAgID48L3ZhbC1hdmF0YXI+XG4gICAgICAgICAgPHZhbC1pbWFnZVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXMuSU1BR0VcIlxuICAgICAgICAgICAgW3Byb3BzXT1cImFjdGlvbi5pbWFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmZvb3RlckV4dHJhLCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICA+PC92YWwtaW1hZ2U+XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzLkJVVFRPTlwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKHNlY3Rpb25zLmZvb3RlckV4dHJhLCBhY3Rpb24udG9rZW4pXCJcbiAgICAgICAgICAgIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPC9pb24tY2FyZD5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWNhcmRcbiAqXG4gKiBBIGZsZXhpYmxlIGNhcmQgY29tcG9uZW50IHN1cHBvcnRpbmcgaW1hZ2VzLCB0aXRsZXMsIGNvbnRlbnQsIGFjdGlvbnMsIGFuZCBjdXN0b20gc2VjdGlvbnMuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC1jYXJkIHByZXNldD1cImZlYXR1cmVcIiBbcHJvcHNdPVwieyB0aXRsZTogJ0NhcmQnLCBpbWFnZTogJ3VybCcsIGNvbnRlbnQ6ICcuLi4nIH1cIiAob25DbGljayk9XCJoYW5kbGVyKCRldmVudClcIj48L3ZhbC1jYXJkPlxuICpcbiAqIEBleGFtcGxlIFN0YXRpYyAoYmFja3dhcmRzIGNvbXBhdGlibGUpOlxuICogPHZhbC1jYXJkIFtwcm9wc109XCJ7IHR5cGU6ICduYXRpdmUnLCB0aXRsZTogJ0NhcmQnLCBpbWFnZTogJ3VybCcsIGNvbnRlbnQ6ICcuLi4nIH1cIiAob25DbGljayk9XCJoYW5kbGVyKCRldmVudClcIj48L3ZhbC1jYXJkPlxuICpcbiAqIEBpbnB1dCBwcmVzZXQ6IHN0cmluZyAtIE5hbWUgb2YgcHJlc2V0IHRvIGFwcGx5IChlLmcuLCAnZmVhdHVyZScsICdjb21wYWN0JylcbiAqIEBpbnB1dCBwcm9wczogQ2FyZE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNhcmQgKG92ZXJyaWRlcyBwcmVzZXQgdmFsdWVzKVxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdHMgYSBDYXJkQ2xpY2tFdmVudCB3aGVuIHRoZSBjYXJkIG9yIGFuIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbmV4cG9ydCBjbGFzcyBDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBjYXJkIGNvbmZpZ3VyYXRpb25zXG4gICAqICh0eXBlLCB2YXJpYW50LCBwYWRkaW5nLCBldGMuKSB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHZhbC1jYXJkIHByZXNldD1cImZlYXR1cmVcIiBbcHJvcHNdPVwieyB0aXRsZTogJ015IENhcmQnIH1cIj48L3ZhbC1jYXJkPlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDYXJkIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBWYWx1ZXMgaGVyZSBvdmVycmlkZSBwcmVzZXQgdmFsdWVzLlxuICAgKiBAdHlwZSB7Q2FyZE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgdHlwZSAtIFRoZSBjYXJkIHR5cGUgKHNlZSBDYXJkVHlwZSkuXG4gICAqIEBwcm9wZXJ0eSB0aXRsZSAtIFRoZSBjYXJkIHRpdGxlLlxuICAgKiBAcHJvcGVydHkgaW1hZ2UgLSBUaGUgY2FyZCBpbWFnZSBVUkwuXG4gICAqIEBwcm9wZXJ0eSBjb250ZW50IC0gVGhlIGNhcmQgY29udGVudC5cbiAgICogQHByb3BlcnR5IGFjdGlvbnMgLSBBcnJheSBvZiBhY3Rpb24gYnV0dG9ucyAob3B0aW9uYWwpLlxuICAgKiBAcHJvcGVydHkgc2VjdGlvbnMgLSBDdXN0b20gY2FyZCBzZWN0aW9ucyAob3B0aW9uYWwpLlxuICAgKiBAcHJvcGVydHkgb3ZlcnRpdGxlIC0gU3VidGl0bGUgb3Igb3ZlcnRpdGxlIChvcHRpb25hbCkuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxDYXJkTWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBDYXJkTWV0YWRhdGEgPSB7fSBhcyBDYXJkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2FyZCBvciBhbiBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkQ2xpY2tFdmVudD4oKTtcblxuICB0eXBlcyA9IENhcmRUeXBlO1xuICBhY3Rpb25UeXBlcyA9IFRvb2xiYXJBY3Rpb25UeXBlO1xuICBzZWN0aW9ucyA9IENhcmRTZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwcmVzZXQnXSB8fCBjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBwcmVzZXQgY29uZmlndXJhdGlvbiB3aXRoIGV4cGxpY2l0IHByb3BzLlxuICAgKiBFeHBsaWNpdCBwcm9wcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldCA/ICh0aGlzLnByZXNldHMuZ2V0KCdjYXJkJywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8Q2FyZE1ldGFkYXRhPikgOiB7fTtcblxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIENhcmRNZXRhZGF0YTtcbiAgfVxuXG4gIGNsaWNrSGFuZGxlcihzZWN0aW9uOiBDYXJkU2VjdGlvbiwgdG9rZW4/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IHNlY3Rpb24sIHRva2VuIH0pO1xuICB9XG59XG4iXX0=
|