@posiwise/admin-module 0.0.97 → 0.0.99
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.
|
@@ -26,7 +26,6 @@ export class AddFaqComponent extends AppBaseComponent {
|
|
|
26
26
|
this.adminService = adminService;
|
|
27
27
|
this.productService = productService;
|
|
28
28
|
this.routers = ROUTERS;
|
|
29
|
-
this.editorConfig = QuillHelper.getEditorConfig();
|
|
30
29
|
this.faqs = [];
|
|
31
30
|
this.faqList = [];
|
|
32
31
|
this.backUpFAQ = [];
|
|
@@ -51,6 +50,7 @@ export class AddFaqComponent extends AppBaseComponent {
|
|
|
51
50
|
this.faqHashMap = {};
|
|
52
51
|
this.page = 1;
|
|
53
52
|
this.form = AppAdmin.getFaqForm();
|
|
53
|
+
this.editorConfig = QuillHelper.getEditorConfig();
|
|
54
54
|
}
|
|
55
55
|
ngOnInit() {
|
|
56
56
|
this.slug = PermissionService.selectedSubscription?.slug;
|
|
@@ -201,13 +201,13 @@ export class AddFaqComponent extends AppBaseComponent {
|
|
|
201
201
|
super.ngOnDestroy();
|
|
202
202
|
}
|
|
203
203
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AddFaqComponent, deps: [{ token: i1.CommonService }, { token: i2.AdminService }, { token: i1.ProductService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AddFaqComponent, selector: "pw-admin-add-edit-incident", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\" class=\"quillEditor\" [modules]=\"editorConfig\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'w-100': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Visible' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Public' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"public\"></ui-switch>\n </div>\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n role=\"button\" aria-expanded=\"false\" aria-controls=\"faqCollapse\" (click)=\"onCancel()\"> {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "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: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i8.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i10.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
204
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AddFaqComponent, selector: "pw-admin-add-edit-incident", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'w-100': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Visible' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Public' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"public\"></ui-switch>\n </div>\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n role=\"button\" aria-expanded=\"false\" aria-controls=\"faqCollapse\" (click)=\"onCancel()\"> {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "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: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i8.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i10.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
205
205
|
}
|
|
206
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AddFaqComponent, decorators: [{
|
|
207
207
|
type: Component,
|
|
208
|
-
args: [{ selector: 'pw-admin-add-edit-incident', template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\"
|
|
208
|
+
args: [{ selector: 'pw-admin-add-edit-incident', template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'w-100': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Visible' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Public' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"public\"></ui-switch>\n </div>\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n role=\"button\" aria-expanded=\"false\" aria-controls=\"faqCollapse\" (click)=\"onCancel()\"> {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
|
|
209
209
|
}], ctorParameters: () => [{ type: i1.CommonService }, { type: i2.AdminService }, { type: i1.ProductService }, { type: i0.Injector }], propDecorators: { editForm: [{
|
|
210
210
|
type: ViewChild,
|
|
211
211
|
args: ['editForm', { static: false }]
|
|
212
212
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZhcS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZmFxcy9hZGQtZmFxL2FkZC1mYXEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2ZhcXMvYWRkLWZhcS9hZGQtZmFxLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU9qQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUEwRGpELFlBQ1ksYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDdEMsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBTFIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FB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QUFXO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTlPUSxlQUFlO21HQUFmLGVBQWUsK0xDZjVCLDArT0E2SEE7OzRGRDlHYSxlQUFlO2tCQUwzQixTQUFTOytCQUNJLDRCQUE0QjtpS0FtQkksUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JtLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlLCBBcHBBZG1pbiB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSwgUGVybWlzc2lvblNlcnZpY2UsIFByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5pbXBvcnQgeyBGQVEsIFByb2R1Y3QgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBRdWlsbEhlbHBlciB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5pbXBvcnQgeyBncm91cEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1hZG1pbi1hZGQtZWRpdC1pbmNpZGVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkZC1mYXEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FkZC1mYXEuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBZGRGYXFDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG4gICAgZWRpdG9yQ29uZmlnID0gUXVpbGxIZWxwZXIuZ2V0RWRpdG9yQ29uZmlnKCk7XG4gICAgZmFxczogRkFRW10gPSBbXTtcblxuICAgIGZhcUxpc3Q6IEZBUVtdID0gW107XG4gICAgaWQ6IG51bWJlcjtcblxuICAgIGJhY2tVcEZBUTogRkFRW10gPSBbXTtcblxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gICAgaXNMb2FkZWQgPSB0cnVlO1xuXG4gICAgQFZpZXdDaGlsZCgnZWRpdEZvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSkgZWRpdEZvcm06IE5nRm9ybTtcblxuICAgIGN1cnJlbnRGYXE6IGFueTtcbiAgICBpc0VkaXQgPSBmYWxzZTtcblxuICAgIGNhdGVnb3JpZXMgPSBbXTtcblxuICAgIGlzUHJvZHVjdEVuYWJsZWQgPSB0cnVlO1xuXG4gICAgcHJvZHVjdExpc3Q6IGFueSA9IFtdO1xuXG4gICAgc2VhcmNoVGV4dCA9ICcnO1xuXG4gICAgYWxsUHJvZHVjdHM6IFByb2R1Y3RbXSA9IFtdO1xuXG4gICAgYWxsRmFxcyA9IFtdO1xuXG4gICAgc2hvd0xpc3QgPSB0cnVlO1xuXG4gICAgc2hvd0ZpbHRlcnMgPSB0cnVlO1xuXG4gICAgZGVmYXVsdFZhbHVlID0gbnVsbDtcblxuICAgIHRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPSAwO1xuXG4gICAgdG90YWxSZWNvcmRzID0gMDtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBmZWF0dXJlS2V5c0xpc3QgPSBbXTtcblxuICAgIHNlbGVjdGVkRmVhdHVyZUtleXMgPSBbXTtcblxuICAgIGJ1dHRvbkJ1c3kgPSBmYWxzZTtcblxuICAgIGNhdGVnb3J5Rm9yQmFkZ2VzID0gW107XG5cbiAgICBzbHVnOiBhbnk7XG5cbiAgICBmYXFIYXNoTWFwID0ge307XG4gICAgcGFnZSA9IDE7XG4gICAgYWN0aXZlSXRlbTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIHRoaXMuZm9ybSA9IEFwcEFkbWluLmdldEZhcUZvcm0oKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2x1ZyA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5zbHVnO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmdldENhdGVnb3JpZXMoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmFxID0gaGlzdG9yeS5zdGF0ZT8uZGF0YTtcbiAgICAgICAgdGhpcy5nZXRGYXFzKCk7XG4gICAgfVxuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cbiAgICBwcml2YXRlIGdldEZhcXMoKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gW107XG4gICAgICAgIHRoaXMuZmFxSGFzaE1hcCA9IHt9O1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICBmZWF0dXJlX2tleTogdGhpcy5zZWxlY3RlZEZlYXR1cmVLZXlzLmpvaW4oJywnKSB8fCAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0RmFxKHsgLi4ucGFyYW1zIH0pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZmFxcyA9IHJlc3BvbnNlLmZhcXM7XG4gICAgICAgICAgICB0aGlzLmFsbEZhcXMgPSByZXNwb25zZS5mYXFzO1xuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXNwb25zZS5vYmplY3RfY291bnQ7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3Jkc1VuRmlsdGVyZWQgPSByZXNwb25zZS51bmZpbHRlcmVkX2NvdW50O1xuICAgICAgICAgICAgdGhpcy5mYXFzID0gdGhpcy5mYXFzLm1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICB4LmlzRWRpdCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5iYWNrVXBGQVEgPSBbLi4udGhpcy5mYXFzXTtcbiAgICAgICAgICAgIHJlc3BvbnNlPy5hdmFpbGFibGVfY2F0ZWdvcnk/LmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mYXFIYXNoTWFwW3gua2V5XSA9IHg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlGb3JCYWRnZXMgPSByZXNwb25zZS5hdmFpbGFibGVfY2F0ZWdvcnkubWFwKHggPT4geC5rZXkpO1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gcmVzcG9uc2UuYXZhaWxhYmxlX2NhdGVnb3J5Lm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBsYWJlbDogZWxlbWVudC5uYW1lLCB2YWx1ZTogZWxlbWVudC5rZXkgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmFsbEZhcXMgPSB0aGlzLmZhcXM7XG4gICAgICAgICAgICB0aGlzLmZhcUxpc3QgPSB0aGlzLmZhcXM7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU3VibWl0KCkge1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGROZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZE5ldygpIHtcbiAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0RmFxKHRoaXMuZm9ybS52YWx1ZSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uRmFxLkFkZE1lc3NhZ2UnKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMucm91dGVycy5mYXFEZXRhaWxzfWBdKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+ICh0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcmllcygpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZVxuICAgICAgICAgICAgLmdldFByb2R1Y3RzKHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwLnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsUHJvZHVjdHMgPSByZXNwLnByb2R1Y3RzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0ID0gdGhpcy5ncm91cFByb2R1Y3RzKHJlc3AucHJvZHVjdHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0LnVuc2hpZnQoeyBsYWJlbDogJ1NlbGVjdCBQcm9kdWN0JywgdmFsdWU6IG51bGwgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS5zZXRWYWx1ZSh0aGlzLnByb2R1Y3RMaXN0WzBdLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZUtleXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFNldChyZXNwLnByb2R1Y3RzLm1hcChpdGVtID0+IGl0ZW0/LmZlYXR1cmVfa2V5KSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5c0xpc3QgPSBmZWF0dXJlS2V5cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRPYmoob2JqKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAucmVkdWNlKChyZXN1bHQsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ3JvdXBQcm9kdWN0cyhwcm9kdWN0cykge1xuICAgICAgICBpZiAocHJvZHVjdHMgJiYgcHJvZHVjdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcHJvZHVjdHMgPSBwcm9kdWN0cy5maWx0ZXIoeCA9PiB4LmRlcGVuZGVuY3lfcHJvZHVjdHM/Lmxlbmd0aCA8IDEgJiYgeC5hY3RpdmUpO1xuICAgICAgICAgICAgcHJvZHVjdHMgPSBncm91cEJ5KHByb2R1Y3RzLCAnY3VycmVuY3knKTtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gdGhpcy5zb3J0T2JqKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIGxldCBncm91cGVkQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICAgICAgZm9yIChjb25zdCBwIGluIHByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAgaW4gcHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9kdWN0c1twXS5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IE51bWJlcihiLnByaWNlX3Blcl91bml0KSAtIE51bWJlcihhLnByaWNlX3Blcl91bml0KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBncm91cGVkQXJyYXkucHVzaCguLi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBlZEFycmF5ID0gZ3JvdXBlZEFycmF5Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3gubmFtZX0gfCAke3gucmVnaW9ufSB8ICR7eC5iaWxsaW5nX2ZyZXF1ZW5jeX0gfCAke3gubWluX3VuaXRzfSB4ICR7KFxuICAgICAgICAgICAgICAgICAgICAgICAgeC5wcmljZV9wZXJfdW5pdCAvIDEwMFxuICAgICAgICAgICAgICAgICAgICApLnRvRml4ZWQoMil9IHwgJHt4LmN1cnJlbmN5fWBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBncm91cGVkQXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgb25Qcm9kdWN0Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZUtleXMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXRGYXFzKCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2UoaXRlbSkge1xuICAgICAgICB0aGlzLmlzUHJvZHVjdEVuYWJsZWQgPSBpdGVtLnZhbHVlICE9PSAncHJvZHVjdCc7XG4gICAgICAgIGlmICh0aGlzLmlzUHJvZHVjdEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoZmFxOiBGQVEsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBpZDogZmFxLmlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdmFsdWVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5wdXRGYXEoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uRmFxLlVwZGF0ZWRNZXNzYWdlJykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblB1YmxpY1ZhbHVlQ2hhbmdlKGZhcTogRkFRLCB2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaWQ6IGZhcS5pZCxcbiAgICAgICAgICAgIHB1YmxpYzogdmFsdWVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5wdXRGYXEoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uRmFxLlVwZGF0ZWRNZXNzYWdlJykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMucm91dGVycy5mYXFEZXRhaWxzfWBdKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgcHctdGFiIG92ZXJmbG93LWhpZGRlblwiPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWJvZHlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtYXV0byBjb2wteHMtNiBtdC00XCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiYmFjaygpXCIgY2xhc3M9XCJwcmV2aW91c1wiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtdC0zXCI+QWRkIE5ldyBGQVE8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgbXQtM1wiPlxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgY2xhc3M9XCJjb2wtMTJcIiBbbGFiZWxdPVwiJ0FkbWluLkZhcS5RdWVzdGlvbicgfCB0cmFuc2xvY29cIiBuYW1lPVwicXVlc3Rpb25cIlxuICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwicXVlc3Rpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsncXVlc3Rpb24nXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBjbGFzcz1cImNvbC0xMiBxdWlsbC1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5GYXEuQW5zd2VyJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiYW5zd2VyXCJcbiAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgIDxxdWlsbC1lZGl0b3IgW3N0eWxlc109XCJ7IGhlaWdodDogJzIwMHB4J31cIiBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIiBjbGFzcz1cInF1aWxsRWRpdG9yXCIgW21vZHVsZXNdPVwiZWRpdG9yQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydhbnN3ZXInXS5lcnJvcnMsICd3LTEwMCc6IHRydWUgIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvcXVpbGwtZWRpdG9yPlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5GYXEuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCIgbmFtZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCIgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgaWQ9XCJjYXRlZ29yeS1kcm9wZG93blwiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIiAqcmJhY0FsbG93PVwiJ1N1YnNjcmlwdGlvblN1cGVyQWRtaW4nXCI+XG4gICAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCIgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5GYXEuVG9vbHRpcC5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLlByb2R1Y3QnIHwgdHJhbnNsb2NvXCIgbmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInByb2R1Y3RMaXN0XCIgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmVzIGtleXMtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJmZWF0dXJlX2tleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiZmVhdHVyZUtleXNMaXN0XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZmVhdHVyZSBrZXlzXCIgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cImZlYXR1cmVfa2V5c1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuUG9zaXRpb24nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5Qb3NpdGlvbicgfCB0cmFuc2xvY29cIiBuYW1lPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIGZvcm1Db250cm9sTmFtZT1cInBvc2l0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuVmlzaWJsZScgfCB0cmFuc2xvY299fSA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuVmlzaWJsZScgfCB0cmFuc2xvY29cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwidmlzaWJsZVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuUHVibGljJyB8IHRyYW5zbG9jb319IDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCIgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5QdWJsaWMnIHwgdHJhbnNsb2NvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInB1YmxpY1wiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuU2hhcmVkRmFxJyB8IHRyYW5zbG9jb319IDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCIgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5TaGFyZWRGYXEnIHwgdHJhbnNsb2NvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIG5hbWU9XCJpc19zaGFyZWRfZmFxXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNfc2hhcmVkX2ZhcVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC13YXJuaW5nXCI+e3sgJ0FkbWluLkZhcS5BZG1pbkZhcScgfCB0cmFuc2xvY299fSA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQWRtaW5GYXEnIHwgdHJhbnNsb2NvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImlzX2FkbWluX2ZhcVwiIG5hbWU9XCJpc19hZG1pbl9mYXFcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuQnVpbGRGYXEnIHwgdHJhbnNsb2NvfX0gPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIiBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkJ1aWxkRmFxJyB8IHRyYW5zbG9jb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJpc19idWlsZF9mYXFcIiBuYW1lPVwiaXNfYnVpbGRfZmFxXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgaHJlZj1cIiNmYXFDb2xsYXBzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJmYXFDb2xsYXBzZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+IHt7ICdCdXR0b24uQ2FuY2VsJyB8IHRyYW5zbG9jbyB9fSA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIj57eyAnQnV0dG9uLlNhdmUnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZhcS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZmFxcy9hZGQtZmFxL2FkZC1mYXEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2ZhcXMvYWRkLWZhcS9hZGQtZmFxLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU9qQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUF5RGpELFlBQ1ksYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDdEMsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBTFIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FB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QUM7SUFFUSxXQUFXO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQTlPUSxlQUFlO21HQUFmLGVBQWUsK0xDZjVCLHk3T0E2SEE7OzRGRDlHYSxlQUFlO2tCQUwzQixTQUFTOytCQUNJLDRCQUE0QjtpS0FrQkksUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdGb3JtLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlLCBBcHBBZG1pbiB9IGZyb20gJ0Bwb3Npd2lzZS9hZG1pbi1tb2R1bGUtdXRpbHMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSwgUGVybWlzc2lvblNlcnZpY2UsIFByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5pbXBvcnQgeyBGQVEsIFByb2R1Y3QgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBRdWlsbEhlbHBlciB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5pbXBvcnQgeyBncm91cEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1hZG1pbi1hZGQtZWRpdC1pbmNpZGVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkZC1mYXEuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FkZC1mYXEuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBZGRGYXFDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG4gICAgZmFxczogRkFRW10gPSBbXTtcbiAgICBlZGl0b3JDb25maWc6IGFueTtcbiAgICBmYXFMaXN0OiBGQVFbXSA9IFtdO1xuICAgIGlkOiBudW1iZXI7XG5cbiAgICBiYWNrVXBGQVE6IEZBUVtdID0gW107XG5cbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGlzTG9hZGVkID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRGb3JtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRGb3JtOiBOZ0Zvcm07XG5cbiAgICBjdXJyZW50RmFxOiBhbnk7XG4gICAgaXNFZGl0ID0gZmFsc2U7XG5cbiAgICBjYXRlZ29yaWVzID0gW107XG5cbiAgICBpc1Byb2R1Y3RFbmFibGVkID0gdHJ1ZTtcblxuICAgIHByb2R1Y3RMaXN0OiBhbnkgPSBbXTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIGFsbFByb2R1Y3RzOiBQcm9kdWN0W10gPSBbXTtcblxuICAgIGFsbEZhcXMgPSBbXTtcblxuICAgIHNob3dMaXN0ID0gdHJ1ZTtcblxuICAgIHNob3dGaWx0ZXJzID0gdHJ1ZTtcblxuICAgIGRlZmF1bHRWYWx1ZSA9IG51bGw7XG5cbiAgICB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gMDtcblxuICAgIHRvdGFsUmVjb3JkcyA9IDA7XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgZmVhdHVyZUtleXNMaXN0ID0gW107XG5cbiAgICBzZWxlY3RlZEZlYXR1cmVLZXlzID0gW107XG5cbiAgICBidXR0b25CdXN5ID0gZmFsc2U7XG5cbiAgICBjYXRlZ29yeUZvckJhZGdlcyA9IFtdO1xuXG4gICAgc2x1ZzogYW55O1xuXG4gICAgZmFxSGFzaE1hcCA9IHt9O1xuICAgIHBhZ2UgPSAxO1xuICAgIGFjdGl2ZUl0ZW06IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBBZG1pbi5nZXRGYXFGb3JtKCk7XG4gICAgICAgIHRoaXMuZWRpdG9yQ29uZmlnID0gUXVpbGxIZWxwZXIuZ2V0RWRpdG9yQ29uZmlnKCk7XG4gICAgfVxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNsdWcgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uc2x1ZztcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgIHRoaXMuY3VycmVudEZhcSA9IGhpc3Rvcnkuc3RhdGU/LmRhdGE7XG4gICAgICAgIHRoaXMuZ2V0RmFxcygpO1xuICAgIH1cbiAgICBnZXQgZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRGYXFzKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IFtdO1xuICAgICAgICB0aGlzLmZhcUhhc2hNYXAgPSB7fTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgZmVhdHVyZV9rZXk6IHRoaXMuc2VsZWN0ZWRGZWF0dXJlS2V5cy5qb2luKCcsJykgfHwgJydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEZhcSh7IC4uLnBhcmFtcyB9KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZhcXMgPSByZXNwb25zZS5mYXFzO1xuICAgICAgICAgICAgdGhpcy5hbGxGYXFzID0gcmVzcG9uc2UuZmFxcztcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2Uub2JqZWN0X2NvdW50O1xuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gcmVzcG9uc2UudW5maWx0ZXJlZF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMuZmFxcyA9IHRoaXMuZmFxcy5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgeC5pc0VkaXQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYmFja1VwRkFRID0gWy4uLnRoaXMuZmFxc107XG4gICAgICAgICAgICByZXNwb25zZT8uYXZhaWxhYmxlX2NhdGVnb3J5Py5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFxSGFzaE1hcFt4LmtleV0gPSB4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5Rm9yQmFkZ2VzID0gcmVzcG9uc2UuYXZhaWxhYmxlX2NhdGVnb3J5Lm1hcCh4ID0+IHgua2V5KTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlc3BvbnNlLmF2YWlsYWJsZV9jYXRlZ29yeS5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGVsZW1lbnQubmFtZSwgdmFsdWU6IGVsZW1lbnQua2V5IH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5hbGxGYXFzID0gdGhpcy5mYXFzO1xuICAgICAgICAgICAgdGhpcy5mYXFMaXN0ID0gdGhpcy5mYXFzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblN1Ym1pdCgpIHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGROZXcoKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAucG9zdEZhcSh0aGlzLmZvcm0udmFsdWUsIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5BZGRNZXNzYWdlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgJHt0aGlzLnJvdXRlcnMuZmFxRGV0YWlsc31gXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiAodGhpcy5idXR0b25CdXN5ID0gZmFsc2UpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhdGVnb3JpZXMoKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcm9kdWN0cyh7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcC5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFByb2R1Y3RzID0gcmVzcC5wcm9kdWN0cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TGlzdCA9IHRoaXMuZ3JvdXBQcm9kdWN0cyhyZXNwLnByb2R1Y3RzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TGlzdC51bnNoaWZ0KHsgbGFiZWw6ICdTZWxlY3QgUHJvZHVjdCcsIHZhbHVlOiBudWxsIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykuc2V0VmFsdWUodGhpcy5wcm9kdWN0TGlzdFswXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVLZXlzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTZXQocmVzcC5wcm9kdWN0cy5tYXAoaXRlbSA9PiBpdGVtPy5mZWF0dXJlX2tleSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gZmVhdHVyZUtleXMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0T2JqKG9iaikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwUHJvZHVjdHMocHJvZHVjdHMpIHtcbiAgICAgICAgaWYgKHByb2R1Y3RzICYmIHByb2R1Y3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gcHJvZHVjdHMuZmlsdGVyKHggPT4geC5kZXBlbmRlbmN5X3Byb2R1Y3RzPy5sZW5ndGggPCAxICYmIHguYWN0aXZlKTtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gZ3JvdXBCeShwcm9kdWN0cywgJ2N1cnJlbmN5Jyk7XG4gICAgICAgICAgICBwcm9kdWN0cyA9IHRoaXMuc29ydE9iaihwcm9kdWN0cyk7XG4gICAgICAgICAgICBsZXQgZ3JvdXBlZEFycmF5ID0gW107XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBpbiBwcm9kdWN0cykge1xuICAgICAgICAgICAgICAgIGlmIChwIGluIHByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvZHVjdHNbcF0uc29ydChcbiAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PiBOdW1iZXIoYi5wcmljZV9wZXJfdW5pdCkgLSBOdW1iZXIoYS5wcmljZV9wZXJfdW5pdClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZEFycmF5LnB1c2goLi4udmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwZWRBcnJheSA9IGdyb3VwZWRBcnJheS5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgJHt4Lm5hbWV9IHwgJHt4LnJlZ2lvbn0gfCAke3guYmlsbGluZ19mcmVxdWVuY3l9IHwgJHt4Lm1pbl91bml0c30geCAkeyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHgucHJpY2VfcGVyX3VuaXQgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgKS50b0ZpeGVkKDIpfSB8ICR7eC5jdXJyZW5jeX1gXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBlZEFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIG9uUHJvZHVjdENoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVLZXlzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0RmFxcygpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5pc1Byb2R1Y3RFbmFibGVkID0gaXRlbS52YWx1ZSAhPT0gJ3Byb2R1Y3QnO1xuICAgICAgICBpZiAodGhpcy5pc1Byb2R1Y3RFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKGZhcTogRkFRLCB2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaWQ6IGZhcS5pZCxcbiAgICAgICAgICAgIHZpc2libGU6IHZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UucHV0RmFxKGRhdGEsIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25QdWJsaWNWYWx1ZUNoYW5nZShmYXE6IEZBUSwgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBmYXEuaWQsXG4gICAgICAgICAgICBwdWJsaWM6IHZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UucHV0RmFxKGRhdGEsIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DYW5jZWwoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgJHt0aGlzLnJvdXRlcnMuZmFxRGV0YWlsc31gXSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGRpdiBjbGFzcz1cImRhc2hib2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLWF1dG8gY29sLXhzLTYgbXQtNFwiPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cImJhY2soKVwiIGNsYXNzPVwicHJldmlvdXNcIj48aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibXQtM1wiPkFkZCBOZXcgRkFRPC9oMz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIG10LTNcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiY29sLTEyXCIgW2xhYmVsXT1cIidBZG1pbi5GYXEuUXVlc3Rpb24nIHwgdHJhbnNsb2NvXCIgbmFtZT1cInF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInF1ZXN0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3F1ZXN0aW9uJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgY2xhc3M9XCJjb2wtMTIgcXVpbGwtZWRpdG9yXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkFuc3dlcicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImFuc3dlclwiXG4gICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICA8cXVpbGwtZWRpdG9yIFtzdHlsZXNdPVwieyBoZWlnaHQ6ICcyMDBweCd9XCIgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydhbnN3ZXInXS5lcnJvcnMsICd3LTEwMCc6IHRydWUgIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvcXVpbGwtZWRpdG9yPlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5GYXEuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCIgbmFtZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCIgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgaWQ9XCJjYXRlZ29yeS1kcm9wZG93blwiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIiAqcmJhY0FsbG93PVwiJ1N1YnNjcmlwdGlvblN1cGVyQWRtaW4nXCI+XG4gICAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCIgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5GYXEuVG9vbHRpcC5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLlByb2R1Y3QnIHwgdHJhbnNsb2NvXCIgbmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInByb2R1Y3RMaXN0XCIgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmVzIGtleXMtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJmZWF0dXJlX2tleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiZmVhdHVyZUtleXNMaXN0XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZmVhdHVyZSBrZXlzXCIgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cImZlYXR1cmVfa2V5c1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuUG9zaXRpb24nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5Qb3NpdGlvbicgfCB0cmFuc2xvY29cIiBuYW1lPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIGZvcm1Db250cm9sTmFtZT1cInBvc2l0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuVmlzaWJsZScgfCB0cmFuc2xvY299fSA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuVmlzaWJsZScgfCB0cmFuc2xvY29cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwidmlzaWJsZVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuUHVibGljJyB8IHRyYW5zbG9jb319IDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCIgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5QdWJsaWMnIHwgdHJhbnNsb2NvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cInB1YmxpY1wiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuU2hhcmVkRmFxJyB8IHRyYW5zbG9jb319IDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCIgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5TaGFyZWRGYXEnIHwgdHJhbnNsb2NvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIG5hbWU9XCJpc19zaGFyZWRfZmFxXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNfc2hhcmVkX2ZhcVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC13YXJuaW5nXCI+e3sgJ0FkbWluLkZhcS5BZG1pbkZhcScgfCB0cmFuc2xvY299fSA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQWRtaW5GYXEnIHwgdHJhbnNsb2NvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImlzX2FkbWluX2ZhcVwiIG5hbWU9XCJpc19hZG1pbl9mYXFcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuQnVpbGRGYXEnIHwgdHJhbnNsb2NvfX0gPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIiBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkJ1aWxkRmFxJyB8IHRyYW5zbG9jb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJpc19idWlsZF9mYXFcIiBuYW1lPVwiaXNfYnVpbGRfZmFxXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgaHJlZj1cIiNmYXFDb2xsYXBzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJmYXFDb2xsYXBzZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+IHt7ICdCdXR0b24uQ2FuY2VsJyB8IHRyYW5zbG9jbyB9fSA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIj57eyAnQnV0dG9uLlNhdmUnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
@@ -6700,7 +6700,6 @@ class AddFaqComponent extends AppBaseComponent {
|
|
|
6700
6700
|
this.adminService = adminService;
|
|
6701
6701
|
this.productService = productService;
|
|
6702
6702
|
this.routers = ROUTERS;
|
|
6703
|
-
this.editorConfig = QuillHelper.getEditorConfig();
|
|
6704
6703
|
this.faqs = [];
|
|
6705
6704
|
this.faqList = [];
|
|
6706
6705
|
this.backUpFAQ = [];
|
|
@@ -6725,6 +6724,7 @@ class AddFaqComponent extends AppBaseComponent {
|
|
|
6725
6724
|
this.faqHashMap = {};
|
|
6726
6725
|
this.page = 1;
|
|
6727
6726
|
this.form = AppAdmin.getFaqForm();
|
|
6727
|
+
this.editorConfig = QuillHelper.getEditorConfig();
|
|
6728
6728
|
}
|
|
6729
6729
|
ngOnInit() {
|
|
6730
6730
|
this.slug = PermissionService.selectedSubscription?.slug;
|
|
@@ -6875,11 +6875,11 @@ class AddFaqComponent extends AppBaseComponent {
|
|
|
6875
6875
|
super.ngOnDestroy();
|
|
6876
6876
|
}
|
|
6877
6877
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AddFaqComponent, deps: [{ token: i1$1.CommonService }, { token: i1.AdminService }, { token: i1$1.ProductService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6878
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AddFaqComponent, selector: "pw-admin-add-edit-incident", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\" class=\"quillEditor\" [modules]=\"editorConfig\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'w-100': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Visible' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Public' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"public\"></ui-switch>\n </div>\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n role=\"button\" aria-expanded=\"false\" aria-controls=\"faqCollapse\" (click)=\"onCancel()\"> {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i3$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$1.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.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: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i4$1.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i10.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
6878
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AddFaqComponent, selector: "pw-admin-add-edit-incident", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'w-100': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Visible' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Public' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"public\"></ui-switch>\n </div>\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n role=\"button\" aria-expanded=\"false\" aria-controls=\"faqCollapse\" (click)=\"onCancel()\"> {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i3$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i5$1.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6.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: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i4$1.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i10.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
6879
6879
|
}
|
|
6880
6880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AddFaqComponent, decorators: [{
|
|
6881
6881
|
type: Component,
|
|
6882
|
-
args: [{ selector: 'pw-admin-add-edit-incident', template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\"
|
|
6882
|
+
args: [{ selector: 'pw-admin-add-edit-incident', template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a href=\"javascript:void(0)\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'w-100': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Visible' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label>{{ 'Admin.Faq.Public' | transloco}} <span class=\"tooltip-wrap\" [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"public\"></ui-switch>\n </div>\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n role=\"button\" aria-expanded=\"false\" aria-controls=\"faqCollapse\" (click)=\"onCancel()\"> {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
|
|
6883
6883
|
}], ctorParameters: () => [{ type: i1$1.CommonService }, { type: i1.AdminService }, { type: i1$1.ProductService }, { type: i0.Injector }], propDecorators: { editForm: [{
|
|
6884
6884
|
type: ViewChild,
|
|
6885
6885
|
args: ['editForm', { static: false }]
|