brainloper-ui 1.0.1 → 1.0.2

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.
@@ -89,12 +89,12 @@ export class TableModalComponent {
89
89
  }
90
90
  }
91
91
  TableModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Component });
92
- TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }] });
92
+ TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.MatError, selector: "mat-error", inputs: ["id"] }] });
93
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, decorators: [{
94
94
  type: Component,
95
- args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
95
+ args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
96
96
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
97
97
  type: Inject,
98
98
  args: [MAT_DIALOG_DATA]
99
99
  }] }, { type: i2.FormBuilder }, { type: i3.HttpService }]; } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9kYXRhLXRhYmxlL3RhYmxlLW1vZGFsL3RhYmxlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZGF0YS10YWJsZS90YWJsZS1tb2RhbC90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ1MsU0FBNEMsRUFDbkIsSUFBSSxFQUM1QixXQUF3QixFQUN4QixJQUFpQjtRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWE7UUFQM0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxFQUFFLENBQUM7SUFPWixDQUFDO0lBRUosU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNoQyxpREFBaUQ7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxHQUFHLEtBQUssT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDO1lBQ2xDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRXBDLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNyQztZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFO2dCQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUMzQixJQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUM7d0JBQ2YsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUMzQztpQkFDRjthQUNGO1lBRUQsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN2Qix1Q0FBdUM7Z0JBQ3ZDLDZDQUE2QztnQkFFN0MsSUFBSSxDQUFDLElBQUk7cUJBQ04sT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO3FCQUMvRCxTQUFTLENBQ1IsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDTixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDekMsOEJBQThCO3dCQUU5QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs0QkFDMUMscUVBQXFFOzRCQUNyRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0NBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQ0FDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7Z0NBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUs7b0NBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDOzZCQUN2RDt3QkFDSCxDQUFDLENBQUMsQ0FBQztxQkFDSjt5QkFBTTt3QkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7cUJBQ3JDO2dCQUNILENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FDRixDQUFDO2FBQ0w7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtJQUNoQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQU8sRUFBRSxNQUFNLEVBQUUsSUFBWTtRQUNwQyxRQUFRLElBQUksRUFBRTtZQUNaLGVBQWU7WUFDZiw4Q0FBOEM7WUFDOUMsV0FBVztZQUNYLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxNQUFNO1NBQ1Q7UUFFRCxzQ0FBc0M7SUFDeEMsQ0FBQzs7Z0hBNUZVLG1CQUFtQiw4Q0FNcEIsZUFBZTtvR0FOZCxtQkFBbUIsdURDVmhDLHcrRkF3RUE7MkZEOURhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQVV4QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRhYmxlLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb2RhbEZvcm0gPSB7fTtcclxuICBkYXRhQ29tYm8gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGFibGVNb2RhbENvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG9uTm9DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdkYXRhIGNvbHVtbnMnLCB0aGlzLmRhdGEuY29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHRleHQgPSBge1wiJHtlbGVtZW50LklEfVwiOlwiXCJ9YDtcclxuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHRleHQpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kYWxGb3JtLCBqc29uKTtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gJ2NvbWJvJykge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhQ29tYm8sIGpzb24pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLmFjdGlvbiA9PSAnZWRpdCcpIHtcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybVtlbGVtZW50LklEXSA9IGVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICBpZihlbGVtZW50LnZhbHVlKXtcclxuICAgICAgICAgICAgbGV0IHMgPSBlbGVtZW50LnZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSBgJHtzWzJdfS0ke3NbMV19LSR7c1swXX1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGVsZW1lbnQucGFyYW1zQ29tYm8pIHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsKTtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsUGFyYW1zKTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAuZ2V0RGF0YShlbGVtZW50LnBhcmFtc0NvbWJvLnVybCwgZWxlbWVudC5wYXJhbXNDb21iby51cmxQYXJhbXMpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc1snY29kZSddID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFDb21ib1tlbGVtZW50LklEXSA9IHJlc1snYm9keSddO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLmRhdGFDb21ibyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5JRF0uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkXSwgZWxlbWVudC52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbZWxlbWVudC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdID09IGVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsRm9ybVtlbGVtZW50LklEXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zW2luZGV4XS52YWx1ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgZW4gbGEgY29uc3VsdGEnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuZGF0YUNvbWJvKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5tb2RhbEZvcm0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoaWQ6IGFueSwgJGV2ZW50LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAvLyBjYXNlICdkYXRlJzpcclxuICAgICAgLy8gICB0aGlzLm1vZGFsRm9ybVtpZF0gPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjb21ibyc6XHJcbiAgICAgICAgdGhpcy5tb2RhbEZvcm1baWRdID0gJGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybVtpZF0gPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vY29uc29sZS5sb2coJ29uQ2hhbmdlJywgJGV2ZW50LCBpZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8ZGl2IHN0eWxlPSdkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsnPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICA8aDMgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIic+IEVkaXRhciA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzICpuZ0lmPSdkYXRhLmFjdGlvbj09XCJhZGRcIic+IEFncmVnYXIgPC9oMz5cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWNsb3NlPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNTAlOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZvcm0+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nRm9yPSdsZXQgaW5wdXQgb2YgZGF0YS5jb2x1bW5zJz5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIjsgZWxzZSBBZ3JlZ2FyJz5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIWlucHV0LmRpc3JlZ2FyZEZvckVkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPSdpbnB1dC50eXBlPT1cImNvbWJvXCI7IGVsc2Ugb3RoZXJJbnB1dEVkaXQnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT0naW5wdXQudmFsdWUnIChzZWxlY3Rpb25DaGFuZ2UpPSdvbkNoYW5nZShpbnB1dC5JRCwkZXZlbnQsIGlucHV0LnR5cGUpJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9J3t7aW5wdXQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuSURdJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSd7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcklucHV0RWRpdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgW3ZhbHVlXT0naW5wdXQudmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPSdvbkNoYW5nZShpbnB1dC5JRCwkZXZlbnQsIGlucHV0LnR5cGUpJyBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPkNhbXBvIE9ibGlnYXRvcmlvPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNBZ3JlZ2FyPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhaW5wdXQuZGlzcmVnYXJkRm9yQWRkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj0naW5wdXQudHlwZT09XCJjb21ib1wiOyBlbHNlIG90aGVySW5wdXQnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgKHNlbGVjdGlvbkNoYW5nZSk9J29uQ2hhbmdlKGlucHV0LklELCRldmVudCwgaW5wdXQudHlwZSknIHBsYWNlaG9sZGVyPSd7e2lucHV0LmxhYmVsfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuSURdJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSd7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJJbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgKGlucHV0KT0nb25DaGFuZ2UoaW5wdXQuSUQsICRldmVudCwgaW5wdXQudHlwZSknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPkNhbXBvIE9ibGlnYXRvcmlvPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj0nZGF0YS5hY3Rpb249PVwiYWRkXCIgfHwgZGF0YS5hY3Rpb249PVwiZWRpdFwiJyAoY2xpY2spPSdvblN1Ym1pdCgpJyBjb2xvcj0ncHJpbWFyeScgbWF0LXJhaXNlZC1idXR0b24+R3VhcmRhcjwvYnV0dG9uPlxyXG5cclxuICAgIDwvZm9ybT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2JyYWlubG9wZXItdWkvY29tcG9uZW50cy9kYXRhLXRhYmxlL3RhYmxlLW1vZGFsL3RhYmxlLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9icmFpbmxvcGVyLXVpL2NvbXBvbmVudHMvZGF0YS10YWJsZS90YWJsZS1tb2RhbC90YWJsZS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ1MsU0FBNEMsRUFDbkIsSUFBSSxFQUM1QixXQUF3QixFQUN4QixJQUFpQjtRQUhsQixjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWE7UUFQM0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGNBQVMsR0FBRyxFQUFFLENBQUM7SUFPWixDQUFDO0lBRUosU0FBUztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNoQyxpREFBaUQ7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzNDLElB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QUNYLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2xDLE1BQU07WUFFUjtnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN6QyxNQUFNO1NBQ1Q7UUFFRCxzQ0FBc0M7SUFDeEMsQ0FBQzs7Z0hBNUZVLG1CQUFtQiw4Q0FNcEIsZUFBZTtvR0FOZCxtQkFBbUIsdURDVmhDLHFpR0F3RUE7MkZEOURhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQVV4QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXRhYmxlLW1vZGFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZU1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBtb2RhbEZvcm0gPSB7fTtcclxuICBkYXRhQ29tYm8gPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGFibGVNb2RhbENvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGEsXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG9uTm9DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBjb2x1bW5zID0gdGhpcy5kYXRhLmNvbHVtbnM7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdkYXRhIGNvbHVtbnMnLCB0aGlzLmRhdGEuY29sdW1ucyk7XHJcblxyXG4gICAgdGhpcy5kYXRhLmNvbHVtbnMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgbGV0IHRleHQgPSBge1wiJHtlbGVtZW50LklEfVwiOlwiXCJ9YDtcclxuICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKHRleHQpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kYWxGb3JtLCBqc29uKTtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT0gJ2NvbWJvJykge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhQ29tYm8sIGpzb24pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLmFjdGlvbiA9PSAnZWRpdCcpIHtcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybVtlbGVtZW50LklEXSA9IGVsZW1lbnQudmFsdWU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICBpZihlbGVtZW50LnZhbHVlKXtcclxuICAgICAgICAgICAgbGV0IHMgPSBlbGVtZW50LnZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSBgJHtzWzJdfS0ke3NbMV19LSR7c1swXX1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGVsZW1lbnQucGFyYW1zQ29tYm8pIHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsKTtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKGVsZW1lbnQucGFyYW1zQ29tYm8udXJsUGFyYW1zKTtcclxuXHJcbiAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAuZ2V0RGF0YShlbGVtZW50LnBhcmFtc0NvbWJvLnVybCwgZWxlbWVudC5wYXJhbXNDb21iby51cmxQYXJhbXMpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc1snY29kZSddID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFDb21ib1tlbGVtZW50LklEXSA9IHJlc1snYm9keSddO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLmRhdGFDb21ibyk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhQ29tYm9bZWxlbWVudC5JRF0uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkXSwgZWxlbWVudC52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbZWxlbWVudC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdID09IGVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsRm9ybVtlbGVtZW50LklEXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5jb2x1bW5zW2luZGV4XS52YWx1ZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhW2VsZW1lbnQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgZW4gbGEgY29uc3VsdGEnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL2NvbnNvbGUubG9nKHRoaXMuZGF0YUNvbWJvKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5tb2RhbEZvcm0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UoaWQ6IGFueSwgJGV2ZW50LCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAvLyBjYXNlICdkYXRlJzpcclxuICAgICAgLy8gICB0aGlzLm1vZGFsRm9ybVtpZF0gPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjb21ibyc6XHJcbiAgICAgICAgdGhpcy5tb2RhbEZvcm1baWRdID0gJGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLm1vZGFsRm9ybVtpZF0gPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIC8vY29uc29sZS5sb2coJ29uQ2hhbmdlJywgJGV2ZW50LCBpZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8ZGl2IHN0eWxlPSdkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsnPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICA8aDMgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIic+IEVkaXRhciA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPGgzICpuZ0lmPSdkYXRhLmFjdGlvbj09XCJhZGRcIic+IEFncmVnYXIgPC9oMz5cclxuICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBtYXQtZGlhbG9nLWNsb3NlPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzLWNpcmNsZVwiIHN0eWxlPVwiZm9udC1zaXplOiAxNTAlOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZvcm0+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nRm9yPSdsZXQgaW5wdXQgb2YgZGF0YS5jb2x1bW5zJz5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9J2RhdGEuYWN0aW9uPT1cImVkaXRcIjsgZWxzZSBBZ3JlZ2FyJz5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIWlucHV0LmRpc3JlZ2FyZEZvckVkaXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPSdpbnB1dC50eXBlPT1cImNvbWJvXCI7IGVsc2Ugb3RoZXJJbnB1dEVkaXQnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT0naW5wdXQudmFsdWUnIChzZWxlY3Rpb25DaGFuZ2UpPSdvbkNoYW5nZShpbnB1dC5JRCwkZXZlbnQsIGlucHV0LnR5cGUpJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9J3t7aW5wdXQucGFyYW1zQ29tYm8udmlzaWJsZUZpZWxkfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuSURdJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSd7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcklucHV0RWRpdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgW3ZhbHVlXT0naW5wdXQudmFsdWUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPSdvbkNoYW5nZShpbnB1dC5JRCwkZXZlbnQsIGlucHV0LnR5cGUpJyBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgW3JlcXVpcmVkXT1cImlucHV0LnJlcXVpcmVkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPkNhbXBvIE9ibGlnYXRvcmlvPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNBZ3JlZ2FyPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhaW5wdXQuZGlzcmVnYXJkRm9yQWRkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj0naW5wdXQudHlwZT09XCJjb21ib1wiOyBlbHNlIG90aGVySW5wdXQnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgKHNlbGVjdGlvbkNoYW5nZSk9J29uQ2hhbmdlKGlucHV0LklELCRldmVudCwgaW5wdXQudHlwZSknIHBsYWNlaG9sZGVyPSd7e2lucHV0LmxhYmVsfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPSdsZXQgZGF0YSBvZiBkYXRhQ29tYm9baW5wdXQuSURdJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSd7e2RhdGFbaW5wdXQucGFyYW1zQ29tYm8uc2VsZWN0aW9uRmllbGRdfX0nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YVtpbnB1dC5wYXJhbXNDb21iby52aXNpYmxlRmllbGRdfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJJbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFt0eXBlXT0naW5wdXQudHlwZScgW25hbWVdPSdpbnB1dC5JRCcgKGlucHV0KT0nb25DaGFuZ2UoaW5wdXQuSUQsICRldmVudCwgaW5wdXQudHlwZSknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPSdpbnB1dC5sYWJlbCcgW3JlcXVpcmVkXT1cImlucHV0LnJlcXVpcmVkXCIgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5DYW1wbyBPYmxpZ2F0b3JpbzwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9J2RhdGEuYWN0aW9uPT1cImFkZFwiIHx8IGRhdGEuYWN0aW9uPT1cImVkaXRcIicgKGNsaWNrKT0nb25TdWJtaXQoKScgY29sb3I9J3ByaW1hcnknIG1hdC1yYWlzZWQtYnV0dG9uPkd1YXJkYXI8L2J1dHRvbj5cclxuXHJcbiAgICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG5cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9pbnRlcmZhY2VzL2RhdGEtdGFibGUvdGFibGUtY29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyYW1zIH0gZnJvbSAnLi9wYXJhbXMnO1xyXG5pbXBvcnQgeyBSdWxlcyB9IGZyb20gJy4vcnVsZXMnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1ucyB7XHJcbiAgICBJRDpTdHJpbmcsXHJcbiAgICBsYWJlbDpTdHJpbmcsXHJcbiAgICB0eXBlOlN0cmluZyxcclxuICAgIHBhcmFtc0NvbWJvPzp7XHJcbiAgICAgICAgdXJsPzpTdHJpbmcsXHJcbiAgICAgICAgdXJsUGFyYW1zPzpwYXJhbXNbXSxcclxuICAgICAgICB2aXNpYmxlRmllbGQ/OlN0cmluZyxcclxuICAgICAgICBzZWxlY3Rpb25GaWVsZD86U3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3R5bGU/OntcclxuICAgICAgICB3aWR0aD86U3RyaW5nLFxyXG4gICAgICAgIHRleHRBbGlnbj86U3RyaW5nLFxyXG4gICAgICAgIGNvbG9yPzpTdHJpbmcsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPzpTdHJpbmcsXHJcbiAgICAgICAgbW92aWw/OlN0cmluZ1xyXG4gICAgfSxcclxuICAgIGRpc3JlZ2FyZEZvckFkZD86Ym9vbGVhbixcclxuICAgIGRpc3JlZ2FyZEZvckVkaXQ/OmJvb2xlYW4sXHJcbiAgICBydWxlcz86IEFycmF5PFJ1bGVzPixcclxufVxyXG5cclxuXHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9pbnRlcmZhY2VzL2RhdGEtdGFibGUvdGFibGUtY29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyYW1zIH0gZnJvbSAnLi9wYXJhbXMnO1xyXG5pbXBvcnQgeyBSdWxlcyB9IGZyb20gJy4vcnVsZXMnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1ucyB7XHJcbiAgICBJRDpTdHJpbmcsXHJcbiAgICBsYWJlbDpTdHJpbmcsXHJcbiAgICB0eXBlOlN0cmluZyxcclxuICAgIHBhcmFtc0NvbWJvPzp7XHJcbiAgICAgICAgdXJsPzpTdHJpbmcsXHJcbiAgICAgICAgdXJsUGFyYW1zPzpwYXJhbXNbXSxcclxuICAgICAgICB2aXNpYmxlRmllbGQ/OlN0cmluZyxcclxuICAgICAgICBzZWxlY3Rpb25GaWVsZD86U3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3R5bGU/OntcclxuICAgICAgICB3aWR0aD86U3RyaW5nLFxyXG4gICAgICAgIHRleHRBbGlnbj86U3RyaW5nLFxyXG4gICAgICAgIGNvbG9yPzpTdHJpbmcsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yPzpTdHJpbmcsXHJcbiAgICAgICAgbW92aWw/OlN0cmluZ1xyXG4gICAgfSxcclxuICAgIGRpc3JlZ2FyZEZvckFkZD86Ym9vbGVhbixcclxuICAgIGRpc3JlZ2FyZEZvckVkaXQ/OmJvb2xlYW4sXHJcbiAgICBydWxlcz86IEFycmF5PFJ1bGVzPixcclxuICAgIHJlcXVpcmVkPzpib29sZWFuXHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -517,10 +517,10 @@ class TableModalComponent {
517
517
  }
518
518
  }
519
519
  TableModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i10.FormBuilder }, { token: HttpService }], target: i0.ɵɵFactoryTarget.Component });
520
- TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatError, selector: "mat-error", inputs: ["id"] }] });
520
+ TableModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TableModalComponent, selector: "app-table-modal", ngImport: i0, template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"], components: [{ type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i3.MatError, selector: "mat-error", inputs: ["id"] }] });
521
521
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TableModalComponent, decorators: [{
522
522
  type: Component,
523
- args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
523
+ args: [{ selector: 'app-table-modal', template: "<div>\r\n <div style='display:flex; justify-content: space-between;'>\r\n <div>\r\n <strong>\r\n <h3 *ngIf='data.action==\"edit\"'> Editar </h3>\r\n <h3 *ngIf='data.action==\"add\"'> Agregar </h3>\r\n </strong>\r\n </div>\r\n <div mat-dialog-close>\r\n <i class=\"fa fa-times-circle\" style=\"font-size: 150%; position: relative;\"></i>\r\n </div>\r\n </div>\r\n\r\n <form>\r\n\r\n <div *ngFor='let input of data.columns'>\r\n\r\n\r\n\r\n <div *ngIf='data.action==\"edit\"; else Agregar'>\r\n <mat-form-field *ngIf=\"!input.disregardForEdit\">\r\n <div *ngIf='input.type==\"combo\"; else otherInputEdit'>\r\n\r\n <mat-select [value]='input.value' (selectionChange)='onChange(input.ID,$event, input.type)'\r\n placeholder='{{input.paramsCombo.visibleField}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-template #otherInputEdit>\r\n <input [type]='input.type' [name]='input.ID' [value]='input.value'\r\n (input)='onChange(input.ID,$event, input.type)' matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n </ng-template>\r\n\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <ng-template #Agregar>\r\n <mat-form-field *ngIf=\"!input.disregardForAdd\">\r\n <div *ngIf='input.type==\"combo\"; else otherInput'>\r\n\r\n <mat-select (selectionChange)='onChange(input.ID,$event, input.type)' placeholder='{{input.label}}'>\r\n <mat-option *ngFor='let data of dataCombo[input.ID]'\r\n value='{{data[input.paramsCombo.selectionField]}}'>\r\n {{data[input.paramsCombo.visibleField]}}</mat-option>\r\n </mat-select>\r\n\r\n </div>\r\n\r\n <ng-template #otherInput>\r\n <input [type]='input.type' [name]='input.ID' (input)='onChange(input.ID, $event, input.type)'\r\n matInput [placeholder]='input.label' [required]=\"input.required\" />\r\n\r\n </ng-template>\r\n <mat-error>Campo Obligatorio</mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n <button *ngIf='data.action==\"add\" || data.action==\"edit\"' (click)='onSubmit()' color='primary' mat-raised-button>Guardar</button>\r\n\r\n </form>\r\n</div>\r\n\r\n", styles: ["button{width:100%}mat-form-field{width:100%}\n"] }]
524
524
  }], ctorParameters: function () {
525
525
  return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
526
526
  type: Inject,