@posiwise/admin-module 0.0.47 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/admin-guard.service.mjs +44 -0
- package/{esm2020 → esm2022}/lib/admin-module.routing.mjs +5 -5
- package/esm2022/lib/admin.module.mjs +389 -0
- package/{esm2020 → esm2022}/lib/admin.service.mjs +5 -5
- package/esm2022/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +88 -0
- package/{esm2020 → esm2022}/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/config/global-config-details/global-config-details.component.mjs +5 -5
- package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +88 -0
- package/{esm2020 → esm2022}/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +4 -4
- package/esm2022/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +99 -0
- package/esm2022/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +25 -0
- package/esm2022/lib/components/credentials/credentials/credentials.component.mjs +83 -0
- package/{esm2020 → esm2022}/lib/components/credentials/credentials-details/credentials-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +5 -5
- package/esm2022/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +89 -0
- package/{esm2020 → esm2022}/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +5 -5
- package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +88 -0
- package/esm2022/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +25 -0
- package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +294 -0
- package/esm2022/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +25 -0
- package/{esm2020 → esm2022}/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/generic/generic-insight/generic-insight.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/generic/generic-misc/generic-misc.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/generic/generic-tabs/generic-tabs.component.mjs +4 -4
- package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +100 -0
- package/esm2022/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +25 -0
- package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +5 -5
- package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +240 -0
- package/esm2022/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +76 -0
- package/{esm2020 → esm2022}/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +6 -6
- package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +100 -0
- package/{esm2020 → esm2022}/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/permissions/permissions-details/permissions-details.component.mjs +5 -5
- package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +77 -0
- package/{esm2020 → esm2022}/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/permissions/role-details/role-details.component.mjs +5 -5
- package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +84 -0
- package/{esm2020 → esm2022}/lib/components/products/product-details/product-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/products/products-insight/products-insight.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/products/products-list/products-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/products/products-tabs/products-tabs.component.mjs +5 -5
- package/esm2022/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +56 -0
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +5 -5
- package/esm2022/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +128 -0
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +5 -5
- package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +63 -0
- package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +100 -0
- package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +103 -0
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/tags/tags-category/tags-category.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/tags/tags-list/tags-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/tags/tags-tabs/tags-tabs.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/tips/tip-detail/tip-detail.component.mjs +5 -5
- package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +48 -0
- package/{esm2020 → esm2022}/lib/components/tips/tips-tabs/tips-tabs.component.mjs +4 -4
- package/esm2022/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +104 -0
- package/esm2022/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +95 -0
- package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +91 -0
- package/esm2022/lib/components/tracking/events/events.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +5 -5
- package/esm2022/lib/components/tracking/versions/versions.component.mjs +103 -0
- package/{esm2020 → esm2022}/lib/components/users/user-details/user-details.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/users/users-insight/users-insight.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/users/users-list/users-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/users/users-tabs/users-tabs.component.mjs +5 -5
- package/fesm2022/posiwise-admin-module.mjs +7846 -0
- package/fesm2022/posiwise-admin-module.mjs.map +1 -0
- package/lib/admin-guard.service.d.ts +2 -2
- package/lib/admin.module.d.ts +2 -2
- package/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.d.ts +1 -1
- package/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.d.ts +1 -1
- package/lib/components/faqs/faqs-tabs/faqs-tabs.component.d.ts +1 -1
- package/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.d.ts +1 -1
- package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +2 -2
- package/package.json +11 -26
- package/esm2020/lib/admin-guard.service.mjs +0 -44
- package/esm2020/lib/admin.module.mjs +0 -361
- package/esm2020/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +0 -88
- package/esm2020/lib/components/config/global-config-list/global-config-list.component.mjs +0 -88
- package/esm2020/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +0 -99
- package/esm2020/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +0 -24
- package/esm2020/lib/components/credentials/credentials/credentials.component.mjs +0 -83
- package/esm2020/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +0 -89
- package/esm2020/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +0 -88
- package/esm2020/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +0 -24
- package/esm2020/lib/components/faqs/faqs-list/faqs-list.component.mjs +0 -294
- package/esm2020/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +0 -24
- package/esm2020/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +0 -100
- package/esm2020/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +0 -24
- package/esm2020/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +0 -91
- package/esm2020/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +0 -240
- package/esm2020/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +0 -76
- package/esm2020/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +0 -100
- package/esm2020/lib/components/permissions/permissions-list/permissions-list.component.mjs +0 -77
- package/esm2020/lib/components/permissions/roles-list/roles-list.component.mjs +0 -84
- package/esm2020/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +0 -56
- package/esm2020/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +0 -128
- package/esm2020/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +0 -63
- package/esm2020/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +0 -100
- package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +0 -103
- package/esm2020/lib/components/tips/tips-list/tips-list.component.mjs +0 -48
- package/esm2020/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +0 -104
- package/esm2020/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +0 -95
- package/esm2020/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +0 -91
- package/esm2020/lib/components/tracking/events/events.component.mjs +0 -91
- package/esm2020/lib/components/tracking/versions/versions.component.mjs +0 -103
- package/fesm2015/posiwise-admin-module.mjs +0 -7808
- package/fesm2015/posiwise-admin-module.mjs.map +0 -1
- package/fesm2020/posiwise-admin-module.mjs +0 -7813
- package/fesm2020/posiwise-admin-module.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/contact-us.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/credential.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/domain-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/feedback-question.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/global-config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/login-notification.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/newsletter.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/permission.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/privacy-tos.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/tip.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/interface/tracking.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/models/admin.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/shared/routers/routers.mjs +0 -0
- /package/{esm2020 → esm2022}/posiwise-admin-module.mjs +0 -0
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
import { Component, Injector, ViewChild } from '@angular/core';
|
|
2
|
-
import { NgForm } from '@angular/forms';
|
|
3
|
-
import groupBy from 'lodash/groupBy';
|
|
4
|
-
import swal from 'sweetalert2';
|
|
5
|
-
import { AdminService } from '../../../admin.service';
|
|
6
|
-
import { AppAdmin } from '../../../shared/models/admin.model';
|
|
7
|
-
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
8
|
-
import { FAQ } from '@posiwise/common-utilities';
|
|
9
|
-
import { CommonService, PermissionService, ProductService } from '@posiwise/common-services';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@posiwise/common-services";
|
|
12
|
-
import * as i2 from "../../../admin.service";
|
|
13
|
-
import * as i3 from "primeng/table";
|
|
14
|
-
import * as i4 from "primeng/api";
|
|
15
|
-
import * as i5 from "primeng/tooltip";
|
|
16
|
-
import * as i6 from "primeng/dropdown";
|
|
17
|
-
import * as i7 from "primeng/multiselect";
|
|
18
|
-
import * as i8 from "primeng/inputtext";
|
|
19
|
-
import * as i9 from "@angular/common";
|
|
20
|
-
import * as i10 from "@angular/forms";
|
|
21
|
-
import * as i11 from "ngx-ui-switch";
|
|
22
|
-
import * as i12 from "@angular/router";
|
|
23
|
-
import * as i13 from "primeng/progressspinner";
|
|
24
|
-
import * as i14 from "@posiwise/shared-components";
|
|
25
|
-
import * as i15 from "@posiwise/directives";
|
|
26
|
-
import * as i16 from "@ng-bootstrap/ng-bootstrap";
|
|
27
|
-
import * as i17 from "ngx-quill";
|
|
28
|
-
import * as i18 from "@ngneat/transloco";
|
|
29
|
-
import * as i19 from "@posiwise/pipes";
|
|
30
|
-
export class FaqListComponent extends AppBaseComponent {
|
|
31
|
-
constructor(commonService, adminService, productService, injector) {
|
|
32
|
-
super(injector);
|
|
33
|
-
this.commonService = commonService;
|
|
34
|
-
this.adminService = adminService;
|
|
35
|
-
this.productService = productService;
|
|
36
|
-
this.faqs = [];
|
|
37
|
-
this.faqList = [];
|
|
38
|
-
this.backUpFAQ = [];
|
|
39
|
-
this.submitted = false;
|
|
40
|
-
this.isLoaded = false;
|
|
41
|
-
this.categories = [];
|
|
42
|
-
this.isProductEnabled = true;
|
|
43
|
-
this.productList = [];
|
|
44
|
-
this.allProducts = [];
|
|
45
|
-
this.allFaqs = [];
|
|
46
|
-
this.showList = true;
|
|
47
|
-
this.showFilters = true;
|
|
48
|
-
this.defaultValue = null;
|
|
49
|
-
this.featureKeysList = [];
|
|
50
|
-
this.selectedFeatureKeys = [];
|
|
51
|
-
this.buttonBusy = false;
|
|
52
|
-
this.categoryForBadges = [];
|
|
53
|
-
this.faqHashMap = {};
|
|
54
|
-
this.form = AppAdmin.getFaqForm();
|
|
55
|
-
}
|
|
56
|
-
ngOnInit() {
|
|
57
|
-
this.slug = PermissionService.selectedSubscription?.slug;
|
|
58
|
-
this.subscriptionId = PermissionService.selectedSubscription?.id;
|
|
59
|
-
this.getCategories();
|
|
60
|
-
this.getFaqs();
|
|
61
|
-
}
|
|
62
|
-
get f() {
|
|
63
|
-
return this.form.controls;
|
|
64
|
-
}
|
|
65
|
-
getFaqs() {
|
|
66
|
-
this.categories = [];
|
|
67
|
-
this.faqHashMap = {};
|
|
68
|
-
const params = {
|
|
69
|
-
subscription_id: this.subscriptionId,
|
|
70
|
-
feature_key: this.selectedFeatureKeys.join(',') || ''
|
|
71
|
-
};
|
|
72
|
-
this.commonService.getFaq(params).subscribe(response => {
|
|
73
|
-
this.isLoaded = true;
|
|
74
|
-
this.faqs = response.faqs;
|
|
75
|
-
this.allFaqs = response.faqs;
|
|
76
|
-
this.totalRecords = response.object_count;
|
|
77
|
-
this.totalRecordsUnFilter = response.unfiltered_count;
|
|
78
|
-
this.faqs = this.faqs.map(x => {
|
|
79
|
-
x.isEdit = false;
|
|
80
|
-
return x;
|
|
81
|
-
});
|
|
82
|
-
this.backUpFAQ = [...this.faqs];
|
|
83
|
-
response?.available_category?.forEach(x => {
|
|
84
|
-
this.faqHashMap[x.key] = x;
|
|
85
|
-
});
|
|
86
|
-
const categories = response.available_category;
|
|
87
|
-
this.categoryForBadges = response.available_category.map(x => x.key);
|
|
88
|
-
categories.forEach(element => {
|
|
89
|
-
this.categories.push({
|
|
90
|
-
label: element.name,
|
|
91
|
-
value: element.key
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
this.allFaqs = this.faqs;
|
|
95
|
-
this.faqList = this.faqs;
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
onSubmit() {
|
|
99
|
-
this.form.markAllAsTouched();
|
|
100
|
-
if (this.form.valid) {
|
|
101
|
-
this.submitted = true;
|
|
102
|
-
this.faqs = this.allFaqs;
|
|
103
|
-
this.addNew();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
onCancel() {
|
|
107
|
-
this.faqs = this.allFaqs;
|
|
108
|
-
this.showFilters = true;
|
|
109
|
-
}
|
|
110
|
-
/** Function to filter faq list */
|
|
111
|
-
filterFaq() {
|
|
112
|
-
if (this.searchText) {
|
|
113
|
-
const searchedList = this.faqList.filter(faq => faq['question'].toLowerCase().includes(this.searchText.toLowerCase()) ||
|
|
114
|
-
faq['answer'].toLowerCase().includes(this.searchText.toLowerCase()));
|
|
115
|
-
this.faqs = searchedList;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
this.faqs = this.faqList;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
addNew() {
|
|
122
|
-
this.buttonBusy = true;
|
|
123
|
-
this.adminService
|
|
124
|
-
.postFaq(this.form.value, this.subscriptionId)
|
|
125
|
-
.subscribe(response => {
|
|
126
|
-
const item = new FAQ(response.id, response.question, response.answer);
|
|
127
|
-
this.getFaqs();
|
|
128
|
-
this.faqs.unshift(item);
|
|
129
|
-
this.form.reset();
|
|
130
|
-
this.isProductEnabled = true;
|
|
131
|
-
$('[href="#faqCollapse"]').trigger('click');
|
|
132
|
-
this.toast.success(this.translation.translate('Admin.Faq.AddedMessage'));
|
|
133
|
-
})
|
|
134
|
-
.add(() => (this.buttonBusy = false));
|
|
135
|
-
}
|
|
136
|
-
getCategories() {
|
|
137
|
-
this.productService
|
|
138
|
-
.getProducts({
|
|
139
|
-
subscription_id: this.subscriptionId
|
|
140
|
-
})
|
|
141
|
-
.subscribe(resp => {
|
|
142
|
-
if (resp.products) {
|
|
143
|
-
this.allProducts = resp.products;
|
|
144
|
-
this.productList = this.groupProducts(resp.products);
|
|
145
|
-
this.productList.unshift({ label: 'Select Product', value: null });
|
|
146
|
-
this.form.get('product_id').setValue(this.productList[0].value);
|
|
147
|
-
const featureKeys = Array.from(new Set(resp.products.map(item => item?.feature_key)));
|
|
148
|
-
this.featureKeysList = featureKeys.map(element => {
|
|
149
|
-
return {
|
|
150
|
-
value: element,
|
|
151
|
-
label: element
|
|
152
|
-
};
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
sortObj(obj) {
|
|
158
|
-
return Object.keys(obj)
|
|
159
|
-
.sort()
|
|
160
|
-
.reduce((result, key) => {
|
|
161
|
-
result[key] = obj[key];
|
|
162
|
-
return result;
|
|
163
|
-
}, {});
|
|
164
|
-
}
|
|
165
|
-
groupProducts(products) {
|
|
166
|
-
if (products && products?.length) {
|
|
167
|
-
products = products.filter(x => x.dependency_products?.length < 1 && x.active);
|
|
168
|
-
products = groupBy(products, 'currency');
|
|
169
|
-
products = this.sortObj(products);
|
|
170
|
-
let groupedArray = [];
|
|
171
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
172
|
-
for (const p in products) {
|
|
173
|
-
if (p in products) {
|
|
174
|
-
const value = products[p].sort((a, b) => Number(b.price_per_unit) - Number(a.price_per_unit));
|
|
175
|
-
groupedArray.push(...value);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
groupedArray = groupedArray.map(x => {
|
|
179
|
-
return {
|
|
180
|
-
value: x.id,
|
|
181
|
-
label: `${x.name} | ${x.region} | ${x.billing_frequency} | ${x.min_units} x ${(x.price_per_unit / 100).toFixed(2)} | ${x.currency}`
|
|
182
|
-
};
|
|
183
|
-
});
|
|
184
|
-
return groupedArray;
|
|
185
|
-
}
|
|
186
|
-
return [];
|
|
187
|
-
}
|
|
188
|
-
onProductChange(event) {
|
|
189
|
-
this.searchText = '';
|
|
190
|
-
this.selectedFeatureKeys = event.value;
|
|
191
|
-
this.getFaqs();
|
|
192
|
-
}
|
|
193
|
-
onChange(item) {
|
|
194
|
-
this.isProductEnabled = item.value !== 'product';
|
|
195
|
-
if (this.isProductEnabled) {
|
|
196
|
-
this.form.get('product_id').setValue(null);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
this.form.get('product_id');
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
onUpdate(form) {
|
|
203
|
-
this.showFilters = true;
|
|
204
|
-
const data = {
|
|
205
|
-
id: this.currentFaq.id,
|
|
206
|
-
question: form['question'],
|
|
207
|
-
answer: form['answer'],
|
|
208
|
-
category: form['category'],
|
|
209
|
-
position: form['position'],
|
|
210
|
-
product_id: form['product_id'],
|
|
211
|
-
feature_keys: form['feature_keys'],
|
|
212
|
-
is_shared_faq: form['is_shared_faq'],
|
|
213
|
-
is_admin_faq: form['is_admin_faq'],
|
|
214
|
-
is_build_faq: form['is_build_faq']
|
|
215
|
-
};
|
|
216
|
-
this.buttonBusy = true;
|
|
217
|
-
this.adminService
|
|
218
|
-
.putFaq(data, this.subscriptionId)
|
|
219
|
-
.subscribe({
|
|
220
|
-
next: response => {
|
|
221
|
-
this.currentFaq = response;
|
|
222
|
-
this.getFaqs();
|
|
223
|
-
this.toast.success(this.translation.translate('Admin.Faq.UpdatedMessage'));
|
|
224
|
-
}
|
|
225
|
-
})
|
|
226
|
-
.add(() => (this.buttonBusy = false));
|
|
227
|
-
}
|
|
228
|
-
onEdit(faq) {
|
|
229
|
-
this.faqs.forEach(item => {
|
|
230
|
-
item.isEdit = false;
|
|
231
|
-
});
|
|
232
|
-
faq.isEdit = true;
|
|
233
|
-
this.showFilters = false;
|
|
234
|
-
this.faqs = this.faqs.filter(item => item.id === faq.id);
|
|
235
|
-
if (faq.product_id === null) {
|
|
236
|
-
this.isProductEnabled = true;
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
this.isProductEnabled = false;
|
|
240
|
-
}
|
|
241
|
-
this.currentFaq = { ...faq };
|
|
242
|
-
}
|
|
243
|
-
onDelete(faq) {
|
|
244
|
-
swal.fire({
|
|
245
|
-
title: 'Delete',
|
|
246
|
-
html: `Are you sure you want to delete?`,
|
|
247
|
-
showCancelButton: true,
|
|
248
|
-
reverseButtons: true,
|
|
249
|
-
icon: 'warning'
|
|
250
|
-
}).then(rep => {
|
|
251
|
-
if (rep.value) {
|
|
252
|
-
this.adminService.deleteFaq(faq.id, this.subscriptionId).subscribe(() => {
|
|
253
|
-
this.toast.success(this.translation.translate('Admin.Faq.DeletedMessage'));
|
|
254
|
-
this.getFaqs();
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
onValueChange(faq, value) {
|
|
260
|
-
const data = {
|
|
261
|
-
id: faq.id,
|
|
262
|
-
visible: value
|
|
263
|
-
};
|
|
264
|
-
this.adminService.putFaq(data, this.subscriptionId).subscribe(() => {
|
|
265
|
-
this.toast.success(this.translation.translate('Admin.Faq.UpdatedMessage'));
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
onPublicValueChange(faq, value) {
|
|
269
|
-
const data = {
|
|
270
|
-
id: faq.id,
|
|
271
|
-
public: value
|
|
272
|
-
};
|
|
273
|
-
this.adminService.putFaq(data, this.subscriptionId).subscribe(() => {
|
|
274
|
-
this.toast.success(this.translation.translate('Admin.Faq.UpdatedMessage'));
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
onDiscard(faq) {
|
|
278
|
-
const item = this.backUpFAQ.find(x => x.id === faq.id);
|
|
279
|
-
this.currentFaq = { ...item };
|
|
280
|
-
}
|
|
281
|
-
ngOnDestroy() {
|
|
282
|
-
super.ngOnDestroy();
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
FaqListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: FaqListComponent, deps: [{ token: i1.CommonService }, { token: i2.AdminService }, { token: i1.ProductService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
286
|
-
FaqListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: FaqListComponent, selector: "pw-admin-faq-list", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\"\n [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center my-3\"\n *rbacAllow=\"'Pages.Admin.FAQ.Create'\">\n <h2 class=\"card-title p-0 float-start\">FAQ</h2>\n <a href=\"javascript:void(0)\"\n *ngIf=\"showList\"\n (click)=\"showList = !showList\"\n class=\"btn btn-sm btn-outline-primary float-end\"\n role=\"button\"\n aria-expanded=\"false\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i>\n {{ 'Label.AddNew' | transloco }} FAQ\n </a>\n </div>\n</div>\n<!-- Add FAQ Section -->\n<div *ngIf=\"!showList\"\n [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"row\">\n <div class=\"col-12\">\n <h4 class=\"fw-bold mb-4\">{{ 'Label.AddNew' | transloco }} FAQ</h4>\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\"\n [label]=\"'Admin.Faq.Question' | transloco\"\n name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\"\n formControlName=\"question\"\n 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\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px' }\"\n formControlName=\"answer\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors }\">\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\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\"\n name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\"\n class=\"dropdown-bg-transparent\"\n (onChange)=\"onChange($event)\"\n placeholder=\"Select\"\n formControlName=\"category\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\"\n *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\"\n class=\"dropdown-bg-transparent\"\n 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\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\"\n name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\"\n defaultLabel=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n formControlName=\"feature_keys\"\n 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\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\"\n name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\"\n min=\"0\"\n formControlName=\"position\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\"\n 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\n </div>\n <div class=\"row\"\n *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\"\n 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\"\n class=\"btn btn-outline-default me-2\"\n data-bs-toggle=\"collapse\"\n href=\"#faqCollapse\"\n role=\"button\"\n aria-expanded=\"false\"\n aria-controls=\"faqCollapse\"\n (click)=\"\n form.reset(); showList = !showList; isProductEnabled = true\n \">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button class=\"btn btn-primary\"\n [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n<!-- FAQ List/Edit -->\n<div class=\"row faqlist primeng-datatable-container mt-0\"\n *ngIf=\"showList\"\n [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 px-0\">\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <p-table [value]=\"faqs\"\n [responsive]=\"true\"\n *ngIf=\"isLoaded\"\n [class.hideTable]=\"totalRecordsUnFilter === 0\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [showToggleAll]=\"true\"\n [options]=\"featureKeysList\"\n (onChange)=\"onProductChange($event)\"\n placeholder=\"Search by Feature keys\"\n [showHeader]=\"true\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search FAQ...\"\n (input)=\"filterFaq()\"\n class=\"mw-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Admin.Faq.Question' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Answer' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Position' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Category' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Visible' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Public' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-faq>\n <tr>\n <td data-head=\"Question\">{{ faq.question }}\n\n </td>\n <td data-head=\"Answer\">{{(faq.answer|removeHtml)|textTruncate: 200}}\n </td>\n <td data-head=\"Position\">{{faq.position}}</td>\n <td data-head=\"Category\">\n <span [appDynamicBadge]=\"{ itemsArray: categoryForBadges, item: faq?.category }\"\n color=\"cyan\"\n class=\"badge ms-1\">\n <span [pTooltip]=\"faq?.feature_keys?.join(',')\"\n tooltipPosition=\"top\">{{ faqHashMap[faq?.category]?.name }}</span>\n </span>\n <span class=\"ms-1 badge bg-warning\"\n *ngIf=\"faq.is_shared_faq || faq.is_admin_faq || faq.is_build_faq\">Super FAQ</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.visible }\"\n color=\"success-danger\"\n class=\"badge\">{{ faq?.visible }}</span>\n </td>\n <td data-head=\"Public\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.public }\"\n color=\"success-danger\"\n class=\"badge\">{{ faq?.public }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-2\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"onEdit(faq)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-2\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(faq)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"View faq\">\n <a [routerLink]=\"['/',slug,'faq',faq.id]\"\n target=\"_blank\">\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\n </a>\n </li>\n </ul>\n </td>\n </tr>\n <tr *ngIf=\"faq.isEdit\">\n <td colspan=\"6\">\n <form (ngSubmit)=\"onSubmit()\"\n #editForm=\"ngForm\">\n <div class=\"mb-3\">\n <label for=\"name\">{{ 'Admin.Faq.Question' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n required\n [(ngModel)]=\"currentFaq.question\"\n name=\"question\"\n #question=\"ngModel\" />\n <small class=\"form-text text-muted danger\"\n *ngIf=\"!question.valid && (question.dirty || question.touched)\">\n Please enter a question</small>\n </div>\n <div class=\"mb-3\">\n <label>{{ 'Admin.Faq.Answer' | transloco }}</label>\n <quill-editor [styles]=\"{ height: '200px' }\"\n [(ngModel)]=\"currentFaq.answer\"\n name=\"answer\"\n required\n #answer=\"ngModel\"></quill-editor>\n <small class=\"form-text text-muted danger\"\n *ngIf=\"!answer.valid && (answer.dirty || answer.touched)\">\n Please enter an answer</small>\n </div>\n <div class=\"row no-gutters justify-content-between\">\n <div class=\"col-lg-2\">\n <label>{{ 'Admin.Faq.Category' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <p-dropdown [options]=\"categories\"\n name=\"category\"\n [required]=\"true\"\n [(ngModel)]=\"currentFaq.category\"\n (onChange)=\"onChange($event)\"\n [style]=\"{ width: '100%' }\"\n class=\"custom-dropdown\">\n </p-dropdown>\n </div>\n <div class=\"col-lg-2\"\n *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <label>{{ 'Admin.Faq.Product' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <p-dropdown [options]=\"productList\"\n name=\"product_id\"\n [required]=\"true\"\n [(ngModel)]=\"currentFaq.product_id\"\n [style]=\"{ width: '100%' }\"\n class=\"custom-dropdown\">\n </p-dropdown>\n </div>\n <!-- feature keys -->\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <label for=\"\">{{ 'Admin.Faq.Features' | transloco }}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <p-multiSelect [options]=\"featureKeysList\"\n defaultLabel=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"currentFaq.feature_keys\"\n [ngModelOptions]=\"{ standalone: true }\"\n appendTo=\"body\"></p-multiSelect>\n </div>\n </div>\n <div class=\"col-lg-2\">\n <label for=\"\">{{ 'Admin.Faq.Position' | transloco }}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <input type=\"number\"\n name=\"position\"\n class=\"form-control\"\n required\n [(ngModel)]=\"currentFaq.position\" />\n </div>\n <div class=\"col-4 col-lg-1\">\n <label>{{ 'Admin.Faq.Visible' | transloco}}\n <span class=\"tooltip-wrap \"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <div>\n <ui-switch class=\"visible\"\n [checked]=\"currentFaq.visible\"\n (valueChange)=\"onValueChange(currentFaq, $event)\">\n </ui-switch>\n </div>\n </div>\n <div class=\"col-4 col-lg-1\">\n <label>{{ 'Admin.Faq.Public' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <div>\n <ui-switch class=\"public\"\n [checked]=\"currentFaq.public\"\n (valueChange)=\"onPublicValueChange(currentFaq, $event)\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row\"\n *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch [checked]=\"currentFaq.is_shared_faq\"\n name=\"is_shared_faq\"\n [(ngModel)]=\"currentFaq.is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch [checked]=\"currentFaq.is_admin_faq\"\n name=\"is_admin_faq\"\n [(ngModel)]=\"currentFaq.is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch [checked]=\"currentFaq.is_build_faq\"\n name=\"is_build_faq\"\n [(ngModel)]=\"currentFaq.is_build_faq\"></ui-switch>\n </div>\n </div>\n </form>\n <div class=\"text-end\">\n <ng-container *rbacAllow=\"'Pages.Admin.FAQ.Delete'\">\n <button class=\"btn btn-outline-danger me-2\"\n *ngIf=\"!faq.isEdit\"\n (click)=\"onDelete(faq)\">\n Delete\n </button>\n </ng-container>\n <button class=\"btn btn-outline-default me-2\"\n *ngIf=\"faq.isEdit\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#collapseEdit\"\n aria-expanded=\"false\"\n aria-controls=\"collapseEdit\"\n (click)=\"faq.isEdit = !faq.isEdit; onCancel()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <ng-container *rbacAllow=\"'Pages.Admin.FAQ.Edit'\">\n <button class=\"btn btn-primary me-2\"\n *ngIf=\"!faq.isEdit\"\n (click)=\"onEdit(faq)\">\n {{ 'Button.Edit' | transloco }}\n </button>\n <button class=\"btn btn-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n *ngIf=\"faq.isEdit\"\n (click)=\"onUpdate(currentFaq)\">\n {{ 'Button.Update' | transloco }}\n </button>\n </ng-container>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <pw-no-data [message]=\"'Admin.Faq.NoDataMessage' | transloco\"\n *ngIf=\"totalRecordsUnFilter === 0\">\n </pw-no-data>\n <pw-no-data message=\"No Result\"\n *ngIf=\"faqs.length === 0\"> </pw-no-data>\n </div>\n</div>\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)}.faq-item{background-color:#eee;border:1px dashed rgba(0,0,0,.1);border-radius:3px;margin-top:10px;transition:all .2s ease-in-out}.faq-item h5{padding:0 15px 0 0;position:relative}.faq-item h5 a:before{position:absolute;right:-24px;top:3px}input.warning{border-color:red}@media only screen and (max-width: 1024px){.faq-item h5 a{font-size:16px}.faq-item button.btn{font-size:14px}.panel-collapse .card-block{font-size:14px;margin-bottom:20px;padding:0 8px}}.actions{min-width:80px}@media only screen and (max-width: 768px){.faq-item h5 a{font-size:14px}.faq-item button.btn,.panel-collapse .card-block{font-size:12px}}.tooltip-wrap{vertical-align:top}.custom-dropdown,.custom-multiselect{position:absolute!important;width:inherit!important;z-index:9999!important}.p-dropdown-items-wrapper{max-height:142px}.fa-eye{font-size:15px}\n"], dependencies: [{ kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i5.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: i6.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i7.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove"] }, { kind: "directive", type: i8.InputText, selector: "[pInputText]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.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: i10.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i10.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i11.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: "directive", type: i12.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i13.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { kind: "component", type: i14.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "component", type: i14.NoDataComponent, selector: "pw-no-data", inputs: ["message"] }, { kind: "directive", type: i15.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i15.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i15.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i16.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i17.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i18.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i19.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i19.TextTruncatePipe, name: "textTruncate" }] });
|
|
287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: FaqListComponent, decorators: [{
|
|
288
|
-
type: Component,
|
|
289
|
-
args: [{ selector: 'pw-admin-faq-list', template: "<div class=\"row\"\n [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center my-3\"\n *rbacAllow=\"'Pages.Admin.FAQ.Create'\">\n <h2 class=\"card-title p-0 float-start\">FAQ</h2>\n <a href=\"javascript:void(0)\"\n *ngIf=\"showList\"\n (click)=\"showList = !showList\"\n class=\"btn btn-sm btn-outline-primary float-end\"\n role=\"button\"\n aria-expanded=\"false\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i>\n {{ 'Label.AddNew' | transloco }} FAQ\n </a>\n </div>\n</div>\n<!-- Add FAQ Section -->\n<div *ngIf=\"!showList\"\n [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"row\">\n <div class=\"col-12\">\n <h4 class=\"fw-bold mb-4\">{{ 'Label.AddNew' | transloco }} FAQ</h4>\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\"\n [label]=\"'Admin.Faq.Question' | transloco\"\n name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\"\n formControlName=\"question\"\n 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\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px' }\"\n formControlName=\"answer\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors }\">\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\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\"\n name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\"\n class=\"dropdown-bg-transparent\"\n (onChange)=\"onChange($event)\"\n placeholder=\"Select\"\n formControlName=\"category\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\"\n *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\"\n name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\"\n class=\"dropdown-bg-transparent\"\n 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\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\"\n name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\"\n defaultLabel=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n formControlName=\"feature_keys\"\n 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\"\n [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\"\n name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\"\n min=\"0\"\n formControlName=\"position\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\"\n 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\n </div>\n <div class=\"row\"\n *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\"\n 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}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\"\n 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\"\n class=\"btn btn-outline-default me-2\"\n data-bs-toggle=\"collapse\"\n href=\"#faqCollapse\"\n role=\"button\"\n aria-expanded=\"false\"\n aria-controls=\"faqCollapse\"\n (click)=\"\n form.reset(); showList = !showList; isProductEnabled = true\n \">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button class=\"btn btn-primary\"\n [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n<!-- FAQ List/Edit -->\n<div class=\"row faqlist primeng-datatable-container mt-0\"\n *ngIf=\"showList\"\n [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 px-0\">\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <p-table [value]=\"faqs\"\n [responsive]=\"true\"\n *ngIf=\"isLoaded\"\n [class.hideTable]=\"totalRecordsUnFilter === 0\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [showToggleAll]=\"true\"\n [options]=\"featureKeysList\"\n (onChange)=\"onProductChange($event)\"\n placeholder=\"Search by Feature keys\"\n [showHeader]=\"true\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search FAQ...\"\n (input)=\"filterFaq()\"\n class=\"mw-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\">{{ 'Admin.Faq.Question' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Answer' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Position' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Category' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Visible' | transloco }}</th>\n <th scope=\"true\">{{ 'Admin.Faq.Public' | transloco }}</th>\n <th scope=\"true\"\n class=\"actions-list-two\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-faq>\n <tr>\n <td data-head=\"Question\">{{ faq.question }}\n\n </td>\n <td data-head=\"Answer\">{{(faq.answer|removeHtml)|textTruncate: 200}}\n </td>\n <td data-head=\"Position\">{{faq.position}}</td>\n <td data-head=\"Category\">\n <span [appDynamicBadge]=\"{ itemsArray: categoryForBadges, item: faq?.category }\"\n color=\"cyan\"\n class=\"badge ms-1\">\n <span [pTooltip]=\"faq?.feature_keys?.join(',')\"\n tooltipPosition=\"top\">{{ faqHashMap[faq?.category]?.name }}</span>\n </span>\n <span class=\"ms-1 badge bg-warning\"\n *ngIf=\"faq.is_shared_faq || faq.is_admin_faq || faq.is_build_faq\">Super FAQ</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.visible }\"\n color=\"success-danger\"\n class=\"badge\">{{ faq?.visible }}</span>\n </td>\n <td data-head=\"Public\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: faq?.public }\"\n color=\"success-danger\"\n class=\"badge\">{{ faq?.public }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-2\">\n <i\n class=\"fa fa-edit edit-icon\"\n (click)=\"onEdit(faq)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-2\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(faq)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"View faq\">\n <a [routerLink]=\"['/',slug,'faq',faq.id]\"\n target=\"_blank\">\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\n </a>\n </li>\n </ul>\n </td>\n </tr>\n <tr *ngIf=\"faq.isEdit\">\n <td colspan=\"6\">\n <form (ngSubmit)=\"onSubmit()\"\n #editForm=\"ngForm\">\n <div class=\"mb-3\">\n <label for=\"name\">{{ 'Admin.Faq.Question' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n required\n [(ngModel)]=\"currentFaq.question\"\n name=\"question\"\n #question=\"ngModel\" />\n <small class=\"form-text text-muted danger\"\n *ngIf=\"!question.valid && (question.dirty || question.touched)\">\n Please enter a question</small>\n </div>\n <div class=\"mb-3\">\n <label>{{ 'Admin.Faq.Answer' | transloco }}</label>\n <quill-editor [styles]=\"{ height: '200px' }\"\n [(ngModel)]=\"currentFaq.answer\"\n name=\"answer\"\n required\n #answer=\"ngModel\"></quill-editor>\n <small class=\"form-text text-muted danger\"\n *ngIf=\"!answer.valid && (answer.dirty || answer.touched)\">\n Please enter an answer</small>\n </div>\n <div class=\"row no-gutters justify-content-between\">\n <div class=\"col-lg-2\">\n <label>{{ 'Admin.Faq.Category' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <p-dropdown [options]=\"categories\"\n name=\"category\"\n [required]=\"true\"\n [(ngModel)]=\"currentFaq.category\"\n (onChange)=\"onChange($event)\"\n [style]=\"{ width: '100%' }\"\n class=\"custom-dropdown\">\n </p-dropdown>\n </div>\n <div class=\"col-lg-2\"\n *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <label>{{ 'Admin.Faq.Product' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <p-dropdown [options]=\"productList\"\n name=\"product_id\"\n [required]=\"true\"\n [(ngModel)]=\"currentFaq.product_id\"\n [style]=\"{ width: '100%' }\"\n class=\"custom-dropdown\">\n </p-dropdown>\n </div>\n <!-- feature keys -->\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <label for=\"\">{{ 'Admin.Faq.Features' | transloco }}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <p-multiSelect [options]=\"featureKeysList\"\n defaultLabel=\"Select feature keys\"\n [showHeader]=\"true\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"currentFaq.feature_keys\"\n [ngModelOptions]=\"{ standalone: true }\"\n appendTo=\"body\"></p-multiSelect>\n </div>\n </div>\n <div class=\"col-lg-2\">\n <label for=\"\">{{ 'Admin.Faq.Position' | transloco }}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <input type=\"number\"\n name=\"position\"\n class=\"form-control\"\n required\n [(ngModel)]=\"currentFaq.position\" />\n </div>\n <div class=\"col-4 col-lg-1\">\n <label>{{ 'Admin.Faq.Visible' | transloco}}\n <span class=\"tooltip-wrap \"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <div>\n <ui-switch class=\"visible\"\n [checked]=\"currentFaq.visible\"\n (valueChange)=\"onValueChange(currentFaq, $event)\">\n </ui-switch>\n </div>\n </div>\n <div class=\"col-4 col-lg-1\">\n <label>{{ 'Admin.Faq.Public' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label>\n <div>\n <ui-switch class=\"public\"\n [checked]=\"currentFaq.public\"\n (valueChange)=\"onPublicValueChange(currentFaq, $event)\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row\"\n *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch [checked]=\"currentFaq.is_shared_faq\"\n name=\"is_shared_faq\"\n [(ngModel)]=\"currentFaq.is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch [checked]=\"currentFaq.is_admin_faq\"\n name=\"is_admin_faq\"\n [(ngModel)]=\"currentFaq.is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}}\n <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\"\n [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\"\n tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch [checked]=\"currentFaq.is_build_faq\"\n name=\"is_build_faq\"\n [(ngModel)]=\"currentFaq.is_build_faq\"></ui-switch>\n </div>\n </div>\n </form>\n <div class=\"text-end\">\n <ng-container *rbacAllow=\"'Pages.Admin.FAQ.Delete'\">\n <button class=\"btn btn-outline-danger me-2\"\n *ngIf=\"!faq.isEdit\"\n (click)=\"onDelete(faq)\">\n Delete\n </button>\n </ng-container>\n <button class=\"btn btn-outline-default me-2\"\n *ngIf=\"faq.isEdit\"\n data-bs-toggle=\"collapse\"\n data-bs-target=\"#collapseEdit\"\n aria-expanded=\"false\"\n aria-controls=\"collapseEdit\"\n (click)=\"faq.isEdit = !faq.isEdit; onCancel()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <ng-container *rbacAllow=\"'Pages.Admin.FAQ.Edit'\">\n <button class=\"btn btn-primary me-2\"\n *ngIf=\"!faq.isEdit\"\n (click)=\"onEdit(faq)\">\n {{ 'Button.Edit' | transloco }}\n </button>\n <button class=\"btn btn-primary me-2\"\n [buttonBusy]=\"buttonBusy\"\n *ngIf=\"faq.isEdit\"\n (click)=\"onUpdate(currentFaq)\">\n {{ 'Button.Update' | transloco }}\n </button>\n </ng-container>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <pw-no-data [message]=\"'Admin.Faq.NoDataMessage' | transloco\"\n *ngIf=\"totalRecordsUnFilter === 0\">\n </pw-no-data>\n <pw-no-data message=\"No Result\"\n *ngIf=\"faqs.length === 0\"> </pw-no-data>\n </div>\n</div>\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)}.faq-item{background-color:#eee;border:1px dashed rgba(0,0,0,.1);border-radius:3px;margin-top:10px;transition:all .2s ease-in-out}.faq-item h5{padding:0 15px 0 0;position:relative}.faq-item h5 a:before{position:absolute;right:-24px;top:3px}input.warning{border-color:red}@media only screen and (max-width: 1024px){.faq-item h5 a{font-size:16px}.faq-item button.btn{font-size:14px}.panel-collapse .card-block{font-size:14px;margin-bottom:20px;padding:0 8px}}.actions{min-width:80px}@media only screen and (max-width: 768px){.faq-item h5 a{font-size:14px}.faq-item button.btn,.panel-collapse .card-block{font-size:12px}}.tooltip-wrap{vertical-align:top}.custom-dropdown,.custom-multiselect{position:absolute!important;width:inherit!important;z-index:9999!important}.p-dropdown-items-wrapper{max-height:142px}.fa-eye{font-size:15px}\n"] }]
|
|
290
|
-
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.AdminService }, { type: i1.ProductService }, { type: i0.Injector }]; }, propDecorators: { editForm: [{
|
|
291
|
-
type: ViewChild,
|
|
292
|
-
args: ['editForm', { static: false }]
|
|
293
|
-
}] } });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9mYXFzL2ZhcXMtbGlzdC9mYXFzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2ZhcXMvZmFxcy1saXN0L2ZhcXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBb0IsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFXLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU83RixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBcURsRCxZQUNZLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLGNBQThCLEVBQ3RDLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUxSLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFj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LE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBUSxFQUFFLEtBQWM7UUFDeEMsTUFBTSxJQUFJLEdBQUc7WUFDVCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixNQUFNLEVBQUUsS0FBSztTQUNoQixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBUTtRQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OzZHQW5VUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixzTENoQjdCLDQxc0JBbWdCQTsyRkRuZmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNJLG1CQUFtQjttTEFpQmEsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGdyb3VwQnkgZnJvbSAnbG9kYXNoL2dyb3VwQnknO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hZG1pbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEFkbWluIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9hZG1pbi5tb2RlbCc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0LCBGQVEgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlLCBQZXJtaXNzaW9uU2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1hZG1pbi1mYXEtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZhcXMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmFxcy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmFxTGlzdENvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAgIGZhcXM6IEZBUVtdID0gW107XG5cbiAgICBmYXFMaXN0OiBGQVFbXSA9IFtdO1xuXG4gICAgYmFja1VwRkFROiBGQVFbXSA9IFtdO1xuXG4gICAgc3VibWl0dGVkID0gZmFsc2U7XG5cbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZCgnZWRpdEZvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSkgZWRpdEZvcm06IE5nRm9ybTtcblxuICAgIGN1cnJlbnRGYXE6IGFueTtcblxuICAgIGNhdGVnb3JpZXMgPSBbXTtcblxuICAgIGlzUHJvZHVjdEVuYWJsZWQgPSB0cnVlO1xuXG4gICAgcHJvZHVjdExpc3Q6IGFueSA9IFtdO1xuXG4gICAgc2VhcmNoVGV4dDogc3RyaW5nO1xuXG4gICAgYWxsUHJvZHVjdHM6IFByb2R1Y3RbXSA9IFtdO1xuXG4gICAgYWxsRmFxcyA9IFtdO1xuXG4gICAgc2hvd0xpc3QgPSB0cnVlO1xuXG4gICAgc2hvd0ZpbHRlcnMgPSB0cnVlO1xuXG4gICAgZGVmYXVsdFZhbHVlID0gbnVsbDtcblxuICAgIHRvdGFsUmVjb3Jkc1VuRmlsdGVyOiBudW1iZXI7XG5cbiAgICB0b3RhbFJlY29yZHM6IG51bWJlcjtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBmZWF0dXJlS2V5c0xpc3QgPSBbXTtcblxuICAgIHNlbGVjdGVkRmVhdHVyZUtleXMgPSBbXTtcblxuICAgIGJ1dHRvbkJ1c3kgPSBmYWxzZTtcblxuICAgIGNhdGVnb3J5Rm9yQmFkZ2VzID0gW107XG5cbiAgICBzbHVnOiBhbnk7XG5cbiAgICBmYXFIYXNoTWFwID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHByb2R1Y3RTZXJ2aWNlOiBQcm9kdWN0U2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5mb3JtID0gQXBwQWRtaW4uZ2V0RmFxRm9ybSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNsdWcgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uc2x1ZztcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzKCk7XG4gICAgICAgIHRoaXMuZ2V0RmFxcygpO1xuICAgIH1cblxuICAgIGdldCBmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmFxcygpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gW107XG4gICAgICAgIHRoaXMuZmFxSGFzaE1hcCA9IHt9O1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWQsXG4gICAgICAgICAgICBmZWF0dXJlX2tleTogdGhpcy5zZWxlY3RlZEZlYXR1cmVLZXlzLmpvaW4oJywnKSB8fCAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0RmFxKHBhcmFtcykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5mYXFzID0gcmVzcG9uc2UuZmFxcztcbiAgICAgICAgICAgIHRoaXMuYWxsRmFxcyA9IHJlc3BvbnNlLmZhcXM7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzVW5GaWx0ZXIgPSByZXNwb25zZS51bmZpbHRlcmVkX2NvdW50O1xuICAgICAgICAgICAgdGhpcy5mYXFzID0gdGhpcy5mYXFzLm1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICB4LmlzRWRpdCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5iYWNrVXBGQVEgPSBbLi4udGhpcy5mYXFzXTtcbiAgICAgICAgICAgIHJlc3BvbnNlPy5hdmFpbGFibGVfY2F0ZWdvcnk/LmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mYXFIYXNoTWFwW3gua2V5XSA9IHg7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IHJlc3BvbnNlLmF2YWlsYWJsZV9jYXRlZ29yeTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlGb3JCYWRnZXMgPSByZXNwb25zZS5hdmFpbGFibGVfY2F0ZWdvcnkubWFwKHggPT4geC5rZXkpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnQubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQua2V5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYWxsRmFxcyA9IHRoaXMuZmFxcztcbiAgICAgICAgICAgIHRoaXMuZmFxTGlzdCA9IHRoaXMuZmFxcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZmFxcyA9IHRoaXMuYWxsRmFxcztcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5mYXFzID0gdGhpcy5hbGxGYXFzO1xuICAgICAgICB0aGlzLnNob3dGaWx0ZXJzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZmlsdGVyIGZhcSBsaXN0ICovXG4gICAgZmlsdGVyRmFxKCkge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hlZExpc3QgPSB0aGlzLmZhcUxpc3QuZmlsdGVyKFxuICAgICAgICAgICAgICAgIGZhcSA9PlxuICAgICAgICAgICAgICAgICAgICBmYXFbJ3F1ZXN0aW9uJ10udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgZmFxWydhbnN3ZXInXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZmFxcyA9IHNlYXJjaGVkTGlzdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmFxcyA9IHRoaXMuZmFxTGlzdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZE5ldygpIHtcbiAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0RmFxKHRoaXMuZm9ybS52YWx1ZSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBuZXcgRkFRKHJlc3BvbnNlLmlkLCByZXNwb25zZS5xdWVzdGlvbiwgcmVzcG9uc2UuYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZhcXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZhcXMudW5zaGlmdChpdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJvZHVjdEVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICQoJ1tocmVmPVwiI2ZhcUNvbGxhcHNlXCJdJykudHJpZ2dlcignY2xpY2snKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5BZGRlZE1lc3NhZ2UnKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiAodGhpcy5idXR0b25CdXN5ID0gZmFsc2UpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhdGVnb3JpZXMoKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcm9kdWN0cyh7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcC5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFByb2R1Y3RzID0gcmVzcC5wcm9kdWN0cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TGlzdCA9IHRoaXMuZ3JvdXBQcm9kdWN0cyhyZXNwLnByb2R1Y3RzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TGlzdC51bnNoaWZ0KHsgbGFiZWw6ICdTZWxlY3QgUHJvZHVjdCcsIHZhbHVlOiBudWxsIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykuc2V0VmFsdWUodGhpcy5wcm9kdWN0TGlzdFswXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVLZXlzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTZXQocmVzcC5wcm9kdWN0cy5tYXAoaXRlbSA9PiBpdGVtPy5mZWF0dXJlX2tleSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gZmVhdHVyZUtleXMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0T2JqKG9iaikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgICAgLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwUHJvZHVjdHMocHJvZHVjdHMpIHtcbiAgICAgICAgaWYgKHByb2R1Y3RzICYmIHByb2R1Y3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gcHJvZHVjdHMuZmlsdGVyKHggPT4geC5kZXBlbmRlbmN5X3Byb2R1Y3RzPy5sZW5ndGggPCAxICYmIHguYWN0aXZlKTtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gZ3JvdXBCeShwcm9kdWN0cywgJ2N1cnJlbmN5Jyk7XG4gICAgICAgICAgICBwcm9kdWN0cyA9IHRoaXMuc29ydE9iaihwcm9kdWN0cyk7XG4gICAgICAgICAgICBsZXQgZ3JvdXBlZEFycmF5ID0gW107XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgICAgIGZvciAoY29uc3QgcCBpbiBwcm9kdWN0cykge1xuICAgICAgICAgICAgICAgIGlmIChwIGluIHByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvZHVjdHNbcF0uc29ydChcbiAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PiBOdW1iZXIoYi5wcmljZV9wZXJfdW5pdCkgLSBOdW1iZXIoYS5wcmljZV9wZXJfdW5pdClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZEFycmF5LnB1c2goLi4udmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwZWRBcnJheSA9IGdyb3VwZWRBcnJheS5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgJHt4Lm5hbWV9IHwgJHt4LnJlZ2lvbn0gfCAke3guYmlsbGluZ19mcmVxdWVuY3l9IHwgJHt4Lm1pbl91bml0c30geCAkeyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHgucHJpY2VfcGVyX3VuaXQgLyAxMDBcbiAgICAgICAgICAgICAgICAgICAgKS50b0ZpeGVkKDIpfSB8ICR7eC5jdXJyZW5jeX1gXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBlZEFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIG9uUHJvZHVjdENoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZlYXR1cmVLZXlzID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZ2V0RmFxcygpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5pc1Byb2R1Y3RFbmFibGVkID0gaXRlbS52YWx1ZSAhPT0gJ3Byb2R1Y3QnO1xuICAgICAgICBpZiAodGhpcy5pc1Byb2R1Y3RFbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwZGF0ZShmb3JtKSB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlcnMgPSB0cnVlO1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuY3VycmVudEZhcS5pZCxcbiAgICAgICAgICAgIHF1ZXN0aW9uOiBmb3JtWydxdWVzdGlvbiddLFxuICAgICAgICAgICAgYW5zd2VyOiBmb3JtWydhbnN3ZXInXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBmb3JtWydjYXRlZ29yeSddLFxuICAgICAgICAgICAgcG9zaXRpb246IGZvcm1bJ3Bvc2l0aW9uJ10sXG4gICAgICAgICAgICBwcm9kdWN0X2lkOiBmb3JtWydwcm9kdWN0X2lkJ10sXG4gICAgICAgICAgICBmZWF0dXJlX2tleXM6IGZvcm1bJ2ZlYXR1cmVfa2V5cyddLFxuICAgICAgICAgICAgaXNfc2hhcmVkX2ZhcTogZm9ybVsnaXNfc2hhcmVkX2ZhcSddLFxuICAgICAgICAgICAgaXNfYWRtaW5fZmFxOiBmb3JtWydpc19hZG1pbl9mYXEnXSxcbiAgICAgICAgICAgIGlzX2J1aWxkX2ZhcTogZm9ybVsnaXNfYnVpbGRfZmFxJ11cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5wdXRGYXEoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RmFxID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RmFxcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiAodGhpcy5idXR0b25CdXN5ID0gZmFsc2UpKTtcbiAgICB9XG5cbiAgICBvbkVkaXQoZmFxOiBGQVEpIHtcbiAgICAgICAgdGhpcy5mYXFzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzRWRpdCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgZmFxLmlzRWRpdCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlcnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mYXFzID0gdGhpcy5mYXFzLmZpbHRlcihpdGVtID0+IGl0ZW0uaWQgPT09IGZhcS5pZCk7XG4gICAgICAgIGlmIChmYXEucHJvZHVjdF9pZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5pc1Byb2R1Y3RFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNQcm9kdWN0RW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudEZhcSA9IHsgLi4uZmFxIH07XG4gICAgfVxuXG4gICAgb25EZWxldGUoZmFxOiBGQVEpIHtcbiAgICAgICAgc3dhbC5maXJlKHtcbiAgICAgICAgICAgIHRpdGxlOiAnRGVsZXRlJyxcblxuICAgICAgICAgICAgaHRtbDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGU/YCxcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgICAgICB9KS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICBpZiAocmVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UuZGVsZXRlRmFxKGZhcS5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5GYXEuRGVsZXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RmFxcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlKGZhcTogRkFRLCB2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaWQ6IGZhcS5pZCxcbiAgICAgICAgICAgIHZpc2libGU6IHZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UucHV0RmFxKGRhdGEsIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25QdWJsaWNWYWx1ZUNoYW5nZShmYXE6IEZBUSwgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBmYXEuaWQsXG4gICAgICAgICAgICBwdWJsaWM6IHZhbHVlXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UucHV0RmFxKGRhdGEsIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5VcGRhdGVkTWVzc2FnZScpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EaXNjYXJkKGZhcTogRkFRKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmJhY2tVcEZBUS5maW5kKHggPT4geC5pZCA9PT0gZmFxLmlkKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmFxID0geyAuLi5pdGVtIH07XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiXG4gIFtjbGFzcy5jdXN0b20tZGlzYWJsZS13cmFwcGVyXT1cImJ1dHRvbkJ1c3lcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBteS0zXCJcbiAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLkZBUS5DcmVhdGUnXCI+XG4gICAgPGgyIGNsYXNzPVwiY2FyZC10aXRsZSBwLTAgZmxvYXQtc3RhcnRcIj5GQVE8L2gyPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgKm5nSWY9XCJzaG93TGlzdFwiXG4gICAgICAoY2xpY2spPVwic2hvd0xpc3QgPSAhc2hvd0xpc3RcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtZW5kXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAge3sgJ0xhYmVsLkFkZE5ldycgfCB0cmFuc2xvY28gfX0gRkFRXG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBBZGQgRkFRIFNlY3Rpb24gLS0+XG48ZGl2ICpuZ0lmPVwiIXNob3dMaXN0XCJcbiAgW2NsYXNzLmN1c3RvbS1kaXNhYmxlLXdyYXBwZXJdPVwiYnV0dG9uQnVzeVwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPGg0IGNsYXNzPVwiZnctYm9sZCBtYi00XCI+e3sgJ0xhYmVsLkFkZE5ldycgfCB0cmFuc2xvY28gfX0gRkFRPC9oND5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiY29sLTEyXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLlF1ZXN0aW9uJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBuYW1lPVwicXVlc3Rpb25cIlxuICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicXVlc3Rpb25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsncXVlc3Rpb24nXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBjbGFzcz1cImNvbC0xMlwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5BbnN3ZXInIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgIG5hbWU9XCJhbnN3ZXJcIlxuICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgPHF1aWxsLWVkaXRvciBbc3R5bGVzXT1cInsgaGVpZ2h0OiAnMjAwcHgnIH1cIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2Fuc3dlciddLmVycm9ycyB9XCI+XG4gICAgICAgICAgICA8L3F1aWxsLWVkaXRvcj5cbiAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkNhdGVnb3J5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkNhdGVnb3J5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgIG5hbWU9XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwiY2F0ZWdvcmllc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCI+XG4gICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiXG4gICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1N1YnNjcmlwdGlvblN1cGVyQWRtaW4nXCI+XG4gICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5GYXEuVG9vbHRpcC5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLlByb2R1Y3QnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgbmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInByb2R1Y3RMaXN0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWJnLXRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0X2lkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIj5cbiAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBGZWF0dXJlcyBrZXlzLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG4gICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5GYXEuVG9vbHRpcC5GZWF0dXJlcycgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5GZWF0dXJlcycgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICBuYW1lPVwiZmVhdHVyZV9rZXlzXCI+XG4gICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cImZlYXR1cmVLZXlzTGlzdFwiXG4gICAgICAgICAgICAgICAgZGVmYXVsdExhYmVsPVwiU2VsZWN0IGZlYXR1cmUga2V5c1wiXG4gICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmVhdHVyZV9rZXlzXCJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuUG9zaXRpb24nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5Qb3NpdGlvbicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJwb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC1sZy0yXCI+XG4gICAgICAgICAgICA8bGFiZWw+e3sgJ0FkbWluLkZhcS5WaXNpYmxlJyB8IHRyYW5zbG9jb319XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLlZpc2libGUnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwidmlzaWJsZVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuUHVibGljJyB8IHRyYW5zbG9jb319XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLlB1YmxpYycgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJwdWJsaWNcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXG4gICAgICAgICAgKnJiYWNBbGxvdz1cIidTdXBlckFkbWluJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC13YXJuaW5nXCI+e3sgJ0FkbWluLkZhcS5TaGFyZWRGYXEnIHwgdHJhbnNsb2NvfX1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuU2hhcmVkRmFxJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICA8dWktc3dpdGNoIG5hbWU9XCJpc19zaGFyZWRfZmFxXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNfc2hhcmVkX2ZhcVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC13YXJuaW5nXCI+e3sgJ0FkbWluLkZhcS5BZG1pbkZhcScgfCB0cmFuc2xvY299fVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiXG4gICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5BZG1pbkZhcScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJpc19hZG1pbl9mYXFcIlxuICAgICAgICAgICAgICBuYW1lPVwiaXNfYWRtaW5fZmFxXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC1sZy0yXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj57eyAnQWRtaW4uRmFxLkJ1aWxkRmFxJyB8IHRyYW5zbG9jb319XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkJ1aWxkRmFxJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImlzX2J1aWxkX2ZhcVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJpc19idWlsZF9mYXFcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHRleHQtZW5kXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGVmYXVsdCBtZS0yXCJcbiAgICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiI2ZhcUNvbGxhcHNlXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJmYXFDb2xsYXBzZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0ucmVzZXQoKTsgc2hvd0xpc3QgPSAhc2hvd0xpc3Q7IGlzUHJvZHVjdEVuYWJsZWQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICB7eyAnQnV0dG9uLkNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIj57eyAnQnV0dG9uLlNhdmUnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIEZBUSBMaXN0L0VkaXQgLS0+XG48ZGl2IGNsYXNzPVwicm93IGZhcWxpc3QgcHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIG10LTBcIlxuICAqbmdJZj1cInNob3dMaXN0XCJcbiAgW2NsYXNzLmN1c3RvbS1kaXNhYmxlLXdyYXBwZXJdPVwiYnV0dG9uQnVzeVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXIgbXQtM1wiXG4gICAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgICAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuICAgIDwvZGl2PlxuICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJmYXFzXCJcbiAgICAgIFtyZXNwb25zaXZlXT1cInRydWVcIlxuICAgICAgKm5nSWY9XCJpc0xvYWRlZFwiXG4gICAgICBbY2xhc3MuaGlkZVRhYmxlXT1cInRvdGFsUmVjb3Jkc1VuRmlsdGVyID09PSAwXCI+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZpbHRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW3Nob3dUb2dnbGVBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImZlYXR1cmVLZXlzTGlzdFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblByb2R1Y3RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IEZlYXR1cmUga2V5c1wiXG4gICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICBtYXhTZWxlY3RlZExhYmVscz1cIjJcIlxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj5cbiAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIG10LTIgbWUtMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggRkFRLi4uXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImZpbHRlckZhcSgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtdy05MFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnQWRtaW4uRmFxLlF1ZXN0aW9uJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdBZG1pbi5GYXEuQW5zd2VyJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdBZG1pbi5GYXEuUG9zaXRpb24nIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0FkbWluLkZhcS5DYXRlZ29yeScgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIj57eyAnQWRtaW4uRmFxLlZpc2libGUnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0FkbWluLkZhcS5QdWJsaWMnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1saXN0LXR3b1wiPnt7ICdMYWJlbC5BY3Rpb25zJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgICBsZXQtZmFxPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlF1ZXN0aW9uXCI+e3sgZmFxLnF1ZXN0aW9uIH19XG5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBbnN3ZXJcIj57eyhmYXEuYW5zd2VyfHJlbW92ZUh0bWwpfHRleHRUcnVuY2F0ZTogMjAwfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQb3NpdGlvblwiPnt7ZmFxLnBvc2l0aW9ufX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJDYXRlZ29yeVwiPlxuICAgICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IGNhdGVnb3J5Rm9yQmFkZ2VzLCBpdGVtOiBmYXE/LmNhdGVnb3J5IH1cIlxuICAgICAgICAgICAgICBjb2xvcj1cImN5YW5cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIG1zLTFcIj5cbiAgICAgICAgICAgICAgPHNwYW4gW3BUb29sdGlwXT1cImZhcT8uZmVhdHVyZV9rZXlzPy5qb2luKCcsJylcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPnt7IGZhcUhhc2hNYXBbZmFxPy5jYXRlZ29yeV0/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTEgYmFkZ2UgYmctd2FybmluZ1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmFxLmlzX3NoYXJlZF9mYXEgfHwgZmFxLmlzX2FkbWluX2ZhcSB8fCBmYXEuaXNfYnVpbGRfZmFxXCI+U3VwZXIgRkFRPC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlZpc2libGVcIj5cbiAgICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBbdHJ1ZSwgZmFsc2VdLCBpdGVtOiBmYXE/LnZpc2libGUgfVwiXG4gICAgICAgICAgICAgIGNvbG9yPVwic3VjY2Vzcy1kYW5nZXJcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgZmFxPy52aXNpYmxlIH19PC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlB1YmxpY1wiPlxuICAgICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sIGl0ZW06IGZhcT8ucHVibGljIH1cIlxuICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGZhcT8ucHVibGljIH19PC9zcGFuPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZVwiPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0yXCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWVkaXQgZWRpdC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KGZhcSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTJcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShmYXEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJWaWV3IGZhcVwiPlxuICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnLycsc2x1ZywnZmFxJyxmYXEuaWRdXCJcbiAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgKm5nSWY9XCJmYXEuaXNFZGl0XCI+XG4gICAgICAgICAgPHRkIGNvbHNwYW49XCI2XCI+XG4gICAgICAgICAgICA8Zm9ybSAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiXG4gICAgICAgICAgICAgICNlZGl0Rm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJuYW1lXCI+e3sgJ0FkbWluLkZhcS5RdWVzdGlvbicgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50RmFxLnF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdWVzdGlvblwiXG4gICAgICAgICAgICAgICAgICAjcXVlc3Rpb249XCJuZ01vZGVsXCIgLz5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZCBkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcXVlc3Rpb24udmFsaWQgJiYgKHF1ZXN0aW9uLmRpcnR5IHx8IHF1ZXN0aW9uLnRvdWNoZWQpXCI+XG4gICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgYSBxdWVzdGlvbjwvc21hbGw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnQWRtaW4uRmFxLkFuc3dlcicgfCB0cmFuc2xvY28gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxxdWlsbC1lZGl0b3IgW3N0eWxlc109XCJ7IGhlaWdodDogJzIwMHB4JyB9XCJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudEZhcS5hbnN3ZXJcIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImFuc3dlclwiXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgI2Fuc3dlcj1cIm5nTW9kZWxcIj48L3F1aWxsLWVkaXRvcj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1tdXRlZCBkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYW5zd2VyLnZhbGlkICYmIChhbnN3ZXIuZGlydHkgfHwgYW5zd2VyLnRvdWNoZWQpXCI+XG4gICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgYW4gYW5zd2VyPC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tZ3V0dGVycyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cImNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudEZhcS5jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIlxuICAgICAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidTdWJzY3JpcHRpb25TdXBlckFkbWluJ1wiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuUHJvZHVjdCcgfCB0cmFuc2xvY299fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJwcm9kdWN0TGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm9kdWN0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRGYXEucHJvZHVjdF9pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBmZWF0dXJlIGtleXMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3sgJ0FkbWluLkZhcS5GZWF0dXJlcycgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuRmVhdHVyZXMnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJmZWF0dXJlS2V5c0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMYWJlbD1cIlNlbGVjdCBmZWF0dXJlIGtleXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudEZhcS5mZWF0dXJlX2tleXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3sgJ0FkbWluLkZhcS5Qb3NpdGlvbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuUG9zaXRpb24nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRGYXEucG9zaXRpb25cIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMVwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuVmlzaWJsZScgfCB0cmFuc2xvY299fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcCBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuVmlzaWJsZScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBjbGFzcz1cInZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImN1cnJlbnRGYXEudmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoY3VycmVudEZhcSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMVwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdBZG1pbi5GYXEuUHVibGljJyB8IHRyYW5zbG9jb319XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLlB1YmxpYycgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBjbGFzcz1cInB1YmxpY1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZhcS5wdWJsaWNcIlxuICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblB1YmxpY1ZhbHVlQ2hhbmdlKGN1cnJlbnRGYXEsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIlxuICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuU2hhcmVkRmFxJyB8IHRyYW5zbG9jb319XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLlNoYXJlZEZhcScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBbY2hlY2tlZF09XCJjdXJyZW50RmFxLmlzX3NoYXJlZF9mYXFcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXNfc2hhcmVkX2ZhcVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudEZhcS5pc19zaGFyZWRfZmFxXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj57eyAnQWRtaW4uRmFxLkFkbWluRmFxJyB8IHRyYW5zbG9jb319XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkFkbWluRmFxJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIFtjaGVja2VkXT1cImN1cnJlbnRGYXEuaXNfYWRtaW5fZmFxXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImlzX2FkbWluX2ZhcVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudEZhcS5pc19hZG1pbl9mYXFcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuQnVpbGRGYXEnIHwgdHJhbnNsb2NvfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQnVpbGRGYXEnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggW2NoZWNrZWRdPVwiY3VycmVudEZhcS5pc19idWlsZF9mYXFcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXNfYnVpbGRfZmFxXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50RmFxLmlzX2J1aWxkX2ZhcVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpyYmFjQWxsb3c9XCInUGFnZXMuQWRtaW4uRkFRLkRlbGV0ZSdcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWZhcS5pc0VkaXRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKGZhcSlcIj5cbiAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZmFxLmlzRWRpdFwiXG4gICAgICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1icy10YXJnZXQ9XCIjY29sbGFwc2VFZGl0XCJcbiAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJjb2xsYXBzZUVkaXRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmYXEuaXNFZGl0ID0gIWZhcS5pc0VkaXQ7IG9uQ2FuY2VsKClcIj5cbiAgICAgICAgICAgICAgICB7eyAnQnV0dG9uLkNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5GQVEuRWRpdCdcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1lLTJcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZmFxLmlzRWRpdFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KGZhcSlcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdCdXR0b24uRWRpdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1lLTJcIlxuICAgICAgICAgICAgICAgICAgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZhcS5pc0VkaXRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVXBkYXRlKGN1cnJlbnRGYXEpXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnQnV0dG9uLlVwZGF0ZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdGFibGU+XG4gICAgPHB3LW5vLWRhdGEgW21lc3NhZ2VdPVwiJ0FkbWluLkZhcS5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiXG4gICAgICAqbmdJZj1cInRvdGFsUmVjb3Jkc1VuRmlsdGVyID09PSAwXCI+XG4gICAgPC9wdy1uby1kYXRhPlxuICAgIDxwdy1uby1kYXRhIG1lc3NhZ2U9XCJObyBSZXN1bHRcIlxuICAgICAgKm5nSWY9XCJmYXFzLmxlbmd0aCA9PT0gMFwiPiA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@posiwise/shared-components";
|
|
4
|
-
export class FaqTabsComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.items = [
|
|
7
|
-
{
|
|
8
|
-
id: 'faq',
|
|
9
|
-
label: 'FAQs',
|
|
10
|
-
icon: 'far fa-fw fa-book',
|
|
11
|
-
routerLink: ['/admin/faq/list']
|
|
12
|
-
}
|
|
13
|
-
];
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
FaqTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: FaqTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
-
FaqTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: FaqTabsComponent, selector: "ng-component", ngImport: i0, template: `<pw-tabs [items]="items"></pw-tabs>`, isInline: true, dependencies: [{ kind: "component", type: i1.PwTabsComponent, selector: "pw-tabs", inputs: ["items", "withSubscription"] }] });
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: FaqTabsComponent, decorators: [{
|
|
19
|
-
type: Component,
|
|
20
|
-
args: [{
|
|
21
|
-
template: `<pw-tabs [items]="items"></pw-tabs>`
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxcy10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9mYXFzL2ZhcXMtdGFicy9mYXFzLXRhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0xQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUksVUFBSyxHQUFlO1lBQ2hCO2dCQUNJLEVBQUUsRUFBRSxLQUFLO2dCQUNULEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLFVBQVUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQ2xDO1NBQ0osQ0FBQztLQUNMOzs2R0FUWSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixvREFGZixxQ0FBcUM7MkZBRXRDLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUNBQXFDO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlOiBgPHB3LXRhYnMgW2l0ZW1zXT1cIml0ZW1zXCI+PC9wdy10YWJzPmBcbn0pXG5leHBvcnQgY2xhc3MgRmFxVGFic0NvbXBvbmVudCB7XG4gICAgaXRlbXM6IE1lbnVJdGVtW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnZmFxJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRkFRcycsXG4gICAgICAgICAgICBpY29uOiAnZmFyIGZhLWZ3IGZhLWJvb2snLFxuICAgICAgICAgICAgcm91dGVyTGluazogWycvYWRtaW4vZmFxL2xpc3QnXVxuICAgICAgICB9XG4gICAgXTtcbn1cbiJdfQ==
|