@softpak/components 0.1.8-beta.1 → 0.1.8-beta.11

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.
Files changed (36) hide show
  1. package/esm2022/spx-change-details/spx-change-details.component.mjs +92 -85
  2. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +42 -42
  3. package/esm2022/spx-form-view/public-api.mjs +4 -1
  4. package/esm2022/spx-form-view/spx-form-button-type.enum.mjs +6 -0
  5. package/esm2022/spx-form-view/spx-form-button.interface.mjs +2 -0
  6. package/esm2022/spx-form-view/spx-form-view.component.mjs +29 -7
  7. package/esm2022/spx-form-view/spx-form.interface.mjs +2 -0
  8. package/esm2022/spx-pagination/public-api.mjs +2 -0
  9. package/esm2022/spx-pagination/softpak-components-spx-pagination.mjs +5 -0
  10. package/esm2022/spx-pagination/spx-pagination.component.mjs +44 -0
  11. package/esm2022/spx-stock-info/public-api.mjs +2 -1
  12. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +111 -104
  13. package/fesm2022/softpak-components-spx-change-details.mjs +91 -84
  14. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  15. package/fesm2022/softpak-components-spx-channel-selection.mjs +41 -41
  16. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  17. package/fesm2022/softpak-components-spx-form-view.mjs +35 -7
  18. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  19. package/fesm2022/softpak-components-spx-pagination.mjs +51 -0
  20. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -0
  21. package/fesm2022/softpak-components-spx-stock-info.mjs +110 -103
  22. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  23. package/package.json +31 -25
  24. package/spx-change-details/spx-change-details.component.d.ts +12 -16
  25. package/spx-channel-selection/src/spx-welcome.component.d.ts +6 -7
  26. package/spx-form-view/public-api.d.ts +3 -0
  27. package/spx-form-view/spx-form-button-type.enum.d.ts +4 -0
  28. package/spx-form-view/spx-form-button.interface.d.ts +8 -0
  29. package/spx-form-view/spx-form-view.component.d.ts +3 -2
  30. package/spx-form-view/spx-form.interface.d.ts +6 -0
  31. package/spx-pagination/index.d.ts +5 -0
  32. package/spx-pagination/public-api.d.ts +1 -0
  33. package/spx-pagination/spx-pagination.component.d.ts +16 -0
  34. package/spx-stock-info/public-api.d.ts +1 -0
  35. package/spx-stock-info/spx-stock-info.component.d.ts +5 -9
  36. package/tailwind.css +1 -1
@@ -3,7 +3,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
3
3
  import { spxValidatorRequired, SpxValidateControlComponent } from '@softpak/components/spx-validation';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { SpxInputComponent, SpxInputTypeEnum } from '@softpak/components/spx-inputs';
6
- import { SpxFormViewComponent } from '@softpak/components/spx-form-view';
6
+ import { SpxFormButtonTypeEnum, SpxFormViewComponent } from '@softpak/components/spx-form-view';
7
7
  import { SpxButtonComponent } from '@softpak/components/spx-button';
8
8
  import { SpxSeverityEnum } from '@softpak/components/spx-helpers';
9
9
  import * as i0 from "@angular/core";
@@ -36,108 +36,113 @@ export class SpxStockInfoComponent {
36
36
  this.spxSearchContainerStatus = new EventEmitter();
37
37
  this.spxSearchCustomer = new EventEmitter();
38
38
  this.submit = new EventEmitter();
39
- this.inputTypeAutocomplete = SpxInputTypeEnum.autocomplete;
40
- this.inputTypeRadio = SpxInputTypeEnum.radio;
41
- this.inputTypeText = SpxInputTypeEnum.text;
42
- this.severitySuccess = SpxSeverityEnum.success;
43
- this.sections = [
44
- {
45
- key: sectionLocation,
46
- show: () => true,
47
- title: () => this.textLocation,
48
- fields: [
49
- {
50
- key: ctrlDepot,
51
- label: () => this.textDepot,
52
- type: () => SpxInputTypeEnum.text,
53
- defaultValue: () => this.depot,
54
- validators: () => [spxValidatorRequired()],
55
- readonly: () => true,
56
- suggestions: () => false,
57
- afterValueChange: undefined,
58
- show: () => true,
59
- capitalize: () => true,
60
- },
61
- {
62
- key: ctrlLocation,
63
- label: () => this.textLocation,
64
- type: () => SpxInputTypeEnum.text,
65
- defaultValue: () => null,
66
- validators: () => [],
67
- readonly: () => false,
68
- suggestions: () => false,
69
- afterValueChange: undefined,
70
- show: () => true,
71
- capitalize: () => true,
72
- },
73
- ]
74
- },
75
- {
76
- key: sectionCustomer,
77
- show: () => true,
78
- title: () => this.textCustomer,
79
- fields: [
80
- {
81
- key: ctrlCustomer,
82
- label: () => this.textCustomer,
83
- type: () => SpxInputTypeEnum.autocomplete,
84
- defaultValue: () => null,
85
- validators: () => [],
86
- readonly: () => false,
87
- suggestions: () => true,
88
- afterValueChange: undefined,
89
- show: () => true,
90
- capitalize: () => true,
91
- },
92
- ]
93
- },
94
- {
95
- key: sectionContainerInfo,
96
- show: () => true,
97
- title: () => this.textContainerInfo,
98
- fields: [
99
- {
100
- key: ctrlCategory,
101
- label: () => this.textCategory,
102
- type: () => SpxInputTypeEnum.autocomplete,
103
- defaultValue: () => null,
104
- validators: () => [],
105
- readonly: () => false,
106
- suggestions: () => true,
107
- afterValueChange: undefined,
108
- show: () => true,
109
- capitalize: () => true,
110
- },
111
- {
112
- key: ctrlContainerStatus,
113
- label: () => this.textContainerStatus,
114
- type: () => SpxInputTypeEnum.autocomplete,
115
- defaultValue: () => null,
116
- validators: () => [],
117
- readonly: () => false,
118
- suggestions: () => true,
119
- afterValueChange: undefined,
120
- show: () => true,
121
- capitalize: () => true,
122
- },
123
- {
124
- key: ctrlContainerType,
125
- label: () => this.textContainerType,
126
- type: () => SpxInputTypeEnum.autocomplete,
127
- defaultValue: () => null,
128
- validators: () => [],
129
- readonly: () => false,
130
- suggestions: () => true,
131
- afterValueChange: undefined,
132
- show: () => true,
133
- capitalize: () => true,
134
- },
135
- ]
136
- },
137
- ];
39
+ this.form = {
40
+ buttons: [
41
+ {
42
+ severity: SpxSeverityEnum.success,
43
+ type: SpxFormButtonTypeEnum.submit,
44
+ label: () => this.textSearch,
45
+ }
46
+ ],
47
+ sections: [
48
+ {
49
+ key: sectionLocation,
50
+ show: () => true,
51
+ title: () => this.textLocation,
52
+ fields: [
53
+ {
54
+ key: ctrlDepot,
55
+ label: () => this.textDepot,
56
+ type: () => SpxInputTypeEnum.text,
57
+ defaultValue: () => this.depot,
58
+ validators: () => [spxValidatorRequired()],
59
+ readonly: () => true,
60
+ suggestions: () => false,
61
+ afterValueChange: undefined,
62
+ show: () => true,
63
+ capitalize: () => true,
64
+ },
65
+ {
66
+ key: ctrlLocation,
67
+ label: () => this.textLocation,
68
+ type: () => SpxInputTypeEnum.text,
69
+ defaultValue: () => null,
70
+ validators: () => [],
71
+ readonly: () => false,
72
+ suggestions: () => false,
73
+ afterValueChange: undefined,
74
+ show: () => true,
75
+ capitalize: () => true,
76
+ },
77
+ ]
78
+ },
79
+ {
80
+ key: sectionCustomer,
81
+ show: () => true,
82
+ title: () => this.textCustomer,
83
+ fields: [
84
+ {
85
+ key: ctrlCustomer,
86
+ label: () => this.textCustomer,
87
+ type: () => SpxInputTypeEnum.autocomplete,
88
+ defaultValue: () => null,
89
+ validators: () => [],
90
+ readonly: () => false,
91
+ suggestions: () => true,
92
+ afterValueChange: undefined,
93
+ show: () => true,
94
+ capitalize: () => true,
95
+ },
96
+ ]
97
+ },
98
+ {
99
+ key: sectionContainerInfo,
100
+ show: () => true,
101
+ title: () => this.textContainerInfo,
102
+ fields: [
103
+ {
104
+ key: ctrlCategory,
105
+ label: () => this.textCategory,
106
+ type: () => SpxInputTypeEnum.autocomplete,
107
+ defaultValue: () => null,
108
+ validators: () => [],
109
+ readonly: () => false,
110
+ suggestions: () => true,
111
+ afterValueChange: undefined,
112
+ show: () => true,
113
+ capitalize: () => true,
114
+ },
115
+ {
116
+ key: ctrlContainerStatus,
117
+ label: () => this.textContainerStatus,
118
+ type: () => SpxInputTypeEnum.autocomplete,
119
+ defaultValue: () => null,
120
+ validators: () => [],
121
+ readonly: () => false,
122
+ suggestions: () => true,
123
+ afterValueChange: undefined,
124
+ show: () => true,
125
+ capitalize: () => true,
126
+ },
127
+ {
128
+ key: ctrlContainerType,
129
+ label: () => this.textContainerType,
130
+ type: () => SpxInputTypeEnum.autocomplete,
131
+ defaultValue: () => null,
132
+ validators: () => [],
133
+ readonly: () => false,
134
+ suggestions: () => true,
135
+ afterValueChange: undefined,
136
+ show: () => true,
137
+ capitalize: () => true,
138
+ },
139
+ ]
140
+ },
141
+ ]
142
+ };
138
143
  }
139
144
  createForm() {
140
- return SpxFormViewComponent.createForm(this.formBuilder, this.sections);
145
+ return SpxFormViewComponent.createForm(this.formBuilder, this.form.sections);
141
146
  }
142
147
  getRawValidators(formControl) {
143
148
  return formControl._rawValidators;
@@ -181,7 +186,7 @@ export class SpxStockInfoComponent {
181
186
  });
182
187
  }
183
188
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxStockInfoComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
184
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxStockInfoComponent, isStandalone: true, selector: "spx-stock-info", inputs: { formGroup: "formGroup", depot: "depot", suggestions: "suggestions", textLocation: "textLocation", textDepot: "textDepot", textCustomer: "textCustomer", textContainerInfo: "textContainerInfo", textCategory: "textCategory", textContainerStatus: "textContainerStatus", textContainerType: "textContainerType" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerStatus: "spxBlurContainerStatus", spxBlurContainerType: "spxBlurContainerType", spxBlurCustomer: "spxBlurCustomer", spxSearchCategory: "spxSearchCategory", spxSearchContainerType: "spxSearchContainerType", spxSearchContainerStatus: "spxSearchContainerStatus", spxSearchCustomer: "spxSearchCustomer", submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxSections", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }] }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxStockInfoComponent, isStandalone: true, selector: "spx-stock-info", inputs: { formGroup: "formGroup", depot: "depot", suggestions: "suggestions", textLocation: "textLocation", textDepot: "textDepot", textCustomer: "textCustomer", textContainerInfo: "textContainerInfo", textCategory: "textCategory", textContainerStatus: "textContainerStatus", textContainerType: "textContainerType", textSearch: "textSearch" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerStatus: "spxBlurContainerStatus", spxBlurContainerType: "spxBlurContainerType", spxBlurCustomer: "spxBlurCustomer", spxSearchCategory: "spxSearchCategory", spxSearchContainerType: "spxSearchContainerType", spxSearchContainerStatus: "spxSearchContainerStatus", spxSearchCustomer: "spxSearchCustomer", submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxForm", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }] }); }
185
190
  }
186
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxStockInfoComponent, decorators: [{
187
192
  type: Component,
@@ -193,7 +198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
193
198
  SpxFormViewComponent,
194
199
  SpxInputComponent,
195
200
  SpxValidateControlComponent,
196
- ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>" }]
201
+ ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>" }]
197
202
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { formGroup: [{
198
203
  type: Input
199
204
  }], depot: [{
@@ -214,6 +219,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
214
219
  type: Input
215
220
  }], textContainerType: [{
216
221
  type: Input
222
+ }], textSearch: [{
223
+ type: Input
217
224
  }], spxBlurCategory: [{
218
225
  type: Output
219
226
  }], spxBlurContainerStatus: [{
@@ -233,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
233
240
  }], submit: [{
234
241
  type: Output
235
242
  }] } });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXN0b2NrLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvY2staW5mby9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBdUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQWtDLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFHbEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FB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QkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHNweFZhbGlkYXRvclJlcXVpcmVkLCBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC12YWxpZGF0aW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCwgU3B4SW5wdXRUeXBlRW51bSwgU3B4VmFsdWVQYWlyIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzJztcbmltcG9ydCB7IFNweEZvcm1GaWVsZEksIFNweEZvcm1TZWN0aW9uSSwgU3B4Rm9ybVZpZXdDb21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1mb3JtLXZpZXcnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcbmltcG9ydCB7IFNweFNldmVyaXR5RW51bSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWhlbHBlcnMnO1xuaW1wb3J0IHsgU3B4U3RvY2tJbmZvVmFsdWVJIH0gZnJvbSAnLi9zcHgtc3RvY2staW5mby12YWx1ZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgY3RybENhdGVnb3J5ID0gJ2N0cmxDYXRlZ29yeSc7XG5leHBvcnQgY29uc3QgY3RybENvbnRhaW5lclN0YXR1cyA9ICdjdHJsQ29udGFpbmVyU3RhdHVzJztcbmV4cG9ydCBjb25zdCBjdHJsQ29udGFpbmVyVHlwZSA9ICdjdHJsQ29udGFpbmVyVHlwZSc7XG5leHBvcnQgY29uc3QgY3RybEN1c3RvbWVyID0gJ2N0cmxDdXN0b21lcic7XG5leHBvcnQgY29uc3QgY3RybERlcG90ID0gJ2N0cmxEZXBvdCc7XG5leHBvcnQgY29uc3QgY3RybExvY2F0aW9uID0gJ2N0cmxMb2NhdGlvbic7XG5leHBvcnQgY29uc3Qgc2VjdGlvbkNvbnRhaW5lckluZm8gPSAnc2VjdGlvbkNvbnRhaW5lckluZm8nO1xuZXhwb3J0IGNvbnN0IHNlY3Rpb25DdXN0b21lciA9ICdzZWN0aW9uQ3VzdG9tZXInO1xuZXhwb3J0IGNvbnN0IHNlY3Rpb25Mb2NhdGlvbiA9ICdzZWN0aW9uTG9jYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHgtc3RvY2staW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gICAgU3B4Rm9ybVZpZXdDb21wb25lbnQsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gICAgU3B4VmFsaWRhdGVDb250cm9sQ29tcG9uZW50LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNweFN0b2NrSW5mb0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZGVwb3QhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgdGV4dExvY2F0aW9uITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0RGVwb3QhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDdXN0b21lciE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dENvbnRhaW5lckluZm8hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRDYXRlZ29yeSE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dENvbnRhaW5lclN0YXR1cyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dENvbnRhaW5lclR5cGUhOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBzcHhCbHVyQ2F0ZWdvcnk6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4Qmx1ckNvbnRhaW5lclN0YXR1czogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhCbHVyQ29udGFpbmVyVHlwZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhCbHVyQ3VzdG9tZXI6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ2F0ZWdvcnk6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ29udGFpbmVyVHlwZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDb250YWluZXJTdGF0dXM6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3B4U2VhcmNoQ3VzdG9tZXI6IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PigpO1xuICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8U3B4U3RvY2tJbmZvVmFsdWVJPiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4U3RvY2tJbmZvVmFsdWVJPigpO1xuXG4gIGlucHV0VHlwZUF1dG9jb21wbGV0ZSA9IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlO1xuICBpbnB1dFR5cGVSYWRpbyA9IFNweElucHV0VHlwZUVudW0ucmFkaW87XG4gIGlucHV0VHlwZVRleHQgPSBTcHhJbnB1dFR5cGVFbnVtLnRleHQ7XG4gIHNldmVyaXR5U3VjY2VzcyA9IFNweFNldmVyaXR5RW51bS5zdWNjZXNzO1xuXG4gIHNlY3Rpb25zOiBTcHhGb3JtU2VjdGlvbklbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6IHNlY3Rpb25Mb2NhdGlvbixcbiAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICB0aXRsZTogKCkgPT4gdGhpcy50ZXh0TG9jYXRpb24sXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybERlcG90LFxuICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHREZXBvdCxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLnRleHQsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiB0aGlzLmRlcG90LFxuICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtzcHhWYWxpZGF0b3JSZXF1aXJlZCgpXSxcbiAgICAgICAgICByZWFkb25seTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICBzdWdnZXN0aW9uczogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybExvY2F0aW9uLFxuICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRMb2NhdGlvbixcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLnRleHQsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiBudWxsLFxuICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiBmYWxzZSxcbiAgICAgICAgICBzdWdnZXN0aW9uczogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogc2VjdGlvbkN1c3RvbWVyLFxuICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgIHRpdGxlOiAoKSA9PiB0aGlzLnRleHRDdXN0b21lcixcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiBjdHJsQ3VzdG9tZXIsXG4gICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudGV4dEN1c3RvbWVyLFxuICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICB2YWxpZGF0b3JzOiAoKSA9PiBbXSxcbiAgICAgICAgICByZWFkb25seTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogc2VjdGlvbkNvbnRhaW5lckluZm8sXG4gICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgdGl0bGU6ICgpID0+IHRoaXMudGV4dENvbnRhaW5lckluZm8sXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogY3RybENhdGVnb3J5LFxuICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRDYXRlZ29yeSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6ICgpID0+IG51bGwsXG4gICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gW10sXG4gICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IGN0cmxDb250YWluZXJTdGF0dXMsXG4gICAgICAgICAgbGFiZWw6ICgpID0+IHRoaXMudGV4dENvbnRhaW5lclN0YXR1cyxcbiAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6ICgpID0+IG51bGwsXG4gICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gW10sXG4gICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6IGN0cmxDb250YWluZXJUeXBlLFxuICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRDb250YWluZXJUeXBlLFxuICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICB2YWxpZGF0b3JzOiAoKSA9PiBbXSxcbiAgICAgICAgICByZWFkb25seTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9LFxuICBdO1xuXG4gIGdldCBjdHJsQ2F0ZWdvcnkoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDYXRlZ29yeSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJTdGF0dXMoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXMpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29udGFpbmVyVHlwZSgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybENvbnRhaW5lclR5cGUpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ3VzdG9tZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDdXN0b21lcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxEZXBvdCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybERlcG90KSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybExvY2F0aW9uKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsTG9jYXRpb24pIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICBjcmVhdGVGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIFNweEZvcm1WaWV3Q29tcG9uZW50LmNyZWF0ZUZvcm0odGhpcy5mb3JtQnVpbGRlciwgdGhpcy5zZWN0aW9ucyk7XG4gIH1cblxuICBnZXRSYXdWYWxpZGF0b3JzKGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIHJldHVybiAoZm9ybUNvbnRyb2wgYXMgYW55KS5fcmF3VmFsaWRhdG9ycztcbiAgfVxuXG4gIG9uQmx1cihkYXRhOiB7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0pIHtcbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDYXRlZ29yeSkge1xuICAgICAgdGhpcy5zcHhCbHVyQ2F0ZWdvcnkuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclN0YXR1cykge1xuICAgICAgdGhpcy5zcHhCbHVyQ29udGFpbmVyU3RhdHVzLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJUeXBlKSB7XG4gICAgICB0aGlzLnNweEJsdXJDb250YWluZXJUeXBlLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDdXN0b21lcikge1xuICAgICAgdGhpcy5zcHhCbHVyQ3VzdG9tZXIuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goZGF0YTogeyBmaWVsZDogU3B4Rm9ybUZpZWxkSSwgdmFsdWVQYWlyOiBTcHhWYWx1ZVBhaXI8YW55PiB9KSB7XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ2F0ZWdvcnkpIHtcbiAgICAgIHRoaXMuc3B4U2VhcmNoQ2F0ZWdvcnkuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclR5cGUpIHtcbiAgICAgIHRoaXMuc3B4U2VhcmNoQ29udGFpbmVyVHlwZS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ29udGFpbmVyU3RhdHVzKSB7XG4gICAgICB0aGlzLnNweFNlYXJjaENvbnRhaW5lclN0YXR1cy5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ3VzdG9tZXIpIHtcbiAgICAgIHRoaXMuc3B4U2VhcmNoQ3VzdG9tZXIuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICB9XG5cbiAgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXQuZW1pdCh7XG4gICAgICBjdHJsQ2F0ZWdvcnk6IHRoaXMuY3RybENhdGVnb3J5LnZhbHVlLFxuICAgICAgY3RybENvbnRhaW5lclN0YXR1czogdGhpcy5jdHJsQ29udGFpbmVyU3RhdHVzLnZhbHVlLFxuICAgICAgY3RybENvbnRhaW5lclR5cGU6IHRoaXMuY3RybENvbnRhaW5lclR5cGUudmFsdWUsXG4gICAgICBjdHJsQ3VzdG9tZXI6IHRoaXMuY3RybENvbnRhaW5lclR5cGUudmFsdWUsXG4gICAgICBjdHJsRGVwb3Q6IHRoaXMuY3RybERlcG90LnZhbHVlLFxuICAgICAgY3RybExvY2F0aW9uOiB0aGlzLmN0cmxMb2NhdGlvbi52YWx1ZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cIm1heC13LWxnIG14LWF1dG8gZmxleCBmbGV4LWNvbCBnYXAtM1wiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XG4gIDxzcHgtZm9ybS12aWV3XG4gICAgW3NweEZvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgIFtzcHhTZWN0aW9uc109XCJzZWN0aW9uc1wiXG4gICAgW3NweFN1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcbiAgICAoc3B4Qmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgKHNweFNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+XG4gIDwvc3B4LWZvcm0tdmlldz5cbiAgPHNweC1idXR0b25cbiAgICBbc3B4RnVsbFdpZHRoXT1cInRydWVcIlxuICAgIFtzcHhTZXZlcml0eV09XCJzZXZlcml0eVN1Y2Nlc3NcIj5cbiAgICBTYXZlXG4gIDwvc3B4LWJ1dHRvbj5cbjwvZm9ybT4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LXN0b2NrLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1zdG9jay1pbmZvL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtc3RvY2staW5mby9zcHgtc3RvY2staW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBdUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQTJCLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFHbEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxN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LHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzcHhWYWxpZGF0b3JSZXF1aXJlZCwgU3B4VmFsaWRhdGVDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3B4SW5wdXRDb21wb25lbnQsIFNweElucHV0VHlwZUVudW0sIFNweFZhbHVlUGFpciB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhGb3JtQnV0dG9uVHlwZUVudW0sIFNweEZvcm1GaWVsZEksIFNweEZvcm1JLCBTcHhGb3JtVmlld0NvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWZvcm0tdmlldyc7XG5pbXBvcnQgeyBTcHhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc29mdHBhay9jb21wb25lbnRzL3NweC1idXR0b24nO1xuaW1wb3J0IHsgU3B4U2V2ZXJpdHlFbnVtIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtaGVscGVycyc7XG5pbXBvcnQgeyBTcHhTdG9ja0luZm9WYWx1ZUkgfSBmcm9tICcuL3NweC1zdG9jay1pbmZvLXZhbHVlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBjdHJsQ2F0ZWdvcnkgPSAnY3RybENhdGVnb3J5JztcbmV4cG9ydCBjb25zdCBjdHJsQ29udGFpbmVyU3RhdHVzID0gJ2N0cmxDb250YWluZXJTdGF0dXMnO1xuZXhwb3J0IGNvbnN0IGN0cmxDb250YWluZXJUeXBlID0gJ2N0cmxDb250YWluZXJUeXBlJztcbmV4cG9ydCBjb25zdCBjdHJsQ3VzdG9tZXIgPSAnY3RybEN1c3RvbWVyJztcbmV4cG9ydCBjb25zdCBjdHJsRGVwb3QgPSAnY3RybERlcG90JztcbmV4cG9ydCBjb25zdCBjdHJsTG9jYXRpb24gPSAnY3RybExvY2F0aW9uJztcbmV4cG9ydCBjb25zdCBzZWN0aW9uQ29udGFpbmVySW5mbyA9ICdzZWN0aW9uQ29udGFpbmVySW5mbyc7XG5leHBvcnQgY29uc3Qgc2VjdGlvbkN1c3RvbWVyID0gJ3NlY3Rpb25DdXN0b21lcic7XG5leHBvcnQgY29uc3Qgc2VjdGlvbkxvY2F0aW9uID0gJ3NlY3Rpb25Mb2NhdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1zdG9jay1pbmZvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NweC1zdG9jay1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTcHhGb3JtVmlld0NvbXBvbmVudCxcbiAgICBTcHhJbnB1dENvbXBvbmVudCxcbiAgICBTcHhWYWxpZGF0ZUNvbnRyb2xDb21wb25lbnQsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3B4U3RvY2tJbmZvQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBkZXBvdCE6IHN0cmluZztcbiAgQElucHV0KCkgc3VnZ2VzdGlvbnM6IGFueSA9IHt9O1xuICBASW5wdXQoKSB0ZXh0TG9jYXRpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHREZXBvdCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dEN1c3RvbWVyITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVySW5mbyE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dENhdGVnb3J5ITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyU3RhdHVzITogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0Q29udGFpbmVyVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dFNlYXJjaCE6IHN0cmluZztcbiAgQE91dHB1dCgpIHNweEJsdXJDYXRlZ29yeTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhCbHVyQ29udGFpbmVyU3RhdHVzOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDb250YWluZXJUeXBlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweEJsdXJDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDYXRlZ29yeTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDb250YWluZXJUeXBlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8c3RyaW5nPj4oKTtcbiAgQE91dHB1dCgpIHNweFNlYXJjaENvbnRhaW5lclN0YXR1czogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzcHhTZWFyY2hDdXN0b21lcjogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxzdHJpbmc+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPHN0cmluZz4+KCk7XG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhTdG9ja0luZm9WYWx1ZUk+KCk7XG5cbiAgZm9ybTogU3B4Rm9ybUkgPSB7XG4gICAgYnV0dG9uczogW1xuICAgICAge1xuICAgICAgICBzZXZlcml0eTogU3B4U2V2ZXJpdHlFbnVtLnN1Y2Nlc3MsXG4gICAgICAgIHR5cGU6IFNweEZvcm1CdXR0b25UeXBlRW51bS5zdWJtaXQsXG4gICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRTZWFyY2gsXG4gICAgICB9XG4gICAgXSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Mb2NhdGlvbixcbiAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgdGl0bGU6ICgpID0+IHRoaXMudGV4dExvY2F0aW9uLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxEZXBvdCxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHREZXBvdCxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gdGhpcy5kZXBvdCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtzcHhWYWxpZGF0b3JSZXF1aXJlZCgpXSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IGN0cmxMb2NhdGlvbixcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRMb2NhdGlvbixcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0udGV4dCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgYWZ0ZXJWYWx1ZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2hvdzogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGNhcGl0YWxpemU6ICgpID0+IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBzZWN0aW9uQ3VzdG9tZXIsXG4gICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgIHRpdGxlOiAoKSA9PiB0aGlzLnRleHRDdXN0b21lcixcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ3VzdG9tZXIsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q3VzdG9tZXIsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IHNlY3Rpb25Db250YWluZXJJbmZvLFxuICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICB0aXRsZTogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVySW5mbyxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBjdHJsQ2F0ZWdvcnksXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q2F0ZWdvcnksXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclN0YXR1cyxcbiAgICAgICAgICAgIGxhYmVsOiAoKSA9PiB0aGlzLnRleHRDb250YWluZXJTdGF0dXMsXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiBTcHhJbnB1dFR5cGVFbnVtLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6ICgpID0+IFtdLFxuICAgICAgICAgICAgcmVhZG9ubHk6ICgpID0+IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBhZnRlclZhbHVlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzaG93OiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgY2FwaXRhbGl6ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogY3RybENvbnRhaW5lclR5cGUsXG4gICAgICAgICAgICBsYWJlbDogKCkgPT4gdGhpcy50ZXh0Q29udGFpbmVyVHlwZSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IFNweElucHV0VHlwZUVudW0uYXV0b2NvbXBsZXRlLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAoKSA9PiBudWxsLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogKCkgPT4gW10sXG4gICAgICAgICAgICByZWFkb25seTogKCkgPT4gZmFsc2UsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGFmdGVyVmFsdWVDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNob3c6ICgpID0+IHRydWUsXG4gICAgICAgICAgICBjYXBpdGFsaXplOiAoKSA9PiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgXVxuICB9O1xuXG4gIGdldCBjdHJsQ2F0ZWdvcnkoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDYXRlZ29yeSkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb250YWluZXJTdGF0dXMoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDb250YWluZXJTdGF0dXMpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ29udGFpbmVyVHlwZSgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybENvbnRhaW5lclR5cGUpIGFzIEZvcm1Db250cm9sOyB9XG4gIGdldCBjdHJsQ3VzdG9tZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KGN0cmxDdXN0b21lcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxEZXBvdCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoY3RybERlcG90KSBhcyBGb3JtQ29udHJvbDsgfVxuICBnZXQgY3RybExvY2F0aW9uKCk6IEZvcm1Db250cm9sIHsgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldChjdHJsTG9jYXRpb24pIGFzIEZvcm1Db250cm9sOyB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gIH1cblxuICBjcmVhdGVGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIFNweEZvcm1WaWV3Q29tcG9uZW50LmNyZWF0ZUZvcm0odGhpcy5mb3JtQnVpbGRlciwgdGhpcy5mb3JtLnNlY3Rpb25zKTtcbiAgfVxuXG4gIGdldFJhd1ZhbGlkYXRvcnMoZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIChmb3JtQ29udHJvbCBhcyBhbnkpLl9yYXdWYWxpZGF0b3JzO1xuICB9XG5cbiAgb25CbHVyKGRhdGE6IHsgZmllbGQ6IFNweEZvcm1GaWVsZEksIHZhbHVlUGFpcjogU3B4VmFsdWVQYWlyPGFueT4gfSkge1xuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENhdGVnb3J5KSB7XG4gICAgICB0aGlzLnNweEJsdXJDYXRlZ29yeS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ29udGFpbmVyU3RhdHVzKSB7XG4gICAgICB0aGlzLnNweEJsdXJDb250YWluZXJTdGF0dXMuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybENvbnRhaW5lclR5cGUpIHtcbiAgICAgIHRoaXMuc3B4Qmx1ckNvbnRhaW5lclR5cGUuZW1pdChkYXRhLnZhbHVlUGFpcik7XG4gICAgfVxuICAgIGlmIChkYXRhLmZpZWxkLmtleSA9PT0gY3RybEN1c3RvbWVyKSB7XG4gICAgICB0aGlzLnNweEJsdXJDdXN0b21lci5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChkYXRhOiB7IGZpZWxkOiBTcHhGb3JtRmllbGRJLCB2YWx1ZVBhaXI6IFNweFZhbHVlUGFpcjxhbnk+IH0pIHtcbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDYXRlZ29yeSkge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDYXRlZ29yeS5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuZmllbGQua2V5ID09PSBjdHJsQ29udGFpbmVyVHlwZSkge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDb250YWluZXJUeXBlLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDb250YWluZXJTdGF0dXMpIHtcbiAgICAgIHRoaXMuc3B4U2VhcmNoQ29udGFpbmVyU3RhdHVzLmVtaXQoZGF0YS52YWx1ZVBhaXIpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5maWVsZC5rZXkgPT09IGN0cmxDdXN0b21lcikge1xuICAgICAgdGhpcy5zcHhTZWFyY2hDdXN0b21lci5lbWl0KGRhdGEudmFsdWVQYWlyKTtcbiAgICB9XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KHtcbiAgICAgIGN0cmxDYXRlZ29yeTogdGhpcy5jdHJsQ2F0ZWdvcnkudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyU3RhdHVzOiB0aGlzLmN0cmxDb250YWluZXJTdGF0dXMudmFsdWUsXG4gICAgICBjdHJsQ29udGFpbmVyVHlwZTogdGhpcy5jdHJsQ29udGFpbmVyVHlwZS52YWx1ZSxcbiAgICAgIGN0cmxDdXN0b21lcjogdGhpcy5jdHJsQ29udGFpbmVyVHlwZS52YWx1ZSxcbiAgICAgIGN0cmxEZXBvdDogdGhpcy5jdHJsRGVwb3QudmFsdWUsXG4gICAgICBjdHJsTG9jYXRpb246IHRoaXMuY3RybExvY2F0aW9uLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibWF4LXctbGcgbXgtYXV0byBmbGV4IGZsZXgtY29sIGdhcC0zXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPHNweC1mb3JtLXZpZXdcbiAgICBbc3B4Rm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgW3NweEZvcm1dPVwiZm9ybVwiXG4gICAgW3NweFN1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcbiAgICAoc3B4Qmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgKHNweFNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCI+XG4gIDwvc3B4LWZvcm0tdmlldz5cbjwvZm9ybT4iXX0=
@@ -5,7 +5,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { spxValidatorRequired, SpxValidateControlComponent } from '@softpak/components/spx-validation';
6
6
  import { CommonModule } from '@angular/common';
7
7
  import { SpxInputTypeEnum, SpxInputComponent } from '@softpak/components/spx-inputs';
8
- import { SpxFormViewComponent } from '@softpak/components/spx-form-view';
8
+ import { SpxFormButtonTypeEnum, SpxFormViewComponent } from '@softpak/components/spx-form-view';
9
9
  import { SpxButtonComponent } from '@softpak/components/spx-button';
10
10
  import { SpxSeverityEnum, valuePairToValue } from '@softpak/components/spx-helpers';
11
11
 
@@ -35,82 +35,87 @@ class SpxChangeDetailsComponent {
35
35
  this.spxSearchContainerType = new EventEmitter();
36
36
  this.spxSearchTonsTested = new EventEmitter();
37
37
  this.submit = new EventEmitter();
38
- this.inputTypeAutocomplete = SpxInputTypeEnum.autocomplete;
39
- this.inputTypeRadio = SpxInputTypeEnum.radio;
40
- this.inputTypeText = SpxInputTypeEnum.text;
41
- this.severitySuccess = SpxSeverityEnum.success;
42
- this.sections = [
43
- {
44
- key: sectionChangeDetails,
45
- showTitle: () => false,
46
- fields: [
47
- {
48
- key: ctrlContainerNumber,
49
- type: () => SpxInputTypeEnum.text,
50
- label: () => this.txtContainerNumber,
51
- readonly: () => true,
52
- validators: () => [spxValidatorRequired()],
53
- },
54
- {
55
- key: ctrlContainerPrefix,
56
- type: () => SpxInputTypeEnum.text,
57
- label: () => this.txtContainerPrefix,
58
- capitalize: () => true,
59
- readonly: () => true,
60
- validators: () => [spxValidatorRequired()],
61
- },
62
- {
63
- key: ctrlContainerSeqNr,
64
- type: () => SpxInputTypeEnum.hidden,
65
- validators: () => [spxValidatorRequired()],
66
- },
67
- {
68
- key: ctrlCustomer,
69
- type: () => SpxInputTypeEnum.text,
70
- capitalize: () => true,
71
- readonly: () => true,
72
- label: () => this.txtCustomer,
73
- validators: () => [spxValidatorRequired()],
74
- },
75
- {
76
- key: ctrlContainerType,
77
- type: () => SpxInputTypeEnum.autocomplete,
78
- label: () => this.txtContainerType,
79
- capitalize: () => true,
80
- validators: () => [spxValidatorRequired()],
81
- },
82
- {
83
- key: ctrlTonsTested,
84
- type: () => SpxInputTypeEnum.radio,
85
- label: () => this.txtTonsTested,
86
- show: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0,
87
- validators: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0 ? [spxValidatorRequired()] : [],
88
- },
89
- {
90
- key: ctrlLicensePlate,
91
- type: () => SpxInputTypeEnum.text,
92
- label: () => this.txtLicensePlate,
93
- capitalize: () => true,
94
- },
95
- {
96
- key: ctrlUseCategories,
97
- type: () => SpxInputTypeEnum.hidden,
98
- capitalize: () => true,
99
- },
100
- {
101
- key: ctrlCategory,
102
- type: () => SpxInputTypeEnum.autocomplete,
103
- label: () => this.txtCategory,
104
- capitalize: () => true,
105
- show: () => valuePairToValue(this.ctrlUseCategories?.value),
106
- validators: () => valuePairToValue(this.ctrlUseCategories?.value) ? [spxValidatorRequired()] : [],
107
- }
108
- ]
109
- }
110
- ];
38
+ this.form = {
39
+ buttons: [
40
+ {
41
+ severity: SpxSeverityEnum.success,
42
+ type: SpxFormButtonTypeEnum.submit,
43
+ label: () => this.textSave,
44
+ }
45
+ ],
46
+ sections: [
47
+ {
48
+ key: sectionChangeDetails,
49
+ showTitle: () => false,
50
+ fields: [
51
+ {
52
+ key: ctrlContainerNumber,
53
+ type: () => SpxInputTypeEnum.text,
54
+ label: () => this.textContainerNumber,
55
+ readonly: () => true,
56
+ validators: () => [spxValidatorRequired()],
57
+ },
58
+ {
59
+ key: ctrlContainerPrefix,
60
+ type: () => SpxInputTypeEnum.text,
61
+ label: () => this.textContainerPrefix,
62
+ capitalize: () => true,
63
+ readonly: () => true,
64
+ validators: () => [spxValidatorRequired()],
65
+ },
66
+ {
67
+ key: ctrlContainerSeqNr,
68
+ type: () => SpxInputTypeEnum.hidden,
69
+ validators: () => [spxValidatorRequired()],
70
+ },
71
+ {
72
+ key: ctrlCustomer,
73
+ type: () => SpxInputTypeEnum.text,
74
+ capitalize: () => true,
75
+ readonly: () => true,
76
+ label: () => this.textCustomer,
77
+ validators: () => [spxValidatorRequired()],
78
+ },
79
+ {
80
+ key: ctrlContainerType,
81
+ type: () => SpxInputTypeEnum.autocomplete,
82
+ label: () => this.textContainerType,
83
+ capitalize: () => true,
84
+ validators: () => [spxValidatorRequired()],
85
+ },
86
+ {
87
+ key: ctrlTonsTested,
88
+ type: () => SpxInputTypeEnum.radio,
89
+ label: () => this.textTonsTested,
90
+ show: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0,
91
+ validators: () => this.suggestions?.[ctrlTonsTested] && this.suggestions?.[ctrlTonsTested].length && this.suggestions?.[ctrlTonsTested].length > 0 ? [spxValidatorRequired()] : [],
92
+ },
93
+ {
94
+ key: ctrlLicensePlate,
95
+ type: () => SpxInputTypeEnum.text,
96
+ label: () => this.textLicensePlate,
97
+ capitalize: () => true,
98
+ },
99
+ {
100
+ key: ctrlUseCategories,
101
+ type: () => SpxInputTypeEnum.hidden,
102
+ capitalize: () => true,
103
+ },
104
+ {
105
+ key: ctrlCategory,
106
+ type: () => SpxInputTypeEnum.autocomplete,
107
+ label: () => this.textCategory,
108
+ capitalize: () => true,
109
+ show: () => valuePairToValue(this.ctrlUseCategories?.value),
110
+ validators: () => valuePairToValue(this.ctrlUseCategories?.value) ? [spxValidatorRequired()] : [],
111
+ }
112
+ ]
113
+ }
114
+ ]
115
+ };
111
116
  }
112
117
  createForm() {
113
- return SpxFormViewComponent.createForm(this.formBuilder, this.sections);
118
+ return SpxFormViewComponent.createForm(this.formBuilder, this.form.sections);
114
119
  }
115
120
  ngOnInit() {
116
121
  this.listenToContainerType();
@@ -157,7 +162,7 @@ class SpxChangeDetailsComponent {
157
162
  });
158
163
  }
159
164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxChangeDetailsComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxChangeDetailsComponent, isStandalone: true, selector: "spx-change-details", inputs: { formGroup: "formGroup", suggestions: "suggestions", txtCategory: "txtCategory", txtContainerNumber: "txtContainerNumber", txtContainerPrefix: "txtContainerPrefix", txtContainerType: "txtContainerType", txtCustomer: "txtCustomer", txtLicensePlate: "txtLicensePlate", txtTonsTested: "txtTonsTested" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerType: "spxBlurContainerType", spxSearchCategory: "spxSearchCategory", spxSearchContainerType: "spxSearchContainerType", spxSearchTonsTested: "spxSearchTonsTested", submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxSections", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }] }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxChangeDetailsComponent, isStandalone: true, selector: "spx-change-details", inputs: { formGroup: "formGroup", suggestions: "suggestions", textCategory: "textCategory", textContainerNumber: "textContainerNumber", textContainerPrefix: "textContainerPrefix", textContainerType: "textContainerType", textCustomer: "textCustomer", textLicensePlate: "textLicensePlate", textSave: "textSave", textTonsTested: "textTonsTested" }, outputs: { spxBlurCategory: "spxBlurCategory", spxBlurContainerType: "spxBlurContainerType", spxSearchCategory: "spxSearchCategory", spxSearchContainerType: "spxSearchContainerType", spxSearchTonsTested: "spxSearchTonsTested", submit: "submit" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SpxFormViewComponent, selector: "spx-form-view", inputs: ["spxFormGroup", "spxForm", "spxSuggestions"], outputs: ["spxBlur", "spxClick", "spxSearch"] }] }); }
161
166
  }
162
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxChangeDetailsComponent, decorators: [{
163
168
  type: Component,
@@ -169,24 +174,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
169
174
  SpxFormViewComponent,
170
175
  SpxInputComponent,
171
176
  SpxValidateControlComponent,
172
- ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxSections]=\"sections\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n <spx-button\n [spxFullWidth]=\"true\"\n [spxSeverity]=\"severitySuccess\">\n Save\n </spx-button>\n</form>" }]
177
+ ], template: "<form [formGroup]=\"formGroup\" class=\"max-w-lg mx-auto flex flex-col gap-3\" (ngSubmit)=\"onSubmit()\">\n <spx-form-view\n [spxFormGroup]=\"formGroup\"\n [spxForm]=\"form\"\n [spxSuggestions]=\"suggestions\"\n (spxBlur)=\"onBlur($event)\"\n (spxSearch)=\"onSearch($event)\">\n </spx-form-view>\n</form>" }]
173
178
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { formGroup: [{
174
179
  type: Input
175
180
  }], suggestions: [{
176
181
  type: Input
177
- }], txtCategory: [{
182
+ }], textCategory: [{
178
183
  type: Input
179
- }], txtContainerNumber: [{
184
+ }], textContainerNumber: [{
180
185
  type: Input
181
- }], txtContainerPrefix: [{
186
+ }], textContainerPrefix: [{
182
187
  type: Input
183
- }], txtContainerType: [{
188
+ }], textContainerType: [{
184
189
  type: Input
185
- }], txtCustomer: [{
190
+ }], textCustomer: [{
186
191
  type: Input
187
- }], txtLicensePlate: [{
192
+ }], textLicensePlate: [{
188
193
  type: Input
189
- }], txtTonsTested: [{
194
+ }], textSave: [{
195
+ type: Input
196
+ }], textTonsTested: [{
190
197
  type: Input
191
198
  }], spxBlurCategory: [{
192
199
  type: Output