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
@@ -4,6 +4,7 @@ import { TranslateModule } from '@ngx-translate/core';
4
4
  import { ImportarFuenteConComponent } from '../importar-fuente-con/importar-fuente-con.component';
5
5
  import { GeneralModel } from '../../../../seguridad/modelos/GeneralModel';
6
6
  import { TableModule } from 'primeng/table';
7
+ import { TemplateTablaVaciaComponent } from '../../../../core/componentes/template-tabla-vacia/template-tabla-vacia.component';
7
8
  import { MenubarModule } from 'primeng/menubar';
8
9
  import { ConfirmPopupModule } from 'primeng/confirmpopup';
9
10
  import { InputTextModule } from 'primeng/inputtext';
@@ -165,13 +166,13 @@ export class ImportarFuenteGeneralComponent {
165
166
  return false;
166
167
  }
167
168
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ImportarFuenteGeneralComponent, deps: [{ token: i1.GeneralService }, { token: i2.ConfirmationService }, { token: i3.ToastService }, { token: i4.GeneralPipe }, { token: i5.MenuService }, { token: i6.StorageService }, { token: i7.UtilsService }, { token: i8.CargueLineaService }], target: i0.ɵɵFactoryTarget.Component });
168
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ImportarFuenteGeneralComponent, isStandalone: true, selector: "app-importar-fuente-general", providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "detalle", first: true, predicate: ["detalle"], descendants: true }], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex align-items-center justify-content-between align-items-center mb-3\">\n <h1 class=\"mb-1\">{{'importarfuente' | translate}}</h1>\n \n <button pButton pRipple (click)=\"regresar()\" label=\"{{'link_regresar' | translate}}\" icon=\"pi pi-chevron-left\" *ngIf=\"!mostrarMenu\"\n class=\"p-button-text font-semibold flex-shrink-0 ml-4\" ></button>\n</div>\n\n<p-menubar [model]=\"items\" class=\"menu-accion-sara\" *ngIf=\"mostrarMenu && !autoServicioPortal()\"></p-menubar>\n\n<div *ngIf=\"isVer() && mostrarMenu\"></div>\n<h4 *ngIf=\"!autoServicioPortal()\">{{titulo}}</h4>\n\n<div *ngIf=\"tipoPresentacion == 'fuente'\">\n <app-importar-fuente-con #detalle (regresarFuente)=\"regresarFuente($event)\"></app-importar-fuente-con>\n</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == null\">\n <p-table #tablaFuenteProceso\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaFuenteProceso\"\n [paginator]=\"paginator.totalRecords > paginator.rows\"\n [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n (onRowSelect)=\"verAnterior($event)\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'fuente' | translate}}</th>\n <th style=\"text-align: center\">{{'usuario' | translate}}</th>\n <th style=\"text-align: center\">{{'estado' | translate}}</th>\n <th style=\"text-align: center\">{{'archivo' | translate}}</th>\n <th style=\"text-align: center\">{{'proceso' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.nombreFuente}}</td>\n <td style=\"text-align: center\">{{bean.usuario}}</td>\n <td style=\"text-align: center\">{{bean.estado}}</td>\n <td style=\"text-align: center\">{{bean.archivo}}</td>\n <td style=\"text-align: center\">{{bean.fechaProceso | date : ('formatofechahora' | translate)}}</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</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == 'detalle'\">\n\n <div class=\"field col-12 md:col-12 lg:col-12\">\n <div class=\"card mt-2 mb-2\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}} {{'cargue' | translate}}</h5>\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.nombreFuente\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.usuario\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"usuario\">{{'usuario' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.estado\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input pInputText class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.archivo\" [disabled]=\"true\" autofocus\n type=\"text\" />\n <label for=\"archivo\">{{'archivo' | translate}}</label>\n </span>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button p-button-outlined\" \n icon=\"glyphicons glyphicons-bin\" label=\"{{'link_eliminar' | translate}}\"\n (click)=\"eliminar()\">\n </button>\n \n </div>\n </div>\n </div>\n <p-table #tablaCargueLinea\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaLineas\"\n [paginator]=\"paginator.totalRecordsLL > paginator.rowsLL\"\n [rows]=\"paginator.rowsLL\"\n [totalRecords]=\"paginator.totalRecordsLL\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'linea' | translate}}</th>\n <th style=\"text-align: center\">{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.linea}}</td>\n <td style=\"text-align: center\">{{bean.mensaje}}</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>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i9.DatePipe, name: "date" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i10.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: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i10.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i11.Menubar, selector: "p-menubar", inputs: ["model", "style", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i12.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: ImportarFuenteConComponent, selector: "app-importar-fuente-con", outputs: ["regresarFuente"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabViewModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i15.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i16.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: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i16.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: ImportarFuenteGeneralComponent, isStandalone: true, selector: "app-importar-fuente-general", providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "detalle", first: true, predicate: ["detalle"], descendants: true }], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex align-items-center justify-content-between align-items-center mb-3\">\n <h1 class=\"mb-1\">{{'importarfuente' | translate}}</h1>\n \n <button pButton pRipple (click)=\"regresar()\" label=\"{{'link_regresar' | translate}}\" icon=\"pi pi-chevron-left\" *ngIf=\"!mostrarMenu\"\n class=\"p-button-text font-semibold flex-shrink-0 ml-4\" ></button>\n</div>\n\n<p-menubar [model]=\"items\" class=\"menu-accion-sara\" *ngIf=\"mostrarMenu && !autoServicioPortal()\"></p-menubar>\n\n<div *ngIf=\"isVer() && mostrarMenu\"></div>\n<h4 *ngIf=\"!autoServicioPortal()\">{{titulo}}</h4>\n\n<div *ngIf=\"tipoPresentacion == 'fuente'\">\n <app-importar-fuente-con #detalle (regresarFuente)=\"regresarFuente($event)\"></app-importar-fuente-con>\n</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == null\">\n <p-table #tablaFuenteProceso\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaFuenteProceso\"\n [paginator]=\"paginator.totalRecords > paginator.rows\"\n [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n (onRowSelect)=\"verAnterior($event)\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'fuente' | translate}}</th>\n <th style=\"text-align: center\">{{'usuario' | translate}}</th>\n <th style=\"text-align: center\">{{'estado' | translate}}</th>\n <th style=\"text-align: center\">{{'archivo' | translate}}</th>\n <th style=\"text-align: center\">{{'proceso' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.nombreFuente}}</td>\n <td style=\"text-align: center\">{{bean.usuario}}</td>\n <td style=\"text-align: center\">{{bean.estado}}</td>\n <td style=\"text-align: center\">{{bean.archivo}}</td>\n <td style=\"text-align: center\">{{bean.fechaProceso | date : ('formatofechahora' | translate)}}</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</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == 'detalle'\">\n\n <div class=\"field col-12 md:col-12 lg:col-12\">\n <div class=\"card mt-2 mb-2\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}} {{'cargue' | translate}}</h5>\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.nombreFuente\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.usuario\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"usuario\">{{'usuario' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.estado\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input pInputText class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.archivo\" [disabled]=\"true\" autofocus\n type=\"text\" />\n <label for=\"archivo\">{{'archivo' | translate}}</label>\n </span>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button p-button-outlined\" \n icon=\"glyphicons glyphicons-bin\" label=\"{{'link_eliminar' | translate}}\"\n (click)=\"eliminar()\">\n </button>\n \n </div>\n </div>\n </div>\n <p-table #tablaCargueLinea\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaLineas\"\n [paginator]=\"paginator.totalRecordsLL > paginator.rowsLL\"\n [rows]=\"paginator.rowsLL\"\n [totalRecords]=\"paginator.totalRecordsLL\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'linea' | translate}}</th>\n <th style=\"text-align: center\">{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.linea}}</td>\n <td style=\"text-align: center\">{{bean.mensaje}}</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>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i9.DatePipe, name: "date" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i10.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: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i10.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "component", type: TemplateTablaVaciaComponent, selector: "app-template-tabla-vacia" }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i11.Menubar, selector: "p-menubar", inputs: ["model", "style", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i12.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "component", type: ImportarFuenteConComponent, selector: "app-importar-fuente-con", outputs: ["regresarFuente"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabViewModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i15.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i16.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: i16.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i16.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
169
170
  }
170
171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: ImportarFuenteGeneralComponent, decorators: [{
171
172
  type: Component,
172
- args: [{ selector: 'app-importar-fuente-general', imports: [CommonModule, TableModule, MenubarModule, ConfirmPopupModule, ImportarFuenteConComponent, InputTextModule, TranslateModule, DatePipe, TabViewModule, ButtonModule, InputTextModule, FormsModule], standalone: true, providers: [MessageService, ConfirmationService], template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex align-items-center justify-content-between align-items-center mb-3\">\n <h1 class=\"mb-1\">{{'importarfuente' | translate}}</h1>\n \n <button pButton pRipple (click)=\"regresar()\" label=\"{{'link_regresar' | translate}}\" icon=\"pi pi-chevron-left\" *ngIf=\"!mostrarMenu\"\n class=\"p-button-text font-semibold flex-shrink-0 ml-4\" ></button>\n</div>\n\n<p-menubar [model]=\"items\" class=\"menu-accion-sara\" *ngIf=\"mostrarMenu && !autoServicioPortal()\"></p-menubar>\n\n<div *ngIf=\"isVer() && mostrarMenu\"></div>\n<h4 *ngIf=\"!autoServicioPortal()\">{{titulo}}</h4>\n\n<div *ngIf=\"tipoPresentacion == 'fuente'\">\n <app-importar-fuente-con #detalle (regresarFuente)=\"regresarFuente($event)\"></app-importar-fuente-con>\n</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == null\">\n <p-table #tablaFuenteProceso\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaFuenteProceso\"\n [paginator]=\"paginator.totalRecords > paginator.rows\"\n [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n (onRowSelect)=\"verAnterior($event)\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'fuente' | translate}}</th>\n <th style=\"text-align: center\">{{'usuario' | translate}}</th>\n <th style=\"text-align: center\">{{'estado' | translate}}</th>\n <th style=\"text-align: center\">{{'archivo' | translate}}</th>\n <th style=\"text-align: center\">{{'proceso' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.nombreFuente}}</td>\n <td style=\"text-align: center\">{{bean.usuario}}</td>\n <td style=\"text-align: center\">{{bean.estado}}</td>\n <td style=\"text-align: center\">{{bean.archivo}}</td>\n <td style=\"text-align: center\">{{bean.fechaProceso | date : ('formatofechahora' | translate)}}</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</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == 'detalle'\">\n\n <div class=\"field col-12 md:col-12 lg:col-12\">\n <div class=\"card mt-2 mb-2\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}} {{'cargue' | translate}}</h5>\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.nombreFuente\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.usuario\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"usuario\">{{'usuario' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.estado\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input pInputText class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.archivo\" [disabled]=\"true\" autofocus\n type=\"text\" />\n <label for=\"archivo\">{{'archivo' | translate}}</label>\n </span>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button p-button-outlined\" \n icon=\"glyphicons glyphicons-bin\" label=\"{{'link_eliminar' | translate}}\"\n (click)=\"eliminar()\">\n </button>\n \n </div>\n </div>\n </div>\n <p-table #tablaCargueLinea\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaLineas\"\n [paginator]=\"paginator.totalRecordsLL > paginator.rowsLL\"\n [rows]=\"paginator.rowsLL\"\n [totalRecords]=\"paginator.totalRecordsLL\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'linea' | translate}}</th>\n <th style=\"text-align: center\">{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.linea}}</td>\n <td style=\"text-align: center\">{{bean.mensaje}}</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>" }]
173
+ args: [{ selector: 'app-importar-fuente-general', imports: [CommonModule, TableModule, TemplateTablaVaciaComponent, MenubarModule, ConfirmPopupModule, ImportarFuenteConComponent, InputTextModule, TranslateModule, DatePipe, TabViewModule, ButtonModule, InputTextModule, FormsModule], standalone: true, providers: [MessageService, ConfirmationService], template: "<p-confirmPopup></p-confirmPopup>\n<div class=\"flex align-items-center justify-content-between align-items-center mb-3\">\n <h1 class=\"mb-1\">{{'importarfuente' | translate}}</h1>\n \n <button pButton pRipple (click)=\"regresar()\" label=\"{{'link_regresar' | translate}}\" icon=\"pi pi-chevron-left\" *ngIf=\"!mostrarMenu\"\n class=\"p-button-text font-semibold flex-shrink-0 ml-4\" ></button>\n</div>\n\n<p-menubar [model]=\"items\" class=\"menu-accion-sara\" *ngIf=\"mostrarMenu && !autoServicioPortal()\"></p-menubar>\n\n<div *ngIf=\"isVer() && mostrarMenu\"></div>\n<h4 *ngIf=\"!autoServicioPortal()\">{{titulo}}</h4>\n\n<div *ngIf=\"tipoPresentacion == 'fuente'\">\n <app-importar-fuente-con #detalle (regresarFuente)=\"regresarFuente($event)\"></app-importar-fuente-con>\n</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == null\">\n <p-table #tablaFuenteProceso\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaFuenteProceso\"\n [paginator]=\"paginator.totalRecords > paginator.rows\"\n [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n selectionMode=\"single\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n (onRowSelect)=\"verAnterior($event)\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'fuente' | translate}}</th>\n <th style=\"text-align: center\">{{'usuario' | translate}}</th>\n <th style=\"text-align: center\">{{'estado' | translate}}</th>\n <th style=\"text-align: center\">{{'archivo' | translate}}</th>\n <th style=\"text-align: center\">{{'proceso' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.nombreFuente}}</td>\n <td style=\"text-align: center\">{{bean.usuario}}</td>\n <td style=\"text-align: center\">{{bean.estado}}</td>\n <td style=\"text-align: center\">{{bean.archivo}}</td>\n <td style=\"text-align: center\">{{bean.fechaProceso | date : ('formatofechahora' | translate)}}</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</div>\n<div *ngIf=\"tipoPresentacion != 'fuente' && vistaVisualizar == 'detalle'\">\n\n <div class=\"field col-12 md:col-12 lg:col-12\">\n <div class=\"card mt-2 mb-2\">\n <h5 class=\"mt-3\"><i class=\"glyphicons glyphicons-book\"></i>{{'detalle' | translate}} {{'cargue' | translate}}</h5>\n <div class=\"contenedor p-fluid grid mt-1 mb-1\">\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.nombreFuente\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"fuente\">{{'fuente' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.usuario\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"usuario\">{{'usuario' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.estado\" [disabled]=\"true\" pInputText autofocus\n type=\"text\" />\n <label for=\"estado\">{{'estado' | translate}}</label>\n </span>\n </div>\n <div class=\"field col-3 md:col-3 lg:col-3\">\n <span class=\"p-float-label\">\n <input pInputText class=\"w-full\" [(ngModel)]=\"fuenteProcesoDTO.archivo\" [disabled]=\"true\" autofocus\n type=\"text\" />\n <label for=\"archivo\">{{'archivo' | translate}}</label>\n </span>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 p-button p-button-outlined\" \n icon=\"glyphicons glyphicons-bin\" label=\"{{'link_eliminar' | translate}}\"\n (click)=\"eliminar()\">\n </button>\n \n </div>\n </div>\n </div>\n <p-table #tablaCargueLinea\n responsiveLayout=\"scroll\"\n [scrollable]=\"true\"\n [value]=\"listaLineas\"\n [paginator]=\"paginator.totalRecordsLL > paginator.rowsLL\"\n [rows]=\"paginator.rowsLL\"\n [totalRecords]=\"paginator.totalRecordsLL\"\n [rowsPerPageOptions]=\"[10, 20, 50]\"\n styleClass=\"p-datatable-striped\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th style=\"text-align: center\">{{'linea' | translate}}</th>\n <th style=\"text-align: center\">{{'mensaje' | translate}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-bean>\n <tr [pSelectableRow]=\"bean\">\n <td style=\"text-align: center\">{{bean.linea}}</td>\n <td style=\"text-align: center\">{{bean.mensaje}}</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>" }]
173
174
  }], ctorParameters: () => [{ type: i1.GeneralService }, { type: i2.ConfirmationService }, { type: i3.ToastService }, { type: i4.GeneralPipe }, { type: i5.MenuService }, { type: i6.StorageService }, { type: i7.UtilsService }, { type: i8.CargueLineaService }], propDecorators: { detalle: [{
174
175
  type: ViewChild,
175
176
  args: ['detalle']
176
177
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0YXItZnVlbnRlLWdlbmVyYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC93ZWJjb21tb24vcGFnZXMvZnVlbnRlL2ltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsL2ltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Z1ZW50ZS9pbXBvcnRhci1mdWVudGUtZ2VuZXJhbC9pbXBvcnRhci1mdWVudGUtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFVbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMs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LENBQUMsTUFBTSxFQUFFLENBQUEsQ0FBQSxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLO1FBQ2xCLElBQUksS0FBSyxFQUFDLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt1R0ExSVUsOEJBQThCOzJGQUE5Qiw4QkFBOEIsMEVBSjVCLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLDhIQzVCcEQsazZNQWlJTSx5RER2R1EsWUFBWSxxTEFBRSxXQUFXLHNzRUFBRSxhQUFhLHNSQUFFLGtCQUFrQiwyUEFBRSwwQkFBMEIsZ0dBQUUsZUFBZSx5SEFBRyxlQUFlLDRGQUFZLGFBQWEsOEJBQUUsWUFBWSw2T0FBbUIsV0FBVzs7MkZBTWpNLDhCQUE4QjtrQkFSMUMsU0FBUzsrQkFDRSw2QkFBNkIsV0FDNUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUcsZUFBZSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsY0FDL0wsSUFBSSxhQUNMLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDOzZSQWdCNUIsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJbXBvcnRhckZ1ZW50ZUNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ltcG9ydGFyLWZ1ZW50ZS1jb24vaW1wb3J0YXItZnVlbnRlLWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZ1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9GdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IENhcmd1ZUxpbmVhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9DYXJndWVMaW5lYU1vZGVsJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZ2VuZXJhbC5waXBlJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvbWVudS5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2FyZ3VlTGluZWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FyZ3VlbGluZWEuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IE1lbnViYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lbnViYXInO1xuaW1wb3J0IHsgQ29uZmlybVBvcHVwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jb25maXJtcG9wdXAnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUYWJWaWV3TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJ2aWV3JztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW1wb3J0YXItZnVlbnRlLWdlbmVyYWwnLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRhYmxlTW9kdWxlLCBNZW51YmFyTW9kdWxlLCBDb25maXJtUG9wdXBNb2R1bGUsIEltcG9ydGFyRnVlbnRlQ29uQ29tcG9uZW50LCBJbnB1dFRleHRNb2R1bGUsICBUcmFuc2xhdGVNb2R1bGUsIERhdGVQaXBlLCBUYWJWaWV3TW9kdWxlLCBCdXR0b25Nb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXBvcnRhci1mdWVudGUtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wb3J0YXJGdWVudGVHZW5lcmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgdGlwb1ByZXNlbnRhY2lvbjogc3RyaW5nID0nZnVlbnRlJztcbiAgcHVibGljIHZpc3RhVmlzdWFsaXphcjogc3RyaW5nO1xuICBwdWJsaWMgbGlzdGFGdWVudGVQcm9jZXNvOiBGdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsW10gPSBbXVxuICBwdWJsaWMgdmVyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGZ1ZW50ZVByb2Nlc29EVE86IEZ1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWw7XG4gIHB1YmxpYyBsaXN0YUxpbmVhczogQ2FyZ3VlTGluZWFNb2RlbFtdID0gW11cbiAgcHVibGljIGl0ZW1zOiBNZW51SXRlbVtdXG4gIHB1YmxpYyBtb3N0cmFyTWVudTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyB0aXR1bG86IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdkZXRhbGxlJykgZGV0YWxsZTogSW1wb3J0YXJGdWVudGVDb25Db21wb25lbnQ7XG5cbiAgcGFnaW5hdG9yPXtyb3dzOjE1LCB0b3RhbFJlY29yZHM6MCwgcm93c0xMOjEwLCB0b3RhbFJlY29yZHNMTDowfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ2VuZXJhbFNlcnZpY2U6IEdlbmVyYWxTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbm90aWZpY2FjaW9uZXNTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZ2VuZXJhbFBpcGU6IEdlbmVyYWxQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcmd1ZUxpbmVhOiBDYXJndWVMaW5lYVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmVyID0gdHJ1ZTtcbiAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9IG51bGw7XG4gICAgdGhpcy5pdGVtcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdMaXN0YSBGdWVudGVzIGRlIEltcG9ydGFjacOzbicsXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtZmlsZS1jbG91ZCcsXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMudGlwb1ByZXNlbnRhY2lvbiA9ICdmdWVudGUnO1xuICAgICAgICAgIHRoaXMudGl0dWxvID0gICdMaXN0YSBGdWVudGVzIGRlIEltcG9ydGFjacOzbic7XG4gICAgICAgICAgdGhpcy5tZW51U2VydmljZS5zZXRCcmVhZGNydW1iKFt7IGxhYmVsOiB0aGlzLnRpdHVsbyAsIGNvbW1hbmQ6IChldmVudCkgPT4geyBsb2NhdGlvbi5yZWxvYWQoKX19XSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ1Byb2Nlc29zIEdlbmVyYWRvcycsXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtZmlsZScsXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMudGlwb1ByZXNlbnRhY2lvbiA9ICdwcm9jZXNvJztcbiAgICAgICAgICB0aGlzLnRpdHVsbyA9ICAnUHJvY2Vzb3MgR2VuZXJhZG9zJztcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6IHRoaXMudGl0dWxvLCBjb21tYW5kOiAoZXZlbnQpID0+eyBsb2NhdGlvbi5yZWxvYWQoKSB9IH1dKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgaXNWZXIoKSB7XG4gICAgaWYgKCF0aGlzLnZlcil7XG4gICAgICByZXR1cm4gdGhpcy52ZXI7XG4gICAgfVxuICAgIHRoaXMudmVyID0gZmFsc2U7XG4gICAgdGhpcy50aXBvUHJlc2VudGFjaW9uID0gJ2Z1ZW50ZSdcbiAgICB0aGlzLnRpdHVsbyA9ICAnTGlzdGEgRnVlbnRlcyBkZSBJbXBvcnRhY2nDs24nO1xuICAgIHRoaXMubWVudVNlcnZpY2Uuc2V0QnJlYWRjcnVtYihbeyBsYWJlbDogdGhpcy50aXR1bG8sIGNvbW1hbmQ6IChldmVudCkgPT4geyBsb2NhdGlvbi5yZWxvYWQoKX0gfV0pO1xuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0Z1ZW50ZVByb2Nlc29HZW5lcmFsRFRPJywgbnVsbCwgZmFsc2UsIHt9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5saXN0YUZ1ZW50ZVByb2Nlc28gPSBkYXRhO1xuICAgICAgdGhpcy5wYWdpbmF0b3IudG90YWxSZWNvcmRzID0gdGhpcy5saXN0YUZ1ZW50ZVByb2Nlc28ubGVuZ3RoO1xuICAgICAgdGhpcy5kZXRhbGxlLnRyYWVyRnVlbnRlKCk7XG5cbiAgICB9KVxuICAgIHJldHVybiB0aGlzLnZlcjtcbiAgfVxuXG4gIHZlckFudGVyaW9yKGV2ZW50KXtcbiAgICB0aGlzLm1vc3RyYXJNZW51ID0gZmFsc2U7XG4gICAgdGhpcy5mdWVudGVQcm9jZXNvRFRPID0gZXZlbnQuZGF0YTtcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdDYXJndWVMaW5lYURUTycsIG51bGwsIGZhbHNlLCB7cHJvY2VzbzogdGhpcy5mdWVudGVQcm9jZXNvRFRPLmxsYXZlVGFibGF9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5saXN0YUxpbmVhcyA9IGRhdGE7XG4gICAgICB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHNMTCA9IHRoaXMubGlzdGFMaW5lYXMubGVuZ3RoO1xuICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZGV0YWxsZSc7XG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6IHRoaXMudGl0dWxvICxjb21tYW5kOiAoZXZlbnQpID0+eyB0aGlzLnJlZ3Jlc2FyKCkgfSB9LCB7IGxhYmVsOiAnRGV0YWxsZSBQcm9jZXNvcyBHZW5lcmFkb3MnIH1dKTtcbiAgICB9KVxuICB9XG5cbiAgZWxpbWluYXIoKXtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcbiAgICAgIGljb246ICdjb25maXJtYXInLFxuICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FyZ3VlTGluZWEuZWxpbWluYXJQcm9jZXNvKHtsbGF2ZVByb2Nlc286IHRoaXMuZnVlbnRlUHJvY2Vzb0RUTy5sbGF2ZVRhYmxhfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMubGlzdGFGdWVudGVQcm9jZXNvLmluZGV4T2YodGhpcy5mdWVudGVQcm9jZXNvRFRPKTtcbiAgICAgICAgICB0aGlzLmxpc3RhRnVlbnRlUHJvY2Vzby5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUilcbiAgICAgICAgICB0aGlzLnJlZ3Jlc2FyKClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIFxuICB9IFxuXG4gIHJlZ3Jlc2FyKCl7XG4gICAgaWYgKHRoaXMudGlwb1ByZXNlbnRhY2lvbiA9PSAnZnVlbnRlJyl7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmRldGFsbGUuZXN0YWRvUmVncmVzYXIpXG4gICAgICBpZiAodGhpcy5kZXRhbGxlLmVzdGFkb1JlZ3Jlc2FyID09ICd2b2x2ZXJJbXBvcnRhcicpe1xuICAgICAgICB0aGlzLmRldGFsbGUuaW1wb3J0YXJOdWV2YW1lbnRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGV0YWxsZS5lc3RhZG9SZWdyZXNhciA9PSAncmVncmVzYXJJbXBvcnRhcicpe1xuICAgICAgICB0aGlzLmRldGFsbGUucmVncmVzYXJEYXRvcygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICggdGhpcy5kZXRhbGxlPy5yZWdyZXNhclB1bnRvUHJvY2Vzbyl7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZGV0YWxsZT8ucmVncmVzYXJQdW50b1Byb2Nlc287XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gbnVsbDtcbiAgICB0aGlzLm1vc3RyYXJNZW51ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy50aXBvUHJlc2VudGFjaW9uID09ICdmdWVudGUnKXtcbiAgICAgIHRoaXMuZGV0YWxsZS5tb3N0cmFyID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpc3RhRnVlbnRlUHJvY2Vzby5sZW5ndGggPT0gMCl7XG4gICAgICB0aGlzLnRpcG9QcmVzZW50YWNpb24gPSAgJ2Z1ZW50ZSc7XG4gICAgICB0aGlzLnRpdHVsbyA9ICAnTGlzdGEgRnVlbnRlcyBkZSBJbXBvcnRhY2nDs24nO1xuICAgIH1cbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6IHRoaXMudGl0dWxvICwgY29tbWFuZDogKGV2ZW50KSA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpfX1dKTtcbiAgfVxuXG4gIHJlZ3Jlc2FyRnVlbnRlKGV2ZW50KXtcbiAgICBpZiAoZXZlbnQpe1xuICAgICAgdGhpcy5yZWdyZXNhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vc3RyYXJNZW51ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGF1dG9TZXJ2aWNpb1BvcnRhbCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdG9yYWdlLmdldERlY29kZWRKV1QoKS5hcGxpY2FjaW9uID09IDEwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59IiwiPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+XG48ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICA8aDEgIGNsYXNzPVwibWItMVwiPnt7J2ltcG9ydGFyZnVlbnRlJyB8IHRyYW5zbGF0ZX19PC9oMT5cbiAgICBcbiAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwicmVncmVzYXIoKVwiIGxhYmVsPVwie3snbGlua19yZWdyZXNhcicgfCB0cmFuc2xhdGV9fVwiIGljb249XCJwaSBwaS1jaGV2cm9uLWxlZnRcIiAqbmdJZj1cIiFtb3N0cmFyTWVudVwiXG4gICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBtbC00XCIgPjwvYnV0dG9uPlxuPC9kaXY+XG5cbjxwLW1lbnViYXIgW21vZGVsXT1cIml0ZW1zXCIgY2xhc3M9XCJtZW51LWFjY2lvbi1zYXJhXCIgKm5nSWY9XCJtb3N0cmFyTWVudSAmJiAhYXV0b1NlcnZpY2lvUG9ydGFsKClcIj48L3AtbWVudWJhcj5cblxuPGRpdiAqbmdJZj1cImlzVmVyKCkgJiYgbW9zdHJhck1lbnVcIj48L2Rpdj5cbjxoNCAqbmdJZj1cIiFhdXRvU2VydmljaW9Qb3J0YWwoKVwiPnt7dGl0dWxvfX08L2g0PlxuXG48ZGl2ICpuZ0lmPVwidGlwb1ByZXNlbnRhY2lvbiA9PSAnZnVlbnRlJ1wiPlxuICAgIDxhcHAtaW1wb3J0YXItZnVlbnRlLWNvbiAjZGV0YWxsZSAocmVncmVzYXJGdWVudGUpPVwicmVncmVzYXJGdWVudGUoJGV2ZW50KVwiPjwvYXBwLWltcG9ydGFyLWZ1ZW50ZS1jb24+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJ0aXBvUHJlc2VudGFjaW9uICE9ICdmdWVudGUnICYmIHZpc3RhVmlzdWFsaXphciA9PSBudWxsXCI+XG4gICAgPHAtdGFibGUgI3RhYmxhRnVlbnRlUHJvY2Vzb1xuICAgICAgICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFt2YWx1ZV09XCJsaXN0YUZ1ZW50ZVByb2Nlc29cIlxuICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHMgPiBwYWdpbmF0b3Iucm93c1wiXG4gICAgICAgIFtyb3dzXT1cInBhZ2luYXRvci5yb3dzXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzXCJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIlxuICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSBhbCB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCJcbiAgICAgICAgKG9uUm93U2VsZWN0KT1cInZlckFudGVyaW9yKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7J2Z1ZW50ZScgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3sndXN1YXJpbycgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3snZXN0YWRvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57eydhcmNoaXZvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57eydwcm9jZXNvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWJlYW4+XG4gICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImJlYW5cIj5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57e2JlYW4ubm9tYnJlRnVlbnRlfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7YmVhbi51c3VhcmlvfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7YmVhbi5lc3RhZG99fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3tiZWFuLmFyY2hpdm99fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3tiZWFuLmZlY2hhUHJvY2VzbyB8IGRhdGUgOiAoJ2Zvcm1hdG9mZWNoYWhvcmEnIHwgdHJhbnNsYXRlKX19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJ0aXBvUHJlc2VudGFjaW9uICE9ICdmdWVudGUnICYmIHZpc3RhVmlzdWFsaXphciA9PSAnZGV0YWxsZSdcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyIGxnOmNvbC0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yIG1iLTJcIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm10LTNcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ib29rXCI+PC9pPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX0ge3snY2FyZ3VlJyB8IHRyYW5zbGF0ZX19PC9oNT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yIHAtZmx1aWQgZ3JpZCBtdC0xIG1iLTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LWZ1bGxcIiBbKG5nTW9kZWwpXT1cImZ1ZW50ZVByb2Nlc29EVE8ubm9tYnJlRnVlbnRlXCIgW2Rpc2FibGVkXT1cInRydWVcIiBwSW5wdXRUZXh0IGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmdWVudGVcIj57eydmdWVudGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJmdWVudGVQcm9jZXNvRFRPLnVzdWFyaW9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHQgYXV0b2ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVzdWFyaW9cIj57eyd1c3VhcmlvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMyBtZDpjb2wtMyBsZzpjb2wtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiZnVlbnRlUHJvY2Vzb0RUTy5lc3RhZG9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIHBJbnB1dFRleHQgYXV0b2ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVzdGFkb1wiPnt7J2VzdGFkbycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiZnVlbnRlUHJvY2Vzb0RUTy5hcmNoaXZvXCIgW2Rpc2FibGVkXT1cInRydWVcIiAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFyY2hpdm9cIj57eydhcmNoaXZvJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgcC1idXR0b24gcC1idXR0b24tb3V0bGluZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW5cIiBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWxpbWluYXIoKVwiPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHAtdGFibGUgI3RhYmxhQ2FyZ3VlTGluZWFcbiAgICAgICAgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiXG4gICAgICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICBbdmFsdWVdPVwibGlzdGFMaW5lYXNcIlxuICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHNMTCA+IHBhZ2luYXRvci5yb3dzTExcIlxuICAgICAgICBbcm93c109XCJwYWdpbmF0b3Iucm93c0xMXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzTExcIlxuICAgICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwXVwiXG4gICAgICAgIHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zdHJpcGVkXCJcbiAgICAgICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gYWwge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9IHJlZ2lzdHJvc1wiXG4gICAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZm9uZG9UYWJsYVBpbmNpcGFsXCI+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3snbGluZWEnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7J21lbnNhamUnIHwgdHJhbnNsYXRlfX08L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtYmVhbj5cbiAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwiYmVhblwiPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7YmVhbi5saW5lYX19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57e2JlYW4ubWVuc2FqZX19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPnt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG4gICAgXG48L2Rpdj4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0YXItZnVlbnRlLWdlbmVyYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC93ZWJjb21tb24vcGFnZXMvZnVlbnRlL2ltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsL2ltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Z1ZW50ZS9pbXBvcnRhci1mdWVudGUtZ2VuZXJhbC9pbXBvcnRhci1mdWVudGUtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFVbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0ZBQWtGLENBQUM7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0ssT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hE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b3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVudUl0ZW0sIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJbXBvcnRhckZ1ZW50ZUNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ltcG9ydGFyLWZ1ZW50ZS1jb24vaW1wb3J0YXItZnVlbnRlLWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZ1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9GdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsJztcbmltcG9ydCB7IENhcmd1ZUxpbmVhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9DYXJndWVMaW5lYU1vZGVsJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZ2VuZXJhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZ2VuZXJhbC5waXBlJztcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvbWVudS5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2FyZ3VlTGluZWFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FyZ3VlbGluZWEuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRlbXBsYXRlVGFibGFWYWNpYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvdGVtcGxhdGUtdGFibGEtdmFjaWEvdGVtcGxhdGUtdGFibGEtdmFjaWEuY29tcG9uZW50JztpbXBvcnQgeyBNZW51YmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZW51YmFyJztcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFiVmlld01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsJyxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUYWJsZU1vZHVsZSwgVGVtcGxhdGVUYWJsYVZhY2lhQ29tcG9uZW50LCBNZW51YmFyTW9kdWxlLCBDb25maXJtUG9wdXBNb2R1bGUsIEltcG9ydGFyRnVlbnRlQ29uQ29tcG9uZW50LCBJbnB1dFRleHRNb2R1bGUsICBUcmFuc2xhdGVNb2R1bGUsIERhdGVQaXBlLCBUYWJWaWV3TW9kdWxlLCBCdXR0b25Nb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXBvcnRhci1mdWVudGUtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcG9ydGFyLWZ1ZW50ZS1nZW5lcmFsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wb3J0YXJGdWVudGVHZW5lcmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgdGlwb1ByZXNlbnRhY2lvbjogc3RyaW5nID0nZnVlbnRlJztcbiAgcHVibGljIHZpc3RhVmlzdWFsaXphcjogc3RyaW5nO1xuICBwdWJsaWMgbGlzdGFGdWVudGVQcm9jZXNvOiBGdWVudGVQcm9jZXNvR2VuZXJhbE1vZGVsW10gPSBbXVxuICBwdWJsaWMgdmVyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGZ1ZW50ZVByb2Nlc29EVE86IEZ1ZW50ZVByb2Nlc29HZW5lcmFsTW9kZWw7XG4gIHB1YmxpYyBsaXN0YUxpbmVhczogQ2FyZ3VlTGluZWFNb2RlbFtdID0gW11cbiAgcHVibGljIGl0ZW1zOiBNZW51SXRlbVtdXG4gIHB1YmxpYyBtb3N0cmFyTWVudTogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyB0aXR1bG86IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdkZXRhbGxlJykgZGV0YWxsZTogSW1wb3J0YXJGdWVudGVDb25Db21wb25lbnQ7XG5cbiAgcGFnaW5hdG9yPXtyb3dzOjE1LCB0b3RhbFJlY29yZHM6MCwgcm93c0xMOjEwLCB0b3RhbFJlY29yZHNMTDowfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ2VuZXJhbFNlcnZpY2U6IEdlbmVyYWxTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbm90aWZpY2FjaW9uZXNTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZ2VuZXJhbFBpcGU6IEdlbmVyYWxQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcmd1ZUxpbmVhOiBDYXJndWVMaW5lYVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmVyID0gdHJ1ZTtcbiAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9IG51bGw7XG4gICAgdGhpcy5pdGVtcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdMaXN0YSBGdWVudGVzIGRlIEltcG9ydGFjacOzbicsXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtZmlsZS1jbG91ZCcsXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMudGlwb1ByZXNlbnRhY2lvbiA9ICdmdWVudGUnO1xuICAgICAgICAgIHRoaXMudGl0dWxvID0gICdMaXN0YSBGdWVudGVzIGRlIEltcG9ydGFjacOzbic7XG4gICAgICAgICAgdGhpcy5tZW51U2VydmljZS5zZXRCcmVhZGNydW1iKFt7IGxhYmVsOiB0aGlzLnRpdHVsbyAsIGNvbW1hbmQ6IChldmVudCkgPT4geyBsb2NhdGlvbi5yZWxvYWQoKX19XSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ1Byb2Nlc29zIEdlbmVyYWRvcycsXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtZmlsZScsXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMudGlwb1ByZXNlbnRhY2lvbiA9ICdwcm9jZXNvJztcbiAgICAgICAgICB0aGlzLnRpdHVsbyA9ICAnUHJvY2Vzb3MgR2VuZXJhZG9zJztcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6IHRoaXMudGl0dWxvLCBjb21tYW5kOiAoZXZlbnQpID0+eyBsb2NhdGlvbi5yZWxvYWQoKSB9IH1dKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXVxuICB9XG5cbiAgaXNWZXIoKSB7XG4gICAgaWYgKCF0aGlzLnZlcil7XG4gICAgICByZXR1cm4gdGhpcy52ZXI7XG4gICAgfVxuICAgIHRoaXMudmVyID0gZmFsc2U7XG4gICAgdGhpcy50aXBvUHJlc2VudGFjaW9uID0gJ2Z1ZW50ZSdcbiAgICB0aGlzLnRpdHVsbyA9ICAnTGlzdGEgRnVlbnRlcyBkZSBJbXBvcnRhY2nDs24nO1xuICAgIHRoaXMubWVudVNlcnZpY2Uuc2V0QnJlYWRjcnVtYihbeyBsYWJlbDogdGhpcy50aXR1bG8sIGNvbW1hbmQ6IChldmVudCkgPT4geyBsb2NhdGlvbi5yZWxvYWQoKX0gfV0pO1xuICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ0Z1ZW50ZVByb2Nlc29HZW5lcmFsRFRPJywgbnVsbCwgZmFsc2UsIHt9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5saXN0YUZ1ZW50ZVByb2Nlc28gPSBkYXRhO1xuICAgICAgdGhpcy5wYWdpbmF0b3IudG90YWxSZWNvcmRzID0gdGhpcy5saXN0YUZ1ZW50ZVByb2Nlc28ubGVuZ3RoO1xuICAgICAgdGhpcy5kZXRhbGxlLnRyYWVyRnVlbnRlKCk7XG5cbiAgICB9KVxuICAgIHJldHVybiB0aGlzLnZlcjtcbiAgfVxuXG4gIHZlckFudGVyaW9yKGV2ZW50KXtcbiAgICB0aGlzLm1vc3RyYXJNZW51ID0gZmFsc2U7XG4gICAgdGhpcy5mdWVudGVQcm9jZXNvRFRPID0gZXZlbnQuZGF0YTtcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yTGlzdChuZXcgR2VuZXJhbE1vZGVsKCdDYXJndWVMaW5lYURUTycsIG51bGwsIGZhbHNlLCB7cHJvY2VzbzogdGhpcy5mdWVudGVQcm9jZXNvRFRPLmxsYXZlVGFibGF9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5saXN0YUxpbmVhcyA9IGRhdGE7XG4gICAgICB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHNMTCA9IHRoaXMubGlzdGFMaW5lYXMubGVuZ3RoO1xuICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZGV0YWxsZSc7XG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6IHRoaXMudGl0dWxvICxjb21tYW5kOiAoZXZlbnQpID0+eyB0aGlzLnJlZ3Jlc2FyKCkgfSB9LCB7IGxhYmVsOiAnRGV0YWxsZSBQcm9jZXNvcyBHZW5lcmFkb3MnIH1dKTtcbiAgICB9KVxuICB9XG5cbiAgZWxpbWluYXIoKXtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcbiAgICAgIGljb246ICdjb25maXJtYXInLFxuICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FyZ3VlTGluZWEuZWxpbWluYXJQcm9jZXNvKHtsbGF2ZVByb2Nlc286IHRoaXMuZnVlbnRlUHJvY2Vzb0RUTy5sbGF2ZVRhYmxhfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMubGlzdGFGdWVudGVQcm9jZXNvLmluZGV4T2YodGhpcy5mdWVudGVQcm9jZXNvRFRPKTtcbiAgICAgICAgICB0aGlzLmxpc3RhRnVlbnRlUHJvY2Vzby5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMubm90aWZpY2FjaW9uZXNTZXJ2aWNlLnNob3dTdWNjZXNzKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUilcbiAgICAgICAgICB0aGlzLnJlZ3Jlc2FyKClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICAgIFxuICB9IFxuXG4gIHJlZ3Jlc2FyKCl7XG4gICAgaWYgKHRoaXMudGlwb1ByZXNlbnRhY2lvbiA9PSAnZnVlbnRlJyl7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmRldGFsbGUuZXN0YWRvUmVncmVzYXIpXG4gICAgICBpZiAodGhpcy5kZXRhbGxlLmVzdGFkb1JlZ3Jlc2FyID09ICd2b2x2ZXJJbXBvcnRhcicpe1xuICAgICAgICB0aGlzLmRldGFsbGUuaW1wb3J0YXJOdWV2YW1lbnRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGV0YWxsZS5lc3RhZG9SZWdyZXNhciA9PSAncmVncmVzYXJJbXBvcnRhcicpe1xuICAgICAgICB0aGlzLmRldGFsbGUucmVncmVzYXJEYXRvcygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmICggdGhpcy5kZXRhbGxlPy5yZWdyZXNhclB1bnRvUHJvY2Vzbyl7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZGV0YWxsZT8ucmVncmVzYXJQdW50b1Byb2Nlc287XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gbnVsbDtcbiAgICB0aGlzLm1vc3RyYXJNZW51ID0gdHJ1ZTtcbiAgICBpZiAodGhpcy50aXBvUHJlc2VudGFjaW9uID09ICdmdWVudGUnKXtcbiAgICAgIHRoaXMuZGV0YWxsZS5tb3N0cmFyID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpc3RhRnVlbnRlUHJvY2Vzby5sZW5ndGggPT0gMCl7XG4gICAgICB0aGlzLnRpcG9QcmVzZW50YWNpb24gPSAgJ2Z1ZW50ZSc7XG4gICAgICB0aGlzLnRpdHVsbyA9ICAnTGlzdGEgRnVlbnRlcyBkZSBJbXBvcnRhY2nDs24nO1xuICAgIH1cbiAgICB0aGlzLm1lbnVTZXJ2aWNlLnNldEJyZWFkY3J1bWIoW3sgbGFiZWw6IHRoaXMudGl0dWxvICwgY29tbWFuZDogKGV2ZW50KSA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpfX1dKTtcbiAgfVxuXG4gIHJlZ3Jlc2FyRnVlbnRlKGV2ZW50KXtcbiAgICBpZiAoZXZlbnQpe1xuICAgICAgdGhpcy5yZWdyZXNhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vc3RyYXJNZW51ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGF1dG9TZXJ2aWNpb1BvcnRhbCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zdG9yYWdlLmdldERlY29kZWRKV1QoKS5hcGxpY2FjaW9uID09IDEwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59IiwiPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+XG48ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICA8aDEgIGNsYXNzPVwibWItMVwiPnt7J2ltcG9ydGFyZnVlbnRlJyB8IHRyYW5zbGF0ZX19PC9oMT5cbiAgICBcbiAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSAoY2xpY2spPVwicmVncmVzYXIoKVwiIGxhYmVsPVwie3snbGlua19yZWdyZXNhcicgfCB0cmFuc2xhdGV9fVwiIGljb249XCJwaSBwaS1jaGV2cm9uLWxlZnRcIiAqbmdJZj1cIiFtb3N0cmFyTWVudVwiXG4gICAgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBtbC00XCIgPjwvYnV0dG9uPlxuPC9kaXY+XG5cbjxwLW1lbnViYXIgW21vZGVsXT1cIml0ZW1zXCIgY2xhc3M9XCJtZW51LWFjY2lvbi1zYXJhXCIgKm5nSWY9XCJtb3N0cmFyTWVudSAmJiAhYXV0b1NlcnZpY2lvUG9ydGFsKClcIj48L3AtbWVudWJhcj5cblxuPGRpdiAqbmdJZj1cImlzVmVyKCkgJiYgbW9zdHJhck1lbnVcIj48L2Rpdj5cbjxoNCAqbmdJZj1cIiFhdXRvU2VydmljaW9Qb3J0YWwoKVwiPnt7dGl0dWxvfX08L2g0PlxuXG48ZGl2ICpuZ0lmPVwidGlwb1ByZXNlbnRhY2lvbiA9PSAnZnVlbnRlJ1wiPlxuICAgIDxhcHAtaW1wb3J0YXItZnVlbnRlLWNvbiAjZGV0YWxsZSAocmVncmVzYXJGdWVudGUpPVwicmVncmVzYXJGdWVudGUoJGV2ZW50KVwiPjwvYXBwLWltcG9ydGFyLWZ1ZW50ZS1jb24+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJ0aXBvUHJlc2VudGFjaW9uICE9ICdmdWVudGUnICYmIHZpc3RhVmlzdWFsaXphciA9PSBudWxsXCI+XG4gICAgPHAtdGFibGUgI3RhYmxhRnVlbnRlUHJvY2Vzb1xuICAgICAgICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcbiAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgIFt2YWx1ZV09XCJsaXN0YUZ1ZW50ZVByb2Nlc29cIlxuICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHMgPiBwYWdpbmF0b3Iucm93c1wiXG4gICAgICAgIFtyb3dzXT1cInBhZ2luYXRvci5yb3dzXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzXCJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWRcIlxuICAgICAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSBhbCB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCJcbiAgICAgICAgKG9uUm93U2VsZWN0KT1cInZlckFudGVyaW9yKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7J2Z1ZW50ZScgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3sndXN1YXJpbycgfCB0cmFuc2xhdGV9fTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3snZXN0YWRvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57eydhcmNoaXZvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57eydwcm9jZXNvJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWJlYW4+XG4gICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImJlYW5cIj5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57e2JlYW4ubm9tYnJlRnVlbnRlfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7YmVhbi51c3VhcmlvfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7YmVhbi5lc3RhZG99fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3tiZWFuLmFyY2hpdm99fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3tiZWFuLmZlY2hhUHJvY2VzbyB8IGRhdGUgOiAoJ2Zvcm1hdG9mZWNoYWhvcmEnIHwgdHJhbnNsYXRlKX19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj4gXG4gICAgICAgICAgICAgICAgPGFwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT48L2FwcC10ZW1wbGF0ZS10YWJsYS12YWNpYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT4gICAgPC9wLXRhYmxlPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwidGlwb1ByZXNlbnRhY2lvbiAhPSAnZnVlbnRlJyAmJiB2aXN0YVZpc3VhbGl6YXIgPT0gJ2RldGFsbGUnXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC0xMiBsZzpjb2wtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbXQtMiBtYi0yXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtdC0zXCI+PGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiPjwvaT57eydkZXRhbGxlJyB8IHRyYW5zbGF0ZX19IHt7J2Nhcmd1ZScgfCB0cmFuc2xhdGV9fTwvaDU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvciBwLWZsdWlkIGdyaWQgbXQtMSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidy1mdWxsXCIgWyhuZ01vZGVsKV09XCJmdWVudGVQcm9jZXNvRFRPLm5vbWJyZUZ1ZW50ZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgcElucHV0VGV4dCBhdXRvZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZnVlbnRlXCI+e3snZnVlbnRlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMyBtZDpjb2wtMyBsZzpjb2wtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInctZnVsbFwiIFsobmdNb2RlbCldPVwiZnVlbnRlUHJvY2Vzb0RUTy51c3VhcmlvXCIgW2Rpc2FibGVkXT1cInRydWVcIiBwSW5wdXRUZXh0IGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ1c3VhcmlvXCI+e3sndXN1YXJpbycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTMgbWQ6Y29sLTMgbGc6Y29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LWZ1bGxcIiBbKG5nTW9kZWwpXT1cImZ1ZW50ZVByb2Nlc29EVE8uZXN0YWRvXCIgW2Rpc2FibGVkXT1cInRydWVcIiBwSW5wdXRUZXh0IGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJlc3RhZG9cIj57eydlc3RhZG8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0zIG1kOmNvbC0zIGxnOmNvbC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBbKG5nTW9kZWwpXT1cImZ1ZW50ZVByb2Nlc29EVE8uYXJjaGl2b1wiIFtkaXNhYmxlZF09XCJ0cnVlXCIgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhcmNoaXZvXCI+e3snYXJjaGl2bycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIHAtYnV0dG9uIHAtYnV0dG9uLW91dGxpbmVkXCIgXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCIgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVsaW1pbmFyKClcIj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxwLXRhYmxlICN0YWJsYUNhcmd1ZUxpbmVhXG4gICAgICAgIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxuICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgW3ZhbHVlXT1cImxpc3RhTGluZWFzXCJcbiAgICAgICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzTEwgPiBwYWdpbmF0b3Iucm93c0xMXCJcbiAgICAgICAgW3Jvd3NdPVwicGFnaW5hdG9yLnJvd3NMTFwiXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwicGFnaW5hdG9yLnRvdGFsUmVjb3Jkc0xMXCJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZFwiXG4gICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IGFsIHtsYXN0fSBkZSB7dG90YWxSZWNvcmRzfSByZWdpc3Ryb3NcIlxuICAgICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPnt7J2xpbmVhJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57eydtZW5zYWplJyB8IHRyYW5zbGF0ZX19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWJlYW4+XG4gICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImJlYW5cIj5cbiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj57e2JlYW4ubGluZWF9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+e3tiZWFuLm1lbnNhamV9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMTAwXCI+IFxuICAgICAgICAgICAgICAgIDxhcHAtdGVtcGxhdGUtdGFibGEtdmFjaWE+PC9hcHAtdGVtcGxhdGUtdGFibGEtdmFjaWE+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgIDwvbmctdGVtcGxhdGU+ICAgIDwvcC10YWJsZT5cbiAgICBcbjwvZGl2PiJdfQ==