@rosoftlab/ionic 1.0.0-alpha-19 → 1.0.1-alpha-2
Sign up to get free protection for your applications and to get access to all the features.
- package/fesm2022/rosoftlab-ionic.mjs +41 -43
- package/fesm2022/rosoftlab-ionic.mjs.map +1 -1
- package/package.json +4 -6
- package/esm2022/lib/components/index.mjs +0 -5
- package/esm2022/lib/components/rsl-ionic-crud.component/rsl-ionic-crud.component.mjs +0 -266
- package/esm2022/lib/components/rsl-ionic-data-table/rsl-ionic-data-table.component.mjs +0 -292
- package/esm2022/lib/components/rsl-ionic-grid/rsl-ionic-grid.component.mjs +0 -269
- package/esm2022/lib/components/rsl-ionic-sm-buttons/ionic-sm-buttons.component.mjs +0 -65
- package/esm2022/lib/decorators/index.mjs +0 -3
- package/esm2022/lib/decorators/ionic-datatable-layout.mjs +0 -10
- package/esm2022/lib/decorators/ionic-list.decorator.mjs +0 -9
- package/esm2022/lib/interfaces/index.mjs +0 -2
- package/esm2022/lib/interfaces/ionic-list-layout-config.mjs +0 -2
- package/esm2022/lib/ionic-dialog.service.mjs +0 -51
- package/esm2022/lib/rsl-ionic-module.module.mjs +0 -96
- package/esm2022/lib/translate.extension.mjs +0 -48
- package/esm2022/lib/types/index.mjs +0 -2
- package/esm2022/lib/types/repeat/repeat-section.type.mjs +0 -135
- package/esm2022/lib/types/repeat-datatable/repeat-datatable.component.mjs +0 -190
- package/esm2022/lib/validators/index.mjs +0 -2
- package/esm2022/lib/validators/must-match.mjs +0 -12
- package/esm2022/lib/wrappers/accordion-wrapper.component.mjs +0 -50
- package/esm2022/lib/wrappers/index.mjs +0 -3
- package/esm2022/lib/wrappers/panel-wrapper.component.mjs +0 -37
- package/esm2022/lib/wrappers/wrappers.module.mjs +0 -59
- package/esm2022/public-api.mjs +0 -12
- package/esm2022/rosoftlab-ionic.mjs +0 -5
@@ -1,96 +0,0 @@
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
4
|
-
import { IonicModule } from '@ionic/angular';
|
5
|
-
import { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';
|
6
|
-
import { FormlyIonicModule } from '@ngx-formly/ionic';
|
7
|
-
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
8
|
-
import { NgxDatatableModule } from '@swimlane/ngx-datatable';
|
9
|
-
import { RslIonicSmButtonsComponent } from './components/rsl-ionic-sm-buttons/ionic-sm-buttons.component';
|
10
|
-
import { IonicDialogService } from './ionic-dialog.service';
|
11
|
-
import { registerTranslateExtension } from './translate.extension';
|
12
|
-
import { RepeatDatatableComponent } from './types/repeat-datatable/repeat-datatable.component';
|
13
|
-
import { RepeatTypeComponent } from './types/repeat/repeat-section.type';
|
14
|
-
import { fieldMatchValidator } from './validators/must-match';
|
15
|
-
import { AccordionWrapperComponent } from './wrappers/accordion-wrapper.component';
|
16
|
-
import { PanelWrapperComponent } from './wrappers/panel-wrapper.component';
|
17
|
-
import * as i0 from "@angular/core";
|
18
|
-
import * as i1 from "@ngx-formly/core";
|
19
|
-
const COMMON_MODULES = [
|
20
|
-
CommonModule,
|
21
|
-
IonicModule,
|
22
|
-
ReactiveFormsModule,
|
23
|
-
FormlyIonicModule,
|
24
|
-
NgxDatatableModule
|
25
|
-
];
|
26
|
-
export class RslIonicModuleModule {
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RslIonicModuleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
28
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: RslIonicModuleModule, imports: [CommonModule,
|
29
|
-
IonicModule,
|
30
|
-
ReactiveFormsModule,
|
31
|
-
FormlyIonicModule,
|
32
|
-
NgxDatatableModule, TranslateModule, i1.FormlyModule], exports: [CommonModule,
|
33
|
-
IonicModule,
|
34
|
-
ReactiveFormsModule,
|
35
|
-
FormlyIonicModule,
|
36
|
-
NgxDatatableModule, FormlyModule,
|
37
|
-
TranslateModule] }); }
|
38
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RslIonicModuleModule, providers: [
|
39
|
-
IonicDialogService,
|
40
|
-
{ provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
|
41
|
-
], imports: [COMMON_MODULES, TranslateModule,
|
42
|
-
FormlyModule.forRoot({
|
43
|
-
types: [
|
44
|
-
{ name: 'repeat', component: RepeatTypeComponent },
|
45
|
-
{ name: 'repeat-data-table', component: RepeatDatatableComponent },
|
46
|
-
{ name: 'sm-buttons', component: RslIonicSmButtonsComponent }
|
47
|
-
],
|
48
|
-
validators: [{ name: 'fieldMatch', validation: fieldMatchValidator }],
|
49
|
-
wrappers: [
|
50
|
-
{ name: 'panel', component: PanelWrapperComponent },
|
51
|
-
{ name: 'accordion', component: AccordionWrapperComponent }
|
52
|
-
],
|
53
|
-
validationMessages: [
|
54
|
-
{ name: 'required', message: 'This field is required' },
|
55
|
-
],
|
56
|
-
}), CommonModule,
|
57
|
-
IonicModule,
|
58
|
-
ReactiveFormsModule,
|
59
|
-
FormlyIonicModule,
|
60
|
-
NgxDatatableModule, FormlyModule,
|
61
|
-
TranslateModule] }); }
|
62
|
-
}
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RslIonicModuleModule, decorators: [{
|
64
|
-
type: NgModule,
|
65
|
-
args: [{
|
66
|
-
imports: [
|
67
|
-
...COMMON_MODULES,
|
68
|
-
TranslateModule,
|
69
|
-
FormlyModule.forRoot({
|
70
|
-
types: [
|
71
|
-
{ name: 'repeat', component: RepeatTypeComponent },
|
72
|
-
{ name: 'repeat-data-table', component: RepeatDatatableComponent },
|
73
|
-
{ name: 'sm-buttons', component: RslIonicSmButtonsComponent }
|
74
|
-
],
|
75
|
-
validators: [{ name: 'fieldMatch', validation: fieldMatchValidator }],
|
76
|
-
wrappers: [
|
77
|
-
{ name: 'panel', component: PanelWrapperComponent },
|
78
|
-
{ name: 'accordion', component: AccordionWrapperComponent }
|
79
|
-
],
|
80
|
-
validationMessages: [
|
81
|
-
{ name: 'required', message: 'This field is required' },
|
82
|
-
],
|
83
|
-
}),
|
84
|
-
],
|
85
|
-
providers: [
|
86
|
-
IonicDialogService,
|
87
|
-
{ provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
|
88
|
-
],
|
89
|
-
exports: [
|
90
|
-
...COMMON_MODULES,
|
91
|
-
FormlyModule,
|
92
|
-
TranslateModule
|
93
|
-
],
|
94
|
-
}]
|
95
|
-
}] });
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLW1vZHVsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9yc2wtaW9uaWMtbW9kdWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9D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O3dCQUNQLEdBQUcsY0FBYzt3QkFDakIsWUFBWTt3QkFDWixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBGT1JNTFlfQ09ORklHLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgRm9ybWx5SW9uaWNNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9pb25pYyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hEYXRhdGFibGVNb2R1bGUgfSBmcm9tICdAc3dpbWxhbmUvbmd4LWRhdGF0YWJsZSc7XHJcbmltcG9ydCB7IFJzbElvbmljU21CdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JzbC1pb25pYy1zbS1idXR0b25zL2lvbmljLXNtLWJ1dHRvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW9uaWNEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uIH0gZnJvbSAnLi90cmFuc2xhdGUuZXh0ZW5zaW9uJztcclxuaW1wb3J0IHsgUmVwZWF0RGF0YXRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90eXBlcy9yZXBlYXQtZGF0YXRhYmxlL3JlcGVhdC1kYXRhdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVwZWF0VHlwZUNvbXBvbmVudCB9IGZyb20gJy4vdHlwZXMvcmVwZWF0L3JlcGVhdC1zZWN0aW9uLnR5cGUnO1xyXG5pbXBvcnQgeyBmaWVsZE1hdGNoVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3JzL211c3QtbWF0Y2gnO1xyXG5pbXBvcnQgeyBBY2NvcmRpb25XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi93cmFwcGVycy9hY2NvcmRpb24td3JhcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYW5lbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3dyYXBwZXJzL3BhbmVsLXdyYXBwZXIuY29tcG9uZW50JztcclxuY29uc3QgQ09NTU9OX01PRFVMRVMgPSBbXHJcbiAgQ29tbW9uTW9kdWxlLFxyXG4gIElvbmljTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgRm9ybWx5SW9uaWNNb2R1bGUsXHJcbiAgTmd4RGF0YXRhYmxlTW9kdWxlXHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIC4uLkNPTU1PTl9NT0RVTEVTLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgRm9ybWx5TW9kdWxlLmZvclJvb3Qoe1xyXG4gICAgICB0eXBlczogW1xyXG4gICAgICAgIHsgbmFtZTogJ3JlcGVhdCcsIGNvbXBvbmVudDogUmVwZWF0VHlwZUNvbXBvbmVudCB9LFxyXG4gICAgICAgIHsgbmFtZTogJ3JlcGVhdC1kYXRhLXRhYmxlJywgY29tcG9uZW50OiBSZXBlYXREYXRhdGFibGVDb21wb25lbnQgfSxcclxuICAgICAgICB7IG5hbWU6ICdzbS1idXR0b25zJywgY29tcG9uZW50OiBSc2xJb25pY1NtQnV0dG9uc0NvbXBvbmVudCB9XHJcbiAgICAgIF0sXHJcbiAgICAgIHZhbGlkYXRvcnM6IFt7IG5hbWU6ICdmaWVsZE1hdGNoJywgdmFsaWRhdGlvbjogZmllbGRNYXRjaFZhbGlkYXRvciB9XSxcclxuICAgICAgd3JhcHBlcnM6IFtcclxuICAgICAgICB7IG5hbWU6ICdwYW5lbCcsIGNvbXBvbmVudDogUGFuZWxXcmFwcGVyQ29tcG9uZW50IH0sXHJcbiAgICAgICAgeyBuYW1lOiAnYWNjb3JkaW9uJywgY29tcG9uZW50OiBBY2NvcmRpb25XcmFwcGVyQ29tcG9uZW50IH1dLFxyXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZXM6IFtcclxuICAgICAgICB7IG5hbWU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyB9LFxyXG4gICAgICBdLFxyXG4gICAgfSksXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIElvbmljRGlhbG9nU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogRk9STUxZX0NPTkZJRywgbXVsdGk6IHRydWUsIHVzZUZhY3Rvcnk6IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIC4uLkNPTU1PTl9NT0RVTEVTLFxyXG4gICAgRm9ybWx5TW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJzbElvbmljTW9kdWxlTW9kdWxlIHsgfVxyXG4iXX0=
|
@@ -1,48 +0,0 @@
|
|
1
|
-
export class TranslateExtension {
|
2
|
-
constructor(translate) {
|
3
|
-
this.translate = translate;
|
4
|
-
}
|
5
|
-
prePopulate(field) {
|
6
|
-
const props = field.props || {};
|
7
|
-
if (!props['translate'] || props['_translated']) {
|
8
|
-
return;
|
9
|
-
}
|
10
|
-
props['_translated'] = true;
|
11
|
-
field.expressions = {
|
12
|
-
...(field.expressions || {}),
|
13
|
-
'props.label': this.translate.stream(props.label),
|
14
|
-
};
|
15
|
-
if (props.placeholder) {
|
16
|
-
field.expressions = {
|
17
|
-
...(field.expressions || {}),
|
18
|
-
'props.placeholder': this.translate.stream(props.placeholder)
|
19
|
-
};
|
20
|
-
}
|
21
|
-
if (props.description) {
|
22
|
-
field.expressions = {
|
23
|
-
...(field.expressions || {}),
|
24
|
-
'props.description': this.translate.stream(props.description)
|
25
|
-
};
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
export function registerTranslateExtension(translate) {
|
30
|
-
return {
|
31
|
-
validationMessages: [
|
32
|
-
{
|
33
|
-
name: 'required',
|
34
|
-
message(error, field) {
|
35
|
-
// console.log(field);
|
36
|
-
return translate.stream('General.Field.Required', { field: field.props.label });
|
37
|
-
},
|
38
|
-
},
|
39
|
-
],
|
40
|
-
extensions: [
|
41
|
-
{
|
42
|
-
name: 'translate',
|
43
|
-
extension: new TranslateExtension(translate),
|
44
|
-
}
|
45
|
-
],
|
46
|
-
};
|
47
|
-
}
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9pb25pYy9zcmMvbGliL3RyYW5zbGF0ZS5leHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFJLENBQUM7SUFDcEQsV0FBVyxDQUFDLEtBQXdCO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTztRQUNYLENBQUM7UUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLEtBQUssQ0FBQyxXQUFXLEdBQUc7WUFDaEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQzVCLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3BELENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLENBQUMsV0FBVyxHQUFHO2dCQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzVCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDaEUsQ0FBQztRQUNOLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQixLQUFLLENBQUMsV0FBVyxHQUFHO2dCQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQzVCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDaEUsQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsU0FBMkI7SUFDbEUsT0FBTztRQUNILGtCQUFrQixFQUFFO1lBQ2hCO2dCQUNJLElBQUksRUFBRSxVQUFVO2dCQUNoQixPQUFPLENBQUMsS0FBVSxFQUFFLEtBQXdCO29CQUN4QyxzQkFBc0I7b0JBQ3RCLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7YUFDSjtTQUNKO1FBQ0QsVUFBVSxFQUFFO1lBQ1I7Z0JBQ0ksSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFNBQVMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQzthQUMvQztTQUNKO0tBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlFeHRlbnNpb24sIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVFeHRlbnNpb24gaW1wbGVtZW50cyBGb3JtbHlFeHRlbnNpb24ge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxyXG4gICAgcHJlUG9wdWxhdGUoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBmaWVsZC5wcm9wcyB8fCB7fTtcclxuICAgICAgICBpZiAoIXByb3BzWyd0cmFuc2xhdGUnXSB8fCBwcm9wc1snX3RyYW5zbGF0ZWQnXSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcm9wc1snX3RyYW5zbGF0ZWQnXSA9IHRydWU7XHJcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMgPSB7XHJcbiAgICAgICAgICAgIC4uLihmaWVsZC5leHByZXNzaW9ucyB8fCB7fSksXHJcbiAgICAgICAgICAgICdwcm9wcy5sYWJlbCc6IHRoaXMudHJhbnNsYXRlLnN0cmVhbShwcm9wcy5sYWJlbCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAocHJvcHMucGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi4oZmllbGQuZXhwcmVzc2lvbnMgfHwge30pLFxyXG4gICAgICAgICAgICAgICAgJ3Byb3BzLnBsYWNlaG9sZGVyJzogdGhpcy50cmFuc2xhdGUuc3RyZWFtKHByb3BzLnBsYWNlaG9sZGVyKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJvcHMuZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi4oZmllbGQuZXhwcmVzc2lvbnMgfHwge30pLFxyXG4gICAgICAgICAgICAgICAgJ3Byb3BzLmRlc2NyaXB0aW9uJzogdGhpcy50cmFuc2xhdGUuc3RyZWFtKHByb3BzLmRlc2NyaXB0aW9uKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UoZXJyb3I6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUuc3RyZWFtKCdHZW5lcmFsLkZpZWxkLlJlcXVpcmVkJywgeyBmaWVsZDogZmllbGQucHJvcHMubGFiZWwgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZXh0ZW5zaW9uczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndHJhbnNsYXRlJyxcclxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogbmV3IFRyYW5zbGF0ZUV4dGVuc2lvbih0cmFuc2xhdGUpLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgIH07XHJcbn0iXX0=
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export * from './repeat/repeat-section.type';
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXBlYXQvcmVwZWF0LXNlY3Rpb24udHlwZSc7XHJcbiJdfQ==
|
@@ -1,135 +0,0 @@
|
|
1
|
-
import { Component, ElementRef, ViewChild } from '@angular/core';
|
2
|
-
import { FieldArrayType } from '@ngx-formly/core';
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
4
|
-
import { getValueFromJsonData, readFileAsync } from '@rosoftlab/core';
|
5
|
-
import { FileSaverService } from 'ngx-filesaver';
|
6
|
-
import * as XLSX from 'xlsx';
|
7
|
-
import { IonicDialogService } from '../../ionic-dialog.service';
|
8
|
-
import { WrappersModule } from '../../wrappers/wrappers.module';
|
9
|
-
import * as i0 from "@angular/core";
|
10
|
-
import * as i1 from "../../ionic-dialog.service";
|
11
|
-
import * as i2 from "@ngx-translate/core";
|
12
|
-
import * as i3 from "ngx-filesaver";
|
13
|
-
import * as i4 from "@angular/common";
|
14
|
-
import * as i5 from "@ionic/angular";
|
15
|
-
import * as i6 from "@ngx-formly/core";
|
16
|
-
export class RepeatTypeComponent extends FieldArrayType {
|
17
|
-
constructor(dialogService, translate, fileSaverService) {
|
18
|
-
super();
|
19
|
-
this.dialogService = dialogService;
|
20
|
-
this.translate = translate;
|
21
|
-
this.fileSaverService = fileSaverService;
|
22
|
-
this.data = null;
|
23
|
-
this.serach = null;
|
24
|
-
this.showSerach = false;
|
25
|
-
this.filterValue = null;
|
26
|
-
this.importDataProp = null;
|
27
|
-
this.exportDataProp = null;
|
28
|
-
this.deleteMessage = this.translate.instant("General.Delete.Question");
|
29
|
-
this.deleteButton = this.translate.instant("General.Delete.Button");
|
30
|
-
this.cancelButton = this.translate.instant("General.Cancel.Button");
|
31
|
-
}
|
32
|
-
remove(i, { markAsDirty } = { markAsDirty: true }) {
|
33
|
-
this.dialogService.confirm(this.deleteMessage, null, this.deleteButton, this.cancelButton).then((value) => {
|
34
|
-
if (value.data) {
|
35
|
-
var onDelete = this.field.props['onDelete'];
|
36
|
-
if (onDelete) {
|
37
|
-
onDelete(this.field.fieldGroup[i].model).subscribe(() => {
|
38
|
-
super.remove(i);
|
39
|
-
});
|
40
|
-
}
|
41
|
-
super.remove(i);
|
42
|
-
}
|
43
|
-
});
|
44
|
-
}
|
45
|
-
ngOnInit() {
|
46
|
-
this.typeKey = this.field.key;
|
47
|
-
this.serach = this.props['search'];
|
48
|
-
this.exportDataProp = this.props['export'] || null;
|
49
|
-
this.importDataProp = this.props['import'] || null;
|
50
|
-
if (this.serach) {
|
51
|
-
this.showSerach = this.serach.showSerach;
|
52
|
-
}
|
53
|
-
}
|
54
|
-
postPopulate(field) {
|
55
|
-
if (this.showSerach) {
|
56
|
-
this.data = field.fieldGroup;
|
57
|
-
if (this.filterValue) {
|
58
|
-
this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue));
|
59
|
-
}
|
60
|
-
}
|
61
|
-
}
|
62
|
-
handleChange(event) {
|
63
|
-
if (this.showSerach) {
|
64
|
-
if (this.data == null && this.field.fieldGroup !== null) {
|
65
|
-
this.data = this.field.fieldGroup;
|
66
|
-
}
|
67
|
-
this.filterValue = event.target.value.toLowerCase();
|
68
|
-
this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue));
|
69
|
-
}
|
70
|
-
}
|
71
|
-
importData() {
|
72
|
-
this.fileInput.nativeElement.click();
|
73
|
-
}
|
74
|
-
async handleImportFile(event) {
|
75
|
-
const file = event.target.files[0];
|
76
|
-
if (file) {
|
77
|
-
try {
|
78
|
-
const fileContents = await readFileAsync(file);
|
79
|
-
// Handle the file contents here (e.g., display or process the data)
|
80
|
-
const wb = XLSX.read(fileContents); //, { type: 'binary' });
|
81
|
-
const wsname = wb.SheetNames[0];
|
82
|
-
const ws = wb.Sheets[wsname];
|
83
|
-
const excelData = XLSX.utils.sheet_to_json(ws); //, { header: 1 });
|
84
|
-
excelData.forEach(element => {
|
85
|
-
const jsonX = getValueFromJsonData(element, this.importDataProp.keyProp);
|
86
|
-
const idx = this.field.parent.model[this.typeKey].findIndex(f => f[this.importDataProp.keyProp] === jsonX);
|
87
|
-
if (idx >= 0) {
|
88
|
-
const existingdata = this.field.parent.model[this.typeKey][idx];
|
89
|
-
for (const prop of this.importDataProp.propertiesToImport) {
|
90
|
-
const jsonVal = getValueFromJsonData(element, prop);
|
91
|
-
if (existingdata[prop] !== jsonVal) {
|
92
|
-
var fieldControl = this.field.fieldGroup[idx].formControl;
|
93
|
-
fieldControl.controls[prop].setValue(jsonVal);
|
94
|
-
}
|
95
|
-
}
|
96
|
-
}
|
97
|
-
else {
|
98
|
-
super.add(null, element);
|
99
|
-
}
|
100
|
-
});
|
101
|
-
}
|
102
|
-
catch (error) {
|
103
|
-
console.error('Error reading the file:', error);
|
104
|
-
}
|
105
|
-
}
|
106
|
-
}
|
107
|
-
exportData() {
|
108
|
-
// Filter the data to include only the specified properties
|
109
|
-
const filteredData = this.field.parent.model[this.typeKey].map(item => {
|
110
|
-
const filteredItem = {};
|
111
|
-
for (const prop of this.exportDataProp.propertiesToExport) {
|
112
|
-
filteredItem[prop] = item[prop];
|
113
|
-
}
|
114
|
-
return filteredItem;
|
115
|
-
});
|
116
|
-
const ws = XLSX.utils.json_to_sheet(filteredData);
|
117
|
-
const wb = XLSX.utils.book_new();
|
118
|
-
XLSX.utils.book_append_sheet(wb, ws, this.exportDataProp.sheetName);
|
119
|
-
const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
|
120
|
-
const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
|
121
|
-
this.fileSaverService.save(blob, this.exportDataProp.fileName);
|
122
|
-
}
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RepeatTypeComponent, deps: [{ token: i1.IonicDialogService }, { token: i2.TranslateService }, { token: i3.FileSaverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RepeatTypeComponent, isStandalone: true, selector: "formly-repeat-section", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ion-header [translucent]=\"true\">\r\n <ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\r\n </ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\r\n</ion-header>\r\n\r\n<ng-template #header>\r\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\r\n\r\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\r\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\r\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n </ion-button>\r\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\r\n\r\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\r\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n\r\n<ion-list lines=\"full\">\r\n <ion-item *ngFor=\"let field of field.fieldGroup; let i = index\" class=\"row align-items-baseline\">\r\n <formly-field class=\"formly-ion-list-item\" [field]=\"field\"></formly-field>\r\n <ion-button [disabled]=\"props.disabled\" color=\"danger\" slot=\"end\" (click)='remove(i)'>\r\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\r\n </ion-button>\r\n </ion-item>\r\n</ion-list>\r\n\r\n\r\n<ng-template #search>\r\n <ion-toolbar *ngIf=\"showSerach\">\r\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\r\n </ion-toolbar>\r\n</ng-template>", styles: [".formly-ion-list-item{display:inline;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: WrappersModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i5.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i5.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i5.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i5.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i5.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "component", type: i6.FormlyField, selector: "formly-field", inputs: ["field"] }] }); }
|
125
|
-
}
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RepeatTypeComponent, decorators: [{
|
127
|
-
type: Component,
|
128
|
-
args: [{ standalone: true, selector: 'formly-repeat-section', imports: [
|
129
|
-
WrappersModule
|
130
|
-
], template: "<ion-header [translucent]=\"true\">\r\n <ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\r\n </ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\r\n</ion-header>\r\n\r\n<ng-template #header>\r\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\r\n\r\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\r\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\r\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n </ion-button>\r\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\r\n\r\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\r\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n\r\n<ion-list lines=\"full\">\r\n <ion-item *ngFor=\"let field of field.fieldGroup; let i = index\" class=\"row align-items-baseline\">\r\n <formly-field class=\"formly-ion-list-item\" [field]=\"field\"></formly-field>\r\n <ion-button [disabled]=\"props.disabled\" color=\"danger\" slot=\"end\" (click)='remove(i)'>\r\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\r\n </ion-button>\r\n </ion-item>\r\n</ion-list>\r\n\r\n\r\n<ng-template #search>\r\n <ion-toolbar *ngIf=\"showSerach\">\r\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\r\n </ion-toolbar>\r\n</ng-template>", styles: [".formly-ion-list-item{display:inline;width:100%}\n"] }]
|
131
|
-
}], ctorParameters: () => [{ type: i1.IonicDialogService }, { type: i2.TranslateService }, { type: i3.FileSaverService }], propDecorators: { fileInput: [{
|
132
|
-
type: ViewChild,
|
133
|
-
args: ['fileInput']
|
134
|
-
}] } });
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LXNlY3Rpb24udHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9pb25pYy9zcmMvbGliL3R5cGVzL3JlcGVhdC9yZXBlYXQtc2VjdGlvbi50eXBlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvdHlwZXMvcmVwZWF0L3JlcGVhdC1zZWN0aW9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxjQUFjLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBeUJoRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQWVyRCxZQUNTLGFBQWlDLEVBQ2pDLFNBQTJCLEVBQzFCLGdCQUFrQztRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUhELGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBYjVDLFNBQUksR0FBd0IsSUFBSSxDQUFDO1FBQ2pDLFdBQU0sR0FBZSxJQUFJLENBQUM7UUFDMUIsZUFB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QWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OEdBL0hVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdOQ2pDaEMsa3JEQXVDYywyR0RUVixjQUFjOzsyRkFHTCxtQkFBbUI7a0JBVi9CLFNBQVM7aUNBRUksSUFBSSxZQUNOLHVCQUF1QixXQUd4Qjt3QkFDUCxjQUFjO3FCQUNmO3FKQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpZWxkQXJyYXlUeXBlLCBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGdldFZhbHVlRnJvbUpzb25EYXRhLCByZWFkRmlsZUFzeW5jIH0gZnJvbSAnQHJvc29mdGxhYi9jb3JlJztcclxuaW1wb3J0IHsgRmlsZVNhdmVyU2VydmljZSB9IGZyb20gJ25neC1maWxlc2F2ZXInO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFdyYXBwZXJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vd3JhcHBlcnMvd3JhcHBlcnMubW9kdWxlJztcclxuXHJcbmludGVyZmFjZSBTZWFyY2hQcm9wIHtcclxuICBzaG93U2VyYWNoOiBib29sZWFuXHJcbiAgc2VhcmNoUHJvcDogc3RyaW5nXHJcbn1cclxuaW50ZXJmYWNlIEV4cG9ydERhdGFQcm9wIHtcclxuICBwcm9wZXJ0aWVzVG9FeHBvcnQ6IHN0cmluZ1tdXHJcbiAgc2hlZXROYW1lOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgSW1wb3J0RGF0YVByb3Age1xyXG4gIGtleVByb3A6IHN0cmluZ1xyXG4gIHByb3BlcnRpZXNUb0ltcG9ydDogc3RyaW5nW11cclxufVxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdmb3JtbHktcmVwZWF0LXNlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXQtc2VjdGlvbi5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXBlYXQtc2VjdGlvbi5zY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgV3JhcHBlcnNNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRUeXBlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRBcnJheVR5cGUge1xyXG4gIC8qKlxyXG4gICAqXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xyXG4gIGRhdGE6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBudWxsO1xyXG4gIHNlcmFjaDogU2VhcmNoUHJvcCA9IG51bGw7XHJcbiAgc2hvd1NlcmFjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRlbGV0ZU1lc3NhZ2U6IHN0cmluZ1xyXG4gIGRlbGV0ZUJ1dHRvbjogc3RyaW5nXHJcbiAgY2FuY2VsQnV0dG9uOiBzdHJpbmdcclxuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gbnVsbDtcclxuICB0eXBlS2V5OiBzdHJpbmc7XHJcbiAgaW1wb3J0RGF0YVByb3A6IEltcG9ydERhdGFQcm9wID0gbnVsbDtcclxuICBleHBvcnREYXRhUHJvcDogRXhwb3J0RGF0YVByb3AgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbGVTYXZlclNlcnZpY2U6IEZpbGVTYXZlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRlbGV0ZU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiR2VuZXJhbC5EZWxldGUuUXVlc3Rpb25cIilcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcIkdlbmVyYWwuRGVsZXRlLkJ1dHRvblwiKVxyXG4gICAgdGhpcy5jYW5jZWxCdXR0b24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiR2VuZXJhbC5DYW5jZWwuQnV0dG9uXCIpXHJcblxyXG4gIH1cclxuICBvdmVycmlkZSByZW1vdmUoaTogbnVtYmVyLCB7IG1hcmtBc0RpcnR5IH0gPSB7IG1hcmtBc0RpcnR5OiB0cnVlIH0pIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKHRoaXMuZGVsZXRlTWVzc2FnZSwgbnVsbCwgdGhpcy5kZWxldGVCdXR0b24sIHRoaXMuY2FuY2VsQnV0dG9uKS50aGVuKFxyXG4gICAgICAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZS5kYXRhKSB7XHJcbiAgICAgICAgICB2YXIgb25EZWxldGUgPSB0aGlzLmZpZWxkLnByb3BzWydvbkRlbGV0ZSddO1xyXG4gICAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICAgIG9uRGVsZXRlKHRoaXMuZmllbGQuZmllbGRHcm91cFtpXS5tb2RlbCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHN1cGVyLnJlbW92ZShpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHN1cGVyLnJlbW92ZShpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnR5cGVLZXkgPSB0aGlzLmZpZWxkLmtleSBhcyBzdHJpbmdcclxuICAgIHRoaXMuc2VyYWNoID0gdGhpcy5wcm9wc1snc2VhcmNoJ11cclxuICAgIHRoaXMuZXhwb3J0RGF0YVByb3AgPSB0aGlzLnByb3BzWydleHBvcnQnXSB8fCBudWxsXHJcbiAgICB0aGlzLmltcG9ydERhdGFQcm9wID0gdGhpcy5wcm9wc1snaW1wb3J0J10gfHwgbnVsbFxyXG4gICAgaWYgKHRoaXMuc2VyYWNoKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NlcmFjaCA9IHRoaXMuc2VyYWNoLnNob3dTZXJhY2hcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHBvc3RQb3B1bGF0ZShmaWVsZDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93U2VyYWNoKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IGZpZWxkLmZpZWxkR3JvdXBcclxuICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgPSB0aGlzLmRhdGEuZmlsdGVyKGYgPT4gZi5mb3JtQ29udHJvbC52YWx1ZVt0aGlzLnNlcmFjaC5zZWFyY2hQcm9wXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuZmlsdGVyVmFsdWUpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZUNoYW5nZShldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2hvd1NlcmFjaCkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhID09IG51bGwgJiYgdGhpcy5maWVsZC5maWVsZEdyb3VwICE9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5maWVsZC5maWVsZEdyb3VwXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgPSB0aGlzLmRhdGEuZmlsdGVyKGYgPT4gZi5mb3JtQ29udHJvbC52YWx1ZVt0aGlzLnNlcmFjaC5zZWFyY2hQcm9wXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuZmlsdGVyVmFsdWUpKVxyXG4gICAgfVxyXG4gIH1cclxuICBpbXBvcnREYXRhKCkge1xyXG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuICBhc3luYyBoYW5kbGVJbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdHJ5IHtcclxuXHJcblxyXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlQXN5bmMoZmlsZSk7XHJcbiAgICAgICAgLy8gSGFuZGxlIHRoZSBmaWxlIGNvbnRlbnRzIGhlcmUgKGUuZy4sIGRpc3BsYXkgb3IgcHJvY2VzcyB0aGUgZGF0YSlcclxuICAgICAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IFhMU1gucmVhZChmaWxlQ29udGVudHMpLy8sIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG4gICAgICAgIGNvbnN0IGV4Y2VsRGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cykvLywgeyBoZWFkZXI6IDEgfSk7XHJcbiAgICAgICAgZXhjZWxEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBqc29uWCA9IGdldFZhbHVlRnJvbUpzb25EYXRhKGVsZW1lbnQsIHRoaXMuaW1wb3J0RGF0YVByb3Aua2V5UHJvcClcclxuICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZmllbGQucGFyZW50Lm1vZGVsW3RoaXMudHlwZUtleV0uZmluZEluZGV4KGYgPT4gZlt0aGlzLmltcG9ydERhdGFQcm9wLmtleVByb3BdID09PSBqc29uWClcclxuICAgICAgICAgIGlmIChpZHggPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ2RhdGEgPSB0aGlzLmZpZWxkLnBhcmVudC5tb2RlbFt0aGlzLnR5cGVLZXldW2lkeF1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuaW1wb3J0RGF0YVByb3AucHJvcGVydGllc1RvSW1wb3J0KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QganNvblZhbCA9IGdldFZhbHVlRnJvbUpzb25EYXRhKGVsZW1lbnQsIHByb3ApXHJcbiAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nZGF0YVtwcm9wXSAhPT0ganNvblZhbCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkQ29udHJvbCA9IHRoaXMuZmllbGQuZmllbGRHcm91cFtpZHhdLmZvcm1Db250cm9sIGFzIEZvcm1Hcm91cFxyXG4gICAgICAgICAgICAgICAgZmllbGRDb250cm9sLmNvbnRyb2xzW3Byb3BdLnNldFZhbHVlKGpzb25WYWwpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdXBlci5hZGQobnVsbCwgZWxlbWVudClcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVhZGluZyB0aGUgZmlsZTonLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGEoKSB7XHJcblxyXG4gICAgLy8gRmlsdGVyIHRoZSBkYXRhIHRvIGluY2x1ZGUgb25seSB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXNcclxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZmllbGQucGFyZW50Lm1vZGVsW3RoaXMudHlwZUtleV0ubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZEl0ZW06IGFueSA9IHt9O1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5leHBvcnREYXRhUHJvcC5wcm9wZXJ0aWVzVG9FeHBvcnQpIHtcclxuICAgICAgICBmaWx0ZXJlZEl0ZW1bcHJvcF0gPSBpdGVtW3Byb3BdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmaWx0ZXJlZEl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoZmlsdGVyZWREYXRhKTtcclxuICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC51dGlscy5ib29rX25ldygpO1xyXG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldCh3Yiwgd3MsIHRoaXMuZXhwb3J0RGF0YVByb3Auc2hlZXROYW1lKTtcclxuXHJcbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3YiwgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xyXG5cclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZXhjZWxCdWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcgfSk7XHJcbiAgICB0aGlzLmZpbGVTYXZlclNlcnZpY2Uuc2F2ZShibG9iLCB0aGlzLmV4cG9ydERhdGFQcm9wLmZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8vIGdldFZhbHVlRnJvbUpzb25EYXRhKGpzb25EYXRhOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcclxuICAvLyAgIC8vIENvbnZlcnQgdGhlIGtleSBhbmQgYWxsIEpTT04ga2V5cyB0byBsb3dlcmNhc2VcclxuICAvLyAgIGNvbnN0IGxvd2VyY2FzZUtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xyXG4gIC8vICAgY29uc3QgbG93ZXJjYXNlS2V5cyA9IE9iamVjdC5rZXlzKGpzb25EYXRhKS5tYXAoayA9PiBrLnRvTG93ZXJDYXNlKCkpO1xyXG5cclxuICAvLyAgIC8vIEZpbmQgdGhlIGxvd2VyY2FzZSBrZXkgaW4gdGhlIGxvd2VyY2FzZSBrZXlzIGFycmF5XHJcbiAgLy8gICBjb25zdCBpbmRleCA9IGxvd2VyY2FzZUtleXMuaW5kZXhPZihsb3dlcmNhc2VLZXkpO1xyXG5cclxuICAvLyAgIC8vIElmIGZvdW5kLCB1c2UgdGhlIG9yaWdpbmFsIChwcm9wZXIgY2FzZSkga2V5IHRvIGFjY2VzcyB0aGUgdmFsdWVcclxuICAvLyAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAvLyAgICAgY29uc3Qgb3JpZ2luYWxLZXkgPSBPYmplY3Qua2V5cyhqc29uRGF0YSlbaW5kZXhdO1xyXG4gIC8vICAgICByZXR1cm4ganNvbkRhdGFbb3JpZ2luYWxLZXldO1xyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIC8vIEtleSBub3QgZm91bmRcclxuICAvLyAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gfVxyXG4gIC8vIHByaXZhdGUgcmVhZEZpbGVBc3luYyhmaWxlOiBGaWxlKTogUHJvbWlzZTxhbnk+IHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAvLyAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgLy8gICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XHJcbiAgLy8gICAgIH07XHJcblxyXG4gIC8vICAgICByZWFkZXIub25lcnJvciA9IChldmVudDogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgcmVqZWN0KGV2ZW50LnRhcmdldC5lcnJvcik7XHJcbiAgLy8gICAgIH07XHJcblxyXG4gIC8vICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcbn0iLCI8aW9uLWhlYWRlciBbdHJhbnNsdWNlbnRdPVwidHJ1ZVwiPlxyXG4gIDxpb24tdG9vbGJhcj5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaFwiPjwvbmctY29udGFpbmVyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48bmctdGVtcGxhdGUgI2hlYWRlcj5cclxuICA8aW9uLXRpdGxlIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiPnt7cHJvcHMubGFiZWx9fTwvaW9uLXRpdGxlPlxyXG5cclxuICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgKGNsaWNrKT1cImV4cG9ydERhdGEoKVwiIGZpbGw9XCJjbGVhclwiIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiICpuZ0lmPVwiZXhwb3J0RGF0YVByb3BcIj5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvdWQtZG93bmxvYWQtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG5cclxuICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgKGNsaWNrKT1cImltcG9ydERhdGEoKVwiIGZpbGw9XCJjbGVhclwiIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiICpuZ0lmPVwiaW1wb3J0RGF0YVByb3BcIj5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiY2xvdWQtdXBsb2FkLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gIDwvaW9uLWJ1dHRvbj5cclxuICA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIGFjY2VwdD1cIi54bHN4LC54bHMsLmNzdlwiIChjaGFuZ2UpPVwiaGFuZGxlSW1wb3J0RmlsZSgkZXZlbnQpXCI+XHJcblxyXG4gIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiYWRkKClcIiBmaWxsPVwiY2xlYXJcIiBbZGlzYWJsZWRdPVwicHJvcHMuZGlzYWJsZWRcIj5cclxuICAgIDxpb24taWNvbiBzaXplPVwibGFyZ2VcIiBuYW1lPVwiYWRkXCI+PC9pb24taWNvbj5cclxuICA8L2lvbi1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPGlvbi1saXN0IGxpbmVzPVwiZnVsbFwiPlxyXG4gIDxpb24taXRlbSAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGQuZmllbGRHcm91cDsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWJhc2VsaW5lXCI+XHJcbiAgICA8Zm9ybWx5LWZpZWxkIGNsYXNzPVwiZm9ybWx5LWlvbi1saXN0LWl0ZW1cIiBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS1maWVsZD5cclxuICAgIDxpb24tYnV0dG9uIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cImVuZFwiIChjbGljayk9J3JlbW92ZShpKSc+XHJcbiAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCI+PC9pb24taWNvbj5cclxuICAgIDwvaW9uLWJ1dHRvbj5cclxuICA8L2lvbi1pdGVtPlxyXG48L2lvbi1saXN0PlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjc2VhcmNoPlxyXG4gIDxpb24tdG9vbGJhciAqbmdJZj1cInNob3dTZXJhY2hcIj5cclxuICAgIDxpb24tc2VhcmNoYmFyIFtkZWJvdW5jZV09XCIxMDAwXCIgKGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLXNlYXJjaGJhcj5cclxuICA8L2lvbi10b29sYmFyPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
@@ -1,190 +0,0 @@
|
|
1
|
-
import { Component, ElementRef, TemplateRef, ViewChild } from '@angular/core';
|
2
|
-
import { FieldArrayType } from '@ngx-formly/core';
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
4
|
-
import { ColumnMode, SelectionType } from '@swimlane/ngx-datatable';
|
5
|
-
import { FileSaverService } from 'ngx-filesaver';
|
6
|
-
import * as XLSX from 'xlsx';
|
7
|
-
import { IonicDialogService } from '../../ionic-dialog.service';
|
8
|
-
import { WrappersModule } from '../../wrappers/wrappers.module';
|
9
|
-
import * as i0 from "@angular/core";
|
10
|
-
import * as i1 from "../../ionic-dialog.service";
|
11
|
-
import * as i2 from "@ngx-translate/core";
|
12
|
-
import * as i3 from "ngx-filesaver";
|
13
|
-
import * as i4 from "@angular/common";
|
14
|
-
import * as i5 from "@ionic/angular";
|
15
|
-
import * as i6 from "@swimlane/ngx-datatable";
|
16
|
-
import * as i7 from "@ngx-formly/core";
|
17
|
-
export class RepeatDatatableComponent extends FieldArrayType {
|
18
|
-
constructor(dialogService, translate, fileSaverService) {
|
19
|
-
super();
|
20
|
-
this.dialogService = dialogService;
|
21
|
-
this.translate = translate;
|
22
|
-
this.fileSaverService = fileSaverService;
|
23
|
-
this.data = null;
|
24
|
-
this.serach = null;
|
25
|
-
this.showSerach = false;
|
26
|
-
this.filterValue = null;
|
27
|
-
this.importDataProp = null;
|
28
|
-
this.exportDataProp = null;
|
29
|
-
this.ColumnMode = ColumnMode;
|
30
|
-
this.SelectionType = SelectionType;
|
31
|
-
this.deleteMessage = this.translate.instant("General.Delete.Question");
|
32
|
-
this.deleteButton = this.translate.instant("General.Delete.Button");
|
33
|
-
this.cancelButton = this.translate.instant("General.Cancel.Button");
|
34
|
-
}
|
35
|
-
add(i, initialModel) {
|
36
|
-
initialModel = {};
|
37
|
-
this.props['columns'].forEach(column => initialModel[column.prop] = null);
|
38
|
-
super.add(i, initialModel);
|
39
|
-
}
|
40
|
-
remove(i, { markAsDirty } = { markAsDirty: true }) {
|
41
|
-
this.dialogService.confirm(this.deleteMessage, null, this.deleteButton, this.cancelButton).then((value) => {
|
42
|
-
if (value.data) {
|
43
|
-
var onDelete = this.field.props['onDelete'];
|
44
|
-
if (onDelete) {
|
45
|
-
onDelete(this.field.fieldGroup[i].model).subscribe(() => {
|
46
|
-
super.remove(i);
|
47
|
-
});
|
48
|
-
}
|
49
|
-
super.remove(i);
|
50
|
-
}
|
51
|
-
});
|
52
|
-
}
|
53
|
-
ngOnInit() {
|
54
|
-
this.props['columns'].forEach(column => column.cellTemplate = this.defaultColumn);
|
55
|
-
this.props['columns'].push({
|
56
|
-
cellTemplate: this.actionsTmpl,
|
57
|
-
name: '',
|
58
|
-
cellClass: 'actions-cell',
|
59
|
-
draggable: false,
|
60
|
-
sortable: false,
|
61
|
-
visible: true,
|
62
|
-
width: 75,
|
63
|
-
maxWidth: 75,
|
64
|
-
minWidth: 75
|
65
|
-
});
|
66
|
-
this.typeKey = this.field.key;
|
67
|
-
this.serach = this.props['search'];
|
68
|
-
this.exportDataProp = this.props['export'] || null;
|
69
|
-
this.importDataProp = this.props['import'] || null;
|
70
|
-
if (this.serach) {
|
71
|
-
this.showSerach = this.serach.showSerach;
|
72
|
-
}
|
73
|
-
}
|
74
|
-
getField(field, column, rowIndex) {
|
75
|
-
return field.fieldGroup[rowIndex].fieldGroup.find(f => f.key === column.prop);
|
76
|
-
}
|
77
|
-
postPopulate(field) {
|
78
|
-
if (this.showSerach) {
|
79
|
-
this.data = field.fieldGroup;
|
80
|
-
if (this.filterValue) {
|
81
|
-
this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue));
|
82
|
-
}
|
83
|
-
}
|
84
|
-
}
|
85
|
-
handleChange(event) {
|
86
|
-
if (this.showSerach) {
|
87
|
-
if (this.data == null && this.field.fieldGroup !== null) {
|
88
|
-
this.data = this.field.fieldGroup;
|
89
|
-
}
|
90
|
-
this.filterValue = event.target.value.toLowerCase();
|
91
|
-
this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue));
|
92
|
-
}
|
93
|
-
}
|
94
|
-
importData() {
|
95
|
-
this.fileInput.nativeElement.click();
|
96
|
-
}
|
97
|
-
async handleImportFile(event) {
|
98
|
-
const file = event.target.files[0];
|
99
|
-
if (file) {
|
100
|
-
try {
|
101
|
-
const fileContents = await this.readFileAsync(file);
|
102
|
-
// Handle the file contents here (e.g., display or process the data)
|
103
|
-
const wb = XLSX.read(fileContents); //, { type: 'binary' });
|
104
|
-
const wsname = wb.SheetNames[0];
|
105
|
-
const ws = wb.Sheets[wsname];
|
106
|
-
const excelData = XLSX.utils.sheet_to_json(ws); //, { header: 1 });
|
107
|
-
excelData.forEach(element => {
|
108
|
-
const jsonX = this.getValueFromJsonData(element, this.importDataProp.keyProp);
|
109
|
-
const idx = this.field.parent.model[this.typeKey].findIndex(f => f[this.importDataProp.keyProp] === jsonX);
|
110
|
-
if (idx >= 0) {
|
111
|
-
const existingdata = this.field.parent.model[this.typeKey][idx];
|
112
|
-
for (const prop of this.importDataProp.propertiesToImport) {
|
113
|
-
const jsonVal = this.getValueFromJsonData(element, prop);
|
114
|
-
if (existingdata[prop] !== jsonVal) {
|
115
|
-
var fieldControl = this.field.fieldGroup[idx].formControl;
|
116
|
-
fieldControl.controls[prop].setValue(jsonVal);
|
117
|
-
}
|
118
|
-
}
|
119
|
-
}
|
120
|
-
else {
|
121
|
-
super.add(null, element);
|
122
|
-
}
|
123
|
-
});
|
124
|
-
}
|
125
|
-
catch (error) {
|
126
|
-
console.error('Error reading the file:', error);
|
127
|
-
}
|
128
|
-
}
|
129
|
-
}
|
130
|
-
exportData() {
|
131
|
-
// Filter the data to include only the specified properties
|
132
|
-
const filteredData = this.field.parent.model[this.typeKey].map(item => {
|
133
|
-
const filteredItem = {};
|
134
|
-
for (const prop of this.exportDataProp.propertiesToExport) {
|
135
|
-
filteredItem[prop] = item[prop];
|
136
|
-
}
|
137
|
-
return filteredItem;
|
138
|
-
});
|
139
|
-
const ws = XLSX.utils.json_to_sheet(filteredData);
|
140
|
-
const wb = XLSX.utils.book_new();
|
141
|
-
XLSX.utils.book_append_sheet(wb, ws, this.exportDataProp.sheetName);
|
142
|
-
const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
|
143
|
-
const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
|
144
|
-
this.fileSaverService.save(blob, this.exportDataProp.fileName);
|
145
|
-
}
|
146
|
-
getValueFromJsonData(jsonData, key) {
|
147
|
-
// Convert the key and all JSON keys to lowercase
|
148
|
-
const lowercaseKey = key.toLowerCase();
|
149
|
-
const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());
|
150
|
-
// Find the lowercase key in the lowercase keys array
|
151
|
-
const index = lowercaseKeys.indexOf(lowercaseKey);
|
152
|
-
// If found, use the original (proper case) key to access the value
|
153
|
-
if (index !== -1) {
|
154
|
-
const originalKey = Object.keys(jsonData)[index];
|
155
|
-
return jsonData[originalKey];
|
156
|
-
}
|
157
|
-
// Key not found
|
158
|
-
return undefined;
|
159
|
-
}
|
160
|
-
readFileAsync(file) {
|
161
|
-
return new Promise((resolve, reject) => {
|
162
|
-
const reader = new FileReader();
|
163
|
-
reader.onload = (event) => {
|
164
|
-
resolve(event.target.result);
|
165
|
-
};
|
166
|
-
reader.onerror = (event) => {
|
167
|
-
reject(event.target.error);
|
168
|
-
};
|
169
|
-
reader.readAsArrayBuffer(file);
|
170
|
-
});
|
171
|
-
}
|
172
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RepeatDatatableComponent, deps: [{ token: i1.IonicDialogService }, { token: i2.TranslateService }, { token: i3.FileSaverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
173
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: RepeatDatatableComponent, isStandalone: true, selector: "app-repeat-datatable", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "defaultColumn", first: true, predicate: ["defaultColumn"], descendants: true, static: true }, { propertyName: "actionsTmpl", first: true, predicate: ["actionsTmpl"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ion-header [translucent]=\"true\">\r\n <ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\r\n </ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\r\n</ion-header>\r\n\r\n<ng-template #header>\r\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\r\n\r\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\r\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\r\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n </ion-button>\r\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\r\n\r\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\r\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n<ngx-datatable #table class=\"material fullscreen rls-server-scrolling\" [rows]=\"model\" [columns]=\"props['columns']\" [columnMode]=\"props['columnMode']\"\r\n [rowHeight]=\"props['rowHeight']\" [headerHeight]=\"props['headerHeight']\" [footerHeight]=\"props['footerHeight']\" [limit]=\"props['limit']\"\r\n [scrollbarH]=\"props['scrollbarH']\" [reorderable]=\"props['reorderable']\" [externalSorting]=\"true\">\r\n <ng-template #defaultColumn ngx-datatable-cell-template let-rowIndex=\"rowIndex\" let-value=\"value\" let-row=\"row\"\r\n let-column=\"column\">\r\n <formly-field class=\"formly-ion-list-item\" [field]=\"getField(field, column, rowIndex)\"></formly-field>\r\n </ng-template>\r\n</ngx-datatable>\r\n\r\n<ng-template #actionsTmpl let-row=\"row\" let-value=\"value\" let-rowIndex=\"rowIndex\">\r\n <ion-button style=\"height: 100%;\" fill=\"clear\"[disabled]=\"props.disabled\" (click)='remove(rowIndex)'>\r\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='remove(rowIndex)'></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n<ng-template #search>\r\n <ion-toolbar *ngIf=\"showSerach\">\r\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\r\n </ion-toolbar>\r\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px);position:relative!important}::ng-deep .datatable-body-cell{padding:0!important}::ng-deep .datatable-body-cell-label{height:100%!important}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"], dependencies: [{ kind: "ngmodule", type: WrappersModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i5.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i5.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i5.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: i7.FormlyField, selector: "formly-field", inputs: ["field"] }] }); }
|
174
|
-
}
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RepeatDatatableComponent, decorators: [{
|
176
|
-
type: Component,
|
177
|
-
args: [{ standalone: true, selector: 'app-repeat-datatable', imports: [
|
178
|
-
WrappersModule
|
179
|
-
], template: "<ion-header [translucent]=\"true\">\r\n <ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\r\n </ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\r\n</ion-header>\r\n\r\n<ng-template #header>\r\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\r\n\r\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\r\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\r\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n </ion-button>\r\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\r\n\r\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\r\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n<ngx-datatable #table class=\"material fullscreen rls-server-scrolling\" [rows]=\"model\" [columns]=\"props['columns']\" [columnMode]=\"props['columnMode']\"\r\n [rowHeight]=\"props['rowHeight']\" [headerHeight]=\"props['headerHeight']\" [footerHeight]=\"props['footerHeight']\" [limit]=\"props['limit']\"\r\n [scrollbarH]=\"props['scrollbarH']\" [reorderable]=\"props['reorderable']\" [externalSorting]=\"true\">\r\n <ng-template #defaultColumn ngx-datatable-cell-template let-rowIndex=\"rowIndex\" let-value=\"value\" let-row=\"row\"\r\n let-column=\"column\">\r\n <formly-field class=\"formly-ion-list-item\" [field]=\"getField(field, column, rowIndex)\"></formly-field>\r\n </ng-template>\r\n</ngx-datatable>\r\n\r\n<ng-template #actionsTmpl let-row=\"row\" let-value=\"value\" let-rowIndex=\"rowIndex\">\r\n <ion-button style=\"height: 100%;\" fill=\"clear\"[disabled]=\"props.disabled\" (click)='remove(rowIndex)'>\r\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='remove(rowIndex)'></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n<ng-template #search>\r\n <ion-toolbar *ngIf=\"showSerach\">\r\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\r\n </ion-toolbar>\r\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px);position:relative!important}::ng-deep .datatable-body-cell{padding:0!important}::ng-deep .datatable-body-cell-label{height:100%!important}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"] }]
|
180
|
-
}], ctorParameters: () => [{ type: i1.IonicDialogService }, { type: i2.TranslateService }, { type: i3.FileSaverService }], propDecorators: { fileInput: [{
|
181
|
-
type: ViewChild,
|
182
|
-
args: ['fileInput']
|
183
|
-
}], defaultColumn: [{
|
184
|
-
type: ViewChild,
|
185
|
-
args: ['defaultColumn', { static: true }]
|
186
|
-
}], actionsTmpl: [{
|
187
|
-
type: ViewChild,
|
188
|
-
args: ['actionsTmpl', { static: true }]
|
189
|
-
}] } });
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LWRhdGF0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi90eXBlcy9yZXBlYXQtZGF0YXRhYmxlL3JlcGVhdC1kYXRhdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvdHlwZXMvcmVwZWF0LWRhdGF0YWJsZS9yZXBlYXQtZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBZSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7OztBQXVCaEUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGNBQWM7SUFxQjFELFlBQ1MsYUFBaUMsRUFDakMsU0FBMkIsRUFDMUIsZ0JBQWtDO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBSEQsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFoQjVD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S0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFMVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qix5YUMvQnJDLDZ5RUEyQ2MsNlpEZlYsY0FBYzs7MkZBR0wsd0JBQXdCO2tCQVRwQyxTQUFTO2lDQUNJLElBQUksWUFDTixzQkFBc0IsV0FHdkI7d0JBQ1AsY0FBYztxQkFDZjtxSkFNdUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUMrQixhQUFhO3NCQUFqRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0EsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWVsZEFycmF5VHlwZSwgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5Nb2RlLCBTZWxlY3Rpb25UeXBlLCBUYWJsZUNvbHVtbiB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcclxuaW1wb3J0IHsgRmlsZVNhdmVyU2VydmljZSB9IGZyb20gJ25neC1maWxlc2F2ZXInO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFdyYXBwZXJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vd3JhcHBlcnMvd3JhcHBlcnMubW9kdWxlJztcclxuaW50ZXJmYWNlIFNlYXJjaFByb3Age1xyXG4gIHNob3dTZXJhY2g6IGJvb2xlYW5cclxuICBzZWFyY2hQcm9wOiBzdHJpbmdcclxufVxyXG5pbnRlcmZhY2UgRXhwb3J0RGF0YVByb3Age1xyXG4gIHByb3BlcnRpZXNUb0V4cG9ydDogc3RyaW5nW11cclxuICBzaGVldE5hbWU6IHN0cmluZztcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBJbXBvcnREYXRhUHJvcCB7XHJcbiAga2V5UHJvcDogc3RyaW5nXHJcbiAgcHJvcGVydGllc1RvSW1wb3J0OiBzdHJpbmdbXVxyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVwZWF0LWRhdGF0YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGVhdC1kYXRhdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdC1kYXRhdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBXcmFwcGVyc01vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGVhdERhdGF0YWJsZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkQXJyYXlUeXBlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvKipcclxuICAgKlxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0Q29sdW1uJywgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGRlZmF1bHRDb2x1bW46IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnYWN0aW9uc1RtcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBhY3Rpb25zVG1wbDogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgZGF0YTogRm9ybWx5RmllbGRDb25maWdbXSA9IG51bGw7XHJcbiAgc2VyYWNoOiBTZWFyY2hQcm9wID0gbnVsbDtcclxuICBzaG93U2VyYWNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGVsZXRlTWVzc2FnZTogc3RyaW5nXHJcbiAgZGVsZXRlQnV0dG9uOiBzdHJpbmdcclxuICBjYW5jZWxCdXR0b246IHN0cmluZ1xyXG4gIGZpbHRlclZhbHVlOiBzdHJpbmcgPSBudWxsO1xyXG4gIHR5cGVLZXk6IHN0cmluZztcclxuICBpbXBvcnREYXRhUHJvcDogSW1wb3J0RGF0YVByb3AgPSBudWxsO1xyXG4gIGV4cG9ydERhdGFQcm9wOiBFeHBvcnREYXRhUHJvcCA9IG51bGw7XHJcblxyXG4gIENvbHVtbk1vZGUgPSBDb2x1bW5Nb2RlO1xyXG4gIFNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25UeXBlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpbGVTYXZlclNlcnZpY2U6IEZpbGVTYXZlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRlbGV0ZU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiR2VuZXJhbC5EZWxldGUuUXVlc3Rpb25cIilcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcIkdlbmVyYWwuRGVsZXRlLkJ1dHRvblwiKVxyXG4gICAgdGhpcy5jYW5jZWxCdXR0b24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiR2VuZXJhbC5DYW5jZWwuQnV0dG9uXCIpXHJcblxyXG4gIH1cclxuICBvdmVycmlkZSBhZGQoaT86IG51bWJlciwgaW5pdGlhbE1vZGVsPzogYW55KSB7XHJcbiAgICBpbml0aWFsTW9kZWwgPSB7fVxyXG4gICAgdGhpcy5wcm9wc1snY29sdW1ucyddLmZvckVhY2goY29sdW1uID0+IGluaXRpYWxNb2RlbFtjb2x1bW4ucHJvcF0gPSBudWxsKVxyXG4gICAgc3VwZXIuYWRkKGksIGluaXRpYWxNb2RlbCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIHJlbW92ZShpOiBudW1iZXIsIHsgbWFya0FzRGlydHkgfSA9IHsgbWFya0FzRGlydHk6IHRydWUgfSkge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0odGhpcy5kZWxldGVNZXNzYWdlLCBudWxsLCB0aGlzLmRlbGV0ZUJ1dHRvbiwgdGhpcy5jYW5jZWxCdXR0b24pLnRoZW4oXHJcbiAgICAgICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlLmRhdGEpIHtcclxuICAgICAgICAgIHZhciBvbkRlbGV0ZSA9IHRoaXMuZmllbGQucHJvcHNbJ29uRGVsZXRlJ107XHJcbiAgICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgICAgb25EZWxldGUodGhpcy5maWVsZC5maWVsZEdyb3VwW2ldLm1vZGVsKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3VwZXIucmVtb3ZlKGkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3VwZXIucmVtb3ZlKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucHJvcHNbJ2NvbHVtbnMnXS5mb3JFYWNoKGNvbHVtbiA9PiBjb2x1bW4uY2VsbFRlbXBsYXRlID0gdGhpcy5kZWZhdWx0Q29sdW1uKTtcclxuICAgIHRoaXMucHJvcHNbJ2NvbHVtbnMnXS5wdXNoKHtcclxuICAgICAgY2VsbFRlbXBsYXRlOiB0aGlzLmFjdGlvbnNUbXBsLFxyXG4gICAgICBuYW1lOiAnJyxcclxuICAgICAgY2VsbENsYXNzOiAnYWN0aW9ucy1jZWxsJyxcclxuICAgICAgZHJhZ2dhYmxlOiBmYWxzZSxcclxuICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICB3aWR0aDogNzUsXHJcbiAgICAgIG1heFdpZHRoOiA3NSxcclxuICAgICAgbWluV2lkdGg6IDc1XHJcbiAgICB9KVxyXG4gICAgdGhpcy50eXBlS2V5ID0gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nXHJcbiAgICB0aGlzLnNlcmFjaCA9IHRoaXMucHJvcHNbJ3NlYXJjaCddXHJcbiAgICB0aGlzLmV4cG9ydERhdGFQcm9wID0gdGhpcy5wcm9wc1snZXhwb3J0J10gfHwgbnVsbFxyXG4gICAgdGhpcy5pbXBvcnREYXRhUHJvcCA9IHRoaXMucHJvcHNbJ2ltcG9ydCddIHx8IG51bGxcclxuICAgIGlmICh0aGlzLnNlcmFjaCkge1xyXG4gICAgICB0aGlzLnNob3dTZXJhY2ggPSB0aGlzLnNlcmFjaC5zaG93U2VyYWNoXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBnZXRGaWVsZChmaWVsZDogRm9ybWx5RmllbGRDb25maWcsIGNvbHVtbjogVGFibGVDb2x1bW4sIHJvd0luZGV4OiBudW1iZXIpOiBGb3JtbHlGaWVsZENvbmZpZyB7XHJcbiAgICByZXR1cm4gZmllbGQuZmllbGRHcm91cFtyb3dJbmRleF0uZmllbGRHcm91cC5maW5kKGYgPT4gZi5rZXkgPT09IGNvbHVtbi5wcm9wKTtcclxuICB9XHJcbiAgcG9zdFBvcHVsYXRlKGZpZWxkOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNob3dTZXJhY2gpIHtcclxuICAgICAgdGhpcy5kYXRhID0gZmllbGQuZmllbGRHcm91cFxyXG4gICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cCA9IHRoaXMuZGF0YS5maWx0ZXIoZiA9PiBmLmZvcm1Db250cm9sLnZhbHVlW3RoaXMuc2VyYWNoLnNlYXJjaFByb3BdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5maWx0ZXJWYWx1ZSkpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zaG93U2VyYWNoKSB7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbCAmJiB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgIT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmZpZWxkLmZpZWxkR3JvdXBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbHRlclZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cCA9IHRoaXMuZGF0YS5maWx0ZXIoZiA9PiBmLmZvcm1Db250cm9sLnZhbHVlW3RoaXMuc2VyYWNoLnNlYXJjaFByb3BdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5maWx0ZXJWYWx1ZSkpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGltcG9ydERhdGEoKSB7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG4gIGFzeW5jIGhhbmRsZUltcG9ydEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuXHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICB0cnkge1xyXG5cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnRzID0gYXdhaXQgdGhpcy5yZWFkRmlsZUFzeW5jKGZpbGUpO1xyXG4gICAgICAgIC8vIEhhbmRsZSB0aGUgZmlsZSBjb250ZW50cyBoZXJlIChlLmcuLCBkaXNwbGF5IG9yIHByb2Nlc3MgdGhlIGRhdGEpXHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoZmlsZUNvbnRlbnRzKS8vLCB7IHR5cGU6ICdiaW5hcnknIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBjb25zdCBleGNlbERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MpLy8sIHsgaGVhZGVyOiAxIH0pO1xyXG4gICAgICAgIGV4Y2VsRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgY29uc3QganNvblggPSB0aGlzLmdldFZhbHVlRnJvbUpzb25EYXRhKGVsZW1lbnQsIHRoaXMuaW1wb3J0RGF0YVByb3Aua2V5UHJvcClcclxuICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZmllbGQucGFyZW50Lm1vZGVsW3RoaXMudHlwZUtleV0uZmluZEluZGV4KGYgPT4gZlt0aGlzLmltcG9ydERhdGFQcm9wLmtleVByb3BdID09PSBqc29uWClcclxuICAgICAgICAgIGlmIChpZHggPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ2RhdGEgPSB0aGlzLmZpZWxkLnBhcmVudC5tb2RlbFt0aGlzLnR5cGVLZXldW2lkeF1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuaW1wb3J0RGF0YVByb3AucHJvcGVydGllc1RvSW1wb3J0KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QganNvblZhbCA9IHRoaXMuZ2V0VmFsdWVGcm9tSnNvbkRhdGEoZWxlbWVudCwgcHJvcClcclxuICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdkYXRhW3Byb3BdICE9PSBqc29uVmFsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZmllbGRDb250cm9sID0gdGhpcy5maWVsZC5maWVsZEdyb3VwW2lkeF0uZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwXHJcbiAgICAgICAgICAgICAgICBmaWVsZENvbnRyb2wuY29udHJvbHNbcHJvcF0uc2V0VmFsdWUoanNvblZhbClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN1cGVyLmFkZChudWxsLCBlbGVtZW50KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWFkaW5nIHRoZSBmaWxlOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YSgpIHtcclxuXHJcbiAgICAvLyBGaWx0ZXIgdGhlIGRhdGEgdG8gaW5jbHVkZSBvbmx5IHRoZSBzcGVjaWZpZWQgcHJvcGVydGllc1xyXG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5maWVsZC5wYXJlbnQubW9kZWxbdGhpcy50eXBlS2V5XS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbTogYW55ID0ge307XHJcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLmV4cG9ydERhdGFQcm9wLnByb3BlcnRpZXNUb0V4cG9ydCkge1xyXG4gICAgICAgIGZpbHRlcmVkSXRlbVtwcm9wXSA9IGl0ZW1bcHJvcF07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChmaWx0ZXJlZERhdGEpO1xyXG4gICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XHJcbiAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgdGhpcy5leHBvcnREYXRhUHJvcC5zaGVldE5hbWUpO1xyXG5cclxuICAgIGNvbnN0IGV4Y2VsQnVmZmVyOiBhbnkgPSBYTFNYLndyaXRlKHdiLCB7IGJvb2tUeXBlOiAneGxzeCcsIHR5cGU6ICdhcnJheScgfSk7XHJcblxyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtleGNlbEJ1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB9KTtcclxuICAgIHRoaXMuZmlsZVNhdmVyU2VydmljZS5zYXZlKGJsb2IsIHRoaXMuZXhwb3J0RGF0YVByb3AuZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWVGcm9tSnNvbkRhdGEoanNvbkRhdGE6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgLy8gQ29udmVydCB0aGUga2V5IGFuZCBhbGwgSlNPTiBrZXlzIHRvIGxvd2VyY2FzZVxyXG4gICAgY29uc3QgbG93ZXJjYXNlS2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBsb3dlcmNhc2VLZXlzID0gT2JqZWN0LmtleXMoanNvbkRhdGEpLm1hcChrID0+IGsudG9Mb3dlckNhc2UoKSk7XHJcblxyXG4gICAgLy8gRmluZCB0aGUgbG93ZXJjYXNlIGtleSBpbiB0aGUgbG93ZXJjYXNlIGtleXMgYXJyYXlcclxuICAgIGNvbnN0IGluZGV4ID0gbG93ZXJjYXNlS2V5cy5pbmRleE9mKGxvd2VyY2FzZUtleSk7XHJcblxyXG4gICAgLy8gSWYgZm91bmQsIHVzZSB0aGUgb3JpZ2luYWwgKHByb3BlciBjYXNlKSBrZXkgdG8gYWNjZXNzIHRoZSB2YWx1ZVxyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICBjb25zdCBvcmlnaW5hbEtleSA9IE9iamVjdC5rZXlzKGpzb25EYXRhKVtpbmRleF07XHJcbiAgICAgIHJldHVybiBqc29uRGF0YVtvcmlnaW5hbEtleV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gS2V5IG5vdCBmb3VuZFxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkRmlsZUFzeW5jKGZpbGU6IEZpbGUpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZShldmVudC50YXJnZXQucmVzdWx0KTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICByZWplY3QoZXZlbnQudGFyZ2V0LmVycm9yKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxufSIsIjxpb24taGVhZGVyIFt0cmFuc2x1Y2VudF09XCJ0cnVlXCI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2lvbi10b29sYmFyPlxyXG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoXCI+PC9uZy1jb250YWluZXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxyXG4gIDxpb24tdGl0bGUgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCI+e3twcm9wcy5sYWJlbH19PC9pb24tdGl0bGU+XHJcblxyXG4gIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCIgZmlsbD1cImNsZWFyXCIgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCIgKm5nSWY9XCJleHBvcnREYXRhUHJvcFwiPlxyXG4gICAgPGlvbi1pY29uIG5hbWU9XCJjbG91ZC1kb3dubG9hZC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICA8L2lvbi1idXR0b24+XHJcblxyXG4gIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiaW1wb3J0RGF0YSgpXCIgZmlsbD1cImNsZWFyXCIgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCIgKm5nSWY9XCJpbXBvcnREYXRhUHJvcFwiPlxyXG4gICAgPGlvbi1pY29uIG5hbWU9XCJjbG91ZC11cGxvYWQtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgPC9pb24tYnV0dG9uPlxyXG4gIDxpbnB1dCAjZmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgYWNjZXB0PVwiLnhsc3gsLnhscywuY3N2XCIgKGNoYW5nZSk9XCJoYW5kbGVJbXBvcnRGaWxlKCRldmVudClcIj5cclxuXHJcbiAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIChjbGljayk9XCJhZGQoKVwiIGZpbGw9XCJjbGVhclwiIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiPlxyXG4gICAgPGlvbi1pY29uIHNpemU9XCJsYXJnZVwiIG5hbWU9XCJhZGRcIj48L2lvbi1pY29uPlxyXG4gIDwvaW9uLWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZ3gtZGF0YXRhYmxlICN0YWJsZSBjbGFzcz1cIm1hdGVyaWFsIGZ1bGxzY3JlZW4gcmxzLXNlcnZlci1zY3JvbGxpbmdcIiBbcm93c109XCJtb2RlbFwiIFtjb2x1bW5zXT1cInByb3BzWydjb2x1bW5zJ11cIiBbY29sdW1uTW9kZV09XCJwcm9wc1snY29sdW1uTW9kZSddXCJcclxuICBbcm93SGVpZ2h0XT1cInByb3BzWydyb3dIZWlnaHQnXVwiIFtoZWFkZXJIZWlnaHRdPVwicHJvcHNbJ2hlYWRlckhlaWdodCddXCIgW2Zvb3RlckhlaWdodF09XCJwcm9wc1snZm9vdGVySGVpZ2h0J11cIiBbbGltaXRdPVwicHJvcHNbJ2xpbWl0J11cIlxyXG4gIFtzY3JvbGxiYXJIXT1cInByb3BzWydzY3JvbGxiYXJIJ11cIiBbcmVvcmRlcmFibGVdPVwicHJvcHNbJ3Jlb3JkZXJhYmxlJ11cIiBbZXh0ZXJuYWxTb3J0aW5nXT1cInRydWVcIj5cclxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2x1bW4gbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtcm93PVwicm93XCJcclxuICAgIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cclxuICAgIDxmb3JtbHktZmllbGQgICBjbGFzcz1cImZvcm1seS1pb24tbGlzdC1pdGVtXCIgIFtmaWVsZF09XCJnZXRGaWVsZChmaWVsZCwgY29sdW1uLCByb3dJbmRleClcIj48L2Zvcm1seS1maWVsZD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25neC1kYXRhdGFibGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FjdGlvbnNUbXBsIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxyXG4gIDxpb24tYnV0dG9uIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiIGZpbGw9XCJjbGVhclwiW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCIgKGNsaWNrKT0ncmVtb3ZlKHJvd0luZGV4KSc+XHJcbiAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRyYXNoXCIgKGNsaWNrKT0ncmVtb3ZlKHJvd0luZGV4KSc+PC9pb24taWNvbj5cclxuICA8L2lvbi1idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cclxuICA8aW9uLXRvb2xiYXIgKm5nSWY9XCJzaG93U2VyYWNoXCI+XHJcbiAgICA8aW9uLXNlYXJjaGJhciBbZGVib3VuY2VdPVwiMTAwMFwiIChpb25DaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKCRldmVudClcIj48L2lvbi1zZWFyY2hiYXI+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export * from './must-match';
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi92YWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tdXN0LW1hdGNoJztcclxuIl19
|