appproject-components 1.0.42 → 1.0.44

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.
@@ -6,7 +6,7 @@ import { CommonModule } from '@angular/common';
6
6
  import { IonicModule } from '@ionic/angular';
7
7
  import { HttpClientModule } from '@angular/common/http';
8
8
  import { AppprojectComponentsService } from './appproject-components.service';
9
- import { ReactiveFormsModule } from '@angular/forms';
9
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
10
10
  import { InputSelectComponent } from './input-select/input-select.component';
11
11
  import { InputPesquisaComponent } from './input-pesquisa/input-pesquisa.component';
12
12
  import { ModelTreeviewComponent } from './model-treeview/model-treeview.component';
@@ -22,6 +22,10 @@ import { BtnSalvarComponent } from './buttons/btn-salvar/btn-salvar.component';
22
22
  import { EntityEditComponent } from './entity-edit/entity-edit.component';
23
23
  import { InputCheckboxComponent } from './input-checkbox/input-checkbox.component';
24
24
  import { InputRadioComponent } from './input-radio/input-radio.component';
25
+ import { TreeViewComponent } from './tree-view/tree-view.component';
26
+ import { TreeViewNivelComponent } from './tree-view-nivel/tree-view-nivel.component';
27
+ import { GridViewComponent } from './grid-view/grid-view.component';
28
+ import { SafeHtmlPipe, ValorFormatPipe } from 'appproject-lib';
25
29
  import * as i0 from "@angular/core";
26
30
  export const LibConfigService = new InjectionToken('LibConfig');
27
31
  export class AppprojectComponentsModule {
@@ -55,10 +59,16 @@ export class AppprojectComponentsModule {
55
59
  BtnSalvarComponent,
56
60
  EntityEditComponent,
57
61
  InputCheckboxComponent,
58
- InputRadioComponent], imports: [CommonModule,
62
+ InputRadioComponent,
63
+ TreeViewComponent,
64
+ TreeViewNivelComponent,
65
+ GridViewComponent], imports: [CommonModule,
59
66
  HttpClientModule,
60
67
  IonicModule,
61
- ReactiveFormsModule], exports: [AppprojectComponentsComponent,
68
+ FormsModule,
69
+ ReactiveFormsModule,
70
+ ValorFormatPipe,
71
+ SafeHtmlPipe], exports: [AppprojectComponentsComponent,
62
72
  InputTextComponent,
63
73
  InputFormatComponent,
64
74
  InputSelectComponent,
@@ -75,10 +85,14 @@ export class AppprojectComponentsModule {
75
85
  BtnSalvarComponent,
76
86
  EntityEditComponent,
77
87
  InputCheckboxComponent,
78
- InputRadioComponent] }); }
88
+ InputRadioComponent,
89
+ TreeViewComponent,
90
+ TreeViewNivelComponent,
91
+ GridViewComponent] }); }
79
92
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppprojectComponentsModule, imports: [CommonModule,
80
93
  HttpClientModule,
81
94
  IonicModule,
95
+ FormsModule,
82
96
  ReactiveFormsModule] }); }
83
97
  }
84
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppprojectComponentsModule, decorators: [{
@@ -102,13 +116,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
102
116
  BtnSalvarComponent,
103
117
  EntityEditComponent,
104
118
  InputCheckboxComponent,
105
- InputRadioComponent
119
+ InputRadioComponent,
120
+ TreeViewComponent,
121
+ TreeViewNivelComponent,
122
+ GridViewComponent
106
123
  ],
107
124
  imports: [
108
125
  CommonModule,
109
126
  HttpClientModule,
110
127
  IonicModule,
111
- ReactiveFormsModule
128
+ FormsModule,
129
+ ReactiveFormsModule,
130
+ ValorFormatPipe,
131
+ SafeHtmlPipe
112
132
  ],
113
133
  exports: [
114
134
  AppprojectComponentsComponent,
@@ -128,9 +148,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
128
148
  BtnSalvarComponent,
129
149
  EntityEditComponent,
130
150
  InputCheckboxComponent,
131
- InputRadioComponent
151
+ InputRadioComponent,
152
+ TreeViewComponent,
153
+ TreeViewNivelComponent,
154
+ GridViewComponent
132
155
  ],
133
156
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
134
157
  }]
135
158
  }] });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcHJvamVjdC1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcHByb2plY3QtY29tcG9uZW50cy9zcmMvbGliL2FwcHByb2plY3QtY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFx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Qjt3QkFDbEIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbmplY3Rpb25Ub2tlbiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBwcHJvamVjdENvbXBvbmVudHNDb21wb25lbnQgfSBmcm9tICcuL2FwcHByb2plY3QtY29tcG9uZW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXRleHQvaW5wdXQtdGV4dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEZvcm1hdENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtZm9ybWF0L2lucHV0LWZvcm1hdC5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEFwcHByb2plY3RDb21wb25lbnRzU2VydmljZSB9IGZyb20gJy4vYXBwcHJvamVjdC1jb21wb25lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbnB1dFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFBlc3F1aXNhQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1wZXNxdWlzYS9pbnB1dC1wZXNxdWlzYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNb2RlbFRyZWV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9tb2RlbC10cmVldmlldy9tb2RlbC10cmVldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFZhbG9yQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC12YWxvci9pbnB1dC12YWxvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEFyZWFDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWFyZWEvaW5wdXQtYXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dENlcENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtY2VwL2lucHV0LWNlcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dEFycXVpdm9Db21wb25lbnQgfSBmcm9tICcuL2lucHV0LWFycXVpdm8vaW5wdXQtYXJxdWl2by5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdG5BY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbnMvYnRuLWFjdGlvbi9idG4tYWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ0bkNhbmNlbGFyQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b25zL2J0bi1jYW5jZWxhci9idG4tY2FuY2VsYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnRuRXhjbHVpckNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9ucy9idG4tZXhjbHVpci9idG4tZXhjbHVpci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdG5Ob3ZvQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b25zL2J0bi1ub3ZvL2J0bi1ub3ZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ0blNhbHZhckNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9ucy9idG4tc2FsdmFyL2J0bi1zYWx2YXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW50aXR5RWRpdENvbXBvbmVudCB9IGZyb20gJy4vZW50aXR5LWVkaXQvZW50aXR5LWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGliQ29uZmlnIH0gZnJvbSAnLi9saWItY29uZmlnJztcclxuaW1wb3J0IHsgSW5wdXRDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtY2hlY2tib3gvaW5wdXQtY2hlY2tib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtcmFkaW8vaW5wdXQtcmFkaW8uY29tcG9uZW50JztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgTGliQ29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMaWJDb25maWc+KCdMaWJDb25maWcnKTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBBcHBwcm9qZWN0Q29tcG9uZW50c0NvbXBvbmVudCxcclxuICAgIElucHV0VGV4dENvbXBvbmVudCxcclxuICAgIElucHV0Rm9ybWF0Q29tcG9uZW50LFxyXG4gICAgSW5wdXRTZWxlY3RDb21wb25lbnQsXHJcbiAgICBJbnB1dFBlc3F1aXNhQ29tcG9uZW50LFxyXG4gICAgTW9kZWxUcmVldmlld0NvbXBvbmVudCxcclxuICAgIElucHV0VmFsb3JDb21wb25lbnQsXHJcbiAgICBJbnB1dEFyZWFDb21wb25lbnQsXHJcbiAgICBJbnB1dENlcENvbXBvbmVudCxcclxuICAgIElucHV0QXJxdWl2b0NvbXBvbmVudCxcclxuICAgIEJ0bkFjdGlvbkNvbXBvbmVudCxcclxuICAgIEJ0bkNhbmNlbGFyQ29tcG9uZW50LFxyXG4gICAgQnRuRXhjbHVpckNvbXBvbmVudCxcclxuICAgIEJ0bk5vdm9Db21wb25lbnQsXHJcbiAgICBCdG5TYWx2YXJDb21wb25lbnQsXHJcbiAgICBFbnRpdHlFZGl0Q29tcG9uZW50LFxyXG4gICAgSW5wdXRDaGVja2JveENvbXBvbmVudCxcclxuICAgIElucHV0UmFkaW9Db21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEFwcHByb2plY3RDb21wb25lbnRzQ29tcG9uZW50LFxyXG4gICAgSW5wdXRUZXh0Q29tcG9uZW50LFxyXG4gICAgSW5wdXRGb3JtYXRDb21wb25lbnQsXHJcbiAgICBJbnB1dFNlbGVjdENvbXBvbmVudCxcclxuICAgIElucHV0UGVzcXVpc2FDb21wb25lbnQsXHJcbiAgICBNb2RlbFRyZWV2aWV3Q29tcG9uZW50LFxyXG4gICAgSW5wdXRWYWxvckNvbXBvbmVudCxcclxuICAgIElucHV0QXJlYUNvbXBvbmVudCxcclxuICAgIElucHV0Q2VwQ29tcG9uZW50LFxyXG4gICAgSW5wdXRBcnF1aXZvQ29tcG9uZW50LFxyXG4gICAgQnRuQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgQnRuQ2FuY2VsYXJDb21wb25lbnQsXHJcbiAgICBCdG5FeGNsdWlyQ29tcG9uZW50LFxyXG4gICAgQnRuTm92b0NvbXBvbmVudCxcclxuICAgIEJ0blNhbHZhckNvbXBvbmVudCxcclxuICAgIEVudGl0eUVkaXRDb21wb25lbnQsXHJcbiAgICBJbnB1dENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgSW5wdXRSYWRpb0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBwcm9qZWN0Q29tcG9uZW50c01vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBMaWJDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFwcHByb2plY3RDb21wb25lbnRzTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQXBwcHJvamVjdENvbXBvbmVudHNNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEFwcHByb2plY3RDb21wb25lbnRzU2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiAnTGliQ29uZmlnU2VydmljZScsXHJcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcHJvamVjdC1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcHByb2plY3QtY29tcG9uZW50cy9zcmMvbGliL2FwcHByb2plY3QtY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8s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d0JBQ25CLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsNkJBQTZCO3dCQUM3QixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcHByb2plY3RDb21wb25lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9hcHBwcm9qZWN0LWNvbXBvbmVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC10ZXh0L2lucHV0LXRleHQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRGb3JtYXRDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWZvcm1hdC9pbnB1dC1mb3JtYXQuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBcHBwcm9qZWN0Q29tcG9uZW50c1NlcnZpY2UgfSBmcm9tICcuL2FwcHByb2plY3QtY29tcG9uZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1zZWxlY3QvaW5wdXQtc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0UGVzcXVpc2FDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXBlc3F1aXNhL2lucHV0LXBlc3F1aXNhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vZGVsVHJlZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL21vZGVsLXRyZWV2aWV3L21vZGVsLXRyZWV2aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0VmFsb3JDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXZhbG9yL2lucHV0LXZhbG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtYXJlYS9pbnB1dC1hcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0Q2VwQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1jZXAvaW5wdXQtY2VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0QXJxdWl2b0NvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtYXJxdWl2by9pbnB1dC1hcnF1aXZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ0bkFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9ucy9idG4tYWN0aW9uL2J0bi1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnRuQ2FuY2VsYXJDb21wb25lbnQgfSBmcm9tICcuL2J1dHRvbnMvYnRuLWNhbmNlbGFyL2J0bi1jYW5jZWxhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdG5FeGNsdWlyQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b25zL2J0bi1leGNsdWlyL2J0bi1leGNsdWlyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ0bk5vdm9Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbnMvYnRuLW5vdm8vYnRuLW5vdm8uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnRuU2FsdmFyQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b25zL2J0bi1zYWx2YXIvYnRuLXNhbHZhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnRpdHlFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9lbnRpdHktZWRpdC9lbnRpdHktZWRpdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaWJDb25maWcgfSBmcm9tICcuL2xpYi1jb25maWcnO1xyXG5pbXBvcnQgeyBJbnB1dENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1jaGVja2JveC9pbnB1dC1jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbnB1dFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1yYWRpby9pbnB1dC1yYWRpby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmVlVmlld05pdmVsQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLXZpZXctbml2ZWwvdHJlZS12aWV3LW5pdmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyaWRWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9ncmlkLXZpZXcvZ3JpZC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgVmFsb3JGb3JtYXRQaXBlIH0gZnJvbSAnYXBwcHJvamVjdC1saWInO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBMaWJDb25maWdTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPExpYkNvbmZpZz4oJ0xpYkNvbmZpZycpO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEFwcHByb2plY3RDb21wb25lbnRzQ29tcG9uZW50LFxyXG4gICAgSW5wdXRUZXh0Q29tcG9uZW50LFxyXG4gICAgSW5wdXRGb3JtYXRDb21wb25lbnQsXHJcbiAgICBJbnB1dFNlbGVjdENvbXBvbmVudCxcclxuICAgIElucHV0UGVzcXVpc2FDb21wb25lbnQsXHJcbiAgICBNb2RlbFRyZWV2aWV3Q29tcG9uZW50LFxyXG4gICAgSW5wdXRWYWxvckNvbXBvbmVudCxcclxuICAgIElucHV0QXJlYUNvbXBvbmVudCxcclxuICAgIElucHV0Q2VwQ29tcG9uZW50LFxyXG4gICAgSW5wdXRBcnF1aXZvQ29tcG9uZW50LFxyXG4gICAgQnRuQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgQnRuQ2FuY2VsYXJDb21wb25lbnQsXHJcbiAgICBCdG5FeGNsdWlyQ29tcG9uZW50LFxyXG4gICAgQnRuTm92b0NvbXBvbmVudCxcclxuICAgIEJ0blNhbHZhckNvbXBvbmVudCxcclxuICAgIEVudGl0eUVkaXRDb21wb25lbnQsXHJcbiAgICBJbnB1dENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgSW5wdXRSYWRpb0NvbXBvbmVudCxcclxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxyXG4gICAgVHJlZVZpZXdOaXZlbENvbXBvbmVudCxcclxuICAgIEdyaWRWaWV3Q29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBWYWxvckZvcm1hdFBpcGUsXHJcbiAgICBTYWZlSHRtbFBpcGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEFwcHByb2plY3RDb21wb25lbnRzQ29tcG9uZW50LFxyXG4gICAgSW5wdXRUZXh0Q29tcG9uZW50LFxyXG4gICAgSW5wdXRGb3JtYXRDb21wb25lbnQsXHJcbiAgICBJbnB1dFNlbGVjdENvbXBvbmVudCxcclxuICAgIElucHV0UGVzcXVpc2FDb21wb25lbnQsXHJcbiAgICBNb2RlbFRyZWV2aWV3Q29tcG9uZW50LFxyXG4gICAgSW5wdXRWYWxvckNvbXBvbmVudCxcclxuICAgIElucHV0QXJlYUNvbXBvbmVudCxcclxuICAgIElucHV0Q2VwQ29tcG9uZW50LFxyXG4gICAgSW5wdXRBcnF1aXZvQ29tcG9uZW50LFxyXG4gICAgQnRuQWN0aW9uQ29tcG9uZW50LFxyXG4gICAgQnRuQ2FuY2VsYXJDb21wb25lbnQsXHJcbiAgICBCdG5FeGNsdWlyQ29tcG9uZW50LFxyXG4gICAgQnRuTm92b0NvbXBvbmVudCxcclxuICAgIEJ0blNhbHZhckNvbXBvbmVudCxcclxuICAgIEVudGl0eUVkaXRDb21wb25lbnQsXHJcbiAgICBJbnB1dENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgSW5wdXRSYWRpb0NvbXBvbmVudCxcclxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxyXG4gICAgVHJlZVZpZXdOaXZlbENvbXBvbmVudCxcclxuICAgIEdyaWRWaWV3Q29tcG9uZW50XHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcHByb2plY3RDb21wb25lbnRzTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IExpYkNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXBwcHJvamVjdENvbXBvbmVudHNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBcHBwcm9qZWN0Q29tcG9uZW50c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQXBwcHJvamVjdENvbXBvbmVudHNTZXJ2aWNlLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByb3ZpZGU6ICdMaWJDb25maWdTZXJ2aWNlJyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -32,7 +32,7 @@ export class EntityEditComponent {
32
32
  emptyHandler() {
33
33
  }
34
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: EntityEditComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: EntityEditComponent, selector: "kb-entity-edit", inputs: { entidade: "entidade", campos: "campos", entidadeForm: "entidadeForm", validation_messages: "validation_messages", itemClass: "itemClass", rowClass: "rowClass" }, ngImport: i0, template: "<form *ngIf=\"campos && campos.length\" [formGroup]=\"entidadeForm\" style=\"width: 100%;\">\n\n\n <ion-row *ngFor=\"let linha of campos\" [class]=\"rowClass\">\n <ng-container *ngFor=\"let campo of linha.Linha\">\n <!-- {{ campo.Nome }} {{ campo.Tipo }} -->\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-text'\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\" [placeholder]=\"campo.PlaceHolderVisivel ? (campo.Label ?? campo.Nome + '...') : ''\"\n [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" \n [type]=\"campo.TipoInput ?? 'text'\" \n [showSeePassword]=\"campo.TipoInput == 'password'\"\n [showCustomAction]=\"campo.InputAction\"\n [customActionIcon]=\"campo.InputActionIcon ?? 'search-outline'\"\n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\"\n\n [itemClass]=\"itemClass\">\n </kb-input-text>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-area'\">\n <kb-input-area label=\"{{campo.Label ?? campo.Nome}}\" [placeholder]=\"campo.PlaceHolderVisivel ? (campo.Label ?? campo.Nome + '...') : ''\"\n [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" [linhas]=\"campo.Linhas ?? 5\"\n [itemClass]=\"itemClass\">\n </kb-input-area>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-cep'\">\n <kb-input-cep label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\"\n (getResultados)=\"campo.change ? campo.change($event) : emptyHandler()\"\n >\n </kb-input-cep>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-valor'\">\n <kb-input-valor label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-valor>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-format'\">\n <kb-input-format label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" [formato]=\"campo.Formato ?? ''\"\n [itemClass]=\"itemClass\">\n </kb-input-format>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-checkbox'\">\n <kb-input-checkbox label=\"{{ campo.Label }}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" \n [itemClass]=\"itemClass\"\n [labelColor]=\"campo.BtnColor\">\n\n </kb-input-checkbox>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-select'\">\n <kb-input-select [label]=\"campo.Label ?? campo.Nome\" [placeholder]=\"'Selecionar...'\"\n [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\" [itens]=\"campo.Itens\" [itemId]=\"campo.ItemId ?? 'Id'\"\n [itemNome]=\"campo.ItemNome ?? 'Nome'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n (selectChangeEntity)=\"campo.change ? campo.change($event) : emptyHandler()\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-select>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-radio'\">\n <kb-input-radio [label]=\"campo.Label ?? campo.Nome\" [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\"\n [itens]=\"campo.Itens\" [itemId]=\"campo.ItemId\" [itemNome]=\"campo.ItemNome\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-radio>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-pesquisa'\">\n <kb-input-pesquisa #pesquisaCentroCustoPai \n [label]=\"campo.Label ?? campo.Nome\" \n [campoId]=\"campo.ItemId\"\n [focusField]=\"campo.focusField\"\n [formControlName]=\"campo.Nome\" \n placeholder=\"Pesquisar...\" \n [campoDisplay]=\"campo.ItemNome ?? 'Nome'\" \n [form]=\"entidadeForm\"\n [tipo]=\"campo.TipoPesquisa\" \n [urlItem]=\"campo.UrlItem\" \n [max]=\"campo.Tamanho ?? '50'\" \n [url]=\"campo.UrlPesquisa\" \n [readonly]=\"campo.ReadOnly\"\n (pesquisaChange)=\"campo.change ? campo.change($event) : emptyHandler()\"\n [itemClass]=\"itemClass\">\n </kb-input-pesquisa>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-button'\">\n <!-- \n <kb-btn-action [title]=\"campo.Label\" [icon]=\"campo.Icon\" [iconSrc]=\"campo.IconSrc\" [color]=\"campo.BtnColor ?? 'light'\" \n [expand]=\"campo.BtnExpand ?? 'block'\" style=\"margin-top: var(--btn-action-margin-top, auto);\">\n </kb-btn-action>\n -->\n <ion-button [expand]=\"campo.BtnExpand ?? 'block'\" [color]=\"campo.BtnColor ?? 'light'\"\n (click)=\"campo.click ? campo.click($event) : emptyHandler()\" [size]=\"campo.BtnSize ?? 'default'\"\n [disabled]=\"campo.ReadOnly\">\n <ion-icon *ngIf=\"campo.Icon || campo.IconSrc\" [name]=\"campo.Icon\" [src]=\"campo.IconSrc\"></ion-icon>\n {{ campo.Label }}\n </ion-button>\n </ion-col>\n\n <ion-col *ngIf=\"campo.Tipo == 'col'\" size-md=\"1\" size-xs=\"0\">\n\n </ion-col>\n\n <ion-col *ngIf=\"campo.Tipo == 'sub-titulo'\" size=\"12\">\n <ion-list lines=\"none\" class=\"ion-no-padding\">\n <ion-list-header color=\"primary\" [style]=\"campo.CampoStyle ?? ''\"> \n <ion-label [style]=\"campo.LabelStyle ?? ''\">{{ campo.Label }}</ion-label>\n </ion-list-header>\n </ion-list>\n </ion-col>\n </ng-container>\n </ion-row>\n\n <!--\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Totalizador</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Totalizador\"></ion-checkbox>\n </ion-item>\n </ion-col>\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Inativo</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Inativo\"></ion-checkbox>\n </ion-item>\n </ion-col>\n -->\n</form>", styles: ["ion-list-header{text-align:center;font-size:large}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.InputTextComponent, selector: "kb-input-text", inputs: ["iconInput", "inputSpanAfter", "campoFoco", "showCustomAction", "customActionIcon"], outputs: ["customActionClick"] }, { kind: "component", type: i5.InputFormatComponent, selector: "kb-input-format", inputs: ["formato", "keyEnter"] }, { kind: "component", type: i6.InputSelectComponent, selector: "kb-input-select", inputs: ["itens", "itemId", "itemNome", "showNovo", "itemNull", "opcaoDefault"], outputs: ["selectChange", "selectChangeEntity"] }, { kind: "component", type: i7.InputPesquisaComponent, selector: "kb-input-pesquisa", inputs: ["textoPesquisa", "max", "filterFunction", "selectId", "campoId", "campoPaiId", "campoDisplay", "tipo", "pesquisaChange", "pesquisaAction", "limpar", "url", "urlItem", "urlTree", "empresa", "loadInit"] }, { kind: "component", type: i8.InputValorComponent, selector: "kb-input-valor", inputs: ["maxValor"] }, { kind: "component", type: i9.InputAreaComponent, selector: "kb-input-area", inputs: ["linhas"] }, { kind: "component", type: i10.InputCepComponent, selector: "kb-input-cep", inputs: ["formato", "keyEnter"], outputs: ["getResultados"] }, { kind: "component", type: i11.InputCheckboxComponent, selector: "kb-input-checkbox", inputs: ["justify", "labelPlacement"] }, { kind: "component", type: i12.InputRadioComponent, selector: "kb-input-radio", inputs: ["itens", "itemId", "itemNome", "color"] }] }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: EntityEditComponent, selector: "kb-entity-edit", inputs: { entidade: "entidade", campos: "campos", entidadeForm: "entidadeForm", validation_messages: "validation_messages", itemClass: "itemClass", rowClass: "rowClass" }, ngImport: i0, template: "<form *ngIf=\"campos && campos.length\" [formGroup]=\"entidadeForm\" style=\"width: 100%;\">\n\n\n <ion-row *ngFor=\"let linha of campos\" [class]=\"rowClass\">\n <ng-container *ngFor=\"let campo of linha.Linha\">\n <!-- {{ campo.Nome }} {{ campo.Tipo }} -->\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-text'\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\" [placeholder]=\"campo.PlaceHolderVisivel ? (campo.Label ?? campo.Nome + '...') : ''\"\n [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" \n [type]=\"campo.TipoInput ?? 'text'\" \n [showSeePassword]=\"campo.TipoInput == 'password'\"\n [showCustomAction]=\"campo.InputAction\"\n [customActionIcon]=\"campo.InputActionIcon ?? 'search-outline'\"\n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\"\n\n [itemClass]=\"itemClass\">\n </kb-input-text>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-area'\">\n <kb-input-area label=\"{{campo.Label ?? campo.Nome}}\" [placeholder]=\"campo.PlaceHolderVisivel ? (campo.Label ?? campo.Nome + '...') : ''\"\n [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" [linhas]=\"campo.Linhas ?? 5\"\n [itemClass]=\"itemClass\">\n </kb-input-area>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-cep'\">\n <kb-input-cep label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\"\n (getResultados)=\"campo.change ? campo.change($event) : emptyHandler()\"\n >\n </kb-input-cep>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-valor'\">\n <kb-input-valor label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-valor>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-format'\">\n <kb-input-format label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" [formato]=\"campo.Formato ?? ''\"\n [itemClass]=\"itemClass\">\n </kb-input-format>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-checkbox'\">\n <kb-input-checkbox label=\"{{ campo.Label }}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco\" [readonly]=\"campo.ReadOnly\" \n [itemClass]=\"itemClass\"\n [labelColor]=\"campo.BtnColor\">\n\n </kb-input-checkbox>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-select'\">\n <kb-input-select [label]=\"campo.Label ?? campo.Nome\" [placeholder]=\"'Selecionar...'\"\n [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\" [itens]=\"campo.Itens\" [itemId]=\"campo.ItemId ?? 'Id'\"\n [itemNome]=\"campo.ItemNome ?? 'Nome'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n (selectChangeEntity)=\"campo.change ? campo.change($event) : emptyHandler()\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-select>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-radio'\">\n <kb-input-radio [label]=\"campo.Label ?? campo.Nome\" [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\"\n [itens]=\"campo.Itens\" [itemId]=\"campo.ItemId\" [itemNome]=\"campo.ItemNome\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-radio>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-pesquisa'\">\n <kb-input-pesquisa #pesquisaCentroCustoPai \n [label]=\"campo.Label ?? campo.Nome\" \n [campoId]=\"campo.ItemId\"\n [focusField]=\"campo.focusField\"\n [formControlName]=\"campo.Nome\" \n placeholder=\"Pesquisar...\" \n [campoDisplay]=\"campo.ItemNome ?? 'Nome'\" \n [form]=\"entidadeForm\"\n [tipo]=\"campo.TipoPesquisa\" \n [urlItem]=\"campo.UrlItem\" \n [max]=\"campo.Tamanho ?? '50'\" \n [url]=\"campo.UrlPesquisa\" \n [readonly]=\"campo.ReadOnly\"\n (pesquisaChange)=\"campo.change ? campo.change($event) : emptyHandler()\"\n [itemClass]=\"itemClass\">\n </kb-input-pesquisa>\n </ion-col>\n\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"campo.Tipo == 'input-button'\">\n <!-- \n <kb-btn-action [title]=\"campo.Label\" [icon]=\"campo.Icon\" [iconSrc]=\"campo.IconSrc\" [color]=\"campo.BtnColor ?? 'light'\" \n [expand]=\"campo.BtnExpand ?? 'block'\" style=\"margin-top: var(--btn-action-margin-top, auto);\">\n </kb-btn-action>\n -->\n <ion-button [expand]=\"campo.BtnExpand ?? 'block'\" [color]=\"campo.BtnColor ?? 'light'\"\n (click)=\"campo.click ? campo.click($event) : emptyHandler()\" [size]=\"campo.BtnSize ?? 'default'\"\n [disabled]=\"campo.ReadOnly\">\n <ion-icon *ngIf=\"campo.Icon || campo.IconSrc\" [name]=\"campo.Icon\" [src]=\"campo.IconSrc\"></ion-icon>\n {{ campo.Label }}\n </ion-button>\n </ion-col>\n\n <ion-col *ngIf=\"campo.Tipo == 'col'\" size-md=\"1\" size-xs=\"0\">\n\n </ion-col>\n\n <ion-col *ngIf=\"campo.Tipo == 'sub-titulo'\" size=\"12\">\n <ion-list lines=\"none\" class=\"ion-no-padding\">\n <ion-list-header color=\"primary\" [style]=\"campo.CampoStyle ?? ''\"> \n <ion-label [style]=\"campo.LabelStyle ?? ''\">{{ campo.Label }}</ion-label>\n </ion-list-header>\n </ion-list>\n </ion-col>\n </ng-container>\n </ion-row>\n\n <!--\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Totalizador</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Totalizador\"></ion-checkbox>\n </ion-item>\n </ion-col>\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Inativo</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Inativo\"></ion-checkbox>\n </ion-item>\n </ion-col>\n -->\n</form>", styles: ["ion-list-header{text-align:center;font-size:large}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.InputTextComponent, selector: "kb-input-text", inputs: ["iconInput", "inputSpanAfter", "campoFoco", "showCustomAction", "customActionIcon"], outputs: ["customActionClick"] }, { kind: "component", type: i5.InputFormatComponent, selector: "kb-input-format", inputs: ["formato", "keyEnter"] }, { kind: "component", type: i6.InputSelectComponent, selector: "kb-input-select", inputs: ["itens", "itemId", "itemNome", "showNovo", "itemNull", "opcaoDefault"], outputs: ["selectChange", "selectChangeEntity"] }, { kind: "component", type: i7.InputPesquisaComponent, selector: "kb-input-pesquisa", inputs: ["textoPesquisa", "max", "filterFunction", "selectId", "campoId", "campoPaiId", "campoDisplay", "tipo", "pesquisaChange", "pesquisaAction", "limpar", "url", "urlItem", "urlTree", "empresa", "loadInit", "treeTitulo"] }, { kind: "component", type: i8.InputValorComponent, selector: "kb-input-valor", inputs: ["maxValor"] }, { kind: "component", type: i9.InputAreaComponent, selector: "kb-input-area", inputs: ["linhas"] }, { kind: "component", type: i10.InputCepComponent, selector: "kb-input-cep", inputs: ["formato", "keyEnter"], outputs: ["getResultados"] }, { kind: "component", type: i11.InputCheckboxComponent, selector: "kb-input-checkbox", inputs: ["justify", "labelPlacement"] }, { kind: "component", type: i12.InputRadioComponent, selector: "kb-input-radio", inputs: ["itens", "itemId", "itemNome", "color"] }] }); }
36
36
  }
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: EntityEditComponent, decorators: [{
38
38
  type: Component,
@@ -0,0 +1,275 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { GridTabela, LibService } from 'appproject-lib';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@ionic/angular";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "appproject-lib";
8
+ export class GridViewComponent {
9
+ constructor() {
10
+ this.minHeight = '400px';
11
+ this.inMemoryPagination = false;
12
+ this.selecionarItem = new EventEmitter();
13
+ this.excluirItem = new EventEmitter();
14
+ this.selecionarChecked = new EventEmitter();
15
+ //inputs = inject(new InjectionToken<any>('title inputs'));
16
+ this.grupos = [{ Coluna: '', Tabela: null, Dados: null, Nivel: 0 }];
17
+ // tabelaCampos = {
18
+ // Selecionar: false,
19
+ // Exportar: true,
20
+ // Colunas: [
21
+ // { Campo: 'Id', Titulo: 'Id', Tamanho: '10%', Ordem: true, Grupo: false, Filtrar: true, OrdemStatus: 0, Tipo: 'number', Valores: [], FiltroOperador: '=', FiltroValor: '', FiltroVisivel: false },
22
+ // { Campo: 'Marca', Titulo: 'Marca', Tamanho: '25%', Ordem: true, Grupo: true, Filtrar: true, OrdemStatus: 0, Tipo: 'string', Valores: [], FiltroOperador: '=', FiltroValor: '', FiltroVisivel: false },
23
+ // { Campo: 'Descricao', Titulo: 'Descrição', Tamanho: '25%', Ordem: true, Grupo: true, Filtrar: true, OrdemStatus: 0, Tipo: 'string', Valores: [], FiltroOperador: '=', FiltroValor: '', FiltroVisivel: false },
24
+ // { Campo: 'Data', Titulo: 'Data', Tamanho: '20%', Ordem: true, Grupo: true, Filtrar: true, OrdemStatus: 0, Tipo: 'date', Valores: [], FiltroOperador: '=', FiltroValor: '', FiltroVisivel: false },
25
+ // { Campo: 'Valor', Titulo: 'Valor', Tamanho: '20%', Ordem: true, Grupo: false, Filtrar: true, OrdemStatus: 0, Tipo: 'number', Valores: [], FiltroOperador: '=', FiltroValor: '', FiltroVisivel: false },
26
+ // ]
27
+ // }
28
+ // dataSet: Array<any> = [
29
+ // { Id: 1, Marca: 'Apple', Descricao: 'IPhone 14', Data: '2023-05-01', Valor: 7899.99 },
30
+ // { Id: 2, Marca: 'Apple', Descricao: 'MacBook Pro', Data: '2023-06-01', Valor: 17999.99 },
31
+ // { Id: 3, Marca: 'Samsung', Descricao: 'Galaxy S23', Data: '2023-05-01', Valor: 6899.99 },
32
+ // { Id: 4, Marca: 'Sony', Descricao: 'PS 5', Data: '2023-06-01', Valor: 4899.99 },
33
+ // { Id: 5, Marca: 'Samsung', Descricao: 'Watch 23', Data: '2023-05-01', Valor: 1899.99 },
34
+ // ]
35
+ this.groups = [];
36
+ this.filteredDataSet = [];
37
+ this.pageDataSet = [];
38
+ //array com os campos filtrados para display
39
+ this.camposDisplay = [];
40
+ //filtro
41
+ this.isFiltroOpen = false;
42
+ this.todosSelecionados = false;
43
+ //pagination
44
+ //página atual
45
+ this.page = 1;
46
+ //registros por página
47
+ this.pageOffset = 20;
48
+ }
49
+ valoresFiltro() {
50
+ this.tabelaCampos.Colunas.forEach(c => {
51
+ if (c.Filtrar) {
52
+ //projetar a coluna
53
+ let initial = [];
54
+ let valores = this.dataSet.map(d => d[c.Campo]);
55
+ c.Valores = valores.filter((value, index, self) => {
56
+ return self.indexOf(value) === index;
57
+ }).map(v => { return { Selecionado: false, Valor: v }; });
58
+ // console.log(c.Campo, valores);
59
+ // console.log(c.Valores)
60
+ }
61
+ });
62
+ }
63
+ ngOnInit() {
64
+ //this.inicializaGrupo();
65
+ //this.agrupar('Marca');
66
+ //console.log('inputs', this.inputs);
67
+ //console.log('Input empresa', this.empresaId);
68
+ GridTabela.init(this.tabelaCampos);
69
+ this.valoresFiltro();
70
+ this.filteredDataSet = this.dataSet;
71
+ console.log('Init Tabela campos', this.tabelaCampos);
72
+ }
73
+ ngOnChanges(changes) {
74
+ console.log('On changes Tabela campos', this.tabelaCampos);
75
+ //evento chamado quando o dataset for atualizado
76
+ //inicializar vars de paginação
77
+ this.initPage();
78
+ this.todosSelecionados = false;
79
+ }
80
+ initPage() {
81
+ this.page = 1;
82
+ this.totalRec = this.filteredDataSet.length;
83
+ this.totalPages = Math.ceil(this.totalRec / this.pageOffset);
84
+ if (this.inMemoryPagination === true) {
85
+ this.getRegistrosPage();
86
+ }
87
+ else {
88
+ this.pageDataSet = this.filteredDataSet;
89
+ }
90
+ }
91
+ getRegistrosPage() {
92
+ this.start = (this.page - 1) * this.pageOffset;
93
+ console.log('dataset', this.filteredDataSet);
94
+ console.log('start', this.start);
95
+ console.log('offset', this.pageOffset);
96
+ this.pageDataSet = this.filteredDataSet.slice(this.start, (this.start + this.pageOffset));
97
+ console.log('page dataset', this.pageDataSet);
98
+ }
99
+ proximo() {
100
+ if (this.page < this.totalPages) {
101
+ this.page++;
102
+ this.getRegistrosPage();
103
+ this.gerarArrayPags();
104
+ }
105
+ }
106
+ anterior() {
107
+ if (this.page > 1) {
108
+ this.page--;
109
+ this.getRegistrosPage();
110
+ this.gerarArrayPags();
111
+ }
112
+ }
113
+ gerarArrayPags() {
114
+ }
115
+ inicializaGrupo() {
116
+ //inicializar o primeiro grupo 'default'
117
+ this.camposDisplay = this.tabelaCampos.Colunas;
118
+ this.grupos[0].Tabela = this.camposDisplay;
119
+ this.grupos[0].Dados = this.dataSet;
120
+ }
121
+ agrupar(campo) {
122
+ this.groups.push(campo);
123
+ let level = 0;
124
+ for (let g in this.groups) {
125
+ console.log(g);
126
+ //filtrar os dados
127
+ let result = this.dataSet.reduce((group, data) => {
128
+ const { g } = data;
129
+ group[g] = group[campo] ?? [];
130
+ group[g].push(data);
131
+ return group;
132
+ }, {});
133
+ console.log(result);
134
+ }
135
+ }
136
+ filtrarCampos(coluna = '') {
137
+ if (coluna != '') {
138
+ }
139
+ else {
140
+ }
141
+ }
142
+ filtrar(col) {
143
+ //console.log('filtrar', col);
144
+ if (col.Valores && col.Valores.find(v => v.Selecionado) != null) {
145
+ const valores = col.Valores.filter(v => v.Selecionado).map(v => v.Valor);
146
+ //filtrar por valores selecionados
147
+ this.filteredDataSet = this.dataSet.filter(d => valores.indexOf(d[col.Campo]) > -1);
148
+ }
149
+ else if (col.FiltroOperador && col.FiltroValor) {
150
+ //console.log(col.FiltroOperador, col.FiltroValor)
151
+ try {
152
+ this.filteredDataSet = this.dataSet.filter(d => {
153
+ switch (col.FiltroOperador) {
154
+ case "=":
155
+ return d[col.Campo] == col.FiltroValor;
156
+ case ">=":
157
+ if (col.Tipo == 'number') {
158
+ return LibService.stringToDecimal(d[col.Campo], true) >= LibService.stringToDecimal(col.FiltroValor, true);
159
+ }
160
+ else if (col.Tipo == 'data') {
161
+ return new Date(this.dataToString(d[col.Campo])) >= new Date(this.dataToString(col.FiltroValor));
162
+ }
163
+ else
164
+ return d[col.Campo] >= col.FiltroValor;
165
+ case "<=":
166
+ if (col.Tipo == 'number') {
167
+ return LibService.stringToDecimal(d[col.Campo], true) <= LibService.stringToDecimal(col.FiltroValor, true);
168
+ }
169
+ else
170
+ return d[col.Campo] <= col.FiltroValor;
171
+ case "tem":
172
+ return d[col.Campo].toString().toLowerCase().indexOf(col.FiltroValor.toLowerCase()) > -1;
173
+ default:
174
+ return true;
175
+ }
176
+ });
177
+ }
178
+ catch (ex) {
179
+ console.log(ex);
180
+ this.filteredDataSet = this.dataSet;
181
+ }
182
+ }
183
+ col.FiltroVisivel = false;
184
+ this.initPage();
185
+ }
186
+ getPage() {
187
+ }
188
+ limpar() {
189
+ this.filteredDataSet = this.dataSet;
190
+ }
191
+ dataToString(data) {
192
+ if (data) {
193
+ return data.split('/').reverse().join('-');
194
+ }
195
+ else {
196
+ return "";
197
+ }
198
+ }
199
+ ordenar(col) {
200
+ if (col.OrdemStatus == 0 || col.OrdemStatus == -1) {
201
+ if (col.Tipo == 'data') {
202
+ this.filteredDataSet.sort((a, b) => this.dataToString(a[col.Campo]) > this.dataToString(b[col.Campo]) ? 1 : (this.dataToString(a[col.Campo]) < this.dataToString(b[col.Campo]) ? -1 : 0));
203
+ }
204
+ else if (col.Tipo == 'number') {
205
+ this.filteredDataSet.sort((a, b) => LibService.stringToDecimal(a[col.Campo]) > LibService.stringToDecimal(b[col.Campo]) ? 1 : (LibService.stringToDecimal(a[col.Campo]) < LibService.stringToDecimal(b[col.Campo]) ? -1 : 0));
206
+ }
207
+ else
208
+ this.filteredDataSet.sort((a, b) => a[col.Campo] > b[col.Campo] ? 1 : (a[col.Campo] < b[col.Campo] ? -1 : 0));
209
+ col.OrdemStatus = 1; //asc
210
+ }
211
+ else {
212
+ if (col.Tipo == 'data') {
213
+ this.filteredDataSet.sort((a, b) => this.dataToString(a[col.Campo]) < this.dataToString(b[col.Campo]) ? 1 : (this.dataToString(a[col.Campo]) > this.dataToString(b[col.Campo]) ? -1 : 0));
214
+ }
215
+ else if (col.Tipo == 'number') {
216
+ this.filteredDataSet.sort((a, b) => LibService.stringToDecimal(a[col.Campo], true) < LibService.stringToDecimal(b[col.Campo], true) ? 1 : (LibService.stringToDecimal(a[col.Campo], true) > LibService.stringToDecimal(b[col.Campo], true) ? -1 : 0));
217
+ }
218
+ else
219
+ this.filteredDataSet.sort((a, b) => a[col.Campo] < b[col.Campo] ? 1 : (a[col.Campo] > b[col.Campo] ? -1 : 0));
220
+ col.OrdemStatus = -1; //desc
221
+ }
222
+ }
223
+ setFiltroOpen(col) {
224
+ col.FiltroVisivel = !col.FiltroVisivel;
225
+ if (col.FiltroVisivel) {
226
+ this.selectedColuna = col;
227
+ //console.log(this.selectedColuna);
228
+ }
229
+ }
230
+ selecionarTodos() {
231
+ //this.todosSelecionados = !this.todosSelecionados;
232
+ this.filteredDataSet.forEach(item => {
233
+ item[this.tabelaCampos.CampoSelecionar] = this.todosSelecionados;
234
+ });
235
+ this.selecionarChecked.emit();
236
+ }
237
+ selecionarLinha(item) {
238
+ this.selecionarItem.emit(item);
239
+ this.selectedItem = item;
240
+ }
241
+ excluirLinha(item) {
242
+ this.excluirItem.emit(item);
243
+ }
244
+ //check
245
+ selecionadoChecked() {
246
+ this.selecionarChecked.emit();
247
+ }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: GridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: GridViewComponent, selector: "kb-grid-view", inputs: { empresaId: "empresaId", tabelaCampos: "tabelaCampos", dataSet: "dataSet", minHeight: "minHeight", inMemoryPagination: "inMemoryPagination", filteredDataSet: "filteredDataSet", pageOffset: "pageOffset" }, outputs: { selecionarItem: "selecionarItem", excluirItem: "excluirItem", selecionarChecked: "selecionarChecked" }, usesOnChanges: true, ngImport: i0, template: "<div style=\"font-size: 14px;\">\n <div id=\"painelExportacao\">\n <ion-row *ngIf=\"inMemoryPagination\">\n <!--\n <ion-col size=\"2\">\n <ion-button *ngIf=\"tabelaCampos.Selecionar === true\" size=\"small\" fill=\"outline\" color=\"medium\"\n (click)=\"selecionarTodos()\">Selecionar Todos</ion-button>\n </ion-col>\n -->\n <ion-col size=\"3\">\n <ion-button *ngIf=\"inMemoryPagination === true\" size=\"small\" fill=\"outline\" color=\"bluetool\"\n (click)=\"anterior()\">\n <ion-icon name=\"chevron-back-outline\" slot=\"start\"></ion-icon>\n Anterior\n </ion-button>\n <ion-button *ngIf=\"inMemoryPagination === true\" size=\"small\" fill=\"outline\" color=\"bluetool\"\n (click)=\"proximo()\">\n Pr\u00F3ximo\n <ion-icon name=\"chevron-forward-outline\" slot=\"end\"></ion-icon>\n </ion-button> \n </ion-col>\n <ion-col size=\"2\">\n <span style=\"display: block; margin-top: 10px;\" *ngIf=\"inMemoryPagination && totalRec > 0\">Exibindo {{ start + 1 }} - {{ (start + pageOffset) < totalRec ? (start + pageOffset) : totalRec }} total de {{ totalRec }} \n </span> \n </ion-col>\n </ion-row>\n </div>\n <div style=\"width: 100%;\" [style.min-height]=\"minHeight\">\n <table class=\"grid\">\n <thead>\n <tr style=\"background-color: var(--ion-color-bluetool); color: white;\">\n <td *ngIf=\"tabelaCampos.Selecionar === true\" style=\"width: 3%; text-align: center;\">\n <input type=\"checkbox\" [(ngModel)]=\"todosSelecionados\" (change)=\"selecionarTodos()\">\n </td>\n <td *ngFor=\"let col of tabelaCampos.Colunas\" [style.width]=\"col.Tamanho\">\n <div style=\"position: relative;\">\n <div style=\"display: flex; justify-content: space-between; align-items: end;\">\n <strong>{{ col.Titulo }}</strong>\n <div>\n <ion-icon *ngIf=\"col.Ordem\" slot=\"end\" (click)=\"ordenar(col)\" style=\"cursor: pointer;\"\n [name]=\"col.OrdemStatus == 0 ? 'swap-vertical' : (col.OrdemStatus == 1 ? 'arrow-up': 'arrow-down')\"></ion-icon>\n \n <ion-icon *ngIf=\"col.Filtrar\" name=\"funnel\" (click)=\"setFiltroOpen(col)\" slot=\"end\"></ion-icon>\n </div>\n </div>\n \n \n <div class=\"caixaGrande\" [hidden]=\"!col.FiltroVisivel\" tabindex=\"-1\"\n style=\"color: black; display: block; position: absolute; z-index: 800; width: 210px; right: 0px; opacity: 0.9;\">\n Filtrar:\n <div>\n <div style=\"display: flex; justify-content: space-between; align-items: start;\">\n <select style=\"width: 80px;\" [(ngModel)]=\"col.FiltroOperador\">\n <option>=</option>\n <option>&gt;=</option>\n <option>&lt;=</option>\n <option>tem</option>\n </select>\n <input style=\"width: 100px;\" type=\"text\" [(ngModel)]=\"col.FiltroValor\">\n </div>\n <ion-button size=\"small\" color=\"medium\" expand=\"block\" (click)=\"filtrar(col)\">Filtrar</ion-button>\n <ion-button size=\"small\" color=\"light\" expand=\"block\" (click)=\"limpar()\">Limpar</ion-button>\n </div>\n <div *ngIf=\"col.Valores\" class=\"scroll-container\" style=\"height: 200px; overflow-y: scroll;\">\n <div *ngFor=\"let valor of col.Valores\">\n <input type=\"checkbox\" [(ngModel)]=\"valor.Selecionado\">\n <span>{{ valor.Valor }}</span>\n </div>\n </div>\n </div>\n \n </div>\n </td>\n <td *ngIf=\"tabelaCampos.Excluir === true\">\n \n </td>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pageDataSet\" [class]=\"item == selectedItem ? 'item-selecionado' : '' \">\n <td *ngIf=\"tabelaCampos.Selecionar === true\" style=\"text-align: center; cursor: auto;\">\n <input type=\"checkbox\" [(ngModel)]=\"item[tabelaCampos.CampoSelecionar]\" (change)=\"selecionadoChecked()\">\n </td>\n <td class=\"col\" *ngFor=\"let col of tabelaCampos.Colunas\" [style.width]=\"col.Tamanho\"\n [style.text-align]=\"col.Tipo == 'number' ? 'right' : (col.Alinhamento ?? 'left')\"\n (click)=\"col.ClickFunction ? col.ClickFunction(item) : selecionarLinha(item)\">\n <span *ngIf=\"col.Pipe == 'date'\">{{ item[col.Campo] | date: 'dd/MM/yyyy' }}</span> \n <span *ngIf=\"col.Pipe == 'valor'\">{{ item[col.Campo] | valorFormat }}</span>\n <span *ngIf=\"col.RenderFunction\" [innerHtml]=\"col.RenderFunction(item) | safeHtml\"></span>\n <span *ngIf=\"!col.Pipe && !col.RenderFunction\">{{ item[col.Campo] ?? col.Default }}</span>\n </td>\n <td *ngIf=\"tabelaCampos.Excluir === true\" style=\"padding: 0px; text-align: center;\">\n <ion-button size=\"small\" color=\"danger\" fill=\"outline\" style=\"transform: scale(0.85);\" (click)=\"excluirLinha(item)\">\n <ion-icon name=\"trash\"></ion-icon>\n </ion-button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n \n <ion-modal [isOpen]=\"isFiltroOpen\" (didDismiss)=\"isFiltroOpen = false;\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <div class=\"caixaGrande\">\n Filtrar:\n <div *ngIf=\"selectedColuna.Valores\">\n <div *ngFor=\"let valor of selectedColuna.Valores\">\n <span>{{ valor }}</span>\n </div>\n </div>\n </div>\n </ion-content>\n </ng-template>\n </ion-modal>\n </div>", styles: [".grid{width:100%}.grid thead td{border:1px solid gray;padding:4px}.grid tbody td{border:1px solid gray;padding:2px 4px}.grid tbody tr{cursor:pointer}.grid tbody tr:hover{background-color:#699ccc80;transition-duration:.5s}.grid tbody tr.item-selecionado{background-color:#699ccc33}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonModal, selector: "ion-modal", inputs: ["animated", "keepContentsMounted", "backdropBreakpoint", "backdropDismiss", "breakpoints", "canDismiss", "cssClass", "enterAnimation", "event", "handle", "handleBehavior", "initialBreakpoint", "isOpen", "keyboardClose", "leaveAnimation", "mode", "presentingElement", "showBackdrop", "translucent", "trigger"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i4.ValorFormatPipe, name: "valorFormat" }, { kind: "pipe", type: i4.SafeHtmlPipe, name: "safeHtml" }] }); }
250
+ }
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: GridViewComponent, decorators: [{
252
+ type: Component,
253
+ args: [{ selector: 'kb-grid-view', template: "<div style=\"font-size: 14px;\">\n <div id=\"painelExportacao\">\n <ion-row *ngIf=\"inMemoryPagination\">\n <!--\n <ion-col size=\"2\">\n <ion-button *ngIf=\"tabelaCampos.Selecionar === true\" size=\"small\" fill=\"outline\" color=\"medium\"\n (click)=\"selecionarTodos()\">Selecionar Todos</ion-button>\n </ion-col>\n -->\n <ion-col size=\"3\">\n <ion-button *ngIf=\"inMemoryPagination === true\" size=\"small\" fill=\"outline\" color=\"bluetool\"\n (click)=\"anterior()\">\n <ion-icon name=\"chevron-back-outline\" slot=\"start\"></ion-icon>\n Anterior\n </ion-button>\n <ion-button *ngIf=\"inMemoryPagination === true\" size=\"small\" fill=\"outline\" color=\"bluetool\"\n (click)=\"proximo()\">\n Pr\u00F3ximo\n <ion-icon name=\"chevron-forward-outline\" slot=\"end\"></ion-icon>\n </ion-button> \n </ion-col>\n <ion-col size=\"2\">\n <span style=\"display: block; margin-top: 10px;\" *ngIf=\"inMemoryPagination && totalRec > 0\">Exibindo {{ start + 1 }} - {{ (start + pageOffset) < totalRec ? (start + pageOffset) : totalRec }} total de {{ totalRec }} \n </span> \n </ion-col>\n </ion-row>\n </div>\n <div style=\"width: 100%;\" [style.min-height]=\"minHeight\">\n <table class=\"grid\">\n <thead>\n <tr style=\"background-color: var(--ion-color-bluetool); color: white;\">\n <td *ngIf=\"tabelaCampos.Selecionar === true\" style=\"width: 3%; text-align: center;\">\n <input type=\"checkbox\" [(ngModel)]=\"todosSelecionados\" (change)=\"selecionarTodos()\">\n </td>\n <td *ngFor=\"let col of tabelaCampos.Colunas\" [style.width]=\"col.Tamanho\">\n <div style=\"position: relative;\">\n <div style=\"display: flex; justify-content: space-between; align-items: end;\">\n <strong>{{ col.Titulo }}</strong>\n <div>\n <ion-icon *ngIf=\"col.Ordem\" slot=\"end\" (click)=\"ordenar(col)\" style=\"cursor: pointer;\"\n [name]=\"col.OrdemStatus == 0 ? 'swap-vertical' : (col.OrdemStatus == 1 ? 'arrow-up': 'arrow-down')\"></ion-icon>\n \n <ion-icon *ngIf=\"col.Filtrar\" name=\"funnel\" (click)=\"setFiltroOpen(col)\" slot=\"end\"></ion-icon>\n </div>\n </div>\n \n \n <div class=\"caixaGrande\" [hidden]=\"!col.FiltroVisivel\" tabindex=\"-1\"\n style=\"color: black; display: block; position: absolute; z-index: 800; width: 210px; right: 0px; opacity: 0.9;\">\n Filtrar:\n <div>\n <div style=\"display: flex; justify-content: space-between; align-items: start;\">\n <select style=\"width: 80px;\" [(ngModel)]=\"col.FiltroOperador\">\n <option>=</option>\n <option>&gt;=</option>\n <option>&lt;=</option>\n <option>tem</option>\n </select>\n <input style=\"width: 100px;\" type=\"text\" [(ngModel)]=\"col.FiltroValor\">\n </div>\n <ion-button size=\"small\" color=\"medium\" expand=\"block\" (click)=\"filtrar(col)\">Filtrar</ion-button>\n <ion-button size=\"small\" color=\"light\" expand=\"block\" (click)=\"limpar()\">Limpar</ion-button>\n </div>\n <div *ngIf=\"col.Valores\" class=\"scroll-container\" style=\"height: 200px; overflow-y: scroll;\">\n <div *ngFor=\"let valor of col.Valores\">\n <input type=\"checkbox\" [(ngModel)]=\"valor.Selecionado\">\n <span>{{ valor.Valor }}</span>\n </div>\n </div>\n </div>\n \n </div>\n </td>\n <td *ngIf=\"tabelaCampos.Excluir === true\">\n \n </td>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pageDataSet\" [class]=\"item == selectedItem ? 'item-selecionado' : '' \">\n <td *ngIf=\"tabelaCampos.Selecionar === true\" style=\"text-align: center; cursor: auto;\">\n <input type=\"checkbox\" [(ngModel)]=\"item[tabelaCampos.CampoSelecionar]\" (change)=\"selecionadoChecked()\">\n </td>\n <td class=\"col\" *ngFor=\"let col of tabelaCampos.Colunas\" [style.width]=\"col.Tamanho\"\n [style.text-align]=\"col.Tipo == 'number' ? 'right' : (col.Alinhamento ?? 'left')\"\n (click)=\"col.ClickFunction ? col.ClickFunction(item) : selecionarLinha(item)\">\n <span *ngIf=\"col.Pipe == 'date'\">{{ item[col.Campo] | date: 'dd/MM/yyyy' }}</span> \n <span *ngIf=\"col.Pipe == 'valor'\">{{ item[col.Campo] | valorFormat }}</span>\n <span *ngIf=\"col.RenderFunction\" [innerHtml]=\"col.RenderFunction(item) | safeHtml\"></span>\n <span *ngIf=\"!col.Pipe && !col.RenderFunction\">{{ item[col.Campo] ?? col.Default }}</span>\n </td>\n <td *ngIf=\"tabelaCampos.Excluir === true\" style=\"padding: 0px; text-align: center;\">\n <ion-button size=\"small\" color=\"danger\" fill=\"outline\" style=\"transform: scale(0.85);\" (click)=\"excluirLinha(item)\">\n <ion-icon name=\"trash\"></ion-icon>\n </ion-button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n \n <ion-modal [isOpen]=\"isFiltroOpen\" (didDismiss)=\"isFiltroOpen = false;\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <div class=\"caixaGrande\">\n Filtrar:\n <div *ngIf=\"selectedColuna.Valores\">\n <div *ngFor=\"let valor of selectedColuna.Valores\">\n <span>{{ valor }}</span>\n </div>\n </div>\n </div>\n </ion-content>\n </ng-template>\n </ion-modal>\n </div>", styles: [".grid{width:100%}.grid thead td{border:1px solid gray;padding:4px}.grid tbody td{border:1px solid gray;padding:2px 4px}.grid tbody tr{cursor:pointer}.grid tbody tr:hover{background-color:#699ccc80;transition-duration:.5s}.grid tbody tr.item-selecionado{background-color:#699ccc33}\n"] }]
254
+ }], ctorParameters: () => [], propDecorators: { empresaId: [{
255
+ type: Input
256
+ }], tabelaCampos: [{
257
+ type: Input
258
+ }], dataSet: [{
259
+ type: Input
260
+ }], minHeight: [{
261
+ type: Input
262
+ }], inMemoryPagination: [{
263
+ type: Input
264
+ }], selecionarItem: [{
265
+ type: Output
266
+ }], excluirItem: [{
267
+ type: Output
268
+ }], selecionarChecked: [{
269
+ type: Output
270
+ }], filteredDataSet: [{
271
+ type: Input
272
+ }], pageOffset: [{
273
+ type: Input
274
+ }] } });
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcHByb2plY3QtY29tcG9uZW50cy9zcmMvbGliL2dyaWQtdmlldy9ncmlkLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXBwcHJvamVjdC1jb21wb25lbnRzL3NyYy9saWIvZ3JpZC12aWV3L2dyaWQtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQWMsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFPcEUsTUFBTSxPQUFPLGlCQUFpQjtJQWdFNUI7UUE1RFMsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUM1Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFbkMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR2pELDJEQUEyRDtRQUMzRCxXQUFNLEdBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXRFLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsb0JBQW9CO1FBQ3BCLGVBQWU7UUFDZix3TUFBd007UUFDeE0sNk1BQTZNO1FBQzdNLHFOQUFxTjtRQUNyTix5TUFBeU07UUFDek0sOE1BQThNO1FBQzlNLE1BQU07UUFDTixJQUFJO1FBRUosMEJBQTBCO1FBQzFCLDJGQUEyRjtRQUMzRiw4RkFB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LGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL047O2dCQUNDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoSCxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUs7U0FDM0I7YUFBTTtZQUNMLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0w7aUJBQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdlA7O2dCQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RyxHQUFHLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUM3QjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsR0FBUTtRQUNwQixHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQTtRQUN0QyxJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUM7WUFDMUIsbUNBQW1DO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU87SUFDUCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7OEdBMVJVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGtaQ1I5Qiwra01BbUhROzsyRkQzR0ssaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7d0RBS2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQTZCRSxlQUFlO3NCQUF2QixLQUFLO2dCQWdCRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRDb2x1bmEsIEdyaWRUYWJlbGEsIExpYlNlcnZpY2UgfSBmcm9tICdhcHBwcm9qZWN0LWxpYic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tiLWdyaWQtdmlldycsICAgIFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dyaWQtdmlldy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgR3JpZFZpZXdDb21wb25lbnQge1xuICBASW5wdXQoKSBlbXByZXNhSWQ6IG51bWJlcjtcbiAgQElucHV0KCkgdGFiZWxhQ2FtcG9zOiBHcmlkVGFiZWxhO1xuICBASW5wdXQoKSBkYXRhU2V0OiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBtaW5IZWlnaHQ6IHN0cmluZyA9ICc0MDBweCc7XG4gIEBJbnB1dCgpIGluTWVtb3J5UGFnaW5hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzZWxlY2lvbmFySXRlbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGV4Y2x1aXJJdGVtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWNpb25hckNoZWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XG4gIC8vaW5wdXRzID0gaW5qZWN0KG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCd0aXRsZSBpbnB1dHMnKSk7XG4gIGdydXBvczogYW55W10gPSBbeyBDb2x1bmE6ICcnLCBUYWJlbGE6IG51bGwsIERhZG9zOiBudWxsLCBOaXZlbDogMCB9XTtcblxuICAvLyB0YWJlbGFDYW1wb3MgPSB7XG4gIC8vICAgU2VsZWNpb25hcjogZmFsc2UsXG4gIC8vICAgRXhwb3J0YXI6IHRydWUsXG4gIC8vICAgQ29sdW5hczogW1xuICAvLyAgICAgeyBDYW1wbzogJ0lkJywgVGl0dWxvOiAnSWQnLCBUYW1hbmhvOiAnMTAlJywgT3JkZW06IHRydWUsIEdydXBvOiBmYWxzZSwgRmlsdHJhcjogdHJ1ZSwgT3JkZW1TdGF0dXM6IDAsIFRpcG86ICdudW1iZXInLCBWYWxvcmVzOiBbXSwgRmlsdHJvT3BlcmFkb3I6ICc9JywgRmlsdHJvVmFsb3I6ICcnLCBGaWx0cm9WaXNpdmVsOiBmYWxzZSB9LFxuICAvLyAgICAgeyBDYW1wbzogJ01hcmNhJywgVGl0dWxvOiAnTWFyY2EnLCBUYW1hbmhvOiAnMjUlJywgT3JkZW06IHRydWUsIEdydXBvOiB0cnVlLCBGaWx0cmFyOiB0cnVlLCBPcmRlbVN0YXR1czogMCwgVGlwbzogJ3N0cmluZycsIFZhbG9yZXM6IFtdLCBGaWx0cm9PcGVyYWRvcjogJz0nLCBGaWx0cm9WYWxvcjogJycsIEZpbHRyb1Zpc2l2ZWw6IGZhbHNlIH0sXG4gIC8vICAgICB7IENhbXBvOiAnRGVzY3JpY2FvJywgVGl0dWxvOiAnRGVzY3Jpw6fDo28nLCBUYW1hbmhvOiAnMjUlJywgT3JkZW06IHRydWUsIEdydXBvOiB0cnVlLCBGaWx0cmFyOiB0cnVlLCBPcmRlbVN0YXR1czogMCwgVGlwbzogJ3N0cmluZycsIFZhbG9yZXM6IFtdLCBGaWx0cm9PcGVyYWRvcjogJz0nLCBGaWx0cm9WYWxvcjogJycsIEZpbHRyb1Zpc2l2ZWw6IGZhbHNlIH0sXG4gIC8vICAgICB7IENhbXBvOiAnRGF0YScsIFRpdHVsbzogJ0RhdGEnLCBUYW1hbmhvOiAnMjAlJywgT3JkZW06IHRydWUsIEdydXBvOiB0cnVlLCBGaWx0cmFyOiB0cnVlLCBPcmRlbVN0YXR1czogMCwgVGlwbzogJ2RhdGUnLCBWYWxvcmVzOiBbXSwgRmlsdHJvT3BlcmFkb3I6ICc9JywgRmlsdHJvVmFsb3I6ICcnLCBGaWx0cm9WaXNpdmVsOiBmYWxzZSB9LFxuICAvLyAgICAgeyBDYW1wbzogJ1ZhbG9yJywgVGl0dWxvOiAnVmFsb3InLCBUYW1hbmhvOiAnMjAlJywgT3JkZW06IHRydWUsIEdydXBvOiBmYWxzZSwgRmlsdHJhcjogdHJ1ZSwgT3JkZW1TdGF0dXM6IDAsIFRpcG86ICdudW1iZXInLCBWYWxvcmVzOiBbXSwgRmlsdHJvT3BlcmFkb3I6ICc9JywgRmlsdHJvVmFsb3I6ICcnLCBGaWx0cm9WaXNpdmVsOiBmYWxzZSB9LFxuICAvLyAgIF1cbiAgLy8gfVxuXG4gIC8vIGRhdGFTZXQ6IEFycmF5PGFueT4gPSBbXG4gIC8vICAgeyBJZDogMSwgTWFyY2E6ICdBcHBsZScsIERlc2NyaWNhbzogJ0lQaG9uZSAxNCcsIERhdGE6ICcyMDIzLTA1LTAxJywgVmFsb3I6IDc4OTkuOTkgfSxcbiAgLy8gICB7IElkOiAyLCBNYXJjYTogJ0FwcGxlJywgRGVzY3JpY2FvOiAnTWFjQm9vayBQcm8nLCBEYXRhOiAnMjAyMy0wNi0wMScsIFZhbG9yOiAxNzk5OS45OSB9LFxuICAvLyAgIHsgSWQ6IDMsIE1hcmNhOiAnU2Ftc3VuZycsIERlc2NyaWNhbzogJ0dhbGF4eSBTMjMnLCBEYXRhOiAnMjAyMy0wNS0wMScsIFZhbG9yOiA2ODk5Ljk5IH0sXG4gIC8vICAgeyBJZDogNCwgTWFyY2E6ICdTb255JywgRGVzY3JpY2FvOiAnUFMgNScsIERhdGE6ICcyMDIzLTA2LTAxJywgVmFsb3I6IDQ4OTkuOTkgfSxcbiAgLy8gICB7IElkOiA1LCBNYXJjYTogJ1NhbXN1bmcnLCBEZXNjcmljYW86ICdXYXRjaCAyMycsIERhdGE6ICcyMDIzLTA1LTAxJywgVmFsb3I6IDE4OTkuOTkgfSxcbiAgLy8gXVxuXG5cblxuICBncm91cHMgPSBbXVxuICBASW5wdXQoKSBmaWx0ZXJlZERhdGFTZXQgPSBbXTtcbiAgcGFnZURhdGFTZXQgPSBbXTtcblxuXG4gIC8vYXJyYXkgY29tIG9zIGNhbXBvcyBmaWx0cmFkb3MgcGFyYSBkaXNwbGF5XG4gIGNhbXBvc0Rpc3BsYXkgPSBbXTtcblxuICAvL2ZpbHRyb1xuICBpc0ZpbHRyb09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRDb2x1bmE6IGFueTtcbiAgdG9kb3NTZWxlY2lvbmFkb3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL3BhZ2luYXRpb25cbiAgLy9ww6FnaW5hIGF0dWFsXG4gIHBhZ2U6IG51bWJlciA9IDE7XG4gIC8vcmVnaXN0cm9zIHBvciBww6FnaW5hXG4gIEBJbnB1dCgpIHBhZ2VPZmZzZXQ6IG51bWJlciA9IDIwO1xuICAvL3RvdGFsIGRlIHJlZ2lzdHJvc1xuICB0b3RhbFJlYzogbnVtYmVyO1xuICAvL3RvdGFsIGRlIHDDoWdpbmFzXG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgLy9pbmRleGFkb3IgZGUgcGFnaW5hc1xuICBwYWdlczogbnVtYmVyW107ICBcbiAgc3RhcnQ6IG51bWJlcjtcblxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgdmFsb3Jlc0ZpbHRybygpIHtcbiAgICB0aGlzLnRhYmVsYUNhbXBvcy5Db2x1bmFzLmZvckVhY2goYyA9PiB7XG4gICAgICBpZiAoYy5GaWx0cmFyKSB7XG4gICAgICAgIC8vcHJvamV0YXIgYSBjb2x1bmFcbiAgICAgICAgbGV0IGluaXRpYWwgPSBbXTtcbiAgICAgICAgbGV0IHZhbG9yZXMgPSB0aGlzLmRhdGFTZXQubWFwKGQgPT4gZFtjLkNhbXBvXSk7XG4gICAgICAgIGMuVmFsb3JlcyA9IHZhbG9yZXMuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgICAgIH0pLm1hcCh2ID0+IHsgcmV0dXJuIHsgU2VsZWNpb25hZG86IGZhbHNlLCBWYWxvcjogdiB9IH0pO1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhjLkNhbXBvLCB2YWxvcmVzKTtcbiAgICAgIC8vICAgY29uc29sZS5sb2coYy5WYWxvcmVzKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuXG4gICAgLy90aGlzLmluaWNpYWxpemFHcnVwbygpO1xuICAgIC8vdGhpcy5hZ3J1cGFyKCdNYXJjYScpO1xuICAgIC8vY29uc29sZS5sb2coJ2lucHV0cycsIHRoaXMuaW5wdXRzKTtcbiAgICAvL2NvbnNvbGUubG9nKCdJbnB1dCBlbXByZXNhJywgdGhpcy5lbXByZXNhSWQpO1xuICAgIEdyaWRUYWJlbGEuaW5pdCh0aGlzLnRhYmVsYUNhbXBvcyk7XG4gICAgdGhpcy52YWxvcmVzRmlsdHJvKCk7XG4gICAgdGhpcy5maWx0ZXJlZERhdGFTZXQgPSB0aGlzLmRhdGFTZXQ7XG4gICAgY29uc29sZS5sb2coJ0luaXQgVGFiZWxhIGNhbXBvcycsIHRoaXMudGFiZWxhQ2FtcG9zKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zb2xlLmxvZygnT24gY2hhbmdlcyBUYWJlbGEgY2FtcG9zJywgdGhpcy50YWJlbGFDYW1wb3MpO1xuICAgIC8vZXZlbnRvIGNoYW1hZG8gcXVhbmRvIG8gZGF0YXNldCBmb3IgYXR1YWxpemFkb1xuICAgIC8vaW5pY2lhbGl6YXIgdmFycyBkZSBwYWdpbmHDp8Ojb1xuICAgIHRoaXMuaW5pdFBhZ2UoKTtcbiAgICB0aGlzLnRvZG9zU2VsZWNpb25hZG9zID0gZmFsc2U7XG4gIH1cblxuICBpbml0UGFnZSgpIHtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIHRoaXMudG90YWxSZWMgPSB0aGlzLmZpbHRlcmVkRGF0YVNldC5sZW5ndGg7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxSZWMgLyB0aGlzLnBhZ2VPZmZzZXQpOyAgICBcblxuICAgIGlmICh0aGlzLmluTWVtb3J5UGFnaW5hdGlvbiA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5nZXRSZWdpc3Ryb3NQYWdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFnZURhdGFTZXQgPSB0aGlzLmZpbHRlcmVkRGF0YVNldDtcbiAgICB9XG4gIH1cblxuICBnZXRSZWdpc3Ryb3NQYWdlKCkge1xuICAgIHRoaXMuc3RhcnQgPSAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLnBhZ2VPZmZzZXQ7XG4gICAgY29uc29sZS5sb2coJ2RhdGFzZXQnLCB0aGlzLmZpbHRlcmVkRGF0YVNldCk7XG4gICAgY29uc29sZS5sb2coJ3N0YXJ0JywgdGhpcy5zdGFydCk7XG4gICAgY29uc29sZS5sb2coJ29mZnNldCcsIHRoaXMucGFnZU9mZnNldCk7XG4gICAgdGhpcy5wYWdlRGF0YVNldCA9IHRoaXMuZmlsdGVyZWREYXRhU2V0LnNsaWNlKHRoaXMuc3RhcnQsICh0aGlzLnN0YXJ0ICsgdGhpcy5wYWdlT2Zmc2V0KSk7XG4gICAgY29uc29sZS5sb2coJ3BhZ2UgZGF0YXNldCcsIHRoaXMucGFnZURhdGFTZXQpO1xuICB9XG5cbiAgcHJveGltbygpIHtcbiAgICBpZiAodGhpcy5wYWdlIDwgdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICB0aGlzLnBhZ2UrKztcbiAgICAgIHRoaXMuZ2V0UmVnaXN0cm9zUGFnZSgpO1xuICAgICAgdGhpcy5nZXJhckFycmF5UGFncygpO1xuICAgIH1cbiAgfVxuXG4gIGFudGVyaW9yKCkge1xuICAgIGlmICh0aGlzLnBhZ2UgPiAxKSB7XG4gICAgICB0aGlzLnBhZ2UtLTtcbiAgICAgIHRoaXMuZ2V0UmVnaXN0cm9zUGFnZSgpO1xuICAgICAgdGhpcy5nZXJhckFycmF5UGFncygpO1xuICAgIH1cbiAgfVxuXG4gIGdlcmFyQXJyYXlQYWdzKCkge1xuXG4gIH1cblxuICBpbmljaWFsaXphR3J1cG8oKSB7XG4gICAgLy9pbmljaWFsaXphciBvIHByaW1laXJvIGdydXBvICdkZWZhdWx0J1xuICAgIHRoaXMuY2FtcG9zRGlzcGxheSA9IHRoaXMudGFiZWxhQ2FtcG9zLkNvbHVuYXM7XG4gICAgdGhpcy5ncnVwb3NbMF0uVGFiZWxhID0gdGhpcy5jYW1wb3NEaXNwbGF5O1xuICAgIHRoaXMuZ3J1cG9zWzBdLkRhZG9zID0gdGhpcy5kYXRhU2V0O1xuICB9XG5cbiAgYWdydXBhcihjYW1wbzogc3RyaW5nKSB7XG4gICAgdGhpcy5ncm91cHMucHVzaChjYW1wbyk7XG4gICAgbGV0IGxldmVsID0gMDtcbiAgICBmb3IgKGxldCBnIGluIHRoaXMuZ3JvdXBzKSB7XG4gICAgICBjb25zb2xlLmxvZyhnKTtcbiAgICAgIC8vZmlsdHJhciBvcyBkYWRvc1xuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuZGF0YVNldC5yZWR1Y2UoKGdyb3VwLCBkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZyB9ID0gZGF0YTtcbiAgICAgICAgZ3JvdXBbZ10gPSBncm91cFtjYW1wb10gPz8gW107XG4gICAgICAgIGdyb3VwW2ddLnB1c2goZGF0YSk7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICAgIH0sIHt9KTtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgfVxuXG4gIH1cblxuICBmaWx0cmFyQ2FtcG9zKGNvbHVuYSA9ICcnKSB7XG4gICAgaWYgKGNvbHVuYSAhPSAnJykge1xuXG4gICAgfSBlbHNlIHtcblxuICAgIH1cbiAgfVxuXG4gIGZpbHRyYXIoY29sOiBHcmlkQ29sdW5hKSB7XG4gICAgLy9jb25zb2xlLmxvZygnZmlsdHJhcicsIGNvbCk7XG4gICAgaWYgKGNvbC5WYWxvcmVzICYmIGNvbC5WYWxvcmVzLmZpbmQodiA9PiB2LlNlbGVjaW9uYWRvKSAhPSBudWxsKSB7XG4gICAgICBjb25zdCB2YWxvcmVzID0gY29sLlZhbG9yZXMuZmlsdGVyKHYgPT4gdi5TZWxlY2lvbmFkbykubWFwKHYgPT4gdi5WYWxvcik7XG5cbiAgICAgIC8vZmlsdHJhciBwb3IgdmFsb3JlcyBzZWxlY2lvbmFkb3NcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhU2V0ID0gdGhpcy5kYXRhU2V0LmZpbHRlcihkID0+IHZhbG9yZXMuaW5kZXhPZihkW2NvbC5DYW1wb10pID4gLTEpO1xuICAgIH0gZWxzZSBpZiAoY29sLkZpbHRyb09wZXJhZG9yICYmIGNvbC5GaWx0cm9WYWxvcikge1xuICAgICAgLy9jb25zb2xlLmxvZyhjb2wuRmlsdHJvT3BlcmFkb3IsIGNvbC5GaWx0cm9WYWxvcilcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhU2V0ID0gdGhpcy5kYXRhU2V0LmZpbHRlcihkID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGNvbC5GaWx0cm9PcGVyYWRvcikge1xuICAgICAgICAgICAgY2FzZSBcIj1cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIGRbY29sLkNhbXBvXSA9PSBjb2wuRmlsdHJvVmFsb3I7XG4gICAgICAgICAgICBjYXNlIFwiPj1cIjpcbiAgICAgICAgICAgICAgaWYgKGNvbC5UaXBvID09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpYlNlcnZpY2Uuc3RyaW5nVG9EZWNpbWFsKGRbY29sLkNhbXBvXSwgdHJ1ZSkgPj0gTGliU2VydmljZS5zdHJpbmdUb0RlY2ltYWwoY29sLkZpbHRyb1ZhbG9yLCB0cnVlKTsgIFxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbC5UaXBvID09ICdkYXRhJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmRhdGFUb1N0cmluZyhkW2NvbC5DYW1wb10pKSA+PSBuZXcgRGF0ZSh0aGlzLmRhdGFUb1N0cmluZyhjb2wuRmlsdHJvVmFsb3IpKTsgIFxuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgcmV0dXJuIGRbY29sLkNhbXBvXSA+PSBjb2wuRmlsdHJvVmFsb3I7XG4gICAgICAgICAgICBjYXNlIFwiPD1cIjpcbiAgICAgICAgICAgICAgaWYgKGNvbC5UaXBvID09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExpYlNlcnZpY2Uuc3RyaW5nVG9EZWNpbWFsKGRbY29sLkNhbXBvXSwgdHJ1ZSkgPD0gTGliU2VydmljZS5zdHJpbmdUb0RlY2ltYWwoY29sLkZpbHRyb1ZhbG9yLCB0cnVlKTsgIFxuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgcmV0dXJuIGRbY29sLkNhbXBvXSA8PSBjb2wuRmlsdHJvVmFsb3I7XG4gICAgICAgICAgICBjYXNlIFwidGVtXCI6XG4gICAgICAgICAgICAgIHJldHVybiBkW2NvbC5DYW1wb10udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoY29sLkZpbHRyb1ZhbG9yLnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoKGV4KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV4KTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGFTZXQgPSB0aGlzLmRhdGFTZXQ7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbC5GaWx0cm9WaXNpdmVsID0gZmFsc2U7XG5cbiAgICB0aGlzLmluaXRQYWdlKCk7XG4gIH1cblxuICBnZXRQYWdlKCkge1xuXG4gIH1cblxuICBsaW1wYXIoKSB7XG4gICAgdGhpcy5maWx0ZXJlZERhdGFTZXQgPSB0aGlzLmRhdGFTZXQ7XG4gIH1cblxuICBkYXRhVG9TdHJpbmcoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGRhdGEuc3BsaXQoJy8nKS5yZXZlcnNlKCkuam9pbignLScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cblxuICBvcmRlbmFyKGNvbDogR3JpZENvbHVuYSkge1xuICAgIGlmIChjb2wuT3JkZW1TdGF0dXMgPT0gMCB8fCBjb2wuT3JkZW1TdGF0dXMgPT0gLTEpIHtcbiAgICAgIGlmIChjb2wuVGlwbyA9PSAnZGF0YScpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGFTZXQuc29ydCgoYSwgYikgPT4gdGhpcy5kYXRhVG9TdHJpbmcoYVtjb2wuQ2FtcG9dKSA+IHRoaXMuZGF0YVRvU3RyaW5nKGJbY29sLkNhbXBvXSkgPyAxIDogKHRoaXMuZGF0YVRvU3RyaW5nKGFbY29sLkNhbXBvXSkgPCB0aGlzLmRhdGFUb1N0cmluZyhiW2NvbC5DYW1wb10pID8gLTEgOiAwKSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbC5UaXBvID09ICdudW1iZXInKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhU2V0LnNvcnQoKGEsIGIpID0+IExpYlNlcnZpY2Uuc3RyaW5nVG9EZWNpbWFsKGFbY29sLkNhbXBvXSkgPiBMaWJTZXJ2aWNlLnN0cmluZ1RvRGVjaW1hbChiW2NvbC5DYW1wb10pID8gMSA6IChMaWJTZXJ2aWNlLnN0cmluZ1RvRGVjaW1hbChhW2NvbC5DYW1wb10pIDwgTGliU2VydmljZS5zdHJpbmdUb0RlY2ltYWwoYltjb2wuQ2FtcG9dKSA/IC0xIDogMCkpO1xuICAgICAgfSBlbHNlIFxuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YVNldC5zb3J0KChhLCBiKSA9PiBhW2NvbC5DYW1wb10gPiBiW2NvbC5DYW1wb10gPyAxIDogKGFbY29sLkNhbXBvXSA8IGJbY29sLkNhbXBvXSA/IC0xIDogMCkpO1xuICAgICAgY29sLk9yZGVtU3RhdHVzID0gMTsgLy9hc2NcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvbC5UaXBvID09ICdkYXRhJykge1xuICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YVNldC5zb3J0KChhLCBiKSA9PiB0aGlzLmRhdGFUb1N0cmluZyhhW2NvbC5DYW1wb10pIDwgdGhpcy5kYXRhVG9TdHJpbmcoYltjb2wuQ2FtcG9dKSA/IDEgOiAodGhpcy5kYXRhVG9TdHJpbmcoYVtjb2wuQ2FtcG9dKSA+IHRoaXMuZGF0YVRvU3RyaW5nKGJbY29sLkNhbXBvXSkgPyAtMSA6IDApKTtcbiAgICAgIH0gZWxzZSBpZiAoY29sLlRpcG8gPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGFTZXQuc29ydCgoYSwgYikgPT4gTGliU2VydmljZS5zdHJpbmdUb0RlY2ltYWwoYVtjb2wuQ2FtcG9dLCB0cnVlKSA8IExpYlNlcnZpY2Uuc3RyaW5nVG9EZWNpbWFsKGJbY29sLkNhbXBvXSwgdHJ1ZSkgPyAxIDogKExpYlNlcnZpY2Uuc3RyaW5nVG9EZWNpbWFsKGFbY29sLkNhbXBvXSwgdHJ1ZSkgPiBMaWJTZXJ2aWNlLnN0cmluZ1RvRGVjaW1hbChiW2NvbC5DYW1wb10sIHRydWUpID8gLTEgOiAwKSk7XG4gICAgICB9IGVsc2UgXG4gICAgICB0aGlzLmZpbHRlcmVkRGF0YVNldC5zb3J0KChhLCBiKSA9PiBhW2NvbC5DYW1wb10gPCBiW2NvbC5DYW1wb10gPyAxIDogKGFbY29sLkNhbXBvXSA+IGJbY29sLkNhbXBvXSA/IC0xIDogMCkpO1xuICAgICAgY29sLk9yZGVtU3RhdHVzID0gLTE7IC8vZGVzY1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbHRyb09wZW4oY29sOiBhbnkpIHtcbiAgICBjb2wuRmlsdHJvVmlzaXZlbCA9ICFjb2wuRmlsdHJvVmlzaXZlbFxuICAgIGlmIChjb2wuRmlsdHJvVmlzaXZlbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZENvbHVuYSA9IGNvbDtcbiAgICAgIC8vY29uc29sZS5sb2codGhpcy5zZWxlY3RlZENvbHVuYSk7XG4gICAgfSAgICBcbiAgfVxuXG4gIHNlbGVjaW9uYXJUb2RvcygpIHtcbiAgICAvL3RoaXMudG9kb3NTZWxlY2lvbmFkb3MgPSAhdGhpcy50b2Rvc1NlbGVjaW9uYWRvcztcbiAgICB0aGlzLmZpbHRlcmVkRGF0YVNldC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaXRlbVt0aGlzLnRhYmVsYUNhbXBvcy5DYW1wb1NlbGVjaW9uYXJdID0gdGhpcy50b2Rvc1NlbGVjaW9uYWRvcztcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjaW9uYXJDaGVja2VkLmVtaXQoKTtcbiAgfVxuXG4gIHNlbGVjaW9uYXJMaW5oYShpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjaW9uYXJJdGVtLmVtaXQoaXRlbSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICB9XG5cbiAgZXhjbHVpckxpbmhhKGl0ZW06IGFueSkge1xuICAgIHRoaXMuZXhjbHVpckl0ZW0uZW1pdChpdGVtKTtcbiAgfVxuXG4gIC8vY2hlY2tcbiAgc2VsZWNpb25hZG9DaGVja2VkKCkge1xuICAgIHRoaXMuc2VsZWNpb25hckNoZWNrZWQuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiPlxuICAgIDxkaXYgaWQ9XCJwYWluZWxFeHBvcnRhY2FvXCI+XG4gICAgICA8aW9uLXJvdyAqbmdJZj1cImluTWVtb3J5UGFnaW5hdGlvblwiPlxuICAgICAgICA8IS0tXG4gICAgICAgIDxpb24tY29sIHNpemU9XCIyXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gKm5nSWY9XCJ0YWJlbGFDYW1wb3MuU2VsZWNpb25hciA9PT0gdHJ1ZVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJtZWRpdW1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjaW9uYXJUb2RvcygpXCI+U2VsZWNpb25hciBUb2RvczwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAtLT5cbiAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImluTWVtb3J5UGFnaW5hdGlvbiA9PT0gdHJ1ZVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJibHVldG9vbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYW50ZXJpb3IoKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICBBbnRlcmlvclxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAqbmdJZj1cImluTWVtb3J5UGFnaW5hdGlvbiA9PT0gdHJ1ZVwiIHNpemU9XCJzbWFsbFwiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJibHVldG9vbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJveGltbygpXCI+XG4gICAgICAgICAgICBQcsOzeGltb1xuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiIHNsb3Q9XCJlbmRcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj4gICAgICAgICAgICAgICAgXG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjJcIj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOiAxMHB4O1wiICpuZ0lmPVwiaW5NZW1vcnlQYWdpbmF0aW9uICYmIHRvdGFsUmVjID4gMFwiPkV4aWJpbmRvIHt7IHN0YXJ0ICsgMSB9fSAtIHt7IChzdGFydCArIHBhZ2VPZmZzZXQpIDwgdG90YWxSZWMgPyAoc3RhcnQgKyBwYWdlT2Zmc2V0KSA6IHRvdGFsUmVjIH19IHRvdGFsIGRlIHt7IHRvdGFsUmVjIH19ICAgICAgICBcbiAgICAgICAgICA8L3NwYW4+ICAgICAgXG4gICAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDwvaW9uLXJvdz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLm1pbi1oZWlnaHRdPVwibWluSGVpZ2h0XCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJncmlkXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItYmx1ZXRvb2wpOyBjb2xvcjogd2hpdGU7XCI+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJ0YWJlbGFDYW1wb3MuU2VsZWNpb25hciA9PT0gdHJ1ZVwiIHN0eWxlPVwid2lkdGg6IDMlOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInRvZG9zU2VsZWNpb25hZG9zXCIgKGNoYW5nZSk9XCJzZWxlY2lvbmFyVG9kb3MoKVwiPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIHRhYmVsYUNhbXBvcy5Db2x1bmFzXCIgW3N0eWxlLndpZHRoXT1cImNvbC5UYW1hbmhvXCI+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGVuZDtcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY29sLlRpdHVsbyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uICpuZ0lmPVwiY29sLk9yZGVtXCIgc2xvdD1cImVuZFwiIChjbGljayk9XCJvcmRlbmFyKGNvbClcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImNvbC5PcmRlbVN0YXR1cyA9PSAwID8gJ3N3YXAtdmVydGljYWwnIDogKGNvbC5PcmRlbVN0YXR1cyA9PSAxID8gJ2Fycm93LXVwJzogJ2Fycm93LWRvd24nKVwiPjwvaW9uLWljb24+XG4gIFxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gKm5nSWY9XCJjb2wuRmlsdHJhclwiIG5hbWU9XCJmdW5uZWxcIiAoY2xpY2spPVwic2V0RmlsdHJvT3Blbihjb2wpXCIgc2xvdD1cImVuZFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgXG4gIFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWl4YUdyYW5kZVwiIFtoaWRkZW5dPVwiIWNvbC5GaWx0cm9WaXNpdmVsXCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiBibGFjazsgZGlzcGxheTogYmxvY2s7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogODAwOyB3aWR0aDogMjEwcHg7IHJpZ2h0OiAwcHg7IG9wYWNpdHk6IDAuOTtcIj5cbiAgICAgICAgICAgICAgICAgIEZpbHRyYXI6XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogc3RhcnQ7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBzdHlsZT1cIndpZHRoOiA4MHB4O1wiIFsobmdNb2RlbCldPVwiY29sLkZpbHRyb09wZXJhZG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPj08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Jmd0Oz08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Jmx0Oz08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+dGVtPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJjb2wuRmlsdHJvVmFsb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiZmlsdHJhcihjb2wpXCI+RmlsdHJhcjwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJsaWdodFwiIGV4cGFuZD1cImJsb2NrXCIgKGNsaWNrKT1cImxpbXBhcigpXCI+TGltcGFyPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29sLlZhbG9yZXNcIiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIiBzdHlsZT1cImhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6IHNjcm9sbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFsb3Igb2YgY29sLlZhbG9yZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJ2YWxvci5TZWxlY2lvbmFkb1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHZhbG9yLlZhbG9yIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICBcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwidGFiZWxhQ2FtcG9zLkV4Y2x1aXIgPT09IHRydWVcIj5cbiAgXG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnZURhdGFTZXRcIiBbY2xhc3NdPVwiaXRlbSA9PSBzZWxlY3RlZEl0ZW0gPyAnaXRlbS1zZWxlY2lvbmFkbycgOiAnJyBcIj5cbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInRhYmVsYUNhbXBvcy5TZWxlY2lvbmFyID09PSB0cnVlXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGN1cnNvcjogYXV0bztcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwiaXRlbVt0YWJlbGFDYW1wb3MuQ2FtcG9TZWxlY2lvbmFyXVwiIChjaGFuZ2UpPVwic2VsZWNpb25hZG9DaGVja2VkKClcIj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJjb2xcIiAqbmdGb3I9XCJsZXQgY29sIG9mIHRhYmVsYUNhbXBvcy5Db2x1bmFzXCIgW3N0eWxlLndpZHRoXT1cImNvbC5UYW1hbmhvXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPVwiY29sLlRpcG8gPT0gJ251bWJlcicgPyAncmlnaHQnIDogKGNvbC5BbGluaGFtZW50byA/PyAnbGVmdCcpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5DbGlja0Z1bmN0aW9uID8gY29sLkNsaWNrRnVuY3Rpb24oaXRlbSkgOiBzZWxlY2lvbmFyTGluaGEoaXRlbSlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2wuUGlwZSA9PSAnZGF0ZSdcIj57eyBpdGVtW2NvbC5DYW1wb10gfCBkYXRlOiAnZGQvTU0veXl5eScgfX08L3NwYW4+ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2wuUGlwZSA9PSAndmFsb3InXCI+e3sgaXRlbVtjb2wuQ2FtcG9dIHwgdmFsb3JGb3JtYXQgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29sLlJlbmRlckZ1bmN0aW9uXCIgW2lubmVySHRtbF09XCJjb2wuUmVuZGVyRnVuY3Rpb24oaXRlbSkgfCBzYWZlSHRtbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY29sLlBpcGUgJiYgIWNvbC5SZW5kZXJGdW5jdGlvblwiPnt7IGl0ZW1bY29sLkNhbXBvXSA/PyBjb2wuRGVmYXVsdCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJ0YWJlbGFDYW1wb3MuRXhjbHVpciA9PT0gdHJ1ZVwiIHN0eWxlPVwicGFkZGluZzogMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwiZGFuZ2VyXCIgZmlsbD1cIm91dGxpbmVcIiBzdHlsZT1cInRyYW5zZm9ybTogc2NhbGUoMC44NSk7XCIgKGNsaWNrKT1cImV4Y2x1aXJMaW5oYShpdGVtKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2hcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuICBcbiAgICA8aW9uLW1vZGFsIFtpc09wZW5dPVwiaXNGaWx0cm9PcGVuXCIgKGRpZERpc21pc3MpPVwiaXNGaWx0cm9PcGVuID0gZmFsc2U7XCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhaXhhR3JhbmRlXCI+XG4gICAgICAgICAgICBGaWx0cmFyOlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ29sdW5hLlZhbG9yZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFsb3Igb2Ygc2VsZWN0ZWRDb2x1bmEuVmFsb3Jlc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHZhbG9yIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lvbi1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgPC9kaXY+Il19