general-library-union 3.3.61 → 3.3.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +3 -2
  2. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +3 -3
  3. package/esm2022/src/app/core/componentes/template-tabla-vacia/template-tabla-vacia.component.mjs +1 -1
  4. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +4 -3
  5. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +4 -3
  6. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +3 -3
  7. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +4 -3
  8. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +23 -3
  9. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +5 -4
  10. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +4 -3
  11. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +4 -3
  12. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +5 -4
  13. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +4 -3
  14. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +4 -3
  15. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +3 -2
  16. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +5 -4
  17. package/esm2022/src/app/webcommon/popups/popup-editor-formula/popup-editor-formula.component.mjs +4 -3
  18. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +4 -3
  19. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +4 -3
  20. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +5 -4
  21. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +4 -3
  22. package/fesm2022/general-library-union.mjs +76 -57
  23. package/fesm2022/general-library-union.mjs.map +1 -1
  24. package/package.json +1 -1
  25. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +1 -0
  26. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +1 -1
  27. package/src/assets/images/temaClaro/no-info.webp +0 -0
  28. package/src/assets/images/temaOscuro/no-info.webp +0 -0
@@ -3,6 +3,7 @@ import { DialogModule } from 'primeng/dialog';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { TableModule } from 'primeng/table';
6
+ import { TemplateTablaVaciaComponent } from '../../../core/componentes/template-tabla-vacia/template-tabla-vacia.component';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/router";
8
9
  import * as i2 from "../../../core/servicios/storage.service";
@@ -152,11 +153,11 @@ export class SeleccionRolComponent {
152
153
  this.regresar.emit();
153
154
  }
154
155
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SeleccionRolComponent, deps: [{ token: i1.Router }, { token: i2.StorageService }, { token: i3.CookieService }, { token: i4.AuthService }, { token: i5.UtilsService }, { token: i6.CargarControlFuncionalidadService }], target: i0.ɵɵFactoryTarget.Component });
155
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: SeleccionRolComponent, isStandalone: true, selector: "app-seleccion-rol", inputs: { mostrar: "mostrar", codigoAplicacion: "codigoAplicacion" }, outputs: { regresar: "regresar" }, ngImport: i0, template: "<p-dialog id='popupSeleccionPlantilla' header=\"Perfil\" [(visible)]=\"mostrar\" appendTo=\"body\"\n (onHide)=\"regresarRegistro()\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{'min-width':'20vw'}\"\n [modal]=\"true\" [draggable]=\"false\">\n\n <span class=\"p-input-icon-left mb-3 w-full\">\n <i class=\"pi pi-search\"></i>\n <input class=\" w-full p-inputtext\" type=\"text\" pInputText [(ngModel)]=\"parametroBusqueda\" (keyup.enter)=\"cargarListadoFiltro()\" />\n </span>\n\n <!-- Contenido -->\n <div class=\"flex mb-3\">\n <!--Empresa -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Empresa\" tooltipPosition=\"top\"\n *ngIf=\"getNombreEmpresa() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-building color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_empresa\"> {{getNombreEmpresa() | uppercase}}</label>\n <!-- <label htmlFor=\"empresa\">{{'empresa' | translate}}</label> -->\n </div>\n <!--Conexion -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Conexi\u00F3n\" tooltipPosition=\"top\"\n *ngIf=\"getNombreConexion() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-book color-400 font-semibold\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreConexion() | uppercase}}</label>\n\n </div>\n <!--Rol -->\n <div class=\"flex align-items-center\" pTooltip=\"Rol\" tooltipPosition=\"top\" *ngIf=\"getNombreRol() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-user color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreRol()}}</label>\n </div>\n </div>\n\n <p-table [value]=\"filtrolRolesConexionEmpresa\" responsiveLayout=\"scroll\" [paginator]=\"listRoles.length > 10\" [rows]=\"10\"\n [(selection)]=\"rolSeleccionado\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction()\" selectionMode=\"single\">\n <!-- header de la tabla de seleccion rol -->\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th *ngIf=\"getNombreEmpresa() == null\">Nombre Empresa</th>\n <th *ngIf=\"getNombreConexion() == null\">Conexi\u00F3n</th>\n <th *ngIf=\"getNombreRol() == null\">Rol</th>\n </tr>\n </ng-template>\n <!-- cuerpo de la tabla -->\n <ng-template pTemplate=\"body\" let-rol let-rowIndex=\"rowIndex\">\n <tr [pSelectableRow]=\"rol\">\n <td *ngIf=\"getNombreEmpresa() == null\" style=\"min-width: 200px\">\n {{rol.nombreEmpresa}}\n </td>\n <td *ngIf=\"getNombreConexion() == null\" style=\"min-width: 200px\">\n {{ rol.nombreConexion}}\n </td>\n <td *ngIf=\"getNombreRol() == null\" style=\"min-width: 200px\">\n {{ rol.nombreRol }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</p-dialog>", styles: ["#SelecionRol .card.cajaSeleccionRol{padding:1.5% 3%;height:100vh}#SelecionRol h5{margin-bottom:1.5%}#SelecionRol th{background:transparent;color:#fff;font-size:1.2em;font-weight:600}#SelecionRol tr.headerTable{background:linear-gradient(to right,var(--color1),var(--color2));padding:1% 1% .5%;border-radius:10px 10px 0 0}#SelecionRol tr.empresa.ng-star-inserted{border:solid #E9EAEB 1px}#SelecionRol tr.empresa.ng-star-inserted th{color:#232323;font-weight:300;font-size:1em;padding:.8% 2%}#SelecionRol tr.p-rowgroup-header.p-element.ng-star-inserted{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.18);color:#232323;font-weight:600}#SelecionRol .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.05 !important)}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i10.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i11.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i11.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }] });
156
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: SeleccionRolComponent, isStandalone: true, selector: "app-seleccion-rol", inputs: { mostrar: "mostrar", codigoAplicacion: "codigoAplicacion" }, outputs: { regresar: "regresar" }, ngImport: i0, template: "<p-dialog id='popupSeleccionPlantilla' header=\"Perfil\" [(visible)]=\"mostrar\" appendTo=\"body\"\n (onHide)=\"regresarRegistro()\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{'min-width':'20vw'}\"\n [modal]=\"true\" [draggable]=\"false\">\n\n <span class=\"p-input-icon-left mb-3 w-full\">\n <i class=\"pi pi-search\"></i>\n <input class=\" w-full p-inputtext\" type=\"text\" pInputText [(ngModel)]=\"parametroBusqueda\" (keyup.enter)=\"cargarListadoFiltro()\" />\n </span>\n\n <!-- Contenido -->\n <div class=\"flex mb-3\">\n <!--Empresa -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Empresa\" tooltipPosition=\"top\"\n *ngIf=\"getNombreEmpresa() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-building color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_empresa\"> {{getNombreEmpresa() | uppercase}}</label>\n <!-- <label htmlFor=\"empresa\">{{'empresa' | translate}}</label> -->\n </div>\n <!--Conexion -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Conexi\u00F3n\" tooltipPosition=\"top\"\n *ngIf=\"getNombreConexion() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-book color-400 font-semibold\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreConexion() | uppercase}}</label>\n\n </div>\n <!--Rol -->\n <div class=\"flex align-items-center\" pTooltip=\"Rol\" tooltipPosition=\"top\" *ngIf=\"getNombreRol() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-user color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreRol()}}</label>\n </div>\n </div>\n\n <p-table [value]=\"filtrolRolesConexionEmpresa\" responsiveLayout=\"scroll\" [paginator]=\"listRoles.length > 10\" [rows]=\"10\"\n [(selection)]=\"rolSeleccionado\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction()\" selectionMode=\"single\">\n <!-- header de la tabla de seleccion rol -->\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th *ngIf=\"getNombreEmpresa() == null\">Nombre Empresa</th>\n <th *ngIf=\"getNombreConexion() == null\">Conexi\u00F3n</th>\n <th *ngIf=\"getNombreRol() == null\">Rol</th>\n </tr>\n </ng-template>\n <!-- cuerpo de la tabla -->\n <ng-template pTemplate=\"body\" let-rol let-rowIndex=\"rowIndex\">\n <tr [pSelectableRow]=\"rol\">\n <td *ngIf=\"getNombreEmpresa() == null\" style=\"min-width: 200px\">\n {{rol.nombreEmpresa}}\n </td>\n <td *ngIf=\"getNombreConexion() == null\" style=\"min-width: 200px\">\n {{ rol.nombreConexion}}\n </td>\n <td *ngIf=\"getNombreRol() == null\" style=\"min-width: 200px\">\n {{ rol.nombreRol }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template>\n </p-table>\n</p-dialog>", styles: ["#SelecionRol .card.cajaSeleccionRol{padding:1.5% 3%;height:100vh}#SelecionRol h5{margin-bottom:1.5%}#SelecionRol th{background:transparent;color:#fff;font-size:1.2em;font-weight:600}#SelecionRol tr.headerTable{background:linear-gradient(to right,var(--color1),var(--color2));padding:1% 1% .5%;border-radius:10px 10px 0 0}#SelecionRol tr.empresa.ng-star-inserted{border:solid #E9EAEB 1px}#SelecionRol tr.empresa.ng-star-inserted th{color:#232323;font-weight:300;font-size:1em;padding:.8% 2%}#SelecionRol tr.p-rowgroup-header.p-element.ng-star-inserted{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.18);color:#232323;font-weight:600}#SelecionRol .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.05 !important)}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i7.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i10.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i11.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i11.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "component", type: TemplateTablaVaciaComponent, selector: "app-template-tabla-vacia" }] });
156
157
  }
157
158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SeleccionRolComponent, decorators: [{
158
159
  type: Component,
159
- args: [{ selector: 'app-seleccion-rol', imports: [DialogModule, FormsModule, CommonModule, TableModule,], standalone: true, template: "<p-dialog id='popupSeleccionPlantilla' header=\"Perfil\" [(visible)]=\"mostrar\" appendTo=\"body\"\n (onHide)=\"regresarRegistro()\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{'min-width':'20vw'}\"\n [modal]=\"true\" [draggable]=\"false\">\n\n <span class=\"p-input-icon-left mb-3 w-full\">\n <i class=\"pi pi-search\"></i>\n <input class=\" w-full p-inputtext\" type=\"text\" pInputText [(ngModel)]=\"parametroBusqueda\" (keyup.enter)=\"cargarListadoFiltro()\" />\n </span>\n\n <!-- Contenido -->\n <div class=\"flex mb-3\">\n <!--Empresa -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Empresa\" tooltipPosition=\"top\"\n *ngIf=\"getNombreEmpresa() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-building color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_empresa\"> {{getNombreEmpresa() | uppercase}}</label>\n <!-- <label htmlFor=\"empresa\">{{'empresa' | translate}}</label> -->\n </div>\n <!--Conexion -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Conexi\u00F3n\" tooltipPosition=\"top\"\n *ngIf=\"getNombreConexion() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-book color-400 font-semibold\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreConexion() | uppercase}}</label>\n\n </div>\n <!--Rol -->\n <div class=\"flex align-items-center\" pTooltip=\"Rol\" tooltipPosition=\"top\" *ngIf=\"getNombreRol() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-user color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreRol()}}</label>\n </div>\n </div>\n\n <p-table [value]=\"filtrolRolesConexionEmpresa\" responsiveLayout=\"scroll\" [paginator]=\"listRoles.length > 10\" [rows]=\"10\"\n [(selection)]=\"rolSeleccionado\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction()\" selectionMode=\"single\">\n <!-- header de la tabla de seleccion rol -->\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th *ngIf=\"getNombreEmpresa() == null\">Nombre Empresa</th>\n <th *ngIf=\"getNombreConexion() == null\">Conexi\u00F3n</th>\n <th *ngIf=\"getNombreRol() == null\">Rol</th>\n </tr>\n </ng-template>\n <!-- cuerpo de la tabla -->\n <ng-template pTemplate=\"body\" let-rol let-rowIndex=\"rowIndex\">\n <tr [pSelectableRow]=\"rol\">\n <td *ngIf=\"getNombreEmpresa() == null\" style=\"min-width: 200px\">\n {{rol.nombreEmpresa}}\n </td>\n <td *ngIf=\"getNombreConexion() == null\" style=\"min-width: 200px\">\n {{ rol.nombreConexion}}\n </td>\n <td *ngIf=\"getNombreRol() == null\" style=\"min-width: 200px\">\n {{ rol.nombreRol }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</p-dialog>", styles: ["#SelecionRol .card.cajaSeleccionRol{padding:1.5% 3%;height:100vh}#SelecionRol h5{margin-bottom:1.5%}#SelecionRol th{background:transparent;color:#fff;font-size:1.2em;font-weight:600}#SelecionRol tr.headerTable{background:linear-gradient(to right,var(--color1),var(--color2));padding:1% 1% .5%;border-radius:10px 10px 0 0}#SelecionRol tr.empresa.ng-star-inserted{border:solid #E9EAEB 1px}#SelecionRol tr.empresa.ng-star-inserted th{color:#232323;font-weight:300;font-size:1em;padding:.8% 2%}#SelecionRol tr.p-rowgroup-header.p-element.ng-star-inserted{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.18);color:#232323;font-weight:600}#SelecionRol .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.05 !important)}\n"] }]
160
+ args: [{ selector: 'app-seleccion-rol', imports: [DialogModule, FormsModule, CommonModule, TableModule, TemplateTablaVaciaComponent,], standalone: true, template: "<p-dialog id='popupSeleccionPlantilla' header=\"Perfil\" [(visible)]=\"mostrar\" appendTo=\"body\"\n (onHide)=\"regresarRegistro()\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{'min-width':'20vw'}\"\n [modal]=\"true\" [draggable]=\"false\">\n\n <span class=\"p-input-icon-left mb-3 w-full\">\n <i class=\"pi pi-search\"></i>\n <input class=\" w-full p-inputtext\" type=\"text\" pInputText [(ngModel)]=\"parametroBusqueda\" (keyup.enter)=\"cargarListadoFiltro()\" />\n </span>\n\n <!-- Contenido -->\n <div class=\"flex mb-3\">\n <!--Empresa -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Empresa\" tooltipPosition=\"top\"\n *ngIf=\"getNombreEmpresa() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-building color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_empresa\"> {{getNombreEmpresa() | uppercase}}</label>\n <!-- <label htmlFor=\"empresa\">{{'empresa' | translate}}</label> -->\n </div>\n <!--Conexion -->\n <div class=\"flex align-items-center mr-4\" pTooltip=\"Conexi\u00F3n\" tooltipPosition=\"top\"\n *ngIf=\"getNombreConexion() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-book color-400 font-semibold\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreConexion() | uppercase}}</label>\n\n </div>\n <!--Rol -->\n <div class=\"flex align-items-center\" pTooltip=\"Rol\" tooltipPosition=\"top\" *ngIf=\"getNombreRol() != null\">\n <i style=\"font-size: 1.2rem !important\" class=\"glyphicons glyphicons-user color-400\"></i>\n <label class=\"font-semibold\" htmlFor=\"id_rol\"> {{getNombreRol()}}</label>\n </div>\n </div>\n\n <p-table [value]=\"filtrolRolesConexionEmpresa\" responsiveLayout=\"scroll\" [paginator]=\"listRoles.length > 10\" [rows]=\"10\"\n [(selection)]=\"rolSeleccionado\" dataKey=\"llaveTabla\" (onRowSelect)=\"verAction()\" selectionMode=\"single\">\n <!-- header de la tabla de seleccion rol -->\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th *ngIf=\"getNombreEmpresa() == null\">Nombre Empresa</th>\n <th *ngIf=\"getNombreConexion() == null\">Conexi\u00F3n</th>\n <th *ngIf=\"getNombreRol() == null\">Rol</th>\n </tr>\n </ng-template>\n <!-- cuerpo de la tabla -->\n <ng-template pTemplate=\"body\" let-rol let-rowIndex=\"rowIndex\">\n <tr [pSelectableRow]=\"rol\">\n <td *ngIf=\"getNombreEmpresa() == null\" style=\"min-width: 200px\">\n {{rol.nombreEmpresa}}\n </td>\n <td *ngIf=\"getNombreConexion() == null\" style=\"min-width: 200px\">\n {{ rol.nombreConexion}}\n </td>\n <td *ngIf=\"getNombreRol() == null\" style=\"min-width: 200px\">\n {{ rol.nombreRol }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template>\n </p-table>\n</p-dialog>", styles: ["#SelecionRol .card.cajaSeleccionRol{padding:1.5% 3%;height:100vh}#SelecionRol h5{margin-bottom:1.5%}#SelecionRol th{background:transparent;color:#fff;font-size:1.2em;font-weight:600}#SelecionRol tr.headerTable{background:linear-gradient(to right,var(--color1),var(--color2));padding:1% 1% .5%;border-radius:10px 10px 0 0}#SelecionRol tr.empresa.ng-star-inserted{border:solid #E9EAEB 1px}#SelecionRol tr.empresa.ng-star-inserted th{color:#232323;font-weight:300;font-size:1em;padding:.8% 2%}#SelecionRol tr.p-rowgroup-header.p-element.ng-star-inserted{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.18);color:#232323;font-weight:600}#SelecionRol .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{background:rgb(var(--RCOL1),var(--GCOL1),var(--BCOL1),.05 !important)}\n"] }]
160
161
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.StorageService }, { type: i3.CookieService }, { type: i4.AuthService }, { type: i5.UtilsService }, { type: i6.CargarControlFuncionalidadService }], propDecorators: { mostrar: [{
161
162
  type: Input
162
163
  }], codigoAplicacion: [{
@@ -164,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
164
165
  }], regresar: [{
165
166
  type: Output
166
167
  }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWNjaW9uLXJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3B1YmxpY28vcGFnZXMvc2VsZWNjaW9uLXJvbC9zZWxlY2Npb24tcm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcHVibGljby9wYWdlcy9zZWxlY2Npb24tcm9sL3NlbGVjY2lvbi1yb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBUzVDLE1BQU0sT0FBTyxxQkFBcUI7SUFpQnRCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXJCRCxPQUFPLENBQVU7SUFDakIsZ0JBQWdCLENBQVM7SUFDeEIsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFeEMsU0FBUyxDQUFhO0lBQ3RCLGVBQWUsQ0FBVztJQUMxQixnQkFBZ0IsQ0FBTTtJQUN0QixvQkFBb0IsQ0FBYTtJQUNqQywyQkFBMkIsQ0FBYTtJQUN4QyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN6QixhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxQixlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1QixpQkFBaUIsR0FBVyxJQUFJLENBQUM7SUFDakMsV0FBVyxHQUFZLEtBQUssQ0FBQztJ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SSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7dUdBdkpVLHFCQUFxQjsyRkFBckIscUJBQXFCLHNMQ3RCbEMsMHBHQXlEVyxvMkJEeENHLFlBQVksODBCQUFFLFdBQVcsOG1CQUFFLFlBQVksaU1BQUUsV0FBVzs7MkZBS3JELHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxtQkFBbUIsV0FDbEIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsY0FDcEQsSUFBSTt5T0FLVCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm9sTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9Sb2xNb2RlbCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcbmltcG9ydCB7IENhcmdhckNvbnRyb2xGdW5jaW9uYWxpZGFkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2Nhcmdhci1jb250cm9sLWZ1bmNpb25hbGlkYWQuc2VydmljZSc7XG5pbXBvcnQgeyBNb2R1bG9zTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9Nb2R1bG9zTW9kZWwnO1xuaW1wb3J0IHsgVGFyZWFzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9UYXJlYXNNb2RlbCc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zZWxlY2Npb24tcm9sJyxcbiAgICBpbXBvcnRzOiBbRGlhbG9nTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlLCBUYWJsZU1vZHVsZSxdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjY2lvbi1yb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY2Npb24tcm9sLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjY2lvblJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG1vc3RyYXI6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvZGlnb0FwbGljYWNpb246IHN0cmluZztcbiAgQE91dHB1dCgpIHJlZ3Jlc2FyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGxpc3RSb2xlczogUm9sTW9kZWxbXTtcbiAgcm9sU2VsZWNjaW9uYWRvOiBSb2xNb2RlbDtcbiAgcm93R3JvdXBNZXRhZGF0YTogYW55O1xuICByb2xlc0NvbmV4aW9uRW1wcmVzYTogUm9sTW9kZWxbXTtcbiAgZmlsdHJvbFJvbGVzQ29uZXhpb25FbXByZXNhOiBSb2xNb2RlbFtdO1xuICBsaXN0YUVtcHJlc2EgPSBuZXcgTWFwKCk7XG4gIGxpc3RhUGVyZmlsZXMgPSBuZXcgTWFwKCk7XG4gIGxpc3RhQ29uZXhpb25lcyA9IG5ldyBNYXAoKTtcbiAgcGFyYW1ldHJvQnVzcXVlZGE6IHN0cmluZyA9IG51bGw7XG4gIGFkbW9uUG9ydGFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRyb2xGdW5jaW9uYWxpZGFkOiBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmFtZXRyb0J1c3F1ZWRhID0gJyc7XG4gICAgdGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYSA9IFtdO1xuICAgIHRoaXMubGlzdFJvbGVzID0gW107XG4gIH1cblxuICBwdWJsaWMgY2FyZ2FyKGxpc3RhUm9sZXMsIGFkbW9uUG9ydGFsKSB7XG5cbiAgICB0aGlzLnJvbFNlbGVjY2lvbmFkbyA9IG51bGw7XG4gICAgdGhpcy5hZG1vblBvcnRhbCA9IGFkbW9uUG9ydGFsO1xuXG4gICAgdGhpcy5saXN0Um9sZXMgPSBsaXN0YVJvbGVzO1xuXG4gICAgdGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYSA9IFtdO1xuXG4gICAgZm9yIChsZXQgcm9sIG9mIHRoaXMubGlzdFJvbGVzKSB7XG5cbiAgICAgIGlmICghdGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYS5zb21lKHIgPT5cbiAgICAgICAgci5jb2RpZ29Db25leGlvbiA9PT0gcm9sLmNvZGlnb0NvbmV4aW9uICYmXG4gICAgICAgIHIubm9tYnJlQ29uZXhpb24gPT09IHJvbC5ub21icmVDb25leGlvbiAmJlxuICAgICAgICByLmNvZGlnb0VtcHJlc2EgPT09IHJvbC5jb2RpZ29FbXByZXNhICYmXG4gICAgICAgIHIubm9tYnJlRW1wcmVzYSA9PT0gcm9sLm5vbWJyZUVtcHJlc2EgJiZcbiAgICAgICAgci5udW1lcm9FbXByZXNhID09PSByb2wubnVtZXJvRW1wcmVzYSAmJlxuICAgICAgICByLmxsYXZlUm9sID09PSByb2wubGxhdmVSb2wgJiZcbiAgICAgICAgci5ub21icmVSb2wgPT09IHJvbC5ub21icmVSb2wpKSB7XG4gICAgICAgIHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2EucHVzaChyb2wpO1xuICAgICAgICB0aGlzLmxpc3RhRW1wcmVzYS5zZXQocm9sLmNvZGlnb0VtcHJlc2EsIHJvbC5ub21icmVFbXByZXNhKTtcbiAgICAgICAgdGhpcy5saXN0YVBlcmZpbGVzLnNldChyb2wubGxhdmVSb2wsIHJvbC5ub21icmVSb2wpO1xuICAgICAgICB0aGlzLmxpc3RhQ29uZXhpb25lcy5zZXQocm9sLmNvZGlnb0NvbmV4aW9uLCByb2wubm9tYnJlQ29uZXhpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsdHJvbFJvbGVzQ29uZXhpb25FbXByZXNhID0gWy4uLnRoaXMucm9sZXNDb25leGlvbkVtcHJlc2FdO1xuICB9XG5cbiAgcHVibGljIGdldE5vbWJyZVJvbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5saXN0YVBlcmZpbGVzLnNpemUgPiAxIHx8IHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2EubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2FbMF0ubm9tYnJlUm9sO1xuICB9XG5cbiAgcHVibGljIGdldE5vbWJyZUVtcHJlc2EoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubGlzdGFFbXByZXNhLnNpemUgPiAxIHx8IHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2EubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2FbMF0ubm9tYnJlRW1wcmVzYTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROb21icmVDb25leGlvbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5saXN0YUNvbmV4aW9uZXMuc2l6ZSA+IDEgfHwgdGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYVswXS5ub21icmVDb25leGlvbjtcbiAgfVxuXG4gIGNhcmdhckxpc3RhZG9GaWx0cm8oKSB7XG5cbiAgICBpZiAodGhpcy5wYXJhbWV0cm9CdXNxdWVkYS50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aGlzLmZpbHRyb2xSb2xlc0NvbmV4aW9uRW1wcmVzYSA9IFsuLi50aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0cm9sUm9sZXNDb25leGlvbkVtcHJlc2EgPSB0aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhLmZpbHRlcihyb2wgPT5cbiAgICAgICAgcm9sLm5vbWJyZUVtcHJlc2EudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnBhcmFtZXRyb0J1c3F1ZWRhLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgIHJvbC5ub21icmVDb25leGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMucGFyYW1ldHJvQnVzcXVlZGEudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgcm9sLm5vbWJyZVJvbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMucGFyYW1ldHJvQnVzcXVlZGEudG9Mb3dlckNhc2UoKSlcbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxuICB2ZXJBY3Rpb24oKSB7XG4gICAgdmFyIHVybGFwaW51Y2xlbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3VybG51Y2xlbycpXG4gICAgdGhpcy5yb2xTZWxlY2Npb25hZG8uYWRtb25Qb3J0YWwgPSB0aGlzLmFkbW9uUG9ydGFsXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKFxuICAgICAgJ3JvbF9zZWxlY2Npb25hZG8nLFxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5yb2xTZWxlY2Npb25hZG8pXG4gICAgKTtcbiAgICB0aGlzLnJvbFNlbGVjY2lvbmFkby5hcGxpY2FjaW9uID0gdGhpcy5jb2RpZ29BcGxpY2FjaW9uO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0Um9sU2VsZWNjaW9uYWRvKHRoaXMucm9sU2VsZWNjaW9uYWRvKTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnNlbGVjY2lvblJvbCh0aGlzLnJvbFNlbGVjY2lvbmFkbykuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAvKmxldCByb2w6IGFueSA9IHt9XG4gICAgICAgIHJvbC5jb2RpZ29Sb2wgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdsbGF2ZVJvbCcpO1xuICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZW5lcmFyVG9rZW5QdWJsaWNvKCkuc3Vic2NyaWJlKGRhdGEyID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sRnVuY2lvbmFsaWRhZC5jYXJnYXJGdW5jaW9uYWxpZGFkKHJvbCwgYCR7dXJsYXBpbnVjbGVvfS9hdXRoZW50aWNhdGlvbi9mdW5jaW9uYWxpZGFkZXNgLCBkYXRhMi50b2tlbikuc3Vic2NyaWJlKHt9KTsqL1xuICAgICAgY29uc3QgdG9rZW4gPSAoZGF0YSBhcyBhbnkpPy50b2tlbiBhcyBzdHJpbmc7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ3Rva2VuJywgdG9rZW4pO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdjb250cm9sRnVuY2lvbmFsaWRhZGVzJywgKGRhdGEgYXMgYW55KS5jb250cm9sZXNmdW5jaW9uYWxpZGFkZXMpO1xuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICAgLyogQ29kaWdvIHRlbXBvcmFsIHBhcmEgbWFudGVuZXIgbGFzIHRhcmVhcywgcGVybyBlc3RhcyBkZWJlbiBzZXIgb2J0ZW5pZGFzIHBvciB1biBzZXJ2aWNpbyAqL1xuICAgICAgdmFyIHRhcmVhczogVGFyZWFzTW9kZWxbXSA9IChkYXRhIGFzIGFueSkudGFyZWFzbW9kdWxvO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdfX3RhcmVhcycsIEpTT04uc3RyaW5naWZ5KHRhcmVhcykpO1xuICAgICAgdmFyIG1vZHVsb3NEZVRhcmVhcyA9IHRhcmVhcy5maWx0ZXIoKG9iaiwgaW5kZXgsIHNlbGYpID0+IHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgobykgPT4gby5tb2R1bG8gPT09IG9iai5tb2R1bG8pO1xuICAgICAgfSk7XG4gICAgICB2YXIgbW9kdWxvczogTW9kdWxvc01vZGVsW10gPSBbXTtcbiAgICAgIG1vZHVsb3NEZVRhcmVhcy5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICBsZXQgbW9kdWxvOiBNb2R1bG9zTW9kZWwgPSB7XG4gICAgICAgICAgbGxhdmU6IGRhdGEubW9kdWxvLFxuICAgICAgICAgIGRlc2NyaXBjaW9uOiBkYXRhLm5vbWJyZU1vZHVsbyxcbiAgICAgICAgICBpY29ubzogZGF0YS5pY29ub01vZHVsb1xuICAgICAgICB9XG4gICAgICAgIG1vZHVsb3MucHVzaChtb2R1bG8pXG4gICAgICB9KVxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdtb2R1bG9zJywgSlNPTi5zdHJpbmdpZnkobW9kdWxvcykpO1xuICAgICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnbW9kdWxvRmF2b3JpdG8nKSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnbW9kdWxvRmF2b3JpdG8nKSkge1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ21vZHVsb1NlbGVjY2lvbmFkbycsIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnbW9kdWxvRmF2b3JpdG8nKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgbW9kdWxvZGVmZWN0byA9IChkYXRhIGFzIGFueSk/Lm1vZHVsb2RlZmVjdG87XG4gICAgICAgIGlmICghbW9kdWxvZGVmZWN0bykge1xuICAgICAgICAgIG1vZHVsb2RlZmVjdG8gPSBtb2R1bG9zWzBdLmxsYXZlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnbW9kdWxvU2VsZWNjaW9uYWRvJywgbW9kdWxvZGVmZWN0byk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlZ3Jlc2FyUmVnaXN0cm8oKVxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ2FkbW9uUG9ydGFsJykpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnV0aWxzU2VydmljZS5vYnRlbmVyQmFzZSgpICsgJy9hZG1vblBvcnRhbC9pbmljaW8nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51dGlsc1NlcnZpY2Uub2J0ZW5lckJhc2UoKSArICcvaW5pY2lvJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIHJlZ3Jlc2FyUmVnaXN0cm8oKSB7XG4gICAgdGhpcy5tb3N0cmFyID0gZmFsc2U7XG4gICAgdGhpcy5yZWdyZXNhci5lbWl0KCk7XG4gIH1cblxufSIsIjxwLWRpYWxvZyBpZD0ncG9wdXBTZWxlY2Npb25QbGFudGlsbGEnIGhlYWRlcj1cIlBlcmZpbFwiIFsodmlzaWJsZSldPVwibW9zdHJhclwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgKG9uSGlkZSk9XCJyZWdyZXNhclJlZ2lzdHJvKClcIiBbYnJlYWtwb2ludHNdPVwieyc5NjBweCc6ICc3NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBbc3R5bGVdPVwieydtaW4td2lkdGgnOicyMHZ3J31cIlxuICAgIFttb2RhbF09XCJ0cnVlXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdCBtYi0zIHctZnVsbFwiPlxuICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiIHctZnVsbCBwLWlucHV0dGV4dFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInBhcmFtZXRyb0J1c3F1ZWRhXCIgKGtleXVwLmVudGVyKT1cImNhcmdhckxpc3RhZG9GaWx0cm8oKVwiIC8+XG4gICAgPC9zcGFuPlxuXG4gICAgPCEtLSBDb250ZW5pZG8gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggbWItM1wiPlxuICAgICAgICA8IS0tRW1wcmVzYSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1yLTRcIiBwVG9vbHRpcD1cIkVtcHJlc2FcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgKm5nSWY9XCJnZXROb21icmVFbXByZXNhKCkgIT0gbnVsbFwiPlxuICAgICAgICAgICAgPGkgc3R5bGU9XCJmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50XCIgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYnVpbGRpbmcgY29sb3ItNDAwXCI+PC9pPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiIGh0bWxGb3I9XCJpZF9lbXByZXNhXCI+IHt7Z2V0Tm9tYnJlRW1wcmVzYSgpIHwgdXBwZXJjYXNlfX08L2xhYmVsPlxuICAgICAgICAgICAgPCEtLSA8bGFiZWwgaHRtbEZvcj1cImVtcHJlc2FcIj57eydlbXByZXNhJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tQ29uZXhpb24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtci00XCIgcFRvb2x0aXA9XCJDb25leGnDs25cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgKm5nSWY9XCJnZXROb21icmVDb25leGlvbigpICE9IG51bGxcIj5cbiAgICAgICAgICAgIDxpIHN0eWxlPVwiZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudFwiIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2sgY29sb3ItNDAwIGZvbnQtc2VtaWJvbGRcIj48L2k+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCIgaHRtbEZvcj1cImlkX3JvbFwiPiB7e2dldE5vbWJyZUNvbmV4aW9uKCkgfCB1cHBlcmNhc2V9fTwvbGFiZWw+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS1Sb2wgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHBUb29sdGlwPVwiUm9sXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgKm5nSWY9XCJnZXROb21icmVSb2woKSAhPSBudWxsXCI+XG4gICAgICAgICAgICA8aSBzdHlsZT1cImZvbnQtc2l6ZTogMS4ycmVtICFpbXBvcnRhbnRcIiBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy11c2VyIGNvbG9yLTQwMFwiPjwvaT5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIiBodG1sRm9yPVwiaWRfcm9sXCI+IHt7Z2V0Tm9tYnJlUm9sKCl9fTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHAtdGFibGUgW3ZhbHVlXT1cImZpbHRyb2xSb2xlc0NvbmV4aW9uRW1wcmVzYVwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbcGFnaW5hdG9yXT1cImxpc3RSb2xlcy5sZW5ndGggPiAxMFwiIFtyb3dzXT1cIjEwXCJcbiAgICAgICAgWyhzZWxlY3Rpb24pXT1cInJvbFNlbGVjY2lvbmFkb1wiIGRhdGFLZXk9XCJsbGF2ZVRhYmxhXCIgKG9uUm93U2VsZWN0KT1cInZlckFjdGlvbigpXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiPlxuICAgICAgICA8IS0tIGhlYWRlciBkZSBsYSB0YWJsYSBkZSBzZWxlY2Npb24gcm9sIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJnZXROb21icmVFbXByZXNhKCkgID09IG51bGxcIj5Ob21icmUgRW1wcmVzYTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZ2V0Tm9tYnJlQ29uZXhpb24oKSAgPT0gbnVsbFwiPkNvbmV4acOzbjwvdGg+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZ2V0Tm9tYnJlUm9sKCkgID09IG51bGxcIj5Sb2w8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBjdWVycG8gZGUgbGEgdGFibGEgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvbCBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICAgICAgICAgICAgPHRyIFtwU2VsZWN0YWJsZVJvd109XCJyb2xcIj5cbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJnZXROb21icmVFbXByZXNhKCkgPT0gbnVsbFwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxuICAgICAgICAgICAgICAgICAgICB7e3JvbC5ub21icmVFbXByZXNhfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImdldE5vbWJyZUNvbmV4aW9uKCkgID09IG51bGxcIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sLm5vbWJyZUNvbmV4aW9ufX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImdldE5vbWJyZVJvbCgpICA9PSBudWxsXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJvbC5ub21icmVSb2wgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG48L3AtZGlhbG9nPiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWNjaW9uLXJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3B1YmxpY28vcGFnZXMvc2VsZWNjaW9uLXJvbC9zZWxlY2Npb24tcm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcHVibGljby9wYWdlcy9zZWxlY2Npb24tcm9sL3NlbGVjY2lvbi1yb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtFQUErRSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBUzVILE1BQU0sT0FBTyxxQkFBcUI7SUFpQnRCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXJCRCxPQUFPLENBQVU7SUFDakIsZ0JBQWdCLENBQVM7SUFDeEIsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFeEMsU0FBUyxDQUFhO0lBQ3RCLGVBQWUsQ0FBVztJQUMxQixnQkFBZ0IsQ0FBTTtJQUN0QixvQkFBb0IsQ0FBYTtJQUNqQywyQkFBMkIsQ0FBYTtJQUN4QyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN6QixhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxQixlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1QixpQkFBaUIsR0FBVyxJQUFJLENBQUM7SUFDakMsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUU3QixZQUNVLE1BQWMsRUFDZCxjQUE4QixFQUM5QixhQUE0QixFQUM1QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixvQkFBdUQ7UUFMdkQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW1DO0lBQzdELENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxFQUFFLFdBQVc7UUFFbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFFNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUUvQixLQUFLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN0QyxDQUFDLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQyxjQUFjO2dCQUN2QyxDQUFDLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQyxjQUFjO2dCQUN2QyxDQUFDLENBQUMsYUFBYSxLQUFLLEdBQUcsQ0FBQyxhQUFhO2dCQUNyQyxDQUFDLENBQUMsYUFBYSxLQUFLLEdBQUcsQ0FBQyxhQUFhO2dCQUNyQyxDQUFDLENBQUMsYUFBYSxLQUFLLEdBQUcsQ0FBQyxhQUFhO2dCQUNyQyxDQUFDLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxRQUFRO2dCQUMzQixDQUFDLENBQUMsU0FBUyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25FLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ3BELENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1RSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDckQsQ0FBQztJQUVELG1CQUFtQjtRQUVqQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDeEUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM5RSxHQUFHLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQy9FLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUMzRSxDQUFDO1FBQ0osQ0FBQztJQUVILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDekIsa0JBQWtCLEVBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUNyQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyRTs7O2dKQUdvSTtZQUNwSSxNQUFNLEtBQUssR0FBSSxJQUFZLEVBQUUsS0FBZSxDQUFDO1lBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRyxJQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUM5Riw4RkFBOEY7WUFDOUYsOEZBQThGO1lBQzlGLElBQUksTUFBTSxHQUFtQixJQUFZLENBQUMsWUFBWSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3ZELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxPQUFPLEdBQW1CLEVBQUUsQ0FBQztZQUNqQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QixJQUFJLE1BQU0sR0FBaUI7b0JBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7aUJBQ3hCLENBQUE7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUN0QixDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pILElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNuRyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxhQUFhLEdBQUksSUFBWSxFQUFFLGFBQWEsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNuQixhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDbkMsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNuRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7WUFDdkIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7dUdBdkpVLHFCQUFxQjsyRkFBckIscUJBQXFCLHNMQ3ZCbEMsazVHQWdFVyxvMkJEOUNHLFlBQVksODBCQUFFLFdBQVcsOG1CQUFFLFlBQVksaU1BQUUsV0FBVyxnbUVBQUUsMkJBQTJCOzsyRkFLbEYscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLG1CQUFtQixXQUNsQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxjQUNqRixJQUFJO3lPQUtULE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSb2xNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JvbE1vZGVsJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3Mvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvY2FyZ2FyLWNvbnRyb2wtZnVuY2lvbmFsaWRhZC5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZHVsb3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL01vZHVsb3NNb2RlbCc7XG5pbXBvcnQgeyBUYXJlYXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1RhcmVhc01vZGVsJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRlbXBsYXRlVGFibGFWYWNpYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvdGVtcGxhdGUtdGFibGEtdmFjaWEvdGVtcGxhdGUtdGFibGEtdmFjaWEuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlbGVjY2lvbi1yb2wnLFxuICAgIGltcG9ydHM6IFtEaWFsb2dNb2R1bGUsIEZvcm1zTW9kdWxlLCBDb21tb25Nb2R1bGUsIFRhYmxlTW9kdWxlLCBUZW1wbGF0ZVRhYmxhVmFjaWFDb21wb25lbnQsXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY2Npb24tcm9sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWNjaW9uLXJvbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY2Npb25Sb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBtb3N0cmFyOiBib29sZWFuO1xuICBASW5wdXQoKSBjb2RpZ29BcGxpY2FjaW9uOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSByZWdyZXNhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBsaXN0Um9sZXM6IFJvbE1vZGVsW107XG4gIHJvbFNlbGVjY2lvbmFkbzogUm9sTW9kZWw7XG4gIHJvd0dyb3VwTWV0YWRhdGE6IGFueTtcbiAgcm9sZXNDb25leGlvbkVtcHJlc2E6IFJvbE1vZGVsW107XG4gIGZpbHRyb2xSb2xlc0NvbmV4aW9uRW1wcmVzYTogUm9sTW9kZWxbXTtcbiAgbGlzdGFFbXByZXNhID0gbmV3IE1hcCgpO1xuICBsaXN0YVBlcmZpbGVzID0gbmV3IE1hcCgpO1xuICBsaXN0YUNvbmV4aW9uZXMgPSBuZXcgTWFwKCk7XG4gIHBhcmFtZXRyb0J1c3F1ZWRhOiBzdHJpbmcgPSBudWxsO1xuICBhZG1vblBvcnRhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sRnVuY2lvbmFsaWRhZDogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJhbWV0cm9CdXNxdWVkYSA9ICcnO1xuICAgIHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2EgPSBbXTtcbiAgICB0aGlzLmxpc3RSb2xlcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGNhcmdhcihsaXN0YVJvbGVzLCBhZG1vblBvcnRhbCkge1xuXG4gICAgdGhpcy5yb2xTZWxlY2Npb25hZG8gPSBudWxsO1xuICAgIHRoaXMuYWRtb25Qb3J0YWwgPSBhZG1vblBvcnRhbDtcblxuICAgIHRoaXMubGlzdFJvbGVzID0gbGlzdGFSb2xlcztcblxuICAgIHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2EgPSBbXTtcblxuICAgIGZvciAobGV0IHJvbCBvZiB0aGlzLmxpc3RSb2xlcykge1xuXG4gICAgICBpZiAoIXRoaXMucm9sZXNDb25leGlvbkVtcHJlc2Euc29tZShyID0+XG4gICAgICAgIHIuY29kaWdvQ29uZXhpb24gPT09IHJvbC5jb2RpZ29Db25leGlvbiAmJlxuICAgICAgICByLm5vbWJyZUNvbmV4aW9uID09PSByb2wubm9tYnJlQ29uZXhpb24gJiZcbiAgICAgICAgci5jb2RpZ29FbXByZXNhID09PSByb2wuY29kaWdvRW1wcmVzYSAmJlxuICAgICAgICByLm5vbWJyZUVtcHJlc2EgPT09IHJvbC5ub21icmVFbXByZXNhICYmXG4gICAgICAgIHIubnVtZXJvRW1wcmVzYSA9PT0gcm9sLm51bWVyb0VtcHJlc2EgJiZcbiAgICAgICAgci5sbGF2ZVJvbCA9PT0gcm9sLmxsYXZlUm9sICYmXG4gICAgICAgIHIubm9tYnJlUm9sID09PSByb2wubm9tYnJlUm9sKSkge1xuICAgICAgICB0aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhLnB1c2gocm9sKTtcbiAgICAgICAgdGhpcy5saXN0YUVtcHJlc2Euc2V0KHJvbC5jb2RpZ29FbXByZXNhLCByb2wubm9tYnJlRW1wcmVzYSk7XG4gICAgICAgIHRoaXMubGlzdGFQZXJmaWxlcy5zZXQocm9sLmxsYXZlUm9sLCByb2wubm9tYnJlUm9sKTtcbiAgICAgICAgdGhpcy5saXN0YUNvbmV4aW9uZXMuc2V0KHJvbC5jb2RpZ29Db25leGlvbiwgcm9sLm5vbWJyZUNvbmV4aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbHRyb2xSb2xlc0NvbmV4aW9uRW1wcmVzYSA9IFsuLi50aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROb21icmVSb2woKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubGlzdGFQZXJmaWxlcy5zaXplID4gMSB8fCB0aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhWzBdLm5vbWJyZVJvbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXROb21icmVFbXByZXNhKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmxpc3RhRW1wcmVzYS5zaXplID4gMSB8fCB0aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJvbGVzQ29uZXhpb25FbXByZXNhWzBdLm5vbWJyZUVtcHJlc2E7XG4gIH1cblxuICBwdWJsaWMgZ2V0Tm9tYnJlQ29uZXhpb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubGlzdGFDb25leGlvbmVzLnNpemUgPiAxIHx8IHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2EubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucm9sZXNDb25leGlvbkVtcHJlc2FbMF0ubm9tYnJlQ29uZXhpb247XG4gIH1cblxuICBjYXJnYXJMaXN0YWRvRmlsdHJvKCkge1xuXG4gICAgaWYgKHRoaXMucGFyYW1ldHJvQnVzcXVlZGEudHJpbSgpID09PSAnJykge1xuICAgICAgdGhpcy5maWx0cm9sUm9sZXNDb25leGlvbkVtcHJlc2EgPSBbLi4udGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdHJvbFJvbGVzQ29uZXhpb25FbXByZXNhID0gdGhpcy5yb2xlc0NvbmV4aW9uRW1wcmVzYS5maWx0ZXIocm9sID0+XG4gICAgICAgIHJvbC5ub21icmVFbXByZXNhLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5wYXJhbWV0cm9CdXNxdWVkYS50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICByb2wubm9tYnJlQ29uZXhpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnBhcmFtZXRyb0J1c3F1ZWRhLnRvTG93ZXJDYXNlKCkpIHx8XG4gICAgICAgIHJvbC5ub21icmVSb2wudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnBhcmFtZXRyb0J1c3F1ZWRhLnRvTG93ZXJDYXNlKCkpXG4gICAgICApO1xuICAgIH1cblxuICB9XG5cbiAgdmVyQWN0aW9uKCkge1xuICAgIHZhciB1cmxhcGludWNsZW8gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCd1cmxudWNsZW8nKVxuICAgIHRoaXMucm9sU2VsZWNjaW9uYWRvLmFkbW9uUG9ydGFsID0gdGhpcy5hZG1vblBvcnRhbFxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShcbiAgICAgICdyb2xfc2VsZWNjaW9uYWRvJyxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucm9sU2VsZWNjaW9uYWRvKVxuICAgICk7XG4gICAgdGhpcy5yb2xTZWxlY2Npb25hZG8uYXBsaWNhY2lvbiA9IHRoaXMuY29kaWdvQXBsaWNhY2lvbjtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFJvbFNlbGVjY2lvbmFkbyh0aGlzLnJvbFNlbGVjY2lvbmFkbyk7XG4gICAgdGhpcy5hdXRoU2VydmljZS5zZWxlY2Npb25Sb2wodGhpcy5yb2xTZWxlY2Npb25hZG8pLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgLypsZXQgcm9sOiBhbnkgPSB7fVxuICAgICAgICByb2wuY29kaWdvUm9sID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnbGxhdmVSb2wnKTtcbiAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhclRva2VuUHVibGljbygpLnN1YnNjcmliZShkYXRhMiA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbEZ1bmNpb25hbGlkYWQuY2FyZ2FyRnVuY2lvbmFsaWRhZChyb2wsIGAke3VybGFwaW51Y2xlb30vYXV0aGVudGljYXRpb24vZnVuY2lvbmFsaWRhZGVzYCwgZGF0YTIudG9rZW4pLnN1YnNjcmliZSh7fSk7Ki9cbiAgICAgIGNvbnN0IHRva2VuID0gKGRhdGEgYXMgYW55KT8udG9rZW4gYXMgc3RyaW5nO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCd0b2tlbicsIHRva2VuKTtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnY29udHJvbEZ1bmNpb25hbGlkYWRlcycsIChkYXRhIGFzIGFueSkuY29udHJvbGVzZnVuY2lvbmFsaWRhZGVzKTtcbiAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAgIC8qIENvZGlnbyB0ZW1wb3JhbCBwYXJhIG1hbnRlbmVyIGxhcyB0YXJlYXMsIHBlcm8gZXN0YXMgZGViZW4gc2VyIG9idGVuaWRhcyBwb3IgdW4gc2VydmljaW8gKi9cbiAgICAgIHZhciB0YXJlYXM6IFRhcmVhc01vZGVsW10gPSAoZGF0YSBhcyBhbnkpLnRhcmVhc21vZHVsbztcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnX190YXJlYXMnLCBKU09OLnN0cmluZ2lmeSh0YXJlYXMpKTtcbiAgICAgIHZhciBtb2R1bG9zRGVUYXJlYXMgPSB0YXJlYXMuZmlsdGVyKChvYmosIGluZGV4LCBzZWxmKSA9PiB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKG8pID0+IG8ubW9kdWxvID09PSBvYmoubW9kdWxvKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIG1vZHVsb3M6IE1vZHVsb3NNb2RlbFtdID0gW107XG4gICAgICBtb2R1bG9zRGVUYXJlYXMuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgbGV0IG1vZHVsbzogTW9kdWxvc01vZGVsID0ge1xuICAgICAgICAgIGxsYXZlOiBkYXRhLm1vZHVsbyxcbiAgICAgICAgICBkZXNjcmlwY2lvbjogZGF0YS5ub21icmVNb2R1bG8sXG4gICAgICAgICAgaWNvbm86IGRhdGEuaWNvbm9Nb2R1bG9cbiAgICAgICAgfVxuICAgICAgICBtb2R1bG9zLnB1c2gobW9kdWxvKVxuICAgICAgfSlcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnbW9kdWxvcycsIEpTT04uc3RyaW5naWZ5KG1vZHVsb3MpKTtcbiAgICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ21vZHVsb0Zhdm9yaXRvJykgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ21vZHVsb0Zhdm9yaXRvJykpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdtb2R1bG9TZWxlY2Npb25hZG8nLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ21vZHVsb0Zhdm9yaXRvJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1vZHVsb2RlZmVjdG8gPSAoZGF0YSBhcyBhbnkpPy5tb2R1bG9kZWZlY3RvO1xuICAgICAgICBpZiAoIW1vZHVsb2RlZmVjdG8pIHtcbiAgICAgICAgICBtb2R1bG9kZWZlY3RvID0gbW9kdWxvc1swXS5sbGF2ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ21vZHVsb1NlbGVjY2lvbmFkbycsIG1vZHVsb2RlZmVjdG8pO1xuICAgICAgfVxuICAgICAgdGhpcy5yZWdyZXNhclJlZ2lzdHJvKClcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi50b1N0cmluZygpLmluY2x1ZGVzKCdhZG1vblBvcnRhbCcpKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51dGlsc1NlcnZpY2Uub2J0ZW5lckJhc2UoKSArICcvYWRtb25Qb3J0YWwvaW5pY2lvJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudXRpbHNTZXJ2aWNlLm9idGVuZXJCYXNlKCkgKyAnL2luaWNpbycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICByZWdyZXNhclJlZ2lzdHJvKCkge1xuICAgIHRoaXMubW9zdHJhciA9IGZhbHNlO1xuICAgIHRoaXMucmVncmVzYXIuZW1pdCgpO1xuICB9XG5cbn0iLCI8cC1kaWFsb2cgaWQ9J3BvcHVwU2VsZWNjaW9uUGxhbnRpbGxhJyBoZWFkZXI9XCJQZXJmaWxcIiBbKHZpc2libGUpXT1cIm1vc3RyYXJcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgIChvbkhpZGUpPVwicmVncmVzYXJSZWdpc3RybygpXCIgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInsnbWluLXdpZHRoJzonMjB2dyd9XCJcbiAgICBbbW9kYWxdPVwidHJ1ZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIj5cblxuICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnQgbWItMyB3LWZ1bGxcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cIiB3LWZ1bGwgcC1pbnB1dHRleHRcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm9CdXNxdWVkYVwiIChrZXl1cC5lbnRlcik9XCJjYXJnYXJMaXN0YWRvRmlsdHJvKClcIiAvPlxuICAgIDwvc3Bhbj5cblxuICAgIDwhLS0gQ29udGVuaWRvIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IG1iLTNcIj5cbiAgICAgICAgPCEtLUVtcHJlc2EgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtci00XCIgcFRvb2x0aXA9XCJFbXByZXNhXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZ2V0Tm9tYnJlRW1wcmVzYSgpICE9IG51bGxcIj5cbiAgICAgICAgICAgIDxpIHN0eWxlPVwiZm9udC1zaXplOiAxLjJyZW0gIWltcG9ydGFudFwiIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJ1aWxkaW5nIGNvbG9yLTQwMFwiPjwvaT5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIiBodG1sRm9yPVwiaWRfZW1wcmVzYVwiPiB7e2dldE5vbWJyZUVtcHJlc2EoKSB8IHVwcGVyY2FzZX19PC9sYWJlbD5cbiAgICAgICAgICAgIDwhLS0gPGxhYmVsIGh0bWxGb3I9XCJlbXByZXNhXCI+e3snZW1wcmVzYScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLUNvbmV4aW9uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItNFwiIHBUb29sdGlwPVwiQ29uZXhpw7NuXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZ2V0Tm9tYnJlQ29uZXhpb24oKSAhPSBudWxsXCI+XG4gICAgICAgICAgICA8aSBzdHlsZT1cImZvbnQtc2l6ZTogMS4ycmVtICFpbXBvcnRhbnRcIiBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rIGNvbG9yLTQwMCBmb250LXNlbWlib2xkXCI+PC9pPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiIGh0bWxGb3I9XCJpZF9yb2xcIj4ge3tnZXROb21icmVDb25leGlvbigpIHwgdXBwZXJjYXNlfX08L2xhYmVsPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tUm9sIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBwVG9vbHRpcD1cIlJvbFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiICpuZ0lmPVwiZ2V0Tm9tYnJlUm9sKCkgIT0gbnVsbFwiPlxuICAgICAgICAgICAgPGkgc3R5bGU9XCJmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50XCIgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtdXNlciBjb2xvci00MDBcIj48L2k+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb250LXNlbWlib2xkXCIgaHRtbEZvcj1cImlkX3JvbFwiPiB7e2dldE5vbWJyZVJvbCgpfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJmaWx0cm9sUm9sZXNDb25leGlvbkVtcHJlc2FcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgW3BhZ2luYXRvcl09XCJsaXN0Um9sZXMubGVuZ3RoID4gMTBcIiBbcm93c109XCIxMFwiXG4gICAgICAgIFsoc2VsZWN0aW9uKV09XCJyb2xTZWxlY2Npb25hZG9cIiBkYXRhS2V5PVwibGxhdmVUYWJsYVwiIChvblJvd1NlbGVjdCk9XCJ2ZXJBY3Rpb24oKVwiIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIj5cbiAgICAgICAgPCEtLSBoZWFkZXIgZGUgbGEgdGFibGEgZGUgc2VsZWNjaW9uIHJvbCAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZ2V0Tm9tYnJlRW1wcmVzYSgpICA9PSBudWxsXCI+Tm9tYnJlIEVtcHJlc2E8L3RoPlxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImdldE5vbWJyZUNvbmV4aW9uKCkgID09IG51bGxcIj5Db25leGnDs248L3RoPlxuICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cImdldE5vbWJyZVJvbCgpICA9PSBudWxsXCI+Um9sPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwhLS0gY3VlcnBvIGRlIGxhIHRhYmxhIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yb2wgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cbiAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwicm9sXCI+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZ2V0Tm9tYnJlRW1wcmVzYSgpID09IG51bGxcIiBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAge3tyb2wubm9tYnJlRW1wcmVzYX19XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJnZXROb21icmVDb25leGlvbigpICA9PSBudWxsXCIgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJvbC5ub21icmVDb25leGlvbn19XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJnZXROb21icmVSb2woKSAgPT0gbnVsbFwiIHN0eWxlPVwibWluLXdpZHRoOiAyMDBweFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyByb2wubm9tYnJlUm9sIH19XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPiBcbiAgICAgICAgICAgICAgICAgICAgPGFwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT48L2FwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG48L3AtZGlhbG9nPiJdfQ==
@@ -10,6 +10,7 @@ import { ButtonModule } from 'primeng/button';
10
10
  import { DropdownModule } from 'primeng/dropdown';
11
11
  import { ConfirmPopupModule } from 'primeng/confirmpopup';
12
12
  import { TableModule } from 'primeng/table';
13
+ import { TemplateTablaVaciaComponent } from '../../../../core/componentes/template-tabla-vacia/template-tabla-vacia.component';
13
14
  import { InputTextModule } from 'primeng/inputtext';
14
15
  import { InputTextareaModule } from 'primeng/inputtextarea';
15
16
  import * as i0 from "@angular/core";
@@ -176,12 +177,12 @@ export class DetalleCampoReporteComponent {
176
177
  return this.reporteFuente.origenFuente == tipo;
177
178
  }
178
179
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DetalleCampoReporteComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ToastService }, { token: i3.GeneralService }, { token: i4.ConfirmationService }, { token: i5.EjecucionReporteService }, { token: i6.GeneralPipe }, { token: i7.TranslateService }, { token: i8.ReporteFuentePipe }], target: i0.ɵɵFactoryTarget.Component });
179
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DetalleCampoReporteComponent, isStandalone: true, selector: "detalle-campo-reporte", inputs: { reporteFuente: "reporteFuente" }, providers: [ConfirmationService, MessageService], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex justify-content-between align-items-center mb-3\">\n <h1 class=\"text-xl mb-1\">{{'campo' | translate}}</h1>\n <div class=\"flex justify-content-end mb-3\" *ngIf=\"vistaVisualizar != 'detalle'\">\n <button pButton pRipple (click)=\"nuevaColumna()\" label=\"{{'link_nuevo' | translate}}\"\n icon=\"pi pi-plus\" class=\"p-button-secondary font-semibold flex-shrink-0 ml-4 mr-2\"></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_importar' | translate}}\" *ngIf=\"isFuente()\"\n (click)=\"importar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_generar' | translate}}\" *ngIf=\"isSql()\"\n (click)=\"generar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n </div>\n <div class=\"flex justify-content-end mb-1\" *ngIf=\"vistaVisualizar =='detalle'\">\n <button pButton pRipple (click)=\"vistaVisualizar = null\" label= \"{{'listado' | translate}} {{'campo' | translate}}\" \n icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 \"></button>\n </div>\n</div>\n\n<p-table [value]=\"listaColumna\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\" dataKey=\"llave\"\n [showCurrentPageReport]=\"true\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"vistaVisualizar != 'detalle'\"\n (onRowSelect)=\"verAction($event)\" (onRowUnselect)=\"verAction($event)\" [rows]=\"paginador.rows\" [totalRecords]=\"paginador.totalRecords\" [paginator]=\"paginador.totalRecords > paginador.rows\"\n [lazy]=\"true\" (onLazyLoad)=\"cargarListaColumna($event)\">\n <ng-template pTemplate=\"header\">\n \n <tr class=\"fondoTablaPincipal\">\n <th>{{'nombre' | translate}} </th>\n <th>{{'sintaxis' | translate}} </th>\n <th>{{'tipo' | translate}} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-campo>\n <tr [pSelectableRow]=\"campo\">\n <td>{{campo.nombre}}</td>\n <td>{{campo.sintaxis}}</td>\n <td>{{campo.tipoDato | reporteFuentePipe : 'listaTipoDatoColumna'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n</p-table>\n\n<div class=\"card mt-3\" *ngIf=\"vistaVisualizar == 'detalle'\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-notes\"></i>{{'detalle' | translate}}</h5>\n <div class=\"col-md-12\">\n <div class=\"Detallereporte mt-2\">\n <form [formGroup]=\"formReporteColumna\" #formulario=\"ngForm\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <span class=\"p-float-label\">\n <input pInputText id=\"nombre\" type=\"text\" formControlName=\"nombre\" size=\"40\">\n <label htmlFor=\"nombre\">{{'nombre' | translate}} *</label>\n </span>\n </span>\n </div>\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <p-dropdown [options]=\"listaTipoDato\" [autoDisplayFirst]=\"false\" formControlName=\"tipoDato\"\n optionLabel=\"nombre\" optionValue=\"codigo\"></p-dropdown>\n <label htmlFor=\"tipoDato\">{{'tipo' | translate}} *</label>\n </span>\n </div>\n <div class=\"field col-12 md:col-12\">\n <span class=\"p-float-label\">\n <textarea class=\"w-full min-h-150 max-h-200\" pInputTextarea formControlName=\"sintaxis\"></textarea>\n <label htmlFor=\"sintaxis\">{{'sintaxis' | translate}} *</label>\n </span>\n </div>\n \n </div>\n <!--BOTONES-->\n <div class=\"flex justify-content-end mb-3\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\" (click)=\"actualizar()\"\n icon=\"glyphicons {{reporteColumna.llaveTabla ? 'glyphicons-refresh' : 'glyphicons-floppy-save' }}\" \n label=\"{{reporteColumna.llaveTabla ? ('link_actualizar' | translate) : ('link_guardar' | translate)}}\" >\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\" *ngIf=\"reporteColumna.llaveTabla\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminar($event)\">\n </button>\n </div>\n </form>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i10.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i11.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "pipe", type: ReporteFuentePipe, name: "reporteFuentePipe" }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i12.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i13.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i14.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: InputTextareaModule }, { kind: "directive", type: i15.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }] });
180
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DetalleCampoReporteComponent, isStandalone: true, selector: "detalle-campo-reporte", inputs: { reporteFuente: "reporteFuente" }, providers: [ConfirmationService, MessageService], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex justify-content-between align-items-center mb-3\">\n <h1 class=\"text-xl mb-1\">{{'campo' | translate}}</h1>\n <div class=\"flex justify-content-end mb-3\" *ngIf=\"vistaVisualizar != 'detalle'\">\n <button pButton pRipple (click)=\"nuevaColumna()\" label=\"{{'link_nuevo' | translate}}\"\n icon=\"pi pi-plus\" class=\"p-button-secondary font-semibold flex-shrink-0 ml-4 mr-2\"></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_importar' | translate}}\" *ngIf=\"isFuente()\"\n (click)=\"importar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_generar' | translate}}\" *ngIf=\"isSql()\"\n (click)=\"generar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n </div>\n <div class=\"flex justify-content-end mb-1\" *ngIf=\"vistaVisualizar =='detalle'\">\n <button pButton pRipple (click)=\"vistaVisualizar = null\" label= \"{{'listado' | translate}} {{'campo' | translate}}\" \n icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 \"></button>\n </div>\n</div>\n\n<p-table [value]=\"listaColumna\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\" dataKey=\"llave\"\n [showCurrentPageReport]=\"true\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"vistaVisualizar != 'detalle'\"\n (onRowSelect)=\"verAction($event)\" (onRowUnselect)=\"verAction($event)\" [rows]=\"paginador.rows\" [totalRecords]=\"paginador.totalRecords\" [paginator]=\"paginador.totalRecords > paginador.rows\"\n [lazy]=\"true\" (onLazyLoad)=\"cargarListaColumna($event)\">\n <ng-template pTemplate=\"header\">\n \n <tr class=\"fondoTablaPincipal\">\n <th>{{'nombre' | translate}} </th>\n <th>{{'sintaxis' | translate}} </th>\n <th>{{'tipo' | translate}} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-campo>\n <tr [pSelectableRow]=\"campo\">\n <td>{{campo.nombre}}</td>\n <td>{{campo.sintaxis}}</td>\n <td>{{campo.tipoDato | reporteFuentePipe : 'listaTipoDatoColumna'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template></p-table>\n\n<div class=\"card mt-3\" *ngIf=\"vistaVisualizar == 'detalle'\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-notes\"></i>{{'detalle' | translate}}</h5>\n <div class=\"col-md-12\">\n <div class=\"Detallereporte mt-2\">\n <form [formGroup]=\"formReporteColumna\" #formulario=\"ngForm\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <span class=\"p-float-label\">\n <input pInputText id=\"nombre\" type=\"text\" formControlName=\"nombre\" size=\"40\">\n <label htmlFor=\"nombre\">{{'nombre' | translate}} *</label>\n </span>\n </span>\n </div>\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <p-dropdown [options]=\"listaTipoDato\" [autoDisplayFirst]=\"false\" formControlName=\"tipoDato\"\n optionLabel=\"nombre\" optionValue=\"codigo\"></p-dropdown>\n <label htmlFor=\"tipoDato\">{{'tipo' | translate}} *</label>\n </span>\n </div>\n <div class=\"field col-12 md:col-12\">\n <span class=\"p-float-label\">\n <textarea class=\"w-full min-h-150 max-h-200\" pInputTextarea formControlName=\"sintaxis\"></textarea>\n <label htmlFor=\"sintaxis\">{{'sintaxis' | translate}} *</label>\n </span>\n </div>\n \n </div>\n <!--BOTONES-->\n <div class=\"flex justify-content-end mb-3\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\" (click)=\"actualizar()\"\n icon=\"glyphicons {{reporteColumna.llaveTabla ? 'glyphicons-refresh' : 'glyphicons-floppy-save' }}\" \n label=\"{{reporteColumna.llaveTabla ? ('link_actualizar' | translate) : ('link_guardar' | translate)}}\" >\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\" *ngIf=\"reporteColumna.llaveTabla\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminar($event)\">\n </button>\n </div>\n </form>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i10.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i11.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "pipe", type: ReporteFuentePipe, name: "reporteFuentePipe" }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i12.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i13.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "component", type: TemplateTablaVaciaComponent, selector: "app-template-tabla-vacia" }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i14.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: InputTextareaModule }, { kind: "directive", type: i15.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }] });
180
181
  }
181
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DetalleCampoReporteComponent, decorators: [{
182
183
  type: Component,
183
- args: [{ selector: 'detalle-campo-reporte', imports: [TranslateModule, CommonModule, ButtonModule, FormsModule, ReactiveFormsModule, DropdownModule, ReporteFuentePipe, ConfirmPopupModule, TableModule, InputTextModule, InputTextareaModule], standalone: true, providers: [ConfirmationService, MessageService], template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex justify-content-between align-items-center mb-3\">\n <h1 class=\"text-xl mb-1\">{{'campo' | translate}}</h1>\n <div class=\"flex justify-content-end mb-3\" *ngIf=\"vistaVisualizar != 'detalle'\">\n <button pButton pRipple (click)=\"nuevaColumna()\" label=\"{{'link_nuevo' | translate}}\"\n icon=\"pi pi-plus\" class=\"p-button-secondary font-semibold flex-shrink-0 ml-4 mr-2\"></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_importar' | translate}}\" *ngIf=\"isFuente()\"\n (click)=\"importar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_generar' | translate}}\" *ngIf=\"isSql()\"\n (click)=\"generar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n </div>\n <div class=\"flex justify-content-end mb-1\" *ngIf=\"vistaVisualizar =='detalle'\">\n <button pButton pRipple (click)=\"vistaVisualizar = null\" label= \"{{'listado' | translate}} {{'campo' | translate}}\" \n icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 \"></button>\n </div>\n</div>\n\n<p-table [value]=\"listaColumna\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\" dataKey=\"llave\"\n [showCurrentPageReport]=\"true\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"vistaVisualizar != 'detalle'\"\n (onRowSelect)=\"verAction($event)\" (onRowUnselect)=\"verAction($event)\" [rows]=\"paginador.rows\" [totalRecords]=\"paginador.totalRecords\" [paginator]=\"paginador.totalRecords > paginador.rows\"\n [lazy]=\"true\" (onLazyLoad)=\"cargarListaColumna($event)\">\n <ng-template pTemplate=\"header\">\n \n <tr class=\"fondoTablaPincipal\">\n <th>{{'nombre' | translate}} </th>\n <th>{{'sintaxis' | translate}} </th>\n <th>{{'tipo' | translate}} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-campo>\n <tr [pSelectableRow]=\"campo\">\n <td>{{campo.nombre}}</td>\n <td>{{campo.sintaxis}}</td>\n <td>{{campo.tipoDato | reporteFuentePipe : 'listaTipoDatoColumna'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\" class=\"p-3 font-medium emptymessage\">{{'mensajetablavacia' | translate}}</td>\n </tr>\n </ng-template>\n</p-table>\n\n<div class=\"card mt-3\" *ngIf=\"vistaVisualizar == 'detalle'\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-notes\"></i>{{'detalle' | translate}}</h5>\n <div class=\"col-md-12\">\n <div class=\"Detallereporte mt-2\">\n <form [formGroup]=\"formReporteColumna\" #formulario=\"ngForm\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <span class=\"p-float-label\">\n <input pInputText id=\"nombre\" type=\"text\" formControlName=\"nombre\" size=\"40\">\n <label htmlFor=\"nombre\">{{'nombre' | translate}} *</label>\n </span>\n </span>\n </div>\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <p-dropdown [options]=\"listaTipoDato\" [autoDisplayFirst]=\"false\" formControlName=\"tipoDato\"\n optionLabel=\"nombre\" optionValue=\"codigo\"></p-dropdown>\n <label htmlFor=\"tipoDato\">{{'tipo' | translate}} *</label>\n </span>\n </div>\n <div class=\"field col-12 md:col-12\">\n <span class=\"p-float-label\">\n <textarea class=\"w-full min-h-150 max-h-200\" pInputTextarea formControlName=\"sintaxis\"></textarea>\n <label htmlFor=\"sintaxis\">{{'sintaxis' | translate}} *</label>\n </span>\n </div>\n \n </div>\n <!--BOTONES-->\n <div class=\"flex justify-content-end mb-3\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\" (click)=\"actualizar()\"\n icon=\"glyphicons {{reporteColumna.llaveTabla ? 'glyphicons-refresh' : 'glyphicons-floppy-save' }}\" \n label=\"{{reporteColumna.llaveTabla ? ('link_actualizar' | translate) : ('link_guardar' | translate)}}\" >\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\" *ngIf=\"reporteColumna.llaveTabla\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminar($event)\">\n </button>\n </div>\n </form>\n </div>\n </div>\n</div>" }]
184
+ args: [{ selector: 'detalle-campo-reporte', imports: [TranslateModule, CommonModule, ButtonModule, FormsModule, ReactiveFormsModule, DropdownModule, ReporteFuentePipe, ConfirmPopupModule, TableModule, TemplateTablaVaciaComponent, InputTextModule, InputTextareaModule], standalone: true, providers: [ConfirmationService, MessageService], template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex justify-content-between align-items-center mb-3\">\n <h1 class=\"text-xl mb-1\">{{'campo' | translate}}</h1>\n <div class=\"flex justify-content-end mb-3\" *ngIf=\"vistaVisualizar != 'detalle'\">\n <button pButton pRipple (click)=\"nuevaColumna()\" label=\"{{'link_nuevo' | translate}}\"\n icon=\"pi pi-plus\" class=\"p-button-secondary font-semibold flex-shrink-0 ml-4 mr-2\"></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_importar' | translate}}\" *ngIf=\"isFuente()\"\n (click)=\"importar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n <button pButton pRipple class=\"p-button p-button-outlined\" label=\"{{'link_generar' | translate}}\" *ngIf=\"isSql()\"\n (click)=\"generar()\"><i class=\"glyphicons glyphicons-restart\"></i></button>\n </div>\n <div class=\"flex justify-content-end mb-1\" *ngIf=\"vistaVisualizar =='detalle'\">\n <button pButton pRipple (click)=\"vistaVisualizar = null\" label= \"{{'listado' | translate}} {{'campo' | translate}}\" \n icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 \"></button>\n </div>\n</div>\n\n<p-table [value]=\"listaColumna\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\" dataKey=\"llave\"\n [showCurrentPageReport]=\"true\" currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\" *ngIf=\"vistaVisualizar != 'detalle'\"\n (onRowSelect)=\"verAction($event)\" (onRowUnselect)=\"verAction($event)\" [rows]=\"paginador.rows\" [totalRecords]=\"paginador.totalRecords\" [paginator]=\"paginador.totalRecords > paginador.rows\"\n [lazy]=\"true\" (onLazyLoad)=\"cargarListaColumna($event)\">\n <ng-template pTemplate=\"header\">\n \n <tr class=\"fondoTablaPincipal\">\n <th>{{'nombre' | translate}} </th>\n <th>{{'sintaxis' | translate}} </th>\n <th>{{'tipo' | translate}} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-campo>\n <tr [pSelectableRow]=\"campo\">\n <td>{{campo.nombre}}</td>\n <td>{{campo.sintaxis}}</td>\n <td>{{campo.tipoDato | reporteFuentePipe : 'listaTipoDatoColumna'}}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td colspan=\"100\"> \n <app-template-tabla-vacia></app-template-tabla-vacia>\n </td>\n </tr>\n </ng-template></p-table>\n\n<div class=\"card mt-3\" *ngIf=\"vistaVisualizar == 'detalle'\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-notes\"></i>{{'detalle' | translate}}</h5>\n <div class=\"col-md-12\">\n <div class=\"Detallereporte mt-2\">\n <form [formGroup]=\"formReporteColumna\" #formulario=\"ngForm\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <span class=\"p-float-label\">\n <input pInputText id=\"nombre\" type=\"text\" formControlName=\"nombre\" size=\"40\">\n <label htmlFor=\"nombre\">{{'nombre' | translate}} *</label>\n </span>\n </span>\n </div>\n <div class=\"field col-12 md:col-6\">\n <span class=\"p-float-label\">\n <p-dropdown [options]=\"listaTipoDato\" [autoDisplayFirst]=\"false\" formControlName=\"tipoDato\"\n optionLabel=\"nombre\" optionValue=\"codigo\"></p-dropdown>\n <label htmlFor=\"tipoDato\">{{'tipo' | translate}} *</label>\n </span>\n </div>\n <div class=\"field col-12 md:col-12\">\n <span class=\"p-float-label\">\n <textarea class=\"w-full min-h-150 max-h-200\" pInputTextarea formControlName=\"sintaxis\"></textarea>\n <label htmlFor=\"sintaxis\">{{'sintaxis' | translate}} *</label>\n </span>\n </div>\n \n </div>\n <!--BOTONES-->\n <div class=\"flex justify-content-end mb-3\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\" (click)=\"actualizar()\"\n icon=\"glyphicons {{reporteColumna.llaveTabla ? 'glyphicons-refresh' : 'glyphicons-floppy-save' }}\" \n label=\"{{reporteColumna.llaveTabla ? ('link_actualizar' | translate) : ('link_guardar' | translate)}}\" >\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\" *ngIf=\"reporteColumna.llaveTabla\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminar($event)\">\n </button>\n </div>\n </form>\n </div>\n </div>\n</div>" }]
184
185
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ToastService }, { type: i3.GeneralService }, { type: i4.ConfirmationService }, { type: i5.EjecucionReporteService }, { type: i6.GeneralPipe }, { type: i7.TranslateService }, { type: i8.ReporteFuentePipe }], propDecorators: { reporteFuente: [{
185
186
  type: Input
186
187
  }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWxsZS1jYW1wby1yZXBvcnRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2VqZWN1Y2lvbi1yZXBvcnRlL2RldGFsbGUtY2FtcG8tcmVwb3J0ZS9kZXRhbGxlLWNhbXBvLXJlcG9ydGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC93ZWJjb21tb24vcGFnZXMvZWplY3VjaW9uLXJlcG9ydGUvZGV0YWxsZS1jYW1wby1yZXBvcnRlL2RldGFsbGUtY2FtcG8tcmVwb3J0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8s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aUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBVztRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztJQUNqRCxDQUFDO3VHQTVKVSw0QkFBNEI7MkZBQTVCLDRCQUE0QixnSEFGNUIsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsMEJDMUJsRCx1cEtBc0ZNLHlERGhFUSxlQUFlLDJGQUFFLFlBQVksa0lBQUUsWUFBWSxvVkFBRSxXQUFXLDJwQkFBRSxtQkFBbUIsK1VBQUUsY0FBYyx3cUNBQUUsaUJBQWlCLHlEQUFFLGtCQUFrQiwwUEFBRSxXQUFXLCtsRUFBRSxlQUFlLHlIQUFFLG1CQUFtQjs7MkZBTXhMLDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDRSx1QkFBdUIsV0FDdEIsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsY0FDdEwsSUFBSSxhQUdQLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDO3lTQUtoQyxhQUFhO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2dlbmVyYWwucGlwZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0dlbmVyYWxNb2RlbCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvcmVwb3J0ZS1mdWVudGUucGlwZSc7XG5pbXBvcnQgeyBFamVjdWNpb25SZXBvcnRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VqZWN1Y2lvbnJlcG9ydGUuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJlcG9ydGVGdWVudGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVGdWVudGVNb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRlQ29sdW1uYU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZUNvbHVtbmEnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBJbnB1dFRleHRhcmVhTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHRhcmVhJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGV0YWxsZS1jYW1wby1yZXBvcnRlJyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBDb21tb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIERyb3Bkb3duTW9kdWxlLCBSZXBvcnRlRnVlbnRlUGlwZSwgQ29uZmlybVBvcHVwTW9kdWxlLCBUYWJsZU1vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBJbnB1dFRleHRhcmVhTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kZXRhbGxlLWNhbXBvLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZXRhbGxlLWNhbXBvLXJlcG9ydGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERldGFsbGVDYW1wb1JlcG9ydGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBsaXN0YUNvbHVtbmE6IFJlcG9ydGVDb2x1bW5hTW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgcmVwb3J0ZUZ1ZW50ZTogUmVwb3J0ZUZ1ZW50ZU1vZGVsO1xuICBcbiAgcHVibGljIHJlcG9ydGVDb2x1bW5hOiBSZXBvcnRlQ29sdW1uYU1vZGVsO1xuICBwdWJsaWMgZm9ybVJlcG9ydGVDb2x1bW5hOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB2aXN0YVZpc3VhbGl6YXI6IHN0cmluZztcbiAgcHVibGljIG51ZXZvOiBib29sZWFuO1xuICBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuO1xuICBpdGVtczogKHsgbGFiZWw6IHN0cmluZzsgaWNvbjogc3RyaW5nOyBjb21tYW5kOiAoKSA9PiB2b2lkOyB1cmw/OiB1bmRlZmluZWQ7IHNlcGFyYXRvcj86IHVuZGVmaW5lZDsgcm91dGVyTGluaz86IHVuZGVmaW5lZDsgfSB8IHsgbGFiZWw6IHN0cmluZzsgaWNvbjogc3RyaW5nOyB1cmw6IHN0cmluZzsgY29tbWFuZD86IHVuZGVmaW5lZDsgc2VwYXJhdG9yPzogdW5kZWZpbmVkOyByb3V0ZXJMaW5rPzogdW5kZWZpbmVkOyB9IHwgeyBzZXBhcmF0b3I6IGJvb2xlYW47IGxhYmVsPzogdW5kZWZpbmVkOyBpY29uPzogdW5kZWZpbmVkOyBjb21tYW5kPzogdW5kZWZpbmVkOyB1cmw/OiB1bmRlZmluZWQ7IHJvdXRlckxpbms/OiB1bmRlZmluZWQ7IH0gfCB7IGxhYmVsOiBzdHJpbmc7IGljb246IHN0cmluZzsgcm91dGVyTGluazogc3RyaW5nW107IGNvbW1hbmQ/OiB1bmRlZmluZWQ7IHVybD86IHVuZGVmaW5lZDsgc2VwYXJhdG9yPzogdW5kZWZpbmVkOyB9KVtdO1xuXG5cbiAgcGFnaW5hZG9yID0ge1xuICAgIHJvd3M6IDEwLFxuICAgIHRvdGFsUmVjb3JkczogMFxuICB9XG5cbiAgcHVibGljIGxpc3RhVGlwb0RhdG87XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25lc0J1c1NlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXBvcnRlU2VydmljZTogRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZ2VuZXJhbFBpcGU6IEdlbmVyYWxQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVwb3J0ZUZ1ZW50ZVBpcGU6IFJlcG9ydGVGdWVudGVQaXBlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RhVGlwb0RhdG8gPSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLlRJUE9TX0RBVE9fQ09MVU1OQTtcbiAgICB0aGlzLml0ZW1zID0gW11cbiAgICBpZiAodGhpcy5pc0Z1ZW50ZSgpKXtcbiAgICB0aGlzLml0ZW1zLnB1c2goXG4gICAgICB7bGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaW5rX2ltcG9ydGFyJyksICBpY29uOiAncGkgcGktcmVmcmVzaCcsIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmltcG9ydGFyKCk7XG4gICAgICB9fSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNTcWwpe1xuICAgICAgdGhpcy5pdGVtcy5wdXNoKFxuICAgICAgICB7bGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaW5rX2dlbmVyYXInKSwgIGljb246ICdwaSBwaS1yZWZyZXNoJywgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmFyKCk7XG4gICAgICAgIH19KVxuICAgIH1cbiAgfVxuXG4gIGNhcmdhckxpc3RhQ29sdW1uYShldmVudCl7XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnUmVwb3J0ZUNvbHVtbmFEVE8nLCBudWxsLCBmYWxzZSwge1xuICAgICAgcmVwb3J0ZUZ1ZW50ZTogdGhpcy5yZXBvcnRlRnVlbnRlLmxsYXZlLFxuICAgICAgcGFnaW5hY2lvblJlZ2lzdHJvSW5pY2lhbDogZXZlbnQuZmlyc3QsXG4gICAgICBwYWdpbmFjaW9uUmVnaXN0cm9GaW5hbDogZXZlbnQucm93c1xuICAgIH0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmxpc3RhQ29sdW1uYSA9IGRhdGE7XG4gICAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLmNhbnRpZGFkUmVnaXN0cm9zKG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVDb2x1bW5hRFRPJywgbnVsbCwgZmFsc2UsIHtyZXBvcnRlRnVlbnRlOiB0aGlzLnJlcG9ydGVGdWVudGUubGxhdmV9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnBhZ2luYWRvci50b3RhbFJlY29yZHMgPSBkYXRhO1xuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGNhcmdhckZvcm11bGFyaW8oKXtcbiAgICB0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgbm9tYnJlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5yZXBvcnRlQ29sdW1uYS5ub21icmUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBzaW50YXhpczogbmV3IEZvcm1Db250cm9sKHRoaXMucmVwb3J0ZUNvbHVtbmEuc2ludGF4aXMsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB0aXBvRGF0bzogbmV3IEZvcm1Db250cm9sKHRoaXMucmVwb3J0ZUNvbHVtbmEudGlwb0RhdG8sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBsbGF2ZVRhYmxhOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5yZXBvcnRlQ29sdW1uYS5sbGF2ZVRhYmxhKSxcbiAgICAgIHJlcG9ydGVGdWVudGU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLnJlcG9ydGVGdWVudGUubGxhdmUpXG4gICAgfSk7XG4gIH1cbiAgcHVibGljIHZlckFjdGlvbihldmVudCl7XG4gICAgdGhpcy5yZXBvcnRlQ29sdW1uYSA9IGV2ZW50LmRhdGE7XG4gICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZGV0YWxsZSc7XG4gICAgdGhpcy5udWV2byA9IGZhbHNlO1xuICAgIHRoaXMuY2FyZ2FyRm9ybXVsYXJpbygpO1xuICB9XG5cbiAgcHVibGljIG51ZXZhQ29sdW1uYSgpe1xuICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gJ2RldGFsbGUnO1xuICAgIHRoaXMubnVldm8gPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0ZUNvbHVtbmEgPSBuZXcgUmVwb3J0ZUNvbHVtbmFNb2RlbCgpO1xuICAgIHRoaXMuY2FyZ2FyRm9ybXVsYXJpbygpO1xuICB9XG5cbiAgcHVibGljIGFjdHVhbGl6YXIoKXtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYS52YWxpZCl7XG4gICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzQnVzU2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybVJlcG9ydGVDb2x1bW5hLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtUmVwb3J0ZUNvbHVtbmEuZ2V0KGtleSkuZXJyb3JzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYS5nZXQoa2V5KS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm51ZXZvKXtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuY3JlYXJSZWdpc3RybyhuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlQ29sdW1uYURUTycsIG51bGwsIGZhbHNlLCB0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYS52YWx1ZSkpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UudXBkYXRlKG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVDb2x1bW5hRFRPJywgbnVsbCwgZmFsc2UsIHRoaXMuZm9ybVJlcG9ydGVDb2x1bW5hLnZhbHVlKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jYXJnYXJMaXN0YUNvbHVtbmEoe2ZpcnN0OiAwLCByb3dzOiAxMH0pXG4gICAgdGhpcy5ub3RpZmljYWNpb25lc0J1c1NlcnZpY2Uuc2hvd1N1Y2Nlc3MoIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9BQ1RVQUxJWkFSKTtcbiAgfVxuXG4gIHB1YmxpYyBpbXBvcnRhcigpe1xuICAgIHRoaXMucmVwb3J0ZVNlcnZpY2UuY2FyZ2FyQ2FtcG9zKHRoaXMucmVwb3J0ZUZ1ZW50ZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5jYXJnYXJMaXN0YUNvbHVtbmEoe2ZpcnN0OiAwLCByb3dzOiAxMH0pXG4gICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzQnVzU2VydmljZS5zaG93SW5mbygnU2UgaW1wb3J0YXJvbiBsYXMgY29sdW1uYXMnKVxuICAgIH0pO1xuICB9XG5cblxuICBwdWJsaWMgZ2VuZXJhcigpe1xuICAgIHRoaXMucmVwb3J0ZVNlcnZpY2UuY29uc3RydWlyQ29sdW1uYXModGhpcy5yZXBvcnRlRnVlbnRlKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmNhcmdhckxpc3RhQ29sdW1uYSh7Zmlyc3Q6IDAsIHJvd3M6IDEwfSlcbiAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNCdXNTZXJ2aWNlLnNob3dJbmZvKCdTZSBnZW5lcmFyb24gbGFzIGNvbHVtbmFzJylcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbGltaW5hcihldmVudDogRXZlbnQpe1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgbWVzc2FnZTogIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9DT05GSVJNQVIsXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy5nZW5lcmFsUGlwZS5TSV9ERVNDLFxuICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29uZmlybWFyJyksXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgbGV0IGVudHJhZGFFbGltaW5hcjpSZXBvcnRlQ29sdW1uYU1vZGVsID0gdGhpcy5mb3JtUmVwb3J0ZUNvbHVtbmEudmFsdWU7XG4gICAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuZGVsZXRlKG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVDb2x1bW5hRFRPJywgbnVsbCwgZmFsc2UsIGVudHJhZGFFbGltaW5hcikpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICBpZiAoZGF0YSA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzQnVzU2VydmljZS5zaG93U3VjY2VzcyggdGhpcy5nZW5lcmFsUGlwZS5NRU5TQUpFX0VMSU1JTkFSKTtcbiAgICAgICAgICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYWNpb25lc0J1c1NlcnZpY2Uuc2hvd1N1Y2Nlc3MoIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9OTyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Zpam8oKTpib29sZWFue1xuICAgIHJldHVybiB0aGlzLmZpbHRyb09yaWdlbkZ1ZW50ZSh0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkZJSk8pO1xuICB9XG5cbiAgcHVibGljIGlzU3FsKCk6Ym9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5maWx0cm9PcmlnZW5GdWVudGUodGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5TUUwpO1xuICB9XG5cbiAgcHVibGljIGlzRnVlbnRlKCk6Ym9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5maWx0cm9PcmlnZW5GdWVudGUodGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5GVUVOVEUpO1xuICB9XG5cbiAgcHVibGljIGZpbHRyb09yaWdlbkZ1ZW50ZSh0aXBvOnN0cmluZyk6Ym9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlRnVlbnRlLm9yaWdlbkZ1ZW50ZSA9PSB0aXBvO1xuICB9XG5cblxuXG59XG4iLCI8cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD5cbjxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgPGgxIGNsYXNzPVwidGV4dC14bCBtYi0xXCI+e3snY2FtcG8nIHwgdHJhbnNsYXRlfX08L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItM1wiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyICE9ICdkZXRhbGxlJ1wiPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwibnVldmFDb2x1bW5hKClcIiBsYWJlbD1cInt7J2xpbmtfbnVldm8nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBmb250LXNlbWlib2xkIGZsZXgtc2hyaW5rLTAgbWwtNCBtci0yXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24gcC1idXR0b24tb3V0bGluZWRcIiBsYWJlbD1cInt7J2xpbmtfaW1wb3J0YXInIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cImlzRnVlbnRlKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydGFyKClcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1yZXN0YXJ0XCI+PC9pPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uIHAtYnV0dG9uLW91dGxpbmVkXCIgbGFiZWw9XCJ7eydsaW5rX2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cImlzU3FsKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXIoKVwiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLXJlc3RhcnRcIj48L2k+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCAgbWItMVwiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyID09J2RldGFsbGUnXCI+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJ2aXN0YVZpc3VhbGl6YXIgPSBudWxsXCIgbGFiZWw9IFwie3snbGlzdGFkbycgfCB0cmFuc2xhdGV9fSB7eydjYW1wbycgfCB0cmFuc2xhdGV9fVwiIFxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNoZXZyb24tbGVmdFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBmb250LXNlbWlib2xkIGZsZXgtc2hyaW5rLTAgXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhQ29sdW1uYVwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiIGRhdGFLZXk9XCJsbGF2ZVwiXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyICE9ICdkZXRhbGxlJ1wiXG4gICAgKG9uUm93U2VsZWN0KT1cInZlckFjdGlvbigkZXZlbnQpXCIgKG9uUm93VW5zZWxlY3QpPVwidmVyQWN0aW9uKCRldmVudClcIiBbcm93c109XCJwYWdpbmFkb3Iucm93c1wiIFt0b3RhbFJlY29yZHNdPVwicGFnaW5hZG9yLnRvdGFsUmVjb3Jkc1wiIFtwYWdpbmF0b3JdPVwicGFnaW5hZG9yLnRvdGFsUmVjb3JkcyA+IHBhZ2luYWRvci5yb3dzXCJcbiAgICBbbGF6eV09XCJ0cnVlXCIgKG9uTGF6eUxvYWQpPVwiY2FyZ2FyTGlzdGFDb2x1bW5hKCRldmVudClcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICBcbiAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICA8dGg+e3snbm9tYnJlJyB8IHRyYW5zbGF0ZX19IDwvdGg+XG4gICAgICAgICAgICA8dGg+e3snc2ludGF4aXMnIHwgdHJhbnNsYXRlfX0gPC90aD5cbiAgICAgICAgICAgIDx0aD57eyd0aXBvJyB8IHRyYW5zbGF0ZX19IDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0aD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWNhbXBvPlxuICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImNhbXBvXCI+XG4gICAgICAgICAgICA8dGQ+e3tjYW1wby5ub21icmV9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3tjYW1wby5zaW50YXhpc319PC90ZD5cbiAgICAgICAgICAgIDx0ZD57e2NhbXBvLnRpcG9EYXRvIHwgcmVwb3J0ZUZ1ZW50ZVBpcGUgOiAnbGlzdGFUaXBvRGF0b0NvbHVtbmEnfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9wLXRhYmxlPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBtdC0zXCIgKm5nSWY9XCJ2aXN0YVZpc3VhbGl6YXIgPT0gJ2RldGFsbGUnXCI+XG4gICAgPGg1IGNsYXNzPVwibXQtM1wiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLW5vdGVzXCI+PC9pPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX08L2g1PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIkRldGFsbGVyZXBvcnRlIG10LTJcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVJlcG9ydGVDb2x1bW5hXCIgI2Zvcm11bGFyaW89XCJuZ0Zvcm1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IGlkPVwibm9tYnJlXCIgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJub21icmVcIiBzaXplPVwiNDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJub21icmVcIj57eydub21icmUnIHwgdHJhbnNsYXRlfX0gKjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwibGlzdGFUaXBvRGF0b1wiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgZm9ybUNvbnRyb2xOYW1lPVwidGlwb0RhdG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cIm5vbWJyZVwiIG9wdGlvblZhbHVlPVwiY29kaWdvXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwidGlwb0RhdG9cIj57eyd0aXBvJyB8IHRyYW5zbGF0ZX19ICo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInctZnVsbCBtaW4taC0xNTAgbWF4LWgtMjAwXCIgIHBJbnB1dFRleHRhcmVhIGZvcm1Db250cm9sTmFtZT1cInNpbnRheGlzXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cInNpbnRheGlzXCI+e3snc2ludGF4aXMnIHwgdHJhbnNsYXRlfX0gKjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tQk9UT05FUy0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24gcC1idXR0b24tcmFpc2VkXCIgKGNsaWNrKT1cImFjdHVhbGl6YXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZ2x5cGhpY29ucyB7e3JlcG9ydGVDb2x1bW5hLmxsYXZlVGFibGEgPyAnZ2x5cGhpY29ucy1yZWZyZXNoJyA6ICdnbHlwaGljb25zLWZsb3BweS1zYXZlJyB9fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7e3JlcG9ydGVDb2x1bW5hLmxsYXZlVGFibGEgPyAoJ2xpbmtfYWN0dWFsaXphcicgfCB0cmFuc2xhdGUpIDogKCdsaW5rX2d1YXJkYXInIHwgdHJhbnNsYXRlKX19XCIgPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtbC0yIHAtYnV0dG9uLW91dGxpbmVkXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW5cIiAqbmdJZj1cInJlcG9ydGVDb2x1bW5hLmxsYXZlVGFibGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVsaW1pbmFyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWxsZS1jYW1wby1yZXBvcnRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2VqZWN1Y2lvbi1yZXBvcnRlL2RldGFsbGUtY2FtcG8tcmVwb3J0ZS9kZXRhbGxlLWNhbXBvLXJlcG9ydGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC93ZWJjb21tb24vcGFnZXMvZWplY3VjaW9uLXJlcG9ydGUvZGV0YWxsZS1jYW1wby1yZXBvcnRlL2RldGFsbGUtY2FtcG8tcmVwb3J0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWUsV0FBVyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV2RSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8s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QUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBVztRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztJQUNqRCxDQUFDO3VHQTVKVSw0QkFBNEI7MkZBQTVCLDRCQUE0QixnSEFGNUIsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsMEJDM0JsRCxpcUtBdUZNLHlERGhFUSxlQUFlLDJGQUFFLFlBQVksa0lBQUUsWUFBWSxvVkFBRSxXQUFXLDJwQkFBRSxtQkFBbUIsK1VBQUUsY0FBYyx3cUNBQUUsaUJBQWlCLHlEQUFFLGtCQUFrQiwwUEFBRSxXQUFXLGdtRUFBRSwyQkFBMkIsb0VBQUUsZUFBZSx5SEFBRSxtQkFBbUI7OzJGQU1yTiw0QkFBNEI7a0JBUnhDLFNBQVM7K0JBQ0UsdUJBQXVCLFdBQ3RCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixDQUFDLGNBQ25OLElBQUksYUFHUCxDQUFDLG1CQUFtQixFQUFFLGNBQWMsQ0FBQzt5U0FLaEMsYUFBYTtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgR2VuZXJhbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9nZW5lcmFsLnBpcGUnO1xuaW1wb3J0IHsgR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2dlbmVyYWwuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3JlcG9ydGUtZnVlbnRlLnBpcGUnO1xuaW1wb3J0IHsgRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lamVjdWNpb25yZXBvcnRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlRnVlbnRlTW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0ZUNvbHVtbmFNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL1JlcG9ydGVDb2x1bW5hJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgVGVtcGxhdGVUYWJsYVZhY2lhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy90ZW1wbGF0ZS10YWJsYS12YWNpYS90ZW1wbGF0ZS10YWJsYS12YWNpYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0YXJlYU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0YXJlYSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RldGFsbGUtY2FtcG8tcmVwb3J0ZScsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgQ29tbW9uTW9kdWxlLCBCdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBEcm9wZG93bk1vZHVsZSwgUmVwb3J0ZUZ1ZW50ZVBpcGUsIENvbmZpcm1Qb3B1cE1vZHVsZSwgVGFibGVNb2R1bGUsIFRlbXBsYXRlVGFibGFWYWNpYUNvbXBvbmVudCwgSW5wdXRUZXh0TW9kdWxlLCBJbnB1dFRleHRhcmVhTW9kdWxlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kZXRhbGxlLWNhbXBvLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZXRhbGxlLWNhbXBvLXJlcG9ydGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERldGFsbGVDYW1wb1JlcG9ydGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBsaXN0YUNvbHVtbmE6IFJlcG9ydGVDb2x1bW5hTW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgcmVwb3J0ZUZ1ZW50ZTogUmVwb3J0ZUZ1ZW50ZU1vZGVsO1xuICBcbiAgcHVibGljIHJlcG9ydGVDb2x1bW5hOiBSZXBvcnRlQ29sdW1uYU1vZGVsO1xuICBwdWJsaWMgZm9ybVJlcG9ydGVDb2x1bW5hOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB2aXN0YVZpc3VhbGl6YXI6IHN0cmluZztcbiAgcHVibGljIG51ZXZvOiBib29sZWFuO1xuICBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuO1xuICBpdGVtczogKHsgbGFiZWw6IHN0cmluZzsgaWNvbjogc3RyaW5nOyBjb21tYW5kOiAoKSA9PiB2b2lkOyB1cmw/OiB1bmRlZmluZWQ7IHNlcGFyYXRvcj86IHVuZGVmaW5lZDsgcm91dGVyTGluaz86IHVuZGVmaW5lZDsgfSB8IHsgbGFiZWw6IHN0cmluZzsgaWNvbjogc3RyaW5nOyB1cmw6IHN0cmluZzsgY29tbWFuZD86IHVuZGVmaW5lZDsgc2VwYXJhdG9yPzogdW5kZWZpbmVkOyByb3V0ZXJMaW5rPzogdW5kZWZpbmVkOyB9IHwgeyBzZXBhcmF0b3I6IGJvb2xlYW47IGxhYmVsPzogdW5kZWZpbmVkOyBpY29uPzogdW5kZWZpbmVkOyBjb21tYW5kPzogdW5kZWZpbmVkOyB1cmw/OiB1bmRlZmluZWQ7IHJvdXRlckxpbms/OiB1bmRlZmluZWQ7IH0gfCB7IGxhYmVsOiBzdHJpbmc7IGljb246IHN0cmluZzsgcm91dGVyTGluazogc3RyaW5nW107IGNvbW1hbmQ/OiB1bmRlZmluZWQ7IHVybD86IHVuZGVmaW5lZDsgc2VwYXJhdG9yPzogdW5kZWZpbmVkOyB9KVtdO1xuXG5cbiAgcGFnaW5hZG9yID0ge1xuICAgIHJvd3M6IDEwLFxuICAgIHRvdGFsUmVjb3JkczogMFxuICB9XG5cbiAgcHVibGljIGxpc3RhVGlwb0RhdG87XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBub3RpZmljYWNpb25lc0J1c1NlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXBvcnRlU2VydmljZTogRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZ2VuZXJhbFBpcGU6IEdlbmVyYWxQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVwb3J0ZUZ1ZW50ZVBpcGU6IFJlcG9ydGVGdWVudGVQaXBlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RhVGlwb0RhdG8gPSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLlRJUE9TX0RBVE9fQ09MVU1OQTtcbiAgICB0aGlzLml0ZW1zID0gW11cbiAgICBpZiAodGhpcy5pc0Z1ZW50ZSgpKXtcbiAgICB0aGlzLml0ZW1zLnB1c2goXG4gICAgICB7bGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaW5rX2ltcG9ydGFyJyksICBpY29uOiAncGkgcGktcmVmcmVzaCcsIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmltcG9ydGFyKCk7XG4gICAgICB9fSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNTcWwpe1xuICAgICAgdGhpcy5pdGVtcy5wdXNoKFxuICAgICAgICB7bGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsaW5rX2dlbmVyYXInKSwgIGljb246ICdwaSBwaS1yZWZyZXNoJywgY29tbWFuZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmFyKCk7XG4gICAgICAgIH19KVxuICAgIH1cbiAgfVxuXG4gIGNhcmdhckxpc3RhQ29sdW1uYShldmVudCl7XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnUmVwb3J0ZUNvbHVtbmFEVE8nLCBudWxsLCBmYWxzZSwge1xuICAgICAgcmVwb3J0ZUZ1ZW50ZTogdGhpcy5yZXBvcnRlRnVlbnRlLmxsYXZlLFxuICAgICAgcGFnaW5hY2lvblJlZ2lzdHJvSW5pY2lhbDogZXZlbnQuZmlyc3QsXG4gICAgICBwYWdpbmFjaW9uUmVnaXN0cm9GaW5hbDogZXZlbnQucm93c1xuICAgIH0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmxpc3RhQ29sdW1uYSA9IGRhdGE7XG4gICAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLmNhbnRpZGFkUmVnaXN0cm9zKG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVDb2x1bW5hRFRPJywgbnVsbCwgZmFsc2UsIHtyZXBvcnRlRnVlbnRlOiB0aGlzLnJlcG9ydGVGdWVudGUubGxhdmV9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnBhZ2luYWRvci50b3RhbFJlY29yZHMgPSBkYXRhO1xuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGNhcmdhckZvcm11bGFyaW8oKXtcbiAgICB0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgbm9tYnJlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5yZXBvcnRlQ29sdW1uYS5ub21icmUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBzaW50YXhpczogbmV3IEZvcm1Db250cm9sKHRoaXMucmVwb3J0ZUNvbHVtbmEuc2ludGF4aXMsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICB0aXBvRGF0bzogbmV3IEZvcm1Db250cm9sKHRoaXMucmVwb3J0ZUNvbHVtbmEudGlwb0RhdG8sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBsbGF2ZVRhYmxhOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5yZXBvcnRlQ29sdW1uYS5sbGF2ZVRhYmxhKSxcbiAgICAgIHJlcG9ydGVGdWVudGU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLnJlcG9ydGVGdWVudGUubGxhdmUpXG4gICAgfSk7XG4gIH1cbiAgcHVibGljIHZlckFjdGlvbihldmVudCl7XG4gICAgdGhpcy5yZXBvcnRlQ29sdW1uYSA9IGV2ZW50LmRhdGE7XG4gICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZGV0YWxsZSc7XG4gICAgdGhpcy5udWV2byA9IGZhbHNlO1xuICAgIHRoaXMuY2FyZ2FyRm9ybXVsYXJpbygpO1xuICB9XG5cbiAgcHVibGljIG51ZXZhQ29sdW1uYSgpe1xuICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gJ2RldGFsbGUnO1xuICAgIHRoaXMubnVldm8gPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0ZUNvbHVtbmEgPSBuZXcgUmVwb3J0ZUNvbHVtbmFNb2RlbCgpO1xuICAgIHRoaXMuY2FyZ2FyRm9ybXVsYXJpbygpO1xuICB9XG5cbiAgcHVibGljIGFjdHVhbGl6YXIoKXtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYS52YWxpZCl7XG4gICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzQnVzU2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybVJlcG9ydGVDb2x1bW5hLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtUmVwb3J0ZUNvbHVtbmEuZ2V0KGtleSkuZXJyb3JzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYS5nZXQoa2V5KS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm51ZXZvKXtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuY3JlYXJSZWdpc3RybyhuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlQ29sdW1uYURUTycsIG51bGwsIGZhbHNlLCB0aGlzLmZvcm1SZXBvcnRlQ29sdW1uYS52YWx1ZSkpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UudXBkYXRlKG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVDb2x1bW5hRFRPJywgbnVsbCwgZmFsc2UsIHRoaXMuZm9ybVJlcG9ydGVDb2x1bW5hLnZhbHVlKSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jYXJnYXJMaXN0YUNvbHVtbmEoe2ZpcnN0OiAwLCByb3dzOiAxMH0pXG4gICAgdGhpcy5ub3RpZmljYWNpb25lc0J1c1NlcnZpY2Uuc2hvd1N1Y2Nlc3MoIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9BQ1RVQUxJWkFSKTtcbiAgfVxuXG4gIHB1YmxpYyBpbXBvcnRhcigpe1xuICAgIHRoaXMucmVwb3J0ZVNlcnZpY2UuY2FyZ2FyQ2FtcG9zKHRoaXMucmVwb3J0ZUZ1ZW50ZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5jYXJnYXJMaXN0YUNvbHVtbmEoe2ZpcnN0OiAwLCByb3dzOiAxMH0pXG4gICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzQnVzU2VydmljZS5zaG93SW5mbygnU2UgaW1wb3J0YXJvbiBsYXMgY29sdW1uYXMnKVxuICAgIH0pO1xuICB9XG5cblxuICBwdWJsaWMgZ2VuZXJhcigpe1xuICAgIHRoaXMucmVwb3J0ZVNlcnZpY2UuY29uc3RydWlyQ29sdW1uYXModGhpcy5yZXBvcnRlRnVlbnRlKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmNhcmdhckxpc3RhQ29sdW1uYSh7Zmlyc3Q6IDAsIHJvd3M6IDEwfSlcbiAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNCdXNTZXJ2aWNlLnNob3dJbmZvKCdTZSBnZW5lcmFyb24gbGFzIGNvbHVtbmFzJylcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbGltaW5hcihldmVudDogRXZlbnQpe1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgbWVzc2FnZTogIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9DT05GSVJNQVIsXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy5nZW5lcmFsUGlwZS5TSV9ERVNDLFxuICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29uZmlybWFyJyksXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgbGV0IGVudHJhZGFFbGltaW5hcjpSZXBvcnRlQ29sdW1uYU1vZGVsID0gdGhpcy5mb3JtUmVwb3J0ZUNvbHVtbmEudmFsdWU7XG4gICAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UuZGVsZXRlKG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVDb2x1bW5hRFRPJywgbnVsbCwgZmFsc2UsIGVudHJhZGFFbGltaW5hcikpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICBpZiAoZGF0YSA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhY2lvbmVzQnVzU2VydmljZS5zaG93U3VjY2VzcyggdGhpcy5nZW5lcmFsUGlwZS5NRU5TQUpFX0VMSU1JTkFSKTtcbiAgICAgICAgICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYWNpb25lc0J1c1NlcnZpY2Uuc2hvd1N1Y2Nlc3MoIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9OTyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Zpam8oKTpib29sZWFue1xuICAgIHJldHVybiB0aGlzLmZpbHRyb09yaWdlbkZ1ZW50ZSh0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkZJSk8pO1xuICB9XG5cbiAgcHVibGljIGlzU3FsKCk6Ym9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5maWx0cm9PcmlnZW5GdWVudGUodGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5TUUwpO1xuICB9XG5cbiAgcHVibGljIGlzRnVlbnRlKCk6Ym9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5maWx0cm9PcmlnZW5GdWVudGUodGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5GVUVOVEUpO1xuICB9XG5cbiAgcHVibGljIGZpbHRyb09yaWdlbkZ1ZW50ZSh0aXBvOnN0cmluZyk6Ym9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlRnVlbnRlLm9yaWdlbkZ1ZW50ZSA9PSB0aXBvO1xuICB9XG5cblxuXG59XG4iLCI8cC1jb25maXJtUG9wdXA+PC9wLWNvbmZpcm1Qb3B1cD5cbjxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XG4gICAgPGgxIGNsYXNzPVwidGV4dC14bCBtYi0xXCI+e3snY2FtcG8nIHwgdHJhbnNsYXRlfX08L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItM1wiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyICE9ICdkZXRhbGxlJ1wiPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwibnVldmFDb2x1bW5hKClcIiBsYWJlbD1cInt7J2xpbmtfbnVldm8nIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBmb250LXNlbWlib2xkIGZsZXgtc2hyaW5rLTAgbWwtNCBtci0yXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24gcC1idXR0b24tb3V0bGluZWRcIiBsYWJlbD1cInt7J2xpbmtfaW1wb3J0YXInIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cImlzRnVlbnRlKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydGFyKClcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1yZXN0YXJ0XCI+PC9pPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cInAtYnV0dG9uIHAtYnV0dG9uLW91dGxpbmVkXCIgbGFiZWw9XCJ7eydsaW5rX2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAqbmdJZj1cImlzU3FsKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXIoKVwiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLXJlc3RhcnRcIj48L2k+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCAgbWItMVwiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyID09J2RldGFsbGUnXCI+XG4gICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJ2aXN0YVZpc3VhbGl6YXIgPSBudWxsXCIgbGFiZWw9IFwie3snbGlzdGFkbycgfCB0cmFuc2xhdGV9fSB7eydjYW1wbycgfCB0cmFuc2xhdGV9fVwiIFxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWNoZXZyb24tbGVmdFwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBmb250LXNlbWlib2xkIGZsZXgtc2hyaW5rLTAgXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhQ29sdW1uYVwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiIGRhdGFLZXk9XCJsbGF2ZVwiXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyICE9ICdkZXRhbGxlJ1wiXG4gICAgKG9uUm93U2VsZWN0KT1cInZlckFjdGlvbigkZXZlbnQpXCIgKG9uUm93VW5zZWxlY3QpPVwidmVyQWN0aW9uKCRldmVudClcIiBbcm93c109XCJwYWdpbmFkb3Iucm93c1wiIFt0b3RhbFJlY29yZHNdPVwicGFnaW5hZG9yLnRvdGFsUmVjb3Jkc1wiIFtwYWdpbmF0b3JdPVwicGFnaW5hZG9yLnRvdGFsUmVjb3JkcyA+IHBhZ2luYWRvci5yb3dzXCJcbiAgICBbbGF6eV09XCJ0cnVlXCIgKG9uTGF6eUxvYWQpPVwiY2FyZ2FyTGlzdGFDb2x1bW5hKCRldmVudClcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICBcbiAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICA8dGg+e3snbm9tYnJlJyB8IHRyYW5zbGF0ZX19IDwvdGg+XG4gICAgICAgICAgICA8dGg+e3snc2ludGF4aXMnIHwgdHJhbnNsYXRlfX0gPC90aD5cbiAgICAgICAgICAgIDx0aD57eyd0aXBvJyB8IHRyYW5zbGF0ZX19IDwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0aD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWNhbXBvPlxuICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImNhbXBvXCI+XG4gICAgICAgICAgICA8dGQ+e3tjYW1wby5ub21icmV9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3tjYW1wby5zaW50YXhpc319PC90ZD5cbiAgICAgICAgICAgIDx0ZD57e2NhbXBvLnRpcG9EYXRvIHwgcmVwb3J0ZUZ1ZW50ZVBpcGUgOiAnbGlzdGFUaXBvRGF0b0NvbHVtbmEnfX08L3RkPlxuICAgICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPiBcbiAgICAgICAgICAgICAgICA8YXBwLXRlbXBsYXRlLXRhYmxhLXZhY2lhPjwvYXBwLXRlbXBsYXRlLXRhYmxhLXZhY2lhPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPjwvcC10YWJsZT5cblxuPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiICpuZ0lmPVwidmlzdGFWaXN1YWxpemFyID09ICdkZXRhbGxlJ1wiPlxuICAgIDxoNSBjbGFzcz1cIm10LTNcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ub3Rlc1wiPjwvaT57eydkZXRhbGxlJyB8IHRyYW5zbGF0ZX19PC9oNT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJEZXRhbGxlcmVwb3J0ZSBtdC0yXCI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1SZXBvcnRlQ29sdW1uYVwiICNmb3JtdWxhcmlvPVwibmdGb3JtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBpZD1cIm5vbWJyZVwiIHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwibm9tYnJlXCIgc2l6ZT1cIjQwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwibm9tYnJlXCI+e3snbm9tYnJlJyB8IHRyYW5zbGF0ZX19ICo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cImxpc3RhVGlwb0RhdG9cIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInRpcG9EYXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJub21icmVcIiBvcHRpb25WYWx1ZT1cImNvZGlnb1wiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cInRpcG9EYXRvXCI+e3sndGlwbycgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJ3LWZ1bGwgbWluLWgtMTUwIG1heC1oLTIwMFwiICBwSW5wdXRUZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJzaW50YXhpc1wiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJzaW50YXhpc1wiPnt7J3NpbnRheGlzJyB8IHRyYW5zbGF0ZX19ICo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLUJPVE9ORVMtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtbC0yIHAtYnV0dG9uIHAtYnV0dG9uLXJhaXNlZFwiIChjbGljayk9XCJhY3R1YWxpemFyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdseXBoaWNvbnMge3tyZXBvcnRlQ29sdW1uYS5sbGF2ZVRhYmxhID8gJ2dseXBoaWNvbnMtcmVmcmVzaCcgOiAnZ2x5cGhpY29ucy1mbG9wcHktc2F2ZScgfX1cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3tyZXBvcnRlQ29sdW1uYS5sbGF2ZVRhYmxhID8gKCdsaW5rX2FjdHVhbGl6YXInIHwgdHJhbnNsYXRlKSA6ICgnbGlua19ndWFyZGFyJyB8IHRyYW5zbGF0ZSl9fVwiID5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibWwtMiBwLWJ1dHRvbi1vdXRsaW5lZFwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCIgKm5nSWY9XCJyZXBvcnRlQ29sdW1uYS5sbGF2ZVRhYmxhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hcigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==