@posiwise/admin-module 0.0.140 → 0.0.142

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/esm2022/lib/admin-guard.service.mjs +2 -2
  2. package/esm2022/lib/admin-module.routing.mjs +27 -27
  3. package/esm2022/lib/admin.module.mjs +50 -43
  4. package/esm2022/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +5 -5
  5. package/esm2022/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +2 -2
  6. package/esm2022/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +1 -1
  7. package/esm2022/lib/components/config/global-config-details/global-config-details.component.mjs +2 -2
  8. package/esm2022/lib/components/config/global-config-list/global-config-list.component.mjs +3 -3
  9. package/esm2022/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +1 -1
  10. package/esm2022/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +6 -6
  11. package/esm2022/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +1 -1
  12. package/esm2022/lib/components/credentials/credentials/credentials.component.mjs +4 -4
  13. package/esm2022/lib/components/credentials/credentials-details/credentials-details.component.mjs +2 -2
  14. package/esm2022/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +1 -1
  15. package/esm2022/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +7 -7
  16. package/esm2022/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +2 -2
  17. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +6 -6
  18. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +4 -4
  19. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +2 -2
  20. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +4 -4
  21. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +6 -6
  22. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +4 -4
  23. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +4 -4
  24. package/esm2022/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +4 -4
  25. package/esm2022/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +8 -8
  26. package/esm2022/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +1 -1
  27. package/esm2022/lib/components/faqs/add-faq/add-faq.component.mjs +25 -26
  28. package/esm2022/lib/components/faqs/edit-faq/edit-faq.component.mjs +27 -26
  29. package/esm2022/lib/components/faqs/faqs-list/faqs-list.component.mjs +11 -11
  30. package/esm2022/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +1 -1
  31. package/esm2022/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +3 -3
  32. package/esm2022/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +5 -5
  33. package/esm2022/lib/components/generic/generic-misc/generic-misc.component.mjs +3 -3
  34. package/esm2022/lib/components/generic/generic-tabs/generic-tabs.component.mjs +1 -1
  35. package/esm2022/lib/components/incidents/add-edit-incident/add-edit-incident.component.mjs +4 -4
  36. package/esm2022/lib/components/incidents/incidents-list/incidents-list.component.mjs +3 -3
  37. package/esm2022/lib/components/incidents/incidents-tabs/incidents-tabs.component.mjs +1 -1
  38. package/esm2022/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +4 -4
  39. package/esm2022/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +1 -1
  40. package/esm2022/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +11 -7
  41. package/esm2022/lib/components/mailer/mailer-details/mailer-details.component.mjs +5 -5
  42. package/esm2022/lib/components/mailer/mailer-list/mailer-list.component.mjs +6 -6
  43. package/esm2022/lib/components/mailer/mailer-tabs/mailer-tabs.component.mjs +1 -1
  44. package/esm2022/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +4 -4
  45. package/esm2022/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +10 -10
  46. package/esm2022/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +5 -5
  47. package/esm2022/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +26 -4
  48. package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items-view-details/newsletters-items-view-details.component.mjs +4 -4
  49. package/esm2022/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +6 -6
  50. package/esm2022/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +5 -5
  51. package/esm2022/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +2 -2
  52. package/esm2022/lib/components/permissions/permissions-details/permissions-details.component.mjs +2 -2
  53. package/esm2022/lib/components/permissions/permissions-list/permissions-list.component.mjs +5 -5
  54. package/esm2022/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +1 -1
  55. package/esm2022/lib/components/permissions/role-details/role-details.component.mjs +2 -2
  56. package/esm2022/lib/components/permissions/roles-list/roles-list.component.mjs +5 -5
  57. package/esm2022/lib/components/products/product-details/product-details.component.mjs +10 -11
  58. package/esm2022/lib/components/products/products-insight/products-insight.component.mjs +16 -11
  59. package/esm2022/lib/components/products/products-list/products-list.component.mjs +7 -7
  60. package/esm2022/lib/components/products/products-tabs/products-tabs.component.mjs +1 -1
  61. package/esm2022/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +1 -1
  62. package/esm2022/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +2 -2
  63. package/esm2022/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +7 -7
  64. package/esm2022/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +4 -4
  65. package/esm2022/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +4 -4
  66. package/esm2022/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +4 -4
  67. package/esm2022/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +30 -7
  68. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-price/subscription-insight-average-price.component.mjs +17 -12
  69. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-user/subscription-insight-average-user.component.mjs +17 -12
  70. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-churn/subscription-insight-churn.component.mjs +55 -0
  71. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +20 -15
  72. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-product-session/subscription-insight-product-session.component.mjs +17 -12
  73. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +17 -12
  74. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +4 -3
  75. package/esm2022/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +17 -12
  76. package/esm2022/lib/components/subscriptions/subscriptions-list/invite-users/invite-users.component.mjs +8 -8
  77. package/esm2022/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +9 -9
  78. package/esm2022/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +1 -1
  79. package/esm2022/lib/components/tags/tags-category/tags-category.component.mjs +6 -6
  80. package/esm2022/lib/components/tags/tags-list/tags-list.component.mjs +8 -8
  81. package/esm2022/lib/components/tags/tags-tabs/tags-tabs.component.mjs +1 -1
  82. package/esm2022/lib/components/tips/tip-detail/tip-detail.component.mjs +2 -2
  83. package/esm2022/lib/components/tips/tips-list/tips-list.component.mjs +2 -2
  84. package/esm2022/lib/components/tips/tips-tabs/tips-tabs.component.mjs +1 -1
  85. package/esm2022/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +7 -7
  86. package/esm2022/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +7 -7
  87. package/esm2022/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +7 -7
  88. package/esm2022/lib/components/tracking/events/events.component.mjs +4 -4
  89. package/esm2022/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +1 -1
  90. package/esm2022/lib/components/tracking/versions/versions.component.mjs +4 -4
  91. package/esm2022/lib/components/users/user-details/user-details.component.mjs +3 -3
  92. package/esm2022/lib/components/users/users-insight/users-insight.component.mjs +18 -5
  93. package/esm2022/lib/components/users/users-list/users-list.component.mjs +13 -13
  94. package/esm2022/lib/components/users/users-tabs/users-tabs.component.mjs +1 -1
  95. package/esm2022/lib/shared/routers/routers.mjs +2 -2
  96. package/fesm2022/posiwise-admin-module.mjs +5621 -5484
  97. package/fesm2022/posiwise-admin-module.mjs.map +1 -1
  98. package/lib/admin-guard.service.d.ts +1 -1
  99. package/lib/admin.module.d.ts +71 -69
  100. package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +3 -3
  101. package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +1 -1
  102. package/lib/components/config/global-config-details/global-config-details.component.d.ts +2 -2
  103. package/lib/components/config/global-config-list/global-config-list.component.d.ts +2 -2
  104. package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +4 -4
  105. package/lib/components/credentials/credentials/credentials.component.d.ts +3 -3
  106. package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +1 -1
  107. package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +5 -5
  108. package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +2 -2
  109. package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +4 -4
  110. package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +2 -2
  111. package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +2 -2
  112. package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +2 -2
  113. package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +3 -3
  114. package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +2 -2
  115. package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +1 -1
  116. package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +2 -2
  117. package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +4 -4
  118. package/lib/components/faqs/add-faq/add-faq.component.d.ts +11 -11
  119. package/lib/components/faqs/edit-faq/edit-faq.component.d.ts +14 -11
  120. package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +10 -10
  121. package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +4 -4
  122. package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +4 -4
  123. package/lib/components/incidents/add-edit-incident/add-edit-incident.component.d.ts +3 -3
  124. package/lib/components/incidents/incidents-list/incidents-list.component.d.ts +3 -3
  125. package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +1 -1
  126. package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +3 -3
  127. package/lib/components/mailer/mailer-list/mailer-list.component.d.ts +2 -2
  128. package/lib/components/mailer/mailer-tabs/mailer-tabs.component.d.ts +1 -1
  129. package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +1 -1
  130. package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +7 -7
  131. package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +5 -5
  132. package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +8 -0
  133. package/lib/components/newsletters/newsletters-items/newsletters-items-view-details/newsletters-items-view-details.component.d.ts +2 -2
  134. package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +6 -6
  135. package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +2 -2
  136. package/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.d.ts +1 -1
  137. package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +3 -3
  138. package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +4 -4
  139. package/lib/components/permissions/role-details/role-details.component.d.ts +4 -4
  140. package/lib/components/permissions/roles-list/roles-list.component.d.ts +2 -2
  141. package/lib/components/products/product-details/product-details.component.d.ts +14 -13
  142. package/lib/components/products/products-insight/products-insight.component.d.ts +8 -5
  143. package/lib/components/products/products-list/products-list.component.d.ts +6 -6
  144. package/lib/components/products/users-list-for-product/users-list-for-product.component.d.ts +2 -2
  145. package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +2 -2
  146. package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +2 -2
  147. package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +7 -7
  148. package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +2 -2
  149. package/lib/components/subscriptions/subscription-products/subscription-products.component.d.ts +5 -5
  150. package/lib/components/subscriptions/subscription-users/subscription-users.component.d.ts +7 -5
  151. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-price/subscription-insight-average-price.component.d.ts +7 -5
  152. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-average-user/subscription-insight-average-user.component.d.ts +7 -5
  153. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-churn/subscription-insight-churn.component.d.ts +24 -0
  154. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +9 -6
  155. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-product-session/subscription-insight-product-session.component.d.ts +7 -5
  156. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +7 -5
  157. package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +7 -5
  158. package/lib/components/subscriptions/subscriptions-list/invite-users/invite-users.component.d.ts +10 -10
  159. package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +7 -7
  160. package/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.d.ts +1 -1
  161. package/lib/components/tags/tags-category/tags-category.component.d.ts +4 -4
  162. package/lib/components/tags/tags-list/tags-list.component.d.ts +6 -6
  163. package/lib/components/tips/tips-list/tips-list.component.d.ts +1 -1
  164. package/lib/components/tracking/ahoy-events/ahoy-events.component.d.ts +9 -9
  165. package/lib/components/tracking/ahoy-messages/ahoy-messages.component.d.ts +9 -9
  166. package/lib/components/tracking/ahoy-visits/ahoy-visits.component.d.ts +9 -9
  167. package/lib/components/tracking/events/events.component.d.ts +6 -6
  168. package/lib/components/tracking/versions/versions.component.d.ts +6 -6
  169. package/lib/components/users/user-details/user-details.component.d.ts +2 -2
  170. package/lib/components/users/users-insight/users-insight.component.d.ts +6 -0
  171. package/lib/components/users/users-list/users-list.component.d.ts +13 -13
  172. package/lib/components/users/users-tabs/users-tabs.component.d.ts +1 -1
  173. package/package.json +1 -1
@@ -3,23 +3,22 @@ import { NgForm } from '@angular/forms';
3
3
  import { AdminService, AppAdmin } from '@posiwise/admin-module-utils';
4
4
  import { AppBaseComponent } from '@posiwise/app-base-component';
5
5
  import { CommonService, PermissionService, ProductService } from '@posiwise/common-services';
6
- import { ROUTERS } from '../../../shared/routers/routers';
7
- import { groupBy } from 'lodash';
8
- import { QuillHelper } from '@posiwise/utils';
9
6
  import { HelperService } from '@posiwise/helper-service';
7
+ import { QuillHelper } from '@posiwise/utils';
8
+ import { groupBy } from 'lodash';
9
+ import { ROUTERS } from '../../../shared/routers/routers';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@posiwise/common-services";
12
12
  import * as i2 from "@posiwise/admin-module-utils";
13
- import * as i3 from "primeng/tooltip";
14
- import * as i4 from "primeng/dropdown";
15
- import * as i5 from "primeng/multiselect";
16
- import * as i6 from "@angular/common";
17
- import * as i7 from "@angular/forms";
18
- import * as i8 from "ngx-ui-switch";
19
- import * as i9 from "@posiwise/shared-components";
20
- import * as i10 from "@posiwise/directives";
21
- import * as i11 from "ngx-quill";
22
- import * as i12 from "@jsverse/transloco";
13
+ import * as i3 from "primeng/dropdown";
14
+ import * as i4 from "primeng/multiselect";
15
+ import * as i5 from "@angular/common";
16
+ import * as i6 from "@angular/forms";
17
+ import * as i7 from "ngx-ui-switch";
18
+ import * as i8 from "@posiwise/shared-components";
19
+ import * as i9 from "@posiwise/directives";
20
+ import * as i10 from "ngx-quill";
21
+ import * as i11 from "@jsverse/transloco";
23
22
  export class AddFaqComponent extends AppBaseComponent {
24
23
  constructor(commonService, adminService, productService, injector) {
25
24
  super(injector);
@@ -27,29 +26,29 @@ export class AddFaqComponent extends AppBaseComponent {
27
26
  this.adminService = adminService;
28
27
  this.productService = productService;
29
28
  this.routers = ROUTERS;
30
- this.faqs = [];
31
- this.faqList = [];
32
- this.backUpFAQ = [];
33
29
  this.submitted = false;
34
- this.isLoaded = true;
35
30
  this.isEdit = false;
36
- this.categories = [];
31
+ this.buttonBusy = false;
32
+ this.isLoaded = true;
37
33
  this.isProductEnabled = true;
34
+ this.showList = true;
35
+ this.showFilters = true;
36
+ this.categories = [];
38
37
  this.productList = [];
39
- this.searchText = '';
40
38
  this.allProducts = [];
39
+ this.faqs = [];
40
+ this.faqList = [];
41
+ this.backUpFAQ = [];
41
42
  this.allFaqs = [];
42
- this.showList = true;
43
- this.showFilters = true;
43
+ this.searchText = '';
44
44
  this.defaultValue = null;
45
45
  this.totalRecordsUnFiltered = 0;
46
46
  this.totalRecords = 0;
47
+ this.page = 1;
47
48
  this.featureKeysList = [];
48
49
  this.selectedFeatureKeys = [];
49
- this.buttonBusy = false;
50
50
  this.categoryForBadges = [];
51
51
  this.faqHashMap = {};
52
- this.page = 1;
53
52
  QuillHelper.init();
54
53
  this.editorConfig = QuillHelper.getEditorConfig();
55
54
  this.form = AppAdmin.getFaqForm();
@@ -207,13 +206,13 @@ export class AddFaqComponent extends AppBaseComponent {
207
206
  super.ngOnDestroy();
208
207
  }
209
208
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AddFaqComponent, deps: [{ token: i1.CommonService }, { token: i2.AdminService }, { token: i1.ProductService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AddFaqComponent, selector: "pw-admin-add-edit-incident", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\" class=\"quillEditor quill-editor\" [modules]=\"editorConfig\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'quill-container': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"visible\">\n {{ 'Admin.Faq.Visible' | transloco }}\n <span class=\"tooltip-wrap\" [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch id=\"visible\" formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"public\">\n {{ 'Admin.Faq.Public' | transloco }}\n <span class=\"tooltip-wrap\" [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch id=\"public\" formControlName=\"public\"></ui-switch>\n </div>\n\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_shared_faq\" class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_admin_faq\" class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_build_faq\" class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n aria-expanded=\"false\" aria-controls=\"faqCollapse\" (keydown.enter)=\"onCancel()\" (click)=\"onCancel()\" > {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"], dependencies: [{ kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i8.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "directive", type: i10.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i10.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
209
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AddFaqComponent, selector: "pw-admin-add-edit-incident", viewQueries: [{ propertyName: "editForm", first: true, predicate: ["editForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\" class=\"quillEditor quill-editor\" [modules]=\"editorConfig\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'quill-container': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"visible\">\n {{ 'Admin.Faq.Visible' | transloco }}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.Visible' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch id=\"visible\" formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"public\">\n {{ 'Admin.Faq.Public' | transloco }}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.Public' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch id=\"public\" formControlName=\"public\"></ui-switch>\n </div>\n\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_shared_faq\" class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.SharedFaq' | transloco }}\n </span>\n </span>\n </label>\n <br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_admin_faq\" class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.AdminFaq' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_build_faq\" class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.BuildFaq' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n aria-expanded=\"false\" aria-controls=\"faqCollapse\" (keydown.enter)=\"onCancel()\" (click)=\"onCancel()\" > {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.tooltip-info-circle:after{left:.5rem!important}\n"], dependencies: [{ kind: "component", type: i3.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i4.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.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: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "component", type: i7.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "component", type: i8.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText", "isLeftTooltip"] }, { kind: "directive", type: i9.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i9.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.QuillEditorComponent, selector: "quill-editor" }, { kind: "pipe", type: i11.TranslocoPipe, name: "transloco" }] }); }
211
210
  }
212
211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AddFaqComponent, decorators: [{
213
212
  type: Component,
214
- args: [{ selector: 'pw-admin-add-edit-incident', template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\" class=\"quillEditor quill-editor\" [modules]=\"editorConfig\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'quill-container': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"visible\">\n {{ 'Admin.Faq.Visible' | transloco }}\n <span class=\"tooltip-wrap\" [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.Visible' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch id=\"visible\" formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"public\">\n {{ 'Admin.Faq.Public' | transloco }}\n <span class=\"tooltip-wrap\" [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.Public' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch id=\"public\" formControlName=\"public\"></ui-switch>\n </div>\n\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_shared_faq\" class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.SharedFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_admin_faq\" class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.AdminFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_build_faq\" class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}} <span class=\"tooltip-wrap\"\n [appendTo]=\"'body'\" [pTooltip]=\"'Admin.Faq.Tooltip.BuildFaq' | transloco\" tooltipPosition=\"top\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n aria-expanded=\"false\" aria-controls=\"faqCollapse\" (keydown.enter)=\"onCancel()\" (click)=\"onCancel()\" > {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}\n"] }]
213
+ args: [{ selector: 'pw-admin-add-edit-incident', template: "\n<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">Add New FAQ</h3>\n </div>\n <div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"row\">\n <pw-input-container class=\"col-12\" [label]=\"'Admin.Faq.Question' | transloco\" name=\"question\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <input type=\"text\" formControlName=\"question\" class=\"form-control\"\n [ngClass]=\"{ 'is-invalid': submitted && f['question'].errors }\" />\n </pw-input-container>\n </div>\n <div class=\"row\">\n <pw-input-container class=\"col-12 quill-editor\"\n [label]=\"'Admin.Faq.Answer' | transloco\"\n name=\"answer\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <quill-editor [styles]=\"{ height: '200px'}\" formControlName=\"answer\" class=\"quillEditor quill-editor\" [modules]=\"editorConfig\"\n [ngClass]=\"{ 'is-invalid': submitted && f['answer'].errors, 'quill-container': true }\">\n </quill-editor>\n </pw-input-container>\n </div>\n <div class=\"row justify-content-between\">\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Category' | transloco\"\n [label]=\"'Admin.Faq.Category' | transloco\" name=\"category\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"categories\" class=\"dropdown-bg-transparent\" (onChange)=\"onChange($event)\"\n placeholder=\"Select\" formControlName=\"category\" id=\"category-dropdown\" [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\" *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Product' | transloco\"\n [label]=\"'Admin.Faq.Product' | transloco\" name=\"product_id\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <p-dropdown [options]=\"productList\" class=\"dropdown-bg-transparent\" formControlName=\"product_id\"\n [style]=\"{ width: '100%' }\">\n </p-dropdown>\n </pw-input-container>\n </div>\n <!-- Features keys-->\n <div class=\"col-lg-2\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Features' | transloco\"\n [label]=\"'Admin.Faq.Features' | transloco\" name=\"feature_keys\">\n <p-multiSelect [options]=\"featureKeysList\" placeholder=\"Select feature keys\" [showHeader]=\"true\"\n [showToggleAll]=\"true\" formControlName=\"feature_keys\" appendTo=\"body\"></p-multiSelect>\n </pw-input-container>\n </div>\n <div class=\"col-lg-2\">\n <div class=\"mb-3\">\n <pw-input-container [showTooltip]=\"true\" [tooltipText]=\"'Admin.Faq.Tooltip.Position' | transloco\"\n [label]=\"'Admin.Faq.Position' | transloco\" name=\"position\"\n [errorMsg]=\"'Admin.Faq.Validation.FieldRequired' | transloco\">\n <div class=\"position\">\n <input type=\"number\" min=\"0\" formControlName=\"position\" class=\"form-control\" />\n </div>\n </pw-input-container>\n </div>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"visible\">\n {{ 'Admin.Faq.Visible' | transloco }}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.Visible' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch id=\"visible\" formControlName=\"visible\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"public\">\n {{ 'Admin.Faq.Public' | transloco }}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.Public' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch id=\"public\" formControlName=\"public\"></ui-switch>\n </div>\n\n </div>\n <div class=\"row\" *rbacAllow=\"'SuperAdmin'\">\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_shared_faq\" class=\"text-warning\">{{ 'Admin.Faq.SharedFaq' | transloco}}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.SharedFaq' | transloco }}\n </span>\n </span>\n </label>\n <br />\n <ui-switch name=\"is_shared_faq\" formControlName=\"is_shared_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_admin_faq\" class=\"text-warning\">{{ 'Admin.Faq.AdminFaq' | transloco}}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.AdminFaq' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_admin_faq\" name=\"is_admin_faq\"></ui-switch>\n </div>\n <div class=\"col-4 col-lg-2\">\n <label for=\"is_build_faq\" class=\"text-warning\">{{ 'Admin.Faq.BuildFaq' | transloco}}\n <span class=\"info-circle tooltip-wrap tooltip-info-circle\">\n <span class=\"tooltiptext gradient-custom-branding\">\n {{ 'Admin.Faq.Tooltip.BuildFaq' | transloco }}\n </span>\n </span>\n </label><br />\n <ui-switch formControlName=\"is_build_faq\" name=\"is_build_faq\"></ui-switch>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mt-4\">\n <div class=\"mb-3 text-end\">\n <button type=\"button\" class=\"btn btn-outline-default me-2\" data-bs-toggle=\"collapse\" href=\"#faqCollapse\"\n aria-expanded=\"false\" aria-controls=\"faqCollapse\" (keydown.enter)=\"onCancel()\" (click)=\"onCancel()\" > {{ 'Button.Cancel' | transloco }} </button>\n <button class=\"btn btn-primary\" [buttonBusy]=\"buttonBusy\">{{ 'Button.Save' | transloco }}</button>\n </div>\n </div>\n </div>\n </form>\n\n </div>\n </div>\n </div>\n</div>\n\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.tooltip-info-circle:after{left:.5rem!important}\n"] }]
215
214
  }], ctorParameters: () => [{ type: i1.CommonService }, { type: i2.AdminService }, { type: i1.ProductService }, { type: i0.Injector }], propDecorators: { editForm: [{
216
215
  type: ViewChild,
217
216
  args: ['editForm', { static: false }]
218
217
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZhcS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZmFxcy9hZGQtZmFxL2FkZC1mYXEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2ZhcXMvYWRkLWZhcS9hZGQtZmFxLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFFBQVEsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxNQUFNLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxlQUFnQixTQUFRLGdCQUFnQjtJQXNEakQsWUFDcUIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDL0MsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBTEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVks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QUFZLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMvRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRVEsV0FBVztRQUNoQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FoUFEsZUFBZTttR0FBZixlQUFlLCtMQ2pCNUIsZ3NQQWdJQTs7NEZEL0dhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0ksNEJBQTRCO2lLQWtCSSxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBZG1pblNlcnZpY2UsIEFwcEFkbWluIH0gZnJvbSAnQHBvc2l3aXNlL2FkbWluLW1vZHVsZS11dGlscyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlLCBQZXJtaXNzaW9uU2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IEZBUSwgUHJvZHVjdCB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUHJvZHVjdExpc3QgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL2FkbWluLW1vZHVsZS1zaGFyZWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFF1aWxsSGVscGVyIH0gZnJvbSAnQHBvc2l3aXNlL3V0aWxzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWFkbWluLWFkZC1lZGl0LWluY2lkZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWRkLWZhcS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWRkLWZhcS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFkZEZhcUNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgICByb3V0ZXJzID0gUk9VVEVSUztcbiAgICBmYXFzOiBGQVFbXSA9IFtdO1xuICAgIGVkaXRvckNvbmZpZztcbiAgICBmYXFMaXN0OiBGQVFbXSA9IFtdO1xuICAgIGlkOiBudW1iZXI7XG5cbiAgICBiYWNrVXBGQVE6IEZBUVtdID0gW107XG5cbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGlzTG9hZGVkID0gdHJ1ZTtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRGb3JtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRGb3JtOiBOZ0Zvcm07XG4gICAgaXNFZGl0ID0gZmFsc2U7XG5cbiAgICBjYXRlZ29yaWVzID0gW107XG5cbiAgICBpc1Byb2R1Y3RFbmFibGVkID0gdHJ1ZTtcblxuICAgIHByb2R1Y3RMaXN0OiBQcm9kdWN0TGlzdFtdID0gW107XG5cbiAgICBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBhbGxQcm9kdWN0czogUHJvZHVjdFtdID0gW107XG5cbiAgICBhbGxGYXFzID0gW107XG5cbiAgICBzaG93TGlzdCA9IHRydWU7XG5cbiAgICBzaG93RmlsdGVycyA9IHRydWU7XG5cbiAgICBkZWZhdWx0VmFsdWUgPSBudWxsO1xuXG4gICAgdG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IDA7XG5cbiAgICB0b3RhbFJlY29yZHMgPSAwO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGZlYXR1cmVLZXlzTGlzdCA9IFtdO1xuXG4gICAgc2VsZWN0ZWRGZWF0dXJlS2V5cyA9IFtdO1xuXG4gICAgYnV0dG9uQnVzeSA9IGZhbHNlO1xuXG4gICAgY2F0ZWdvcnlGb3JCYWRnZXMgPSBbXTtcblxuICAgIHNsdWc6IHN0cmluZztcblxuICAgIGZhcUhhc2hNYXAgPSB7fTtcbiAgICBwYWdlID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICBRdWlsbEhlbHBlci5pbml0KCk7XG4gICAgICAgIHRoaXMuZWRpdG9yQ29uZmlnID0gUXVpbGxIZWxwZXIuZ2V0RWRpdG9yQ29uZmlnKCk7XG4gICAgICAgIHRoaXMuZm9ybSA9IEFwcEFkbWluLmdldEZhcUZvcm0oKTtcbiAgICB9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2x1ZyA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5zbHVnO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LmlkO1xuICAgICAgICB0aGlzLmdldENhdGVnb3JpZXMoKTtcbiAgICAgICAgdGhpcy5nZXRGYXFzKCk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgSGVscGVyU2VydmljZS5zdWJzY3JpYmVUb0VkaXRvckNoYW5nZXModGhpcy5mb3JtLCAnYW5zd2VyJyk7XG4gICAgfVxuXG4gICAgZ2V0IGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0RmFxcygpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5mYXFIYXNoTWFwID0ge307XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgIGZlYXR1cmVfa2V5OiB0aGlzLnNlbGVjdGVkRmVhdHVyZUtleXMuam9pbignLCcpIHx8ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRGYXEoeyAuLi5wYXJhbXMgfSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5mYXFzID0gcmVzcG9uc2UuZmFxcztcbiAgICAgICAgICAgIHRoaXMuYWxsRmFxcyA9IHJlc3BvbnNlLmZhcXM7XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzVW5GaWx0ZXJlZCA9IHJlc3BvbnNlLnVuZmlsdGVyZWRfY291bnQ7XG4gICAgICAgICAgICB0aGlzLmZhcXMgPSB0aGlzLmZhcXMubWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIHguaXNFZGl0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmJhY2tVcEZBUSA9IFsuLi50aGlzLmZhcXNdO1xuICAgICAgICAgICAgcmVzcG9uc2U/LmF2YWlsYWJsZV9jYXRlZ29yeT8uZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZhcUhhc2hNYXBbeC5rZXldID0geDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeUZvckJhZGdlcyA9IHJlc3BvbnNlLmF2YWlsYWJsZV9jYXRlZ29yeS5tYXAoeCA9PiB4LmtleSk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSByZXNwb25zZS5hdmFpbGFibGVfY2F0ZWdvcnkubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBlbGVtZW50Lm5hbWUgfHwgJycsIHZhbHVlOiBlbGVtZW50LmtleSB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYWxsRmFxcyA9IHRoaXMuZmFxcztcbiAgICAgICAgICAgIHRoaXMuZmFxTGlzdCA9IHRoaXMuZmFxcztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZE5ldygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkTmV3KCkge1xuICAgICAgICBjb25zdCByYXdIdG1sID0gSGVscGVyU2VydmljZS5TYXZlUmF3SFRNTCgpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2Fuc3dlciddLnNldFZhbHVlKHJhd0h0bWwpO1xuICAgICAgICB0aGlzLmJ1dHRvbkJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZVxuICAgICAgICAgICAgLnBvc3RGYXEodGhpcy5mb3JtLnZhbHVlLCB0aGlzLnN1YnNjcmlwdGlvbklkKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5GYXEuQWRkTWVzc2FnZScpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7dGhpcy5yb3V0ZXJzLmZhcUNvbmZpZ31gXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFkZCgoKSA9PiAodGhpcy5idXR0b25CdXN5ID0gZmFsc2UpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhdGVnb3JpZXMoKSB7XG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcm9kdWN0cyh7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcC5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFByb2R1Y3RzID0gcmVzcC5wcm9kdWN0cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TGlzdCA9IHRoaXMuZ3JvdXBQcm9kdWN0cyhyZXNwLnByb2R1Y3RzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TGlzdC51bnNoaWZ0KHsgbGFiZWw6ICdTZWxlY3QgUHJvZHVjdCcsIHZhbHVlOiBudWxsIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcm9kdWN0X2lkJykuc2V0VmFsdWUodGhpcy5wcm9kdWN0TGlzdFswXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVLZXlzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTZXQocmVzcC5wcm9kdWN0cy5tYXAoaXRlbSA9PiBpdGVtPy5mZWF0dXJlX2tleSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gZmVhdHVyZUtleXMubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZWxlbWVudCB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0T2JqKG9iaikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ3JvdXBQcm9kdWN0cyhwcm9kdWN0cykge1xuICAgICAgICBpZiAocHJvZHVjdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcHJvZHVjdHMgPSBwcm9kdWN0cy5maWx0ZXIoeCA9PiB4LmRlcGVuZGVuY3lfcHJvZHVjdHM/Lmxlbmd0aCA8IDEgJiYgeC5hY3RpdmUpO1xuICAgICAgICAgICAgcHJvZHVjdHMgPSBncm91cEJ5KHByb2R1Y3RzLCAnY3VycmVuY3knKTtcbiAgICAgICAgICAgIHByb2R1Y3RzID0gdGhpcy5zb3J0T2JqKHByb2R1Y3RzKTtcbiAgICAgICAgICAgIGxldCBncm91cGVkQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICAgICAgZm9yIChjb25zdCBwIGluIHByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHAgaW4gcHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9kdWN0c1twXS5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IE51bWJlcihiLnByaWNlX3Blcl91bml0KSAtIE51bWJlcihhLnByaWNlX3Blcl91bml0KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBncm91cGVkQXJyYXkucHVzaCguLi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JvdXBlZEFycmF5ID0gZ3JvdXBlZEFycmF5Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3gubmFtZX0gfCAke3gucmVnaW9ufSB8ICR7eC5iaWxsaW5nX2ZyZXF1ZW5jeX0gfCAke3gubWluX3VuaXRzfSB4ICR7KFxuICAgICAgICAgICAgICAgICAgICAgICAgeC5wcmljZV9wZXJfdW5pdCAvIDEwMFxuICAgICAgICAgICAgICAgICAgICApLnRvRml4ZWQoMil9IHwgJHt4LmN1cnJlbmN5fWBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBncm91cGVkQXJyYXk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgb25Qcm9kdWN0Q2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZUtleXMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXRGYXFzKCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2UoaXRlbSkge1xuICAgICAgICB0aGlzLmlzUHJvZHVjdEVuYWJsZWQgPSBpdGVtLnZhbHVlICE9PSAncHJvZHVjdCc7XG4gICAgICAgIGlmICh0aGlzLmlzUHJvZHVjdEVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UoZmFxOiBGQVEsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBpZDogZmFxLmlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdmFsdWVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5wdXRGYXEoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uRmFxLlVwZGF0ZWRNZXNzYWdlJykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblB1YmxpY1ZhbHVlQ2hhbmdlKGZhcTogRkFRLCB2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaWQ6IGZhcS5pZCxcbiAgICAgICAgICAgIHB1YmxpYzogdmFsdWVcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5wdXRGYXEoZGF0YSwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uRmFxLlVwZGF0ZWRNZXNzYWdlJykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMucm91dGVycy5mYXFDb25maWd9YF0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIlxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBwdy10YWIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS1hdXRvIGNvbC14cy02IG10LTRcIj5cbiAgICAgICAgICAgICAgPGEgYXJpYS1sYWJlbD1cIk5hdmlnYXRlIHRvIFRhcmdldFwiIChjbGljayk9XCJiYWNrKClcIiBjbGFzcz1cInByZXZpb3VzXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm10LTNcIj5BZGQgTmV3IEZBUTwvaDM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBtdC0zXCI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBjbGFzcz1cImNvbC0xMlwiIFtsYWJlbF09XCInQWRtaW4uRmFxLlF1ZXN0aW9uJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJxdWVzdGlvblwiXG4gICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJxdWVzdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydxdWVzdGlvbiddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiY29sLTEyIHF1aWxsLWVkaXRvclwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5BbnN3ZXInIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJhbnN3ZXJcIlxuICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgICAgPHF1aWxsLWVkaXRvciBbc3R5bGVzXT1cInsgaGVpZ2h0OiAnMjAwcHgnfVwiIGZvcm1Db250cm9sTmFtZT1cImFuc3dlclwiIGNsYXNzPVwicXVpbGxFZGl0b3IgcXVpbGwtZWRpdG9yXCIgW21vZHVsZXNdPVwiZWRpdG9yQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydhbnN3ZXInXS5lcnJvcnMsICdxdWlsbC1jb250YWluZXInOiB0cnVlICB9XCI+XG4gICAgICAgICAgICAgICAgICA8L3F1aWxsLWVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkNhdGVnb3J5JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkNhdGVnb3J5JyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW29wdGlvbnNdPVwiY2F0ZWdvcmllc1wiIGNsYXNzPVwiZHJvcGRvd24tYmctdHJhbnNwYXJlbnRcIiAob25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJjYXRlZ29yeVwiIGlkPVwiY2F0ZWdvcnktZHJvcGRvd25cIiBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCIgKnJiYWNBbGxvdz1cIidTdWJzY3JpcHRpb25TdXBlckFkbWluJ1wiPlxuICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuUHJvZHVjdCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJwcm9kdWN0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJwcm9kdWN0TGlzdFwiIGNsYXNzPVwiZHJvcGRvd24tYmctdHJhbnNwYXJlbnRcIiBmb3JtQ29udHJvbE5hbWU9XCJwcm9kdWN0X2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBGZWF0dXJlcyBrZXlzLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCIgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5GYXEuVG9vbHRpcC5GZWF0dXJlcycgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5GZWF0dXJlcycgfCB0cmFuc2xvY29cIiBuYW1lPVwiZmVhdHVyZV9rZXlzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IFtvcHRpb25zXT1cImZlYXR1cmVLZXlzTGlzdFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGZlYXR1cmUga2V5c1wiIFtzaG93SGVhZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJmZWF0dXJlX2tleXNcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbXVsdGlTZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLlBvc2l0aW9uJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5GYXEuUG9zaXRpb24nIHwgdHJhbnNsb2NvXCIgbmFtZT1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiBmb3JtQ29udHJvbE5hbWU9XCJwb3NpdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ2aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBZG1pbi5GYXEuVmlzaWJsZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIiBbYXBwZW5kVG9dPVwiJ2JvZHknXCIgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5WaXNpYmxlJyB8IHRyYW5zbG9jb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBpZD1cInZpc2libGVcIiBmb3JtQ29udHJvbE5hbWU9XCJ2aXNpYmxlXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicHVibGljXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdBZG1pbi5GYXEuUHVibGljJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiIFthcHBlbmRUb109XCInYm9keSdcIiBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLlB1YmxpYycgfCB0cmFuc2xvY29cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggaWQ9XCJwdWJsaWNcIiBmb3JtQ29udHJvbE5hbWU9XCJwdWJsaWNcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc19zaGFyZWRfZmFxXCIgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj57eyAnQWRtaW4uRmFxLlNoYXJlZEZhcScgfCB0cmFuc2xvY299fSA8c3BhbiBjbGFzcz1cInRvb2x0aXAtd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtwVG9vbHRpcF09XCInQWRtaW4uRmFxLlRvb2x0aXAuU2hhcmVkRmFxJyB8IHRyYW5zbG9jb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBuYW1lPVwiaXNfc2hhcmVkX2ZhcVwiIGZvcm1Db250cm9sTmFtZT1cImlzX3NoYXJlZF9mYXFcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc19hZG1pbl9mYXFcIiBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuQWRtaW5GYXEnIHwgdHJhbnNsb2NvfX0gPHNwYW4gY2xhc3M9XCJ0b29sdGlwLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIiBbcFRvb2x0aXBdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkFkbWluRmFxJyB8IHRyYW5zbG9jb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJpc19hZG1pbl9mYXFcIiBuYW1lPVwiaXNfYWRtaW5fZmFxXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC1sZy0yXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaXNfYnVpbGRfZmFxXCIgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj57eyAnQWRtaW4uRmFxLkJ1aWxkRmFxJyB8IHRyYW5zbG9jb319IDxzcGFuIGNsYXNzPVwidG9vbHRpcC13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZW5kVG9dPVwiJ2JvZHknXCIgW3BUb29sdGlwXT1cIidBZG1pbi5GYXEuVG9vbHRpcC5CdWlsZEZhcScgfCB0cmFuc2xvY29cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1pbmZvLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiaXNfYnVpbGRfZmFxXCIgbmFtZT1cImlzX2J1aWxkX2ZhcVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGVmYXVsdCBtZS0yXCIgZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiIGhyZWY9XCIjZmFxQ29sbGFwc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBhcmlhLWNvbnRyb2xzPVwiZmFxQ29sbGFwc2VcIiAoa2V5ZG93bi5lbnRlcik9XCJvbkNhbmNlbCgpXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiA+IHt7ICdCdXR0b24uQ2FuY2VsJyB8IHRyYW5zbG9jbyB9fSA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIFtidXR0b25CdXN5XT1cImJ1dHRvbkJ1c3lcIj57eyAnQnV0dG9uLlNhdmUnIHwgdHJhbnNsb2NvIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZhcS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvZmFxcy9hZGQtZmFxL2FkZC1mYXEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2ZhcXMvYWRkLWZhcS9hZGQtZmFxLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFFBQVEsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxNQUFNLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPMUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBOENqRCxZQUNxQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixjQUE4QixFQUMvQyxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE3Q25ELFlBQU8sR0FBRyxPQUFPLENBQUM7UUFLbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLGdCQUFXLEdBQWMsRUFBRSxDQUFDO1FBRTVCLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUMzQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBSVQsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUl2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBU1osV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsZUFBZTtRQUNYLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFDTyxPQUFPO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxNQUFNLEdBQUc7WUFDWCxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDcEMsV0FBVyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtTQUN4RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQzFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBRWpCLE9BQU8sQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZO2FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDO2FBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxjQUFjO2FBQ2QsV0FBVyxDQUFDO1lBQ1QsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3ZDLENBQUM7YUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQzFCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQ3hELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM3QyxPQUFPO3dCQUNILEtBQUssRUFBRSxPQUFPO3dCQUNkLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRTtxQkFDdkIsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBRztRQUNmLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNsQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDZixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQVE7UUFDMUIsSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkIsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0UsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDekMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLGdEQUFnRDtZQUNoRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQ2hFLENBQUM7b0JBQ0YsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQztZQUNELFlBQVksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxPQUFPO29CQUNILEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtvQkFDWCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixNQUFNLENBQUMsQ0FBQyxTQUFTLE1BQU0sQ0FDMUUsQ0FBQyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQ3pCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUU7aUJBQ2pDLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sWUFBWSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBUSxFQUFFLEtBQWM7UUFDbEMsTUFBTSxJQUFJLEdBQUc7WUFDVCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFRLEVBQUUsS0FBYztRQUN4QyxNQUFNLElBQUksR0FBRztZQUNULEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNWLE1BQU0sRUFBRSxLQUFLO1NBQ2hCLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBeE9RLGVBQWU7bUdBQWYsZUFBZSwrTENwQjVCLDY5UEEySUE7OzRGRHZIYSxlQUFlO2tCQUwzQixTQUFTOytCQUNJLDRCQUE0QjtpS0FLSSxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0sIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSwgQXBwQWRtaW4gfSBmcm9tICdAcG9zaXdpc2UvYWRtaW4tbW9kdWxlLXV0aWxzJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UsIFBlcm1pc3Npb25TZXJ2aWNlLCBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tc2VydmljZXMnO1xuaW1wb3J0IHsgRkFRLCBQcm9kdWN0IH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5pbXBvcnQgeyBRdWlsbEhlbHBlciB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbmltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBQcm9kdWN0TGlzdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2UvYWRtaW4tbW9kdWxlLXNoYXJlZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUk9VVEVSUyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yb3V0ZXJzL3JvdXRlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWFkbWluLWFkZC1lZGl0LWluY2lkZW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWRkLWZhcS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWRkLWZhcS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFkZEZhcUNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnZWRpdEZvcm0nLCB7IHN0YXRpYzogZmFsc2UgfSkgZWRpdEZvcm06IE5nRm9ybTtcbiAgICBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG5cbiAgICBlZGl0b3JDb25maWc7XG4gICAgaWQ6IG51bWJlcjtcblxuICAgIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIGlzRWRpdCA9IGZhbHNlO1xuICAgIGJ1dHRvbkJ1c3kgPSBmYWxzZTtcblxuICAgIGlzTG9hZGVkID0gdHJ1ZTtcbiAgICBpc1Byb2R1Y3RFbmFibGVkID0gdHJ1ZTtcbiAgICBzaG93TGlzdCA9IHRydWU7XG4gICAgc2hvd0ZpbHRlcnMgPSB0cnVlO1xuXG4gICAgY2F0ZWdvcmllcyA9IFtdO1xuXG4gICAgcHJvZHVjdExpc3Q6IFByb2R1Y3RMaXN0W10gPSBbXTtcbiAgICBhbGxQcm9kdWN0czogUHJvZHVjdFtdID0gW107XG5cbiAgICBmYXFzOiBGQVFbXSA9IFtdO1xuICAgIGZhcUxpc3Q6IEZBUVtdID0gW107XG4gICAgYmFja1VwRkFROiBGQVFbXSA9IFtdO1xuICAgIGFsbEZhcXMgPSBbXTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIGRlZmF1bHRWYWx1ZSA9IG51bGw7XG5cbiAgICB0b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gMDtcbiAgICB0b3RhbFJlY29yZHMgPSAwO1xuICAgIHBhZ2UgPSAxO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGZlYXR1cmVLZXlzTGlzdCA9IFtdO1xuICAgIHNlbGVjdGVkRmVhdHVyZUtleXMgPSBbXTtcbiAgICBjYXRlZ29yeUZvckJhZGdlcyA9IFtdO1xuXG4gICAgc2x1Zzogc3RyaW5nO1xuXG4gICAgZmFxSGFzaE1hcCA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgICAgIFF1aWxsSGVscGVyLmluaXQoKTtcbiAgICAgICAgdGhpcy5lZGl0b3JDb25maWcgPSBRdWlsbEhlbHBlci5nZXRFZGl0b3JDb25maWcoKTtcbiAgICAgICAgdGhpcy5mb3JtID0gQXBwQWRtaW4uZ2V0RmFxRm9ybSgpO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zbHVnID0gUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LnNsdWc7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllcygpO1xuICAgICAgICB0aGlzLmdldEZhcXMoKTtcbiAgICB9XG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLnN1YnNjcmliZVRvRWRpdG9yQ2hhbmdlcyh0aGlzLmZvcm0sICdhbnN3ZXInKTtcbiAgICB9XG5cbiAgICBnZXQgZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRGYXFzKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IFtdO1xuICAgICAgICB0aGlzLmZhcUhhc2hNYXAgPSB7fTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkOiB0aGlzLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgZmVhdHVyZV9rZXk6IHRoaXMuc2VsZWN0ZWRGZWF0dXJlS2V5cy5qb2luKCcsJykgfHwgJydcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLmdldEZhcSh7IC4uLnBhcmFtcyB9KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmZhcXMgPSByZXNwb25zZS5mYXFzO1xuICAgICAgICAgICAgdGhpcy5hbGxGYXFzID0gcmVzcG9uc2UuZmFxcztcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzcG9uc2Uub2JqZWN0X2NvdW50O1xuICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHNVbkZpbHRlcmVkID0gcmVzcG9uc2UudW5maWx0ZXJlZF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMuZmFxcyA9IHRoaXMuZmFxcy5tYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgeC5pc0VkaXQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYmFja1VwRkFRID0gWy4uLnRoaXMuZmFxc107XG4gICAgICAgICAgICByZXNwb25zZT8uYXZhaWxhYmxlX2NhdGVnb3J5Py5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFxSGFzaE1hcFt4LmtleV0gPSB4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5Rm9yQmFkZ2VzID0gcmVzcG9uc2UuYXZhaWxhYmxlX2NhdGVnb3J5Lm1hcCh4ID0+IHgua2V5KTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlc3BvbnNlLmF2YWlsYWJsZV9jYXRlZ29yeS5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGVsZW1lbnQubmFtZSB8fCAnJywgdmFsdWU6IGVsZW1lbnQua2V5IH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5hbGxGYXFzID0gdGhpcy5mYXFzO1xuICAgICAgICAgICAgdGhpcy5mYXFMaXN0ID0gdGhpcy5mYXFzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblN1Ym1pdCgpIHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGROZXcoKSB7XG4gICAgICAgIGNvbnN0IHJhd0h0bWwgPSBIZWxwZXJTZXJ2aWNlLlNhdmVSYXdIVE1MKCk7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1snYW5zd2VyJ10uc2V0VmFsdWUocmF3SHRtbCk7XG4gICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAucG9zdEZhcSh0aGlzLmZvcm0udmFsdWUsIHRoaXMuc3Vic2NyaXB0aW9uSWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLkZhcS5BZGRNZXNzYWdlJykpO1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgJHt0aGlzLnJvdXRlcnMuZmFxQ29uZmlnfWBdKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+ICh0aGlzLmJ1dHRvbkJ1c3kgPSBmYWxzZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcmllcygpIHtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZVxuICAgICAgICAgICAgLmdldFByb2R1Y3RzKHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwLnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsUHJvZHVjdHMgPSByZXNwLnByb2R1Y3RzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0ID0gdGhpcy5ncm91cFByb2R1Y3RzKHJlc3AucHJvZHVjdHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0LnVuc2hpZnQoeyBsYWJlbDogJ1NlbGVjdCBQcm9kdWN0JywgdmFsdWU6IG51bGwgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Byb2R1Y3RfaWQnKS5zZXRWYWx1ZSh0aGlzLnByb2R1Y3RMaXN0WzBdLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZUtleXMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFNldChyZXNwLnByb2R1Y3RzLm1hcChpdGVtID0+IGl0ZW0/LmZlYXR1cmVfa2V5KSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlS2V5c0xpc3QgPSBmZWF0dXJlS2V5cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50IHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRPYmoob2JqKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKVxuICAgICAgICAgICAgLnJlZHVjZSgocmVzdWx0LCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBncm91cFByb2R1Y3RzKHByb2R1Y3RzKSB7XG4gICAgICAgIGlmIChwcm9kdWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcm9kdWN0cyA9IHByb2R1Y3RzLmZpbHRlcih4ID0+IHguZGVwZW5kZW5jeV9wcm9kdWN0cz8ubGVuZ3RoIDwgMSAmJiB4LmFjdGl2ZSk7XG4gICAgICAgICAgICBwcm9kdWN0cyA9IGdyb3VwQnkocHJvZHVjdHMsICdjdXJyZW5jeScpO1xuICAgICAgICAgICAgcHJvZHVjdHMgPSB0aGlzLnNvcnRPYmoocHJvZHVjdHMpO1xuICAgICAgICAgICAgbGV0IGdyb3VwZWRBcnJheSA9IFtdO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgaW4gcHJvZHVjdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocCBpbiBwcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHByb2R1Y3RzW3BdLnNvcnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT4gTnVtYmVyKGIucHJpY2VfcGVyX3VuaXQpIC0gTnVtYmVyKGEucHJpY2VfcGVyX3VuaXQpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWRBcnJheS5wdXNoKC4uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cGVkQXJyYXkgPSBncm91cGVkQXJyYXkubWFwKHggPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB4LmlkLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7eC5uYW1lfSB8ICR7eC5yZWdpb259IHwgJHt4LmJpbGxpbmdfZnJlcXVlbmN5fSB8ICR7eC5taW5fdW5pdHN9IHggJHsoXG4gICAgICAgICAgICAgICAgICAgICAgICB4LnByaWNlX3Blcl91bml0IC8gMTAwXG4gICAgICAgICAgICAgICAgICAgICkudG9GaXhlZCgyKX0gfCAke3guY3VycmVuY3l9YFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwZWRBcnJheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBvblByb2R1Y3RDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlS2V5cyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmdldEZhcXMoKTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZShpdGVtKSB7XG4gICAgICAgIHRoaXMuaXNQcm9kdWN0RW5hYmxlZCA9IGl0ZW0udmFsdWUgIT09ICdwcm9kdWN0JztcbiAgICAgICAgaWYgKHRoaXMuaXNQcm9kdWN0RW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdF9pZCcpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncHJvZHVjdF9pZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZShmYXE6IEZBUSwgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBmYXEuaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB2YWx1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLnB1dEZhcShkYXRhLCB0aGlzLnN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5GYXEuVXBkYXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUHVibGljVmFsdWVDaGFuZ2UoZmFxOiBGQVEsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBpZDogZmFxLmlkLFxuICAgICAgICAgICAgcHVibGljOiB2YWx1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLnB1dEZhcShkYXRhLCB0aGlzLnN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdBZG1pbi5GYXEuVXBkYXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsKCkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7dGhpcy5yb3V0ZXJzLmZhcUNvbmZpZ31gXSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgPGRpdiBjbGFzcz1cImRhc2hib2FyZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhc2hib2FyZC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLWF1dG8gY29sLXhzLTYgbXQtNFwiPlxuICAgICAgICAgICAgICA8YSBhcmlhLWxhYmVsPVwiTmF2aWdhdGUgdG8gVGFyZ2V0XCIgKGNsaWNrKT1cImJhY2soKVwiIGNsYXNzPVwicHJldmlvdXNcIj48aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibXQtM1wiPkFkZCBOZXcgRkFRPC9oMz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIG10LTNcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiY29sLTEyXCIgW2xhYmVsXT1cIidBZG1pbi5GYXEuUXVlc3Rpb24nIHwgdHJhbnNsb2NvXCIgbmFtZT1cInF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cInF1ZXN0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3F1ZXN0aW9uJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgY2xhc3M9XCJjb2wtMTIgcXVpbGwtZWRpdG9yXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkFuc3dlcicgfCB0cmFuc2xvY29cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cImFuc3dlclwiXG4gICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICA8cXVpbGwtZWRpdG9yIFtzdHlsZXNdPVwieyBoZWlnaHQ6ICcyMDBweCd9XCIgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCIgY2xhc3M9XCJxdWlsbEVkaXRvciBxdWlsbC1lZGl0b3JcIiBbbW9kdWxlc109XCJlZGl0b3JDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2Fuc3dlciddLmVycm9ycywgJ3F1aWxsLWNvbnRhaW5lcic6IHRydWUgIH1cIj5cbiAgICAgICAgICAgICAgICAgIDwvcXVpbGwtZWRpdG9yPlxuICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidBZG1pbi5GYXEuQ2F0ZWdvcnknIHwgdHJhbnNsb2NvXCIgbmFtZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTXNnXT1cIidBZG1pbi5GYXEuVmFsaWRhdGlvbi5GaWVsZFJlcXVpcmVkJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCIgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgaWQ9XCJjYXRlZ29yeS1kcm9wZG93blwiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIiAqcmJhY0FsbG93PVwiJ1N1YnNjcmlwdGlvblN1cGVyQWRtaW4nXCI+XG4gICAgICAgICAgICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtzaG93VG9vbHRpcF09XCJ0cnVlXCIgW3Rvb2x0aXBUZXh0XT1cIidBZG1pbi5GYXEuVG9vbHRpcC5Qcm9kdWN0JyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLlByb2R1Y3QnIHwgdHJhbnNsb2NvXCIgbmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0FkbWluLkZhcS5WYWxpZGF0aW9uLkZpZWxkUmVxdWlyZWQnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInByb2R1Y3RMaXN0XCIgY2xhc3M9XCJkcm9wZG93bi1iZy10cmFuc3BhcmVudFwiIGZvcm1Db250cm9sTmFtZT1cInByb2R1Y3RfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIEZlYXR1cmVzIGtleXMtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW3Nob3dUb29sdGlwXT1cInRydWVcIiBbdG9vbHRpcFRleHRdPVwiJ0FkbWluLkZhcS5Ub29sdGlwLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQWRtaW4uRmFxLkZlYXR1cmVzJyB8IHRyYW5zbG9jb1wiIG5hbWU9XCJmZWF0dXJlX2tleXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwiZmVhdHVyZUtleXNMaXN0XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZmVhdHVyZSBrZXlzXCIgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cImZlYXR1cmVfa2V5c1wiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbc2hvd1Rvb2x0aXBdPVwidHJ1ZVwiIFt0b29sdGlwVGV4dF09XCInQWRtaW4uRmFxLlRvb2x0aXAuUG9zaXRpb24nIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FkbWluLkZhcS5Qb3NpdGlvbicgfCB0cmFuc2xvY29cIiBuYW1lPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtlcnJvck1zZ109XCInQWRtaW4uRmFxLlZhbGlkYXRpb24uRmllbGRSZXF1aXJlZCcgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIGZvcm1Db250cm9sTmFtZT1cInBvc2l0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInZpc2libGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0FkbWluLkZhcS5WaXNpYmxlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tY2lyY2xlIHRvb2x0aXAtd3JhcCB0b29sdGlwLWluZm8tY2lyY2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXB0ZXh0IGdyYWRpZW50LWN1c3RvbS1icmFuZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBZG1pbi5GYXEuVG9vbHRpcC5WaXNpYmxlJyB8IHRyYW5zbG9jbyAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggaWQ9XCJ2aXNpYmxlXCIgZm9ybUNvbnRyb2xOYW1lPVwidmlzaWJsZVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInB1YmxpY1wiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQWRtaW4uRmFxLlB1YmxpYycgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWNpcmNsZSB0b29sdGlwLXdyYXAgdG9vbHRpcC1pbmZvLWNpcmNsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcHRleHQgZ3JhZGllbnQtY3VzdG9tLWJyYW5kaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBZG1pbi5GYXEuVG9vbHRpcC5QdWJsaWMnIHwgdHJhbnNsb2NvICB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD48YnIgLz5cbiAgICAgICAgICAgICAgICAgIDx1aS1zd2l0Y2ggaWQ9XCJwdWJsaWNcIiBmb3JtQ29udHJvbE5hbWU9XCJwdWJsaWNcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc19zaGFyZWRfZmFxXCIgY2xhc3M9XCJ0ZXh0LXdhcm5pbmdcIj57eyAnQWRtaW4uRmFxLlNoYXJlZEZhcScgfCB0cmFuc2xvY299fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tY2lyY2xlIHRvb2x0aXAtd3JhcCB0b29sdGlwLWluZm8tY2lyY2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwdGV4dCBncmFkaWVudC1jdXN0b20tYnJhbmRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FkbWluLkZhcS5Ub29sdGlwLlNoYXJlZEZhcScgfCB0cmFuc2xvY28gIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIG5hbWU9XCJpc19zaGFyZWRfZmFxXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNfc2hhcmVkX2ZhcVwiPjwvdWktc3dpdGNoPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wtbGctMlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlzX2FkbWluX2ZhcVwiIGNsYXNzPVwidGV4dC13YXJuaW5nXCI+e3sgJ0FkbWluLkZhcS5BZG1pbkZhcScgfCB0cmFuc2xvY299fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tY2lyY2xlIHRvb2x0aXAtd3JhcCB0b29sdGlwLWluZm8tY2lyY2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwdGV4dCBncmFkaWVudC1jdXN0b20tYnJhbmRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FkbWluLkZhcS5Ub29sdGlwLkFkbWluRmFxJyB8IHRyYW5zbG9jbyAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8dWktc3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImlzX2FkbWluX2ZhcVwiIG5hbWU9XCJpc19hZG1pbl9mYXFcIj48L3VpLXN3aXRjaD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLWxnLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJpc19idWlsZF9mYXFcIiBjbGFzcz1cInRleHQtd2FybmluZ1wiPnt7ICdBZG1pbi5GYXEuQnVpbGRGYXEnIHwgdHJhbnNsb2NvfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWNpcmNsZSB0b29sdGlwLXdyYXAgdG9vbHRpcC1pbmZvLWNpcmNsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcHRleHQgZ3JhZGllbnQtY3VzdG9tLWJyYW5kaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBZG1pbi5GYXEuVG9vbHRpcC5CdWlsZEZhcScgfCB0cmFuc2xvY28gIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPjxiciAvPlxuICAgICAgICAgICAgICAgICAgPHVpLXN3aXRjaCBmb3JtQ29udHJvbE5hbWU9XCJpc19idWlsZF9mYXFcIiBuYW1lPVwiaXNfYnVpbGRfZmFxXCI+PC91aS1zd2l0Y2g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIiBkYXRhLWJzLXRvZ2dsZT1cImNvbGxhcHNlXCIgaHJlZj1cIiNmYXFDb2xsYXBzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGFyaWEtY29udHJvbHM9XCJmYXFDb2xsYXBzZVwiIChrZXlkb3duLmVudGVyKT1cIm9uQ2FuY2VsKClcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiID4ge3sgJ0J1dHRvbi5DYW5jZWwnIHwgdHJhbnNsb2NvIH19IDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2J1dHRvbkJ1c3ldPVwiYnV0dG9uQnVzeVwiPnt7ICdCdXR0b24uU2F2ZScgfCB0cmFuc2xvY28gfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==