@tsi-developpement/tsi-shared-ui 1.6.2 → 1.6.3
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.
- package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +1 -1
- package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +1 -1
- package/esm2022/lib/tsi-components/manage-import-export/manage-import-export.component.mjs +2 -2
- package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs +1 -1
- package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +44 -4
- package/esm2022/lib/tsi-components/tsi-change-password/tsi-change-password.component.mjs +1 -1
- package/esm2022/lib/tsi-components/tsi-dynamic-form/create-or-edit-dynamic-form/create-or-edit-dynamic-form.component.mjs +1 -1
- package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +1 -1
- package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +3 -3
- package/esm2022/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.mjs +21 -3
- package/esm2022/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.mjs +4 -4
- package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +1 -1
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +76 -17
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -1
- package/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.d.ts +7 -1
- package/package.json +1 -1
|
@@ -164,7 +164,7 @@ export class CreateOrEditEntityInformationsComponent extends TsiFormComponentBas
|
|
|
164
164
|
this.entityWithRelations.relations.map(er => er.entityFrom = this.entityWithRelations.entity.className ?? '');
|
|
165
165
|
}
|
|
166
166
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, deps: [{ token: i1.EntityConfigurationService }, { token: i1.ErrorResponseManagerService }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: i1.TsiNotificationService }, { token: i1.TsiConfirmationService }, { token: i1.ApiExplorerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditEntityInformationsComponent, selector: "app-create-or-edit-entity-informations", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n \r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i6.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i7.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i8.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i9.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i10.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i11.TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "targetBusinessClass", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: i12.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i13.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i14.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i15.LocalizePipe, name: "localize" }, { kind: "pipe", type: i16.ModalLabelPipe, name: "modalLabel" }] }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditEntityInformationsComponent, selector: "app-create-or-edit-entity-informations", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n \r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i6.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i7.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i8.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i9.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i10.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i11.TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "targetBusinessClass", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: i12.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i13.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i14.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i15.LocalizePipe, name: "localize" }, { kind: "pipe", type: i16.ModalLabelPipe, name: "modalLabel" }] }); }
|
|
168
168
|
}
|
|
169
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, decorators: [{
|
|
170
170
|
type: Component,
|
|
@@ -194,7 +194,7 @@ export class CreateOrEditModeleImportComponent extends TsiFormComponentBaseCompo
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, deps: [{ token: i1.ModeleImportService }, { token: i1.TsiNotificationService }, { token: i2.DynamicDialogConfig }, { token: i2.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
197
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditModeleImportComponent, selector: "app-create-or-edit-modele-import", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo (bindChange)=\"typeImportChange($event)\" class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Type de fichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getImportFileTypeEnum()\r\n \" [(bind)]=\"modeleImport.fileType\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-3\"\r\n [labelValue]=\"'S\u00E9parateur de fichier CSV'\"></Tsi-Label>\r\n <Tsi-Search-Combo *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-9\"\r\n [listSourceUrl]=\"\r\n modeleImportEndPoints.getCsvFileSeparatorEnum()\r\n \" [(bind)]=\"modeleImport.csvFileSeparator\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div style=\"max-width: 1600px; overflow: auto;\" *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\" [columns]=\"modeleImportDetailColumns\"\r\n [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i5.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i6.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i7.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i9.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i10.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i11.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i12.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i13.ModalLabelPipe, name: "modalLabel" }] }); }
|
|
197
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditModeleImportComponent, selector: "app-create-or-edit-modele-import", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo (bindChange)=\"typeImportChange($event)\" class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Type de fichier'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getImportFileTypeEnum()\r\n \" [(bind)]=\"modeleImport.fileType\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Label *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-3\"\r\n [labelValue]=\"'S\u00E9parateur de fichier CSV'\"></Tsi-Label>\r\n <Tsi-Search-Combo *ngIf=\"modeleImport.fileType == fileTypeImportEnumRef.CSV\" class=\"col-9\"\r\n [listSourceUrl]=\"\r\n modeleImportEndPoints.getCsvFileSeparatorEnum()\r\n \" [(bind)]=\"modeleImport.csvFileSeparator\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div style=\"max-width: 1600px; overflow: auto;\" *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\" [columns]=\"modeleImportDetailColumns\"\r\n [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i5.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i6.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i7.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i9.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i10.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i11.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i12.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i13.ModalLabelPipe, name: "modalLabel" }] }); }
|
|
198
198
|
}
|
|
199
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, decorators: [{
|
|
200
200
|
type: Component,
|
|
@@ -164,7 +164,7 @@ export class ManageImportExportComponent extends TsiFormComponentBaseComponent {
|
|
|
164
164
|
this.columns = [
|
|
165
165
|
{
|
|
166
166
|
field: 'nomModele',
|
|
167
|
-
header: '
|
|
167
|
+
header: 'shared_importModele_nom'
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
header: '',
|
|
@@ -498,4 +498,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
498
498
|
type: ViewChild,
|
|
499
499
|
args: ['importFileToExecuteFileUpload']
|
|
500
500
|
}] } });
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1pbXBvcnQtZXhwb3J0L21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tYW5hZ2UtaW1wb3J0LWV4cG9ydC9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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Q0FBQzsyU0FJSyxhQUFhO3NCQUE3QyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDTixZQUFZO3NCQUFwQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0EsaUJBQWlCO3NCQUF2QyxTQUFTO3VCQUFDLFVBQVU7Z0JBZ0R1Qiw2QkFBNkI7c0JBQXhFLFNBQVM7dUJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBbGVydEltcG9ydE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC1pbXBvcnQtbWVzc2FnZS9hbGVydC1pbXBvcnQtbWVzc2FnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQgfSBmcm9tICcuLi9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0L2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpVmlld0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi9vdXRwdXQtY29tcG9uZW50cy90c2ktdmlldy1ncmlkL3RzaS12aWV3LWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvdG9vbHRpcFBvc2l0aW9uLmVudW0nO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgSW5wdXRUeXBlcywgRmlsdGVyT3BlcmF0b3JUeXBlLCBNb2RlcywgRGlzcGxheVR5cGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBHcmlkQ29sdW1uLCBCdXR0b25DbGlja1Jlc3VsdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBFeGVjdXRlSW1wb3J0UmVxdWVzdCwgSW1wb3J0UmVzdWx0LCBTZWFyY2hGaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE1vZGVsZUltcG9ydFNlcnZpY2UsIFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsIFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsIEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSwgVHNpTWVzc2FnZVNlcnZpY2UsIFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi90c2ktYmFzZS9jb21wb25lbnRzL3RzaS1mb3JtLWJhc2UvdHNpLWZvcm0tYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWdtZW50IH0gZnJvbSAnLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEZpbGVUeXBlSW1wb3J0RW51bSB9IGZyb20gJy4uLy4uL2VudW1zL2ZpbGUtdHlwZS1pbXBvcnQtZW51bSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWFuYWdlLWltcG9ydC1leHBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHN0eWxlVXJsczogWycuL21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFuYWdlSW1wb3J0RXhwb3J0Q29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHNpVmlld0dyaWRDb21wb25lbnQpIGdyaWRDb21wb25lbnQhOiBUc2lWaWV3R3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdmaWxlVXBsb2FkJykgZmlsZVVwbG9hZGVyITogRmlsZVVwbG9hZDtcclxuICBAVmlld0NoaWxkKFwidmlld0dyaWRcIikgdmlld0dyaWRDb21wb25lbnQ/OiBUc2lWaWV3R3JpZENvbXBvbmVudDtcclxuICB0b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcblxyXG4gIHRvVXBsb2FkRmlsZURhdGE6IGFueTtcclxuICBvblJlbW92ZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZEZpbGVEYXRhID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBvbkNsZWFyKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF07XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSBmaWxlO1xyXG4gIH1cclxuICBvbkltcG9ydEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLnVwbG9hZEpzb25GaWxlKHRoaXMudG9VcGxvYWRGaWxlRGF0YSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoJ3NoYXJlZF9pbXBvcnRNb2RlbGVfanNvbl91cGxvYWRlZF9zdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXNwb25zZS5tZXNzYWdlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB0aGlzLmZpbGVVcGxvYWRlci5jbGVhcigpXHJcbiAgfVxyXG5cclxuICBjb2x1bW5zSnNvbjogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX2pzb25fbmFtZVwiLFxyXG4gICAgICBmaWVsZDogXCJqc29uRmlsZU5hbWVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgZmllbGQ6ICdmcm9tSnNvblRvRGF0YWJhc2UnLFxyXG4gICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWFycm93LWNpcmNsZS11cCcsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgXTtcclxuICBrZXk6IHN0cmluZyA9ICdqc29uRmlsZU5hbWUnO1xyXG4gIGdyaWREYXRhOiBhbnlcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW1wb3J0RmlsZVRvRXhlY3V0ZUZpbGVVcGxvYWQnKSBpbXBvcnRGaWxlVG9FeGVjdXRlRmlsZVVwbG9hZD86IEZpbGVVcGxvYWQ7XHJcblxyXG4gIGNvbHVtbnM6IGFueVxyXG5cclxuICBpc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlOiBib29sZWFuID0gZmFsc2VcclxuICB0b1VwbG9hZFRvRXhlY3V0ZUZpbGU6IGFueSA9IHVuZGVmaW5lZFxyXG4gIHRvVXBsb2FkV2l0aG91dE1vZGVsOiBhbnkgPSB1bmRlZmluZWRcclxuICB0b0ltcG9ydE1vZGVsZVVpZD86IHN0cmluZ1xyXG5cclxuICBjb2x1bW5zSGlzdG9yeTogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX2NvZGVfaW1wb3J0XCIsXHJcbiAgICAgIGZpZWxkOiBcImNvZGVJbXBvcnRcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfZGF0ZV9pbXBvcnRcIixcclxuICAgICAgZmllbGQ6IFwiZGF0ZUltcG9ydFwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9ub21icmVfbGlnbmVzXCIsXHJcbiAgICAgIGZpZWxkOiBcIm5vbWJyZUxpZ25lc1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2RlbGV0ZUZyb21EYXRhYmFzZScsXHJcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICBidXR0b25JY29uOiAncGkgcGktdHJhc2gnLFxyXG4gICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnknXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgaGlzdG9yeUdyaWREYXRhOiBhbnlcclxuICBpbXBvcnRIaXN0b3J5S2V5OiBzdHJpbmcgPSAnY29kZUltcG9ydCc7XHJcblxyXG4gIGZpbGVUeXBlIDogc3RyaW5nID0gXCIueGxzLC54bHN4XCI7XHJcblxyXG4gIGltcG9ydFJlc3VsdERhdGE6IEFycmF5PEltcG9ydFJlc3VsdD4gPSBbXVxyXG5cclxuICBzZWFyY2hGaWVsZHM6IEFycmF5PFNlYXJjaEZpZWxkPiA9IFtcclxuICBdXHJcblxyXG4gIGltcG9ydFJlc3VsdHNDb2x1bW5zOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgZmllbGQ6ICdjb25zdWx0RGV0YWlsJyxcclxuICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1leWUnLFxyXG4gICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnknXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfbW9kZWxlX2ltcG9ydF9saWJlbGxlXCIsXHJcbiAgICAgIGZpZWxkOiBcIm1vZGVsZUltcG9ydExpYmVsbGVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X21vZGVsZV91dGlsaXNhdGV1clwiLFxyXG4gICAgICBmaWVsZDogXCJ1c2VyTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfZmlsZW5hbWVcIixcclxuICAgICAgZmllbGQ6IFwiZmlsZU5hbWVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X3N0YXJ0RGF0ZVwiLFxyXG4gICAgICBmaWVsZDogXCJzdGFydERhdGVcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9lbmRfZGF0ZVwiLFxyXG4gICAgICBmaWVsZDogXCJlbmREYXRlXCIsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfc3RhdHVzXCIsXHJcbiAgICAgIGZpZWxkOiBcInN0YXR1c1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfcHJvZ3Jlc3NcIixcclxuICAgICAgZmllbGQ6IFwicHJvZ3Jlc3NcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLlJBVEVfRElTUExBWVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X3RvdGFsX2xpbmVzX251bWJlclwiLFxyXG4gICAgICBmaWVsZDogXCJ0b3RhbExpbmVzTnVtYmVyXCIsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5JTlRFR0VSX0RJU1BMQVlcclxuICAgIH1cclxuICBdXHJcblxyXG4gIHByaXZhdGUgX2RpYWxvZ1JlZj86IER5bmFtaWNEaWFsb2dSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RlbGVJbXBvcnRTZXJ2aWNlOiBNb2RlbGVJbXBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBUc2lDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2U6IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSByZWY/OiBEeW5hbWljRGlhbG9nUmVmKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZylcclxuICAgIHRoaXMuc2VhcmNoRmllbGRzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5URVhUX0JPWCxcclxuICAgICAgICBmaWVsZDogXCJDbGFzc2VcIixcclxuICAgICAgICBsYWJlbFZhbHVlOiBcIkNsYXNzZVwiLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuRVFVQUwsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC02JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtMycsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTMnLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzc1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgICB0aGlzLmNvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZDogJ25vbU1vZGVsZScsXHJcbiAgICAgICAgaGVhZGVyOiAnTm9tJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2VkaXQnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWVkaXQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXN1Y2Nlc3MnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnTW9kaWZpZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZXhwb3J0SnNvbicsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtZXhwb3J0JyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1oZWxwJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0V4cG9ydGVyIEpzb24nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZXhwb3J0JyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1leGNlbCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24td2FybmluZycsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdFeHBvcnRlcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdpbXBvcnQnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWltcG9ydCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnSW1wb3J0ZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZGVsZXRlJyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktdHJhc2gnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlcicsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdTdXBwcmltZXInXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZG93bmxvYWRKc29uJyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktYXJyb3ctY2lyY2xlLWRvd24nLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWhlbHAnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnRXhwb3J0IEpzb24gU2VydmVyJ1xyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcblxyXG5cclxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICBzdXBlci5uZ09uSW5pdCgpXHJcbiAgICBsZXQgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRKc29uRmlsZXModGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lKSlcclxuICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhXHJcbiAgICBhd2FpdCB0aGlzLmdldEltcG9ydFJlc3VsdCgpXHJcbiAgICBpZiAoU2VnbWVudC5wcm9kdWN0aW9uKSB7XHJcbiAgICAgIGxldCBidXR0b25BZEJ1aWx0aW5UZW1wbGF0ZXNJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoKGNvbDogR3JpZENvbHVtbikgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb2wuZmllbGQgPT0gXCJkb3dubG9hZEpzb25cIlxyXG4gICAgICB9KVxyXG4gICAgICBpZiAoYnV0dG9uQWRCdWlsdGluVGVtcGxhdGVzSW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmNvbHVtbnMuc3BsaWNlKGJ1dHRvbkFkQnVpbHRpblRlbXBsYXRlc0luZGV4LCAxKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhpc3RvcnlHcmlkRGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRJbXBvcnRIaXN0b3J5KHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlZnJlc2hJbXBvcnRFeHBvcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRKc29uRmlsZXModGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lKSlcclxuICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhXHJcbiAgICBhd2FpdCB0aGlzLmdldEltcG9ydFJlc3VsdCgpXHJcbiAgICB0aGlzLmhpc3RvcnlHcmlkRGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRJbXBvcnRIaXN0b3J5KHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSlcclxuICB9XHJcblxyXG4gIG9wZW5Nb2RhbCgpIHtcclxuICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX3RzaU1vZGFsU2VydmljZS5vcGVuKENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZW50aXR5QnVzaW5lc3NDbGFzczogdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSxcclxuICAgICAgICBtb2RlOiBNb2Rlcy5jcmVhdGVcclxuICAgICAgfSxcclxuICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiAnNzV2dycsXHJcbiAgICAgIGhlaWdodDogJzU1dncnLFxyXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnZpZXdHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgdGhpcy52aWV3R3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0SW1wb3J0UmVzdWx0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5nZXRJbXBvcnRSZXN1bHRCeUJ1c2luZXNzQ2xhc3ModGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gICAgICB0aGlzLmltcG9ydFJlc3VsdERhdGEgPSBkYXRhXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uQ2xpY2tlZChkYXRhOiBCdXR0b25DbGlja1Jlc3VsdCkge1xyXG4gICAgaWYgKGRhdGEuZmllbGQgPT0gXCJlZGl0XCIpIHtcclxuICAgICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQ3JlYXRlT3JFZGl0TW9kZWxlSW1wb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWQ6IGRhdGEua2V5Py51aWQsXHJcbiAgICAgICAgICBlbnRpdHlCdXNpbmVzc0NsYXNzOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICAgIG1vZGU6IE1vZGVzLmVkaXRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICAgIHdpZHRoOiAnNzV2dycsXHJcbiAgICAgICAgaGVpZ2h0OiAnNTV2dycsXHJcbiAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy52aWV3R3JpZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgdGhpcy52aWV3R3JpZENvbXBvbmVudC5yZWZyZXNoKHRydWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICB0aGlzLmRlbGV0ZU1vZGVsZUltcG9ydChkYXRhKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImltcG9ydFwiKSB7XHJcbiAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IHRydWVcclxuICAgICAgdGhpcy50b0ltcG9ydE1vZGVsZVVpZCA9IGRhdGEua2V5Py51aWRcclxuICAgICAgdGhpcy5maWxlVHlwZSA9IGRhdGEua2V5Py5maWxlVHlwZSA9PSBGaWxlVHlwZUltcG9ydEVudW0uWExTWCA/IFwiLnhscywueGxzeFwiIDogXCIuY3N2XCJcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJleHBvcnRcIikge1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGEoZGF0YS5rZXk/LnVpZClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEuZmllbGQgPT0gXCJleHBvcnRKc29uXCIpIHtcclxuICAgICAgdGhpcy5leHBvcnREYXRhSnNvbihkYXRhLmtleT8udWlkKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImRvd25sb2FkSnNvblwiKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUpzb25TZXJ2ZXIoZGF0YS5rZXk/LnVpZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGEoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKGlkICE9IHVuZGVmaW5lZCAmJiBpZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUV4cG9ydChpZCwgdGhpcy5jb25maWcuZGF0YT8ucGFnZWRSZXF1ZXN0KS5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShkYXRhPy5kYXRhKVxyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhSnNvbihpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlRXhwb3J0SnNvbihpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YT8uZGF0YSlcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YUpzb25TZXJ2ZXIoaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKGlkICE9IHVuZGVmaW5lZCAmJiBpZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUV4cG9ydEpzb25TZXJ2ZXIoaWQpLnN1YnNjcmliZShcclxuXHJcbiAgICAgICAgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRGaWxlKGRhdGE6IGFueSkge1xyXG4gICAgbGV0IGJsb2JVcmwgPSBcImRhdGE6YXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LFwiICsgZGF0YS5maWxlQ29udGVudDtcclxuICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgYmxvYlVybCk7XHJcbiAgICBsaW5rLnNldEF0dHJpYnV0ZShcImRvd25sb2FkXCIsIGRhdGEuZmlsZU5hbWUpO1xyXG4gICAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlTW9kZWxlSW1wb3J0KGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBkYXRhLmtleSAhPSBudWxsICYmIGRhdGEua2V5ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmRlbGV0ZShkYXRhLmtleSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXVxyXG4gICAgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUgPSBmaWxlO1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX0NsZWFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlID0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfSW1wb3J0RmlsZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50b0ltcG9ydE1vZGVsZVVpZCAmJiB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5pc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlID0gZmFsc2VcclxuICAgICAgbGV0IGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCA9IG5ldyBFeGVjdXRlSW1wb3J0UmVxdWVzdCgpXHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0Lm1vZGVsZUltcG9ydFVpZCA9IHRoaXMudG9JbXBvcnRNb2RlbGVVaWQ7XHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LmZpbGVOYW1lID0gdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGU/Lm5hbWVcclxuXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlSW1wb3J0KGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF07XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gZmlsZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9DbGVhcihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsID0gdW5kZWZpbmVkXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwgPSB1bmRlZmluZWRcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG5cclxuICAgICAgbGV0IGV4ZWN1dGVJbXBvcnRSZXF1ZXN0OiBFeGVjdXRlSW1wb3J0UmVxdWVzdCA9IG5ldyBFeGVjdXRlSW1wb3J0UmVxdWVzdCgpXHJcbiAgICAgIGV4ZWN1dGVJbXBvcnRSZXF1ZXN0Lm1vZGVsZUltcG9ydFVpZCA9IHVuZGVmaW5lZDtcclxuICAgICAgZXhlY3V0ZUltcG9ydFJlcXVlc3QuZmlsZU5hbWUgPSB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsPy5uYW1lXHJcblxyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydFdpdGhvdXRNb2RlbChleGVjdXRlSW1wb3J0UmVxdWVzdCwgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuZXh0OiBhc3luYyAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkR3JpZERhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SnNvbkZpbGVzKHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmdyaWREYXRhID0gZGF0YTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBncmlkIGRhdGEnLCBlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hHcmlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkR3JpZERhdGEoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbnN1bHRJbXBvcnRSZXN1bHRCdXR0b25DbGlja2VkKGV2ZW50OiBCdXR0b25DbGlja1Jlc3VsdCkge1xyXG4gICAgdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQWxlcnRJbXBvcnRNZXNzYWdlQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpZDogZXZlbnQua2V5LFxyXG4gICAgICB9LFxyXG4gICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzM1dncnLFxyXG4gICAgICBoZWlnaHQ6ICcyNXZ3JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZChldmVudDogQnV0dG9uQ2xpY2tSZXN1bHQpIHtcclxuICAgIGlmIChldmVudC5maWVsZCA9PSAnZnJvbUpzb25Ub0RhdGFiYXNlJykge1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZXhlY3V0ZUltcG9ydEpzb24oZXZlbnQua2V5LCB0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbXBvcnRpbmcganNvbjonLCBlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmZpZWxkID09ICdkZWxldGVGcm9tRGF0YWJhc2UnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZGVsZXRlSW1wb3J0KGV2ZW50LmtleSwgdGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhMb2NhbGl6YXRpb25LZXlzLmRlbGV0ZWRTdWNjZXNzZnVsbHkpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW1wb3J0aW5nIGpzb246JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxwLXRhYlZpZXc+XHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnQnIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgPGRpdiAqYnVzeT1cImlzbG9hZGluZ1wiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGNvbC0xMFwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0yXCIgW2xhYmVsVmFsdWVdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfZm9ybSdcIj5cclxuICAgICAgICAgICAgPC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDwhLS0gPHAtZHJvcGRvd24gY2xhc3M9XCJjb2wtMTAgdHNpLWNvbXBvbmVudFwiIGNsYXNzPVwidHNpLWNvbXBvbmVudFwiIHN0eWxlQ2xhc3M9XCJ0c2ktY29tcG9uZW50XCIgYXBwZW5kVHA9XCJib2R5XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwidmFsdWVcIiBvcHRpb25WYWx1ZT1cImtleVwiIFtmaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJCeT1cInZhbHVlXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgcGxhY2Vob2xkZXI9XCJ7eydzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9mb3JtJyB8IGxvY2FsaXplfX1cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibWItNCBnYXAtMlwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsZWZ0XCI+XHJcbiAgICAgICAgICA8VHNpLUJ1dHRvbiBbdGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19hZGRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgaWNvbj1cInAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0IHBpIHBpLXBsdXNcIlxyXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXN1Y2Nlc3MgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBuZy1zdGFyLWluc2VydGVkIHAtYnV0dG9uLWxhYmVsXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCI+PC9Uc2ktQnV0dG9uPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0XCI+XHJcbiAgICAgICAgICA8cC1maWxlVXBsb2FkICNmaWxlVXBsb2FkIG5hbWU9XCJkZW1vW11cIiAob25CZWZvcmVVcGxvYWQpPVwib25JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25TZWxlY3QpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIChvbkNsZWFyKT1cIm9uQ2xlYXIoJGV2ZW50KVwiIChvblJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCIgYWNjZXB0PVwiYXBwbGljYXRpb24vanNvblwiIFttYXhGaWxlU2l6ZV09XCIxMDAwMDAwXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtjaG9vc2VJY29uXT1cIidwaSBwaS1wYXBlcmNsaXAnXCIgY2FuY2VsU3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiIHVwbG9hZFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1oZWxwXCJcclxuICAgICAgICAgICAgcmVtb3ZlU3R5bGVDbGFzcz1cInAtYnV0dG9uLWRhbmdlclwiIFtjaG9vc2VMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFtjYW5jZWxMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jYW5jZWxfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRvVXBsb2FkRmlsZURhdGFcIiBwVGVtcGxhdGU9XCJmaWxldXBsb2FkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvcC1maWxlVXBsb2FkPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvcC10b29sYmFyPlxyXG5cclxuICAgICAgPHRzaS12aWV3LWdyaWQgI3ZpZXdHcmlkIFtoZWFkZXJdPVwiJ3NoYXJlZF9leGVjdXRlX2ltcG9ydF9tb2RlbF9pbXBvcnRfZXhwb3J0JyAgfGxvY2FsaXplXCJcclxuICAgICAgICBbc2VhcmNoRmllbGRzXT1cInNlYXJjaEZpZWxkc1wiIFtzaG93Q29uc3VsdEJ1dHRvbl09XCJmYWxzZVwiIFtnZXREYXRhRnJvbUFwaV09XCJ0cnVlXCJcclxuICAgICAgICBbY3J1ZFNlcnZpY2VdPVwibW9kZWxlSW1wb3J0U2VydmljZVwiIChidXR0b25Db2x1bW5DbGlja2VkKT1cImJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidhcHAtbWFuYWdlLWltcG9ydC1leHBvcnQnXCIgW2NvbHVtbnNdPVwiY29sdW1uc1wiIGtleT1cInVpZFwiIFtzZWxlY3RLZXlPbmx5XT1cImZhbHNlXCI+XHJcbiAgICAgIDwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnRfZGVmYXVsdCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICA8dHNpLXZpZXctZ3JpZCBjbGFzcz1cImNvbC0xMlwiIFtoZWFkZXJdPVwiJ3NoYXJlZF9leGVjdXRlX2ltcG9ydF9tb2RlbF9pbXBvcnRfZXhwb3J0X2RlZmF1bHQnICB8bG9jYWxpemVcIlxyXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNKc29uXCIgW2dldERhdGFGcm9tQXBpXT1cImZhbHNlXCIgW2dyaWREYXRhXT1cImdyaWREYXRhXCIgW2tleV09XCJrZXlcIlxyXG4gICAgICAgIFtmb3JtTmFtZV09XCInbW9kZWxlLWltcG9ydC1wYXItZGVmYXVsdCdcIlxyXG4gICAgICAgIChidXR0b25Db2x1bW5DbGlja2VkKT1cImhhbmRsZUJ1dHRvbkNvbHVtbkV4ZWN1dGVDbGlja2VkKCRldmVudClcIj48L3RzaS12aWV3LWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L3AtdGFiUGFuZWw+XHJcblxyXG4gIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ3NoYXJlZF9leGVjdXRlX2ltcG9ydF9oaXN0b3J5JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X2hpc3RvcnknICB8bG9jYWxpemVcIiBbY29sdW1uc109XCJjb2x1bW5zSGlzdG9yeVwiXHJcbiAgICAgICAgW2dldERhdGFGcm9tQXBpXT1cImZhbHNlXCIgW2dyaWREYXRhXT1cImhpc3RvcnlHcmlkRGF0YVwiIFtrZXldPVwiaW1wb3J0SGlzdG9yeUtleVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidtb2RlbGUtaW1wb3J0LXBhci1kZWZhdWx0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X3dpdGhvdXRfbW9kZWwnIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiAqYnVzeT1cImlzbG9hZGluZ1wiPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIj5cclxuICAgICAgPHAtZmlsZVVwbG9hZCAjaW1wb3J0RmlsZVRvUmVwb3J0RmlsZVVwbG9hZCBuYW1lPVwiaW1wb3J0RmlsZVRvUmVwb3J0XCIgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAob25TZWxlY3QpPVwib25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX0ZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX0NsZWFyKCRldmVudClcIlxyXG4gICAgICAgIChvbkJlZm9yZVVwbG9hZCk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfSW1wb3J0RmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAob25SZW1vdmUpPVwib25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX1JlbW92ZSgkZXZlbnQpXCIgYWNjZXB0PVwiLnhscywueGxzeFwiIFttYXhGaWxlU2l6ZV09XCIxMDAwMDAwMFwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtjaG9vc2VJY29uXT1cIidwaSBwaS1wYXBlcmNsaXAnXCIgY2FuY2VsU3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiIHVwbG9hZFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1oZWxwXCJcclxuICAgICAgICByZW1vdmVTdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCIgW2Nob29zZUxhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW3VwbG9hZExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2ltcG9ydF9yZXBvcnQnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtjYW5jZWxMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19jYW5jZWxfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGV1cGxvYWQtY29udGVudFwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvcC1maWxlVXBsb2FkPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdGFiUGFuZWw+XHJcblxyXG4gIDxwLXRhYlBhbmVsIFtoZWFkZXJdPVwiJ3NoYXJlZF9pbXBvcnRfcmVzdWx0X2hlYWRlcicgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gICAgICA8VHNpLUJ1dHRvbiAob25DbGljayk9XCJnZXRJbXBvcnRSZXN1bHQoKVwiXHJcbiAgICAgICAgc3R5bGVDbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi1yb3VuZGVkIG1yLTIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9pbXBvcnRfZXhwb3J0X3JlZnJlc2gnXCIgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24uVG9wXCJcclxuICAgICAgICBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1yZWZyZXNoXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi1yb3VuZGVkIG1yLTJcIj48L1RzaS1CdXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICA8dHNpLXZpZXctZ3JpZCBjbGFzcz1cImNvbC0xMlwiIFtoZWFkZXJdPVwiJ3NoYXJlZF9pbXBvcnRfcmVzdWx0X2hlYWRlcicgIHxsb2NhbGl6ZVwiIFtjb2x1bW5zXT1cImltcG9ydFJlc3VsdHNDb2x1bW5zXCJcclxuICAgICAgICBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiaW1wb3J0UmVzdWx0RGF0YVwiIFtrZXldPVwiJ3VpZCdcIiBbZm9ybU5hbWVdPVwiJ21vZGVsZS1pbXBvcnQtcmVzdWx0LWltcG9ydCdcIlxyXG4gICAgICAgIChidXR0b25Db2x1bW5DbGlja2VkKT1cImhhbmRsZUNvbnN1bHRJbXBvcnRSZXN1bHRCdXR0b25DbGlja2VkKCRldmVudClcIj48L3RzaS12aWV3LWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L3AtdGFiUGFuZWw+XHJcblxyXG48L3AtdGFiVmlldz5cclxuXHJcbjxkaXYgY2xhc3M9XCJwLTFcIj5cclxuICA8VHNpLUJ1dHRvblxyXG4gICAgc3R5bGVDbGFzcz1cInAtZWxlbWVudCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZCBwLWJ1dHRvbi1yb3VuZGVkIG1yLTIgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2ltcG9ydF9leHBvcnRfcmVmcmVzaCdcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIlxyXG4gICAgaWNvbj1cInAtYnV0dG9uLWljb24gcGkgcGktcmVmcmVzaFwiIChvbkNsaWNrKT1cInJlZnJlc2hJbXBvcnRFeHBvcnREYXRhKClcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48IS0tIGRpYWxvZyB0byBpbXBvcnQgZmlsZSB0byByZXBvcnQgLS0+XHJcbjxwLWRpYWxvZyBoZWFkZXI9XCJ7eydzaGFyZWRfcmVwb3J0aW5nX3NlbGVjdF9maWxlX3RvX2ltcG9ydF9pbnRvX3JlcG9ydCcgfCBsb2NhbGl6ZX19XCJcclxuICBbKHZpc2libGUpXT1cImlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGVcIiBbc3R5bGVdPVwie3dpZHRoOiAnNTB2dyd9XCI+XHJcbiAgPCEtLSA8VHNpLU1vZGFsLUhlYWRlciAob25DbG9zZUNsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxDYW5jZWxDbGljaygpXCIgW2lucHV0VGl0bGVdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfc2VsZWN0X2ZpbGVfdG9faW1wb3J0X2ludG9fcmVwb3J0J1wiPjwvVHNpLU1vZGFsLUhlYWRlcj4gLS0+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCI+XHJcbiAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAob25TZWxlY3QpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0ZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0NsZWFyKCRldmVudClcIlxyXG4gICAgICAob25CZWZvcmVVcGxvYWQpPVwib25JbXBvcnRGaWxlVG9FeGVjdXRlX0ltcG9ydEZpbGUoJGV2ZW50KVwiIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfUmVtb3ZlKCRldmVudClcIlxyXG4gICAgICBhY2NlcHQ9XCJ7e2ZpbGVUeXBlfX1cIiBbbWF4RmlsZVNpemVdPVwiMTAwMDAwMDBcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICByZW1vdmVTdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCIgW2Nob29zZUxhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFt1cGxvYWRMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19pbXBvcnRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZpbGV1cGxvYWQtY29udGVudFwiPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG4gIDwhLS0gPFRzaS1Nb2RhbC1Gb290ZXIgKG9uQ2FuY2VsQ2xpY2spPVwib25JbXBvcnRGaWxlVG9SZXBvcnRNb2RhbENhbmNlbENsaWNrKClcIlxyXG4gICAgKG9uU2F2ZUNsaWNrKT1cIm9uSW1wb3J0RmlsZVRvUmVwb3J0TW9kYWxTYXZlQ2xpY2soKVwiXHJcbiAgICBbc2F2ZURpc2FibGVkXT1cIiF0b1VwbG9hZFRvVXBkYXRlUmVwb3J0RmlsZURhdGFcIj48L1RzaS1Nb2RhbC1Gb290ZXI+IC0tPlxyXG5cclxuPC9wLWRpYWxvZz4iXX0=
|
|
501
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWltcG9ydC1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHNpLXNoYXJlZC11aS9zcmMvbGliL3RzaS1jb21wb25lbnRzL21hbmFnZS1pbXBvcnQtZXhwb3J0L21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9tYW5hZ2UtaW1wb3J0LWV4cG9ydC9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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QVksQ0FBQzsyU0FJSyxhQUFhO3NCQUE3QyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDTixZQUFZO3NCQUFwQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0EsaUJBQWlCO3NCQUF2QyxTQUFTO3VCQUFDLFVBQVU7Z0JBZ0R1Qiw2QkFBNkI7c0JBQXhFLFNBQVM7dUJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWQgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBbGVydEltcG9ydE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC1pbXBvcnQtbWVzc2FnZS9hbGVydC1pbXBvcnQtbWVzc2FnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQgfSBmcm9tICcuLi9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0L2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHNpVmlld0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi9vdXRwdXQtY29tcG9uZW50cy90c2ktdmlldy1ncmlkL3RzaS12aWV3LWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vZW51bXMvdG9vbHRpcFBvc2l0aW9uLmVudW0nO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgSW5wdXRUeXBlcywgRmlsdGVyT3BlcmF0b3JUeXBlLCBNb2RlcywgRGlzcGxheVR5cGVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBHcmlkQ29sdW1uLCBCdXR0b25DbGlja1Jlc3VsdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBFeGVjdXRlSW1wb3J0UmVxdWVzdCwgSW1wb3J0UmVzdWx0LCBTZWFyY2hGaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE1vZGVsZUltcG9ydFNlcnZpY2UsIFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsIFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsIEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSwgVHNpTWVzc2FnZVNlcnZpY2UsIFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi90c2ktYmFzZS9jb21wb25lbnRzL3RzaS1mb3JtLWJhc2UvdHNpLWZvcm0tYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWdtZW50IH0gZnJvbSAnLi4vLi4vZW5kLXBvaW50cyc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEZpbGVUeXBlSW1wb3J0RW51bSB9IGZyb20gJy4uLy4uL2VudW1zL2ZpbGUtdHlwZS1pbXBvcnQtZW51bSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbWFuYWdlLWltcG9ydC1leHBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYW5hZ2UtaW1wb3J0LWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgLy9lbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHN0eWxlVXJsczogWycuL21hbmFnZS1pbXBvcnQtZXhwb3J0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFuYWdlSW1wb3J0RXhwb3J0Q29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHNpVmlld0dyaWRDb21wb25lbnQpIGdyaWRDb21wb25lbnQhOiBUc2lWaWV3R3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdmaWxlVXBsb2FkJykgZmlsZVVwbG9hZGVyITogRmlsZVVwbG9hZDtcclxuICBAVmlld0NoaWxkKFwidmlld0dyaWRcIikgdmlld0dyaWRDb21wb25lbnQ/OiBUc2lWaWV3R3JpZENvbXBvbmVudDtcclxuICB0b29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XHJcblxyXG4gIHRvVXBsb2FkRmlsZURhdGE6IGFueTtcclxuICBvblJlbW92ZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZEZpbGVEYXRhID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBvbkNsZWFyKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudC5jdXJyZW50RmlsZXNbMF07XHJcbiAgICB0aGlzLnRvVXBsb2FkRmlsZURhdGEgPSBmaWxlO1xyXG4gIH1cclxuICBvbkltcG9ydEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLnVwbG9hZEpzb25GaWxlKHRoaXMudG9VcGxvYWRGaWxlRGF0YSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UuZXJyb3IgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoJ3NoYXJlZF9pbXBvcnRNb2RlbGVfanNvbl91cGxvYWRlZF9zdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihyZXNwb25zZS5tZXNzYWdlKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ncmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB0aGlzLmZpbGVVcGxvYWRlci5jbGVhcigpXHJcbiAgfVxyXG5cclxuICBjb2x1bW5zSnNvbjogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX2pzb25fbmFtZVwiLFxyXG4gICAgICBmaWVsZDogXCJqc29uRmlsZU5hbWVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgZmllbGQ6ICdmcm9tSnNvblRvRGF0YWJhc2UnLFxyXG4gICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWFycm93LWNpcmNsZS11cCcsXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNlY29uZGFyeSdcclxuICAgIH0sXHJcbiAgXTtcclxuICBrZXk6IHN0cmluZyA9ICdqc29uRmlsZU5hbWUnO1xyXG4gIGdyaWREYXRhOiBhbnlcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW1wb3J0RmlsZVRvRXhlY3V0ZUZpbGVVcGxvYWQnKSBpbXBvcnRGaWxlVG9FeGVjdXRlRmlsZVVwbG9hZD86IEZpbGVVcGxvYWQ7XHJcblxyXG4gIGNvbHVtbnM6IGFueVxyXG5cclxuICBpc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlOiBib29sZWFuID0gZmFsc2VcclxuICB0b1VwbG9hZFRvRXhlY3V0ZUZpbGU6IGFueSA9IHVuZGVmaW5lZFxyXG4gIHRvVXBsb2FkV2l0aG91dE1vZGVsOiBhbnkgPSB1bmRlZmluZWRcclxuICB0b0ltcG9ydE1vZGVsZVVpZD86IHN0cmluZ1xyXG5cclxuICBjb2x1bW5zSGlzdG9yeTogQXJyYXk8R3JpZENvbHVtbj4gPSBbXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0TW9kZWxlX2NvZGVfaW1wb3J0XCIsXHJcbiAgICAgIGZpZWxkOiBcImNvZGVJbXBvcnRcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRNb2RlbGVfZGF0ZV9pbXBvcnRcIixcclxuICAgICAgZmllbGQ6IFwiZGF0ZUltcG9ydFwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydE1vZGVsZV9ub21icmVfbGlnbmVzXCIsXHJcbiAgICAgIGZpZWxkOiBcIm5vbWJyZUxpZ25lc1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICBmaWVsZDogJ2RlbGV0ZUZyb21EYXRhYmFzZScsXHJcbiAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICBidXR0b25JY29uOiAncGkgcGktdHJhc2gnLFxyXG4gICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnknXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgaGlzdG9yeUdyaWREYXRhOiBhbnlcclxuICBpbXBvcnRIaXN0b3J5S2V5OiBzdHJpbmcgPSAnY29kZUltcG9ydCc7XHJcblxyXG4gIGZpbGVUeXBlIDogc3RyaW5nID0gXCIueGxzLC54bHN4XCI7XHJcblxyXG4gIGltcG9ydFJlc3VsdERhdGE6IEFycmF5PEltcG9ydFJlc3VsdD4gPSBbXVxyXG5cclxuICBzZWFyY2hGaWVsZHM6IEFycmF5PFNlYXJjaEZpZWxkPiA9IFtcclxuICBdXHJcblxyXG4gIGltcG9ydFJlc3VsdHNDb2x1bW5zOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgZmllbGQ6ICdjb25zdWx0RGV0YWlsJyxcclxuICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1leWUnLFxyXG4gICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zZWNvbmRhcnknXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfbW9kZWxlX2ltcG9ydF9saWJlbGxlXCIsXHJcbiAgICAgIGZpZWxkOiBcIm1vZGVsZUltcG9ydExpYmVsbGVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X21vZGVsZV91dGlsaXNhdGV1clwiLFxyXG4gICAgICBmaWVsZDogXCJ1c2VyTmFtZVwiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfZmlsZW5hbWVcIixcclxuICAgICAgZmllbGQ6IFwiZmlsZU5hbWVcIlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X3N0YXJ0RGF0ZVwiLFxyXG4gICAgICBmaWVsZDogXCJzdGFydERhdGVcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLkRBVEVUSU1FX0RJU1BMQVlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGhlYWRlcjogXCJzaGFyZWRfaW1wb3J0X3Jlc3VsdF9lbmRfZGF0ZVwiLFxyXG4gICAgICBmaWVsZDogXCJlbmREYXRlXCIsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5EQVRFVElNRV9ESVNQTEFZXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfc3RhdHVzXCIsXHJcbiAgICAgIGZpZWxkOiBcInN0YXR1c1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBoZWFkZXI6IFwic2hhcmVkX2ltcG9ydF9yZXN1bHRfcHJvZ3Jlc3NcIixcclxuICAgICAgZmllbGQ6IFwicHJvZ3Jlc3NcIixcclxuICAgICAgdHlwZTogRGlzcGxheVR5cGVzLlJBVEVfRElTUExBWVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaGVhZGVyOiBcInNoYXJlZF9pbXBvcnRfcmVzdWx0X3RvdGFsX2xpbmVzX251bWJlclwiLFxyXG4gICAgICBmaWVsZDogXCJ0b3RhbExpbmVzTnVtYmVyXCIsXHJcbiAgICAgIHR5cGU6IERpc3BsYXlUeXBlcy5JTlRFR0VSX0RJU1BMQVlcclxuICAgIH1cclxuICBdXHJcblxyXG4gIHByaXZhdGUgX2RpYWxvZ1JlZj86IER5bmFtaWNEaWFsb2dSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RlbGVJbXBvcnRTZXJ2aWNlOiBNb2RlbGVJbXBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBUc2lDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2U6IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSxcclxuICAgIHB1YmxpYyBvdmVycmlkZSByZWY/OiBEeW5hbWljRGlhbG9nUmVmKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZylcclxuICAgIHRoaXMuc2VhcmNoRmllbGRzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5URVhUX0JPWCxcclxuICAgICAgICBmaWVsZDogXCJDbGFzc2VcIixcclxuICAgICAgICBsYWJlbFZhbHVlOiBcIkNsYXNzZVwiLFxyXG4gICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvclR5cGUuRVFVQUwsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ2NvbC02JyxcclxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M6ICdjb2wtMycsXHJcbiAgICAgICAgbGFiZWxTdHlsZUNsYXNzOiAnY29sLTMnLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzc1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgICB0aGlzLmNvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZDogJ25vbU1vZGVsZScsXHJcbiAgICAgICAgaGVhZGVyOiAnc2hhcmVkX2ltcG9ydE1vZGVsZV9ub20nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXI6ICcnLFxyXG4gICAgICAgIGZpZWxkOiAnZWRpdCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtZWRpdCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc3VjY2VzcycsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdNb2RpZmllcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdleHBvcnRKc29uJyxcclxuICAgICAgICBpc0J1dHRvbjogdHJ1ZSxcclxuICAgICAgICBidXR0b25JY29uOiAncGkgcGktZmlsZS1leHBvcnQnLFxyXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWhlbHAnLFxyXG4gICAgICAgIHRvb2xUaXBUZXh0OiAnRXhwb3J0ZXIgSnNvbidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdleHBvcnQnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1maWxlLWV4Y2VsJyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCBwLWJ1dHRvbi13YXJuaW5nJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ0V4cG9ydGVyJ1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyOiAnJyxcclxuICAgICAgICBmaWVsZDogJ2ltcG9ydCcsXHJcbiAgICAgICAgaXNCdXR0b246IHRydWUsXHJcbiAgICAgICAgYnV0dG9uSWNvbjogJ3BpIHBpLWZpbGUtaW1wb3J0JyxcclxuICAgICAgICBzdHlsZUNsYXNzOiAncC1idXR0b24tdGV4dCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdJbXBvcnRlcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdkZWxldGUnLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS10cmFzaCcsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyJyxcclxuICAgICAgICB0b29sVGlwVGV4dDogJ1N1cHByaW1lcidcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcjogJycsXHJcbiAgICAgICAgZmllbGQ6ICdkb3dubG9hZEpzb24nLFxyXG4gICAgICAgIGlzQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIGJ1dHRvbkljb246ICdwaSBwaS1hcnJvdy1jaXJjbGUtZG93bicsXHJcbiAgICAgICAgc3R5bGVDbGFzczogJ3AtYnV0dG9uLXRleHQgcC1idXR0b24taGVscCcsXHJcbiAgICAgICAgdG9vbFRpcFRleHQ6ICdFeHBvcnQgSnNvbiBTZXJ2ZXInXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcblxyXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpKVxyXG4gICAgdGhpcy5ncmlkRGF0YSA9IGRhdGFcclxuICAgIGF3YWl0IHRoaXMuZ2V0SW1wb3J0UmVzdWx0KClcclxuICAgIGlmIChTZWdtZW50LnByb2R1Y3Rpb24pIHtcclxuICAgICAgbGV0IGJ1dHRvbkFkQnVpbHRpblRlbXBsYXRlc0luZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleCgoY29sOiBHcmlkQ29sdW1uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbC5maWVsZCA9PSBcImRvd25sb2FkSnNvblwiXHJcbiAgICAgIH0pXHJcbiAgICAgIGlmIChidXR0b25BZEJ1aWx0aW5UZW1wbGF0ZXNJbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoYnV0dG9uQWRCdWlsdGluVGVtcGxhdGVzSW5kZXgsIDEpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaEltcG9ydEV4cG9ydERhdGEoKXtcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEpzb25GaWxlcyh0aGlzLmNvbmZpZz8uZGF0YT8uZm9ybU5hbWUpKVxyXG4gICAgdGhpcy5ncmlkRGF0YSA9IGRhdGFcclxuICAgIGF3YWl0IHRoaXMuZ2V0SW1wb3J0UmVzdWx0KClcclxuICAgIHRoaXMuaGlzdG9yeUdyaWREYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLkdldEltcG9ydEhpc3RvcnkodGhpcy5jb25maWc/LmRhdGE/LmJ1c2luZXNzQ2xhc3MpKVxyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gdGhpcy5fdHNpTW9kYWxTZXJ2aWNlLm9wZW4oQ3JlYXRlT3JFZGl0TW9kZWxlSW1wb3J0Q29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBlbnRpdHlCdXNpbmVzc0NsYXNzOiB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICBmb3JtTmFtZTogdGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lLFxyXG4gICAgICAgIG1vZGU6IE1vZGVzLmNyZWF0ZVxyXG4gICAgICB9LFxyXG4gICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgd2lkdGg6ICc3NXZ3JyxcclxuICAgICAgaGVpZ2h0OiAnNTV2dycsXHJcbiAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMudmlld0dyaWRDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLnZpZXdHcmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbXBvcnRSZXN1bHQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmdldEltcG9ydFJlc3VsdEJ5QnVzaW5lc3NDbGFzcyh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgICAgIHRoaXMuaW1wb3J0UmVzdWx0RGF0YSA9IGRhdGFcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b25DbGlja2VkKGRhdGE6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcbiAgICBpZiAoZGF0YS5maWVsZCA9PSBcImVkaXRcIikge1xyXG4gICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihDcmVhdGVPckVkaXRNb2RlbGVJbXBvcnRDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpZDogZGF0YS5rZXk/LnVpZCxcclxuICAgICAgICAgIGVudGl0eUJ1c2luZXNzQ2xhc3M6IHRoaXMuY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzLFxyXG4gICAgICAgICAgbW9kZTogTW9kZXMuZWRpdFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgICAgd2lkdGg6ICc3NXZ3JyxcclxuICAgICAgICBoZWlnaHQ6ICc1NXZ3JyxcclxuICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnZpZXdHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnZpZXdHcmlkQ29tcG9uZW50LnJlZnJlc2godHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlTW9kZWxlSW1wb3J0KGRhdGEpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiaW1wb3J0XCIpIHtcclxuICAgICAgdGhpcy5pc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlID0gdHJ1ZVxyXG4gICAgICB0aGlzLnRvSW1wb3J0TW9kZWxlVWlkID0gZGF0YS5rZXk/LnVpZFxyXG4gICAgICB0aGlzLmZpbGVUeXBlID0gZGF0YS5rZXk/LmZpbGVUeXBlID09IEZpbGVUeXBlSW1wb3J0RW51bS5YTFNYID8gXCIueGxzLC54bHN4XCIgOiBcIi5jc3ZcIlxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImV4cG9ydFwiKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0RGF0YShkYXRhLmtleT8udWlkKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0YS5maWVsZCA9PSBcImV4cG9ydEpzb25cIikge1xyXG4gICAgICB0aGlzLmV4cG9ydERhdGFKc29uKGRhdGEua2V5Py51aWQpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhLmZpZWxkID09IFwiZG93bmxvYWRKc29uXCIpIHtcclxuICAgICAgdGhpcy5leHBvcnREYXRhSnNvblNlcnZlcihkYXRhLmtleT8udWlkKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGF0YShpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlRXhwb3J0KGlkLCB0aGlzLmNvbmZpZy5kYXRhPy5wYWdlZFJlcXVlc3QpLnN1YnNjcmliZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlKGRhdGE/LmRhdGEpXHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERhdGFKc29uKGlkOiBzdHJpbmcpIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVFeHBvcnRKc29uKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZShkYXRhPy5kYXRhKVxyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhSnNvblNlcnZlcihpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlRXhwb3J0SnNvblNlcnZlcihpZCkuc3Vic2NyaWJlKFxyXG5cclxuICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEZpbGUoZGF0YTogYW55KSB7XHJcbiAgICBsZXQgYmxvYlVybCA9IFwiZGF0YTphcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDtiYXNlNjQsXCIgKyBkYXRhLmZpbGVDb250ZW50O1xyXG4gICAgbGV0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBibG9iVXJsKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgZGF0YS5maWxlTmFtZSk7XHJcbiAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVNb2RlbGVJbXBvcnQoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybShcclxuICAgICAgTG9jYWxpemF0aW9uS2V5cy5jb25maXJtRGVsZXRlLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ICYmIGRhdGEua2V5ICE9IG51bGwgJiYgZGF0YS5rZXkgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuZGVsZXRlKGRhdGEua2V5KS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbktleXMuZGVsZXRlZFN1Y2Nlc3NmdWxseSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlVG9FeGVjdXRlX0ZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlID0gZXZlbnQuY3VycmVudEZpbGVzWzBdXHJcbiAgICB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZSA9IGZpbGU7XHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkltcG9ydEZpbGVUb0V4ZWN1dGVfQ2xlYXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUgPSB1bmRlZmluZWRcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9SZW1vdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZFRvRXhlY3V0ZUZpbGUgPSB1bmRlZmluZWRcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9JbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnRvSW1wb3J0TW9kZWxlVWlkICYmIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlKSB7XHJcbiAgICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZVxyXG4gICAgICB0aGlzLmlzSW1wb3J0RmlsZVRvRXhlY3V0ZVZpc2libGUgPSBmYWxzZVxyXG4gICAgICBsZXQgZXhlY3V0ZUltcG9ydFJlcXVlc3Q6IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0ID0gbmV3IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0KClcclxuICAgICAgZXhlY3V0ZUltcG9ydFJlcXVlc3QubW9kZWxlSW1wb3J0VWlkID0gdGhpcy50b0ltcG9ydE1vZGVsZVVpZDtcclxuICAgICAgZXhlY3V0ZUltcG9ydFJlcXVlc3QuZmlsZU5hbWUgPSB0aGlzLnRvVXBsb2FkVG9FeGVjdXRlRmlsZT8ubmFtZVxyXG5cclxuICAgICAgdGhpcy5tb2RlbGVJbXBvcnRTZXJ2aWNlLmV4ZWN1dGVJbXBvcnQoZXhlY3V0ZUltcG9ydFJlcXVlc3QsIHRoaXMudG9VcGxvYWRUb0V4ZWN1dGVGaWxlKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5leHQ6IGFzeW5jIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgICAgICAgICAgICAgdGhpcy5pc0ltcG9ydEZpbGVUb0V4ZWN1dGVWaXNpYmxlID0gZmFsc2VcclxuICAgICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50LmN1cnJlbnRGaWxlc1swXTtcclxuICAgIHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwgPSBmaWxlO1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX0NsZWFyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwgPSB1bmRlZmluZWRcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIG9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9SZW1vdmUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b1VwbG9hZFdpdGhvdXRNb2RlbCA9IHVuZGVmaW5lZFxyXG4gIH1cclxuXHJcbiAgb25JbXBvcnRGaWxlV2l0aG91dE1vZGVsX0ltcG9ydEZpbGUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWwpIHtcclxuICAgICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlXHJcblxyXG4gICAgICBsZXQgZXhlY3V0ZUltcG9ydFJlcXVlc3Q6IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0ID0gbmV3IEV4ZWN1dGVJbXBvcnRSZXF1ZXN0KClcclxuICAgICAgZXhlY3V0ZUltcG9ydFJlcXVlc3QubW9kZWxlSW1wb3J0VWlkID0gdW5kZWZpbmVkO1xyXG4gICAgICBleGVjdXRlSW1wb3J0UmVxdWVzdC5maWxlTmFtZSA9IHRoaXMudG9VcGxvYWRXaXRob3V0TW9kZWw/Lm5hbWVcclxuXHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlSW1wb3J0V2l0aG91dE1vZGVsKGV4ZWN1dGVJbXBvcnRSZXF1ZXN0LCB0aGlzLnRvVXBsb2FkV2l0aG91dE1vZGVsKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5leHQ6IGFzeW5jIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRHcmlkRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5HZXRKc29uRmlsZXModGhpcy5jb25maWc/LmRhdGE/LmZvcm1OYW1lKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGdyaWQgZGF0YScsIGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaEdyaWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRHcmlkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ29uc3VsdEltcG9ydFJlc3VsdEJ1dHRvbkNsaWNrZWQoZXZlbnQ6IEJ1dHRvbkNsaWNrUmVzdWx0KSB7XHJcbiAgICB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihBbGVydEltcG9ydE1lc3NhZ2VDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGlkOiBldmVudC5rZXksXHJcbiAgICAgIH0sXHJcbiAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICBkcmFnZ2FibGU6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnMzV2dycsXHJcbiAgICAgIGhlaWdodDogJzI1dncnLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGhhbmRsZUJ1dHRvbkNvbHVtbkV4ZWN1dGVDbGlja2VkKGV2ZW50OiBCdXR0b25DbGlja1Jlc3VsdCkge1xyXG4gICAgaWYgKGV2ZW50LmZpZWxkID09ICdmcm9tSnNvblRvRGF0YWJhc2UnKSB7XHJcbiAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5leGVjdXRlSW1wb3J0SnNvbihldmVudC5rZXksIHRoaXMuY29uZmlnPy5kYXRhPy5mb3JtTmFtZSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGltcG9ydGluZyBqc29uOicsIGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZmllbGQgPT0gJ2RlbGV0ZUZyb21EYXRhYmFzZScpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oXHJcbiAgICAgICAgTG9jYWxpemF0aW9uS2V5cy5jb25maXJtRGVsZXRlLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxlSW1wb3J0U2VydmljZS5kZWxldGVJbXBvcnQoZXZlbnQua2V5LCB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcylcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgYXN5bmMgcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb21wb25lbnQucmVmcmVzaCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5R3JpZERhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm1vZGVsZUltcG9ydFNlcnZpY2UuR2V0SW1wb3J0SGlzdG9yeSh0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzcykpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbktleXMuZGVsZXRlZFN1Y2Nlc3NmdWxseSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbXBvcnRpbmcganNvbjonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPHAtdGFiVmlldz5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2ICpidXN5PVwiaXNsb2FkaW5nXCI+PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgY29sLTEwXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTJcIiBbbGFiZWxWYWx1ZV09XCInc2hhcmVkX3JlcG9ydGluZ19mb3JtJ1wiPlxyXG4gICAgICAgICAgICA8L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPCEtLSA8cC1kcm9wZG93biBjbGFzcz1cImNvbC0xMCB0c2ktY29tcG9uZW50XCIgY2xhc3M9XCJ0c2ktY29tcG9uZW50XCIgc3R5bGVDbGFzcz1cInRzaS1jb21wb25lbnRcIiBhcHBlbmRUcD1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJ2YWx1ZVwiIG9wdGlvblZhbHVlPVwia2V5XCIgW2ZpbHRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIGZpbHRlckJ5PVwidmFsdWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBwbGFjZWhvbGRlcj1cInt7J3NoYXJlZF9yZXBvcnRpbmdfc2VsZWN0X2Zvcm0nIHwgbG9jYWxpemV9fVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDwvcC1kcm9wZG93bj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cC10b29sYmFyIHN0eWxlQ2xhc3M9XCJtYi00IGdhcC0yXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRcIj5cclxuICAgICAgICAgIDxUc2ktQnV0dG9uIFt0ZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX2FkZF9yZXBvcnQnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBpY29uPVwicC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnQgcGkgcGktcGx1c1wiXHJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWVsZW1lbnQgcC1idXR0b24tc3VjY2VzcyBtci0yIHAtYnV0dG9uIHAtY29tcG9uZW50IG5nLXN0YXItaW5zZXJ0ZWQgcC1idXR0b24tbGFiZWxcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3Blbk1vZGFsKClcIj48L1RzaS1CdXR0b24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cclxuICAgICAgICAgIDxwLWZpbGVVcGxvYWQgI2ZpbGVVcGxvYWQgbmFtZT1cImRlbW9bXVwiIChvbkJlZm9yZVVwbG9hZCk9XCJvbkltcG9ydEZpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25DbGVhcigkZXZlbnQpXCIgKG9uUmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIlxyXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIiBhY2NlcHQ9XCJhcHBsaWNhdGlvbi9qc29uXCIgW21heEZpbGVTaXplXT1cIjEwMDAwMDBcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9zdW1tYXJ5JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9saW1pdF9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbF09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICAgICAgICByZW1vdmVTdHlsZUNsYXNzPVwicC1idXR0b24tZGFuZ2VyXCIgW2Nob29zZUxhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgIFt1cGxvYWRMYWJlbF09XCInc2hhcmVkX3JlcG9ydGluZ19pbXBvcnRfcmVwb3J0JyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwidG9VcGxvYWRGaWxlRGF0YVwiIHBUZW1wbGF0ZT1cImZpbGV1cGxvYWQtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLXRvb2xiYXI+XHJcblxyXG4gICAgICA8dHNpLXZpZXctZ3JpZCAjdmlld0dyaWQgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnQnICB8bG9jYWxpemVcIlxyXG4gICAgICAgIFtzZWFyY2hGaWVsZHNdPVwic2VhcmNoRmllbGRzXCIgW3Nob3dDb25zdWx0QnV0dG9uXT1cImZhbHNlXCIgW2dldERhdGFGcm9tQXBpXT1cInRydWVcIlxyXG4gICAgICAgIFtjcnVkU2VydmljZV09XCJtb2RlbGVJbXBvcnRTZXJ2aWNlXCIgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiYnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ2FwcC1tYW5hZ2UtaW1wb3J0LWV4cG9ydCdcIiBbY29sdW1uc109XCJjb2x1bW5zXCIga2V5PVwidWlkXCIgW3NlbGVjdEtleU9ubHldPVwiZmFsc2VcIj5cclxuICAgICAgPC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfbW9kZWxfaW1wb3J0X2V4cG9ydF9kZWZhdWx0JyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X21vZGVsX2ltcG9ydF9leHBvcnRfZGVmYXVsdCcgIHxsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc0pzb25cIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZ3JpZERhdGFcIiBba2V5XT1cImtleVwiXHJcbiAgICAgICAgW2Zvcm1OYW1lXT1cIidtb2RlbGUtaW1wb3J0LXBhci1kZWZhdWx0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQnV0dG9uQ29sdW1uRXhlY3V0ZUNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2V4ZWN1dGVfaW1wb3J0X2hpc3RvcnknIHwgbG9jYWxpemVcIiBjbGFzcz1cInB0LTMgcHgtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgPHRzaS12aWV3LWdyaWQgY2xhc3M9XCJjb2wtMTJcIiBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfaGlzdG9yeScgIHxsb2NhbGl6ZVwiIFtjb2x1bW5zXT1cImNvbHVtbnNIaXN0b3J5XCJcclxuICAgICAgICBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiaGlzdG9yeUdyaWREYXRhXCIgW2tleV09XCJpbXBvcnRIaXN0b3J5S2V5XCJcclxuICAgICAgICBbZm9ybU5hbWVdPVwiJ21vZGVsZS1pbXBvcnQtcGFyLWRlZmF1bHQnXCJcclxuICAgICAgICAoYnV0dG9uQ29sdW1uQ2xpY2tlZCk9XCJoYW5kbGVCdXR0b25Db2x1bW5FeGVjdXRlQ2xpY2tlZCgkZXZlbnQpXCI+PC90c2ktdmlldy1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9wLXRhYlBhbmVsPlxyXG5cclxuICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidzaGFyZWRfZXhlY3V0ZV9pbXBvcnRfd2l0aG91dF9tb2RlbCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwicHQtMyBweC0yXCI+XHJcbiAgICA8ZGl2ICpidXN5PVwiaXNsb2FkaW5nXCI+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiPlxyXG4gICAgICA8cC1maWxlVXBsb2FkICNpbXBvcnRGaWxlVG9SZXBvcnRGaWxlVXBsb2FkIG5hbWU9XCJpbXBvcnRGaWxlVG9SZXBvcnRcIiBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQmVmb3JlVXBsb2FkKT1cIm9uSW1wb3J0RmlsZVdpdGhvdXRNb2RlbF9JbXBvcnRGaWxlKCRldmVudClcIlxyXG4gICAgICAgIChvblJlbW92ZSk9XCJvbkltcG9ydEZpbGVXaXRob3V0TW9kZWxfUmVtb3ZlKCRldmVudClcIiBhY2NlcHQ9XCIueGxzLC54bHN4XCIgW21heEZpbGVTaXplXT1cIjEwMDAwMDAwXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfc2l6ZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV90eXBlX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2VfZGV0YWlsJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2ludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX2RldGFpbCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2Nob29zZUljb25dPVwiJ3BpIHBpLXBhcGVyY2xpcCdcIiBjYW5jZWxTdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5XCIgdXBsb2FkU3R5bGVDbGFzcz1cInAtYnV0dG9uLWhlbHBcIlxyXG4gICAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgICBbdXBsb2FkTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfaW1wb3J0X3JlcG9ydCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgW2NhbmNlbExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2NhbmNlbF9jaG9vc2VfcmVwb3J0X2ZpbGUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbiAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyB8IGxvY2FsaXplXCIgY2xhc3M9XCJwdC0zIHB4LTJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgIDxUc2ktQnV0dG9uIChvbkNsaWNrKT1cImdldEltcG9ydFJlc3VsdCgpXCJcclxuICAgICAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2ltcG9ydF9leHBvcnRfcmVmcmVzaCdcIiBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbi5Ub3BcIlxyXG4gICAgICAgIGljb249XCJwLWJ1dHRvbi1pY29uIHBpIHBpLXJlZnJlc2hcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMlwiPjwvVHNpLUJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgIDx0c2ktdmlldy1ncmlkIGNsYXNzPVwiY29sLTEyXCIgW2hlYWRlcl09XCInc2hhcmVkX2ltcG9ydF9yZXN1bHRfaGVhZGVyJyAgfGxvY2FsaXplXCIgW2NvbHVtbnNdPVwiaW1wb3J0UmVzdWx0c0NvbHVtbnNcIlxyXG4gICAgICAgIFtnZXREYXRhRnJvbUFwaV09XCJmYWxzZVwiIFtncmlkRGF0YV09XCJpbXBvcnRSZXN1bHREYXRhXCIgW2tleV09XCIndWlkJ1wiIFtmb3JtTmFtZV09XCInbW9kZWxlLWltcG9ydC1yZXN1bHQtaW1wb3J0J1wiXHJcbiAgICAgICAgKGJ1dHRvbkNvbHVtbkNsaWNrZWQpPVwiaGFuZGxlQ29uc3VsdEltcG9ydFJlc3VsdEJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvdHNpLXZpZXctZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC10YWJQYW5lbD5cclxuXHJcbjwvcC10YWJWaWV3PlxyXG5cclxuPGRpdiBjbGFzcz1cInAtMVwiPlxyXG4gIDxUc2ktQnV0dG9uXHJcbiAgICBzdHlsZUNsYXNzPVwicC1lbGVtZW50IHAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXJvdW5kZWQgbXItMiBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfaW1wb3J0X2V4cG9ydF9yZWZyZXNoJ1wiIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uLlRvcFwiXHJcbiAgICBpY29uPVwicC1idXR0b24taWNvbiBwaSBwaS1yZWZyZXNoXCIgKG9uQ2xpY2spPVwicmVmcmVzaEltcG9ydEV4cG9ydERhdGEoKVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWQgcC1idXR0b24tcm91bmRlZCBtci0yXCI+PC9Uc2ktQnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gZGlhbG9nIHRvIGltcG9ydCBmaWxlIHRvIHJlcG9ydCAtLT5cclxuPHAtZGlhbG9nIGhlYWRlcj1cInt7J3NoYXJlZF9yZXBvcnRpbmdfc2VsZWN0X2ZpbGVfdG9faW1wb3J0X2ludG9fcmVwb3J0JyB8IGxvY2FsaXplfX1cIlxyXG4gIFsodmlzaWJsZSldPVwiaXNJbXBvcnRGaWxlVG9FeGVjdXRlVmlzaWJsZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZ3J31cIj5cclxuICA8IS0tIDxUc2ktTW9kYWwtSGVhZGVyIChvbkNsb3NlQ2xpY2spPVwib25JbXBvcnRGaWxlVG9SZXBvcnRNb2RhbENhbmNlbENsaWNrKClcIiBbaW5wdXRUaXRsZV09XCInc2hhcmVkX3JlcG9ydGluZ19zZWxlY3RfZmlsZV90b19pbXBvcnRfaW50b19yZXBvcnQnXCI+PC9Uc2ktTW9kYWwtSGVhZGVyPiAtLT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIj5cclxuICAgIDxwLWZpbGVVcGxvYWQgI2ltcG9ydEZpbGVUb1JlcG9ydEZpbGVVcGxvYWQgbmFtZT1cImltcG9ydEZpbGVUb1JlcG9ydFwiIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgIChvblNlbGVjdCk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfRmlsZVNlbGVjdGVkKCRldmVudClcIiAob25DbGVhcik9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfQ2xlYXIoJGV2ZW50KVwiXHJcbiAgICAgIChvbkJlZm9yZVVwbG9hZCk9XCJvbkltcG9ydEZpbGVUb0V4ZWN1dGVfSW1wb3J0RmlsZSgkZXZlbnQpXCIgKG9uUmVtb3ZlKT1cIm9uSW1wb3J0RmlsZVRvRXhlY3V0ZV9SZW1vdmUoJGV2ZW50KVwiXHJcbiAgICAgIGFjY2VwdD1cInt7ZmlsZVR5cGV9fVwiIFttYXhGaWxlU2l6ZV09XCIxMDAwMDAwMFwiXHJcbiAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeV09XCInc2hhcmVkX2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZV9zaXplX21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFtpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3NpemVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnldPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfdHlwZV9tZXNzYWdlX3N1bW1hcnknIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWxdPVwiJ3NoYXJlZF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGVfbGltaXRfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5XT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX2xpbWl0X21lc3NhZ2Vfc3VtbWFyeScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgIFtpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsXT1cIidzaGFyZWRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlX3R5cGVfbWVzc2FnZV9kZXRhaWwnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbY2hvb3NlSWNvbl09XCIncGkgcGktcGFwZXJjbGlwJ1wiIGNhbmNlbFN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIiB1cGxvYWRTdHlsZUNsYXNzPVwicC1idXR0b24taGVscFwiXHJcbiAgICAgIHJlbW92ZVN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXJcIiBbY2hvb3NlTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2hvb3NlX3JlcG9ydF9maWxlJyB8IGxvY2FsaXplXCJcclxuICAgICAgW3VwbG9hZExhYmVsXT1cIidzaGFyZWRfcmVwb3J0aW5nX2ltcG9ydF9yZXBvcnQnIHwgbG9jYWxpemVcIlxyXG4gICAgICBbY2FuY2VsTGFiZWxdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfY2FuY2VsX2Nob29zZV9yZXBvcnRfZmlsZScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlsZXVwbG9hZC1jb250ZW50XCI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtZmlsZVVwbG9hZD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiAgPCEtLSA8VHNpLU1vZGFsLUZvb3RlciAob25DYW5jZWxDbGljayk9XCJvbkltcG9ydEZpbGVUb1JlcG9ydE1vZGFsQ2FuY2VsQ2xpY2soKVwiXHJcbiAgICAob25TYXZlQ2xpY2spPVwib25JbXBvcnRGaWxlVG9SZXBvcnRNb2RhbFNhdmVDbGljaygpXCJcclxuICAgIFtzYXZlRGlzYWJsZWRdPVwiIXRvVXBsb2FkVG9VcGRhdGVSZXBvcnRGaWxlRGF0YVwiPjwvVHNpLU1vZGFsLUZvb3Rlcj4gLS0+XHJcblxyXG48L3AtZGlhbG9nPiJdfQ==
|
package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs
CHANGED
|
@@ -196,7 +196,7 @@ export class AddReportPopupComponent extends TsiFormComponentBaseComponent {
|
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
198
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddReportPopupComponent, deps: [{ token: i1.DynamicDialogRef }, { token: i2.ReportingService }, { token: i1.DynamicDialogConfig }, { token: i3.TsiNotificationService }, { token: i4.DashboardModuleService }, { token: i5.TsiConfirmationService }, { token: i6.HttpClient }, { token: i7.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddReportPopupComponent, selector: "app-add-report-popup", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox> \r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"(isReportForFiche || customReportingMode) && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onSaveClick)=\"save()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "directive", type: i10.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i12.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i13.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i14.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i15.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i16.TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i17.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i18.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i19.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i20.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i21.LocalizePipe, name: "localize" }] }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddReportPopupComponent, selector: "app-add-report-popup", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\">\r\n <h4>\r\n <Tsi-Label [labelValue]=\"'Nouveau Rapport'\"></Tsi-Label>\r\n </h4>\r\n <p-panel header=\"Informations\">\r\n <div class=\"grid \">\r\n <!-- Type -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_type\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo [disabled]=\"this.mode !== modes.create\" id-field=\"key\" label-field=\"value\"\r\n [(bind)]=\"report.reportType\" [datasource]=\"dataSource\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Nom du rapport -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'reportName'\" [(inputField)]=\"report.reportName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Nom abr\u00E9g\u00E9 -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_reportNameAbrege\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-3\">\r\n <Tsi-Text-Box [inputName]=\"'reportNameAbrege'\" [(inputField)]=\"report.reportNameAbrege\"></Tsi-Text-Box>\r\n </div>\r\n <div class=\"flex col-6\">\r\n <!-- Ordre de tri -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_triOrdre\"></Tsi-Label>\r\n <Tsi-Integer [inputName]=\"'triOrdre'\" [(inputField)]=\"report.triOrdre\"></Tsi-Integer>\r\n </div>\r\n <!-- Afficher dashboard -->\r\n <div class=\"flex gap-4 w-6\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_display\"></Tsi-Label>\r\n <Tsi-CheckBox [inputName]=\"'display'\" [(inputField)]=\"report.display\"></Tsi-CheckBox>\r\n </div>\r\n </div>\r\n <!-- Module -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_Module\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo id-field=\"code\" label-field=\"libelle\" [multiple]=\"false\" [(bind)]=\"report.module\"\r\n [datasource]=\"modules\" [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n <!-- Deuxi\u00E9me Impress -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_imppress\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-5\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'imppress'\" [(inputField)]=\"report.impress\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Edition unique -->\r\n <div class=\"col-4 col-form-label flx\">\r\n <Tsi-CheckBox [inputName]=\"'EditionUnique'\" [(inputField)]=\"report.editionUnique\"></Tsi-CheckBox> \r\n <Tsi-Label labelValue=\"administration_edition_personnalise_EditionUnique\"></Tsi-Label>\r\n </div>\r\n <!-- Endpoint -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_endpoint\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Search-Combo *ngIf=\"!isReportForFiche && !enableMultiSelectEndpoints\" id-field=\"key\" label-field=\"value\"\r\n [disabled]=\"modes.edit === mode || isEditionPersonnalise === false\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [elementSourceUrl]=\"administrationEndpoints.getApiAsKeyValuePair()\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePair()\" [isFiltered]=\"true\">\r\n </Tsi-Search-Combo>\r\n\r\n <Tsi-Search-Combo *ngIf=\"(isReportForFiche || customReportingMode) && !enableMultiSelectEndpoints \" id-field=\"value\" label-field=\"value\"\r\n (selectedLabelChange)=\"selectedEndpointChange($event)\" [(bind)]=\"report.endPointKey\"\r\n [listSourceUrl]=\"administrationEndpoints.getAllApiAsKeyValuePairByBusinessClassName(this.reportBusinessClass)\"\r\n [isFiltered]=\"false\">\r\n </Tsi-Search-Combo>\r\n\r\n <p-multiSelect *ngIf=\"enableMultiSelectEndpoints\" [options]=\"endpointsOptions\" [(ngModel)]=\"selectedEndpoints\"\r\n selectedItemsLabel=\"{0} {{ 'endpoint_selected' | localize }}\" optionLabel=\"value\"\r\n optionValue=\"value\"\r\n [style]=\"{'min-width': '180px'}\" placeholder=\"{{ 'shared_reporting_choose_endpoints' | localize }}\"\r\n (onPanelShow)=\"handleOpen()\"\r\n [filter]=\"true\"\r\n (onFilter)=\"onFilter($event)\"\r\n display=\"chip\"\r\n class=\"rounded-multiselect\">\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"flex items-center gap-2\">\r\n <span>{{ option.value}}</span>\r\n </div>\r\n </ng-template>\r\n </p-multiSelect>\r\n </div>\r\n\r\n\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_formName\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-6\">\r\n <Tsi-Text-Box [disabled]=\"true\" [inputName]=\"'formName'\"\r\n [(inputField)]=\"report.formName\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Param -->\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-3 col-form-label\">\r\n <Tsi-Label labelValue=\"administration_edition_personnalise_param\"></Tsi-Label>\r\n </div>\r\n <div *ngIf=\"isGetByIdRequest\" class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'param'\" [(inputField)]=\"report.param\"></Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </p-panel>\r\n <br />\r\n <p-panel header=\"Configuration Pivot Grid\">\r\n <div class=\"grid \">\r\n <!-- Class or view -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Class or view'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9\">\r\n <Tsi-Text-Box [inputName]=\"'dddd'\"></Tsi-Text-Box>\r\n </div>\r\n <!-- Query -->\r\n <div class=\"col-3 col-form-label\">\r\n <Tsi-Label [labelValue]=\"'Query'\"></Tsi-Label>\r\n </div>\r\n <div class=\"col-9 col-form-label\">\r\n <Tsi-Text-Area [rows]=\"2\"></Tsi-Text-Area>\r\n </div>\r\n </div>\r\n </p-panel>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"saving\" (onSaveClick)=\"save()\"\r\n (onCancelClick)=\"hide()\"></Tsi-Modal-Footer>\r\n</tsi-form>", styles: [".flx{display:flex;justify-content:center;align-items:center}::ng-deep .rounded-multiselect .p-multiselect{border-radius:12px!important}::ng-deep .rounded-multiselect .p-multiselect-label{border-radius:12px!important}\n"], dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "directive", type: i10.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i11.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i12.Panel, selector: "p-panel", inputs: ["toggleable", "header", "collapsed", "style", "styleClass", "iconPos", "expandIcon", "collapseIcon", "showHeader", "toggler", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "component", type: i13.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "comboType", "statusMetadata", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i14.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i15.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i16.TsiTextAreaComponent, selector: "Tsi-Text-Area", inputs: ["rows", "cols"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i17.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i18.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i19.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate", "additionalButtonLabel", "additionalButtonIcon", "additionalButtonDisabled", "showAdditionalButton"], outputs: ["onCancelClick", "onSaveClick", "onAdditionalButtonClick"] }, { kind: "component", type: i20.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSave", "onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i21.LocalizePipe, name: "localize" }] }); }
|
|
200
200
|
}
|
|
201
201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddReportPopupComponent, decorators: [{
|
|
202
202
|
type: Component,
|