tango-app-ui-manage-settings 3.0.2 → 3.0.4

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 (66) hide show
  1. package/esm2022/lib/components/brand-details/billing-details/billing-details.component.mjs +69 -0
  2. package/esm2022/lib/components/brand-details/brand-details.component.mjs +147 -0
  3. package/esm2022/lib/components/brand-details/brand-info/brand-info.component.mjs +97 -0
  4. package/esm2022/lib/components/brand-details/signatory-details/signatory-details.component.mjs +52 -0
  5. package/esm2022/lib/components/configurations/audit-configuration/audit-configuration.component.mjs +156 -0
  6. package/esm2022/lib/components/configurations/configurations.component.mjs +166 -0
  7. package/esm2022/lib/components/configurations/domain-details/domain-details.component.mjs +81 -0
  8. package/esm2022/lib/components/configurations/feature-configuration/feature-configuration.component.mjs +101 -0
  9. package/esm2022/lib/components/configurations/report-configuration/add-report/add-report.component.mjs +78 -0
  10. package/esm2022/lib/components/configurations/report-configuration/report-configuration.component.mjs +136 -0
  11. package/esm2022/lib/components/configurations/ticket-configuration/ticket-configuration.component.mjs +59 -0
  12. package/esm2022/lib/components/configurations/user-configuration/user-configuration.component.mjs +84 -0
  13. package/esm2022/lib/components/contact-directory/contact-directory.component.mjs +207 -0
  14. package/esm2022/lib/components/contact-directory/detele-spoc/detele-spoc.component.mjs +37 -0
  15. package/esm2022/lib/components/contact-directory/edit-spoc/edit-spoc.component.mjs +82 -0
  16. package/esm2022/lib/components/documents/documents.component.mjs +130 -0
  17. package/esm2022/lib/components/payments-subscription/payments-subscription.component.mjs +296 -0
  18. package/esm2022/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.mjs +40 -0
  19. package/esm2022/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.mjs +173 -0
  20. package/esm2022/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.mjs +83 -0
  21. package/esm2022/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.mjs +36 -0
  22. package/esm2022/lib/components/payments-subscription/subscription-popups/successfull-subscription/successfull-subscription.component.mjs +11 -0
  23. package/esm2022/lib/components/payments-subscription/subscription-popups/suspended/suspended.component.mjs +11 -0
  24. package/esm2022/lib/components/payments-subscription/subscription-popups/trail-expired/trail-expired.component.mjs +11 -0
  25. package/esm2022/lib/components/payments-subscription/subscription-popups/update/update.component.mjs +51 -0
  26. package/esm2022/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.mjs +85 -0
  27. package/esm2022/lib/components/tango-manage-settings/tango-manage-settings.component.mjs +32 -6
  28. package/esm2022/lib/directives/dnd.directive.mjs +44 -0
  29. package/esm2022/lib/services/client-api.service.mjs +132 -0
  30. package/esm2022/lib/services/payment-subscription.service.mjs +35 -0
  31. package/esm2022/lib/tango-manage-settings-routing.module.mjs +34 -3
  32. package/esm2022/lib/tango-manage-settings.module.mjs +132 -6
  33. package/fesm2022/tango-app-ui-manage-settings.mjs +2689 -16
  34. package/fesm2022/tango-app-ui-manage-settings.mjs.map +1 -1
  35. package/lib/components/brand-details/billing-details/billing-details.component.d.ts +21 -0
  36. package/lib/components/brand-details/brand-details.component.d.ts +17 -0
  37. package/lib/components/brand-details/brand-info/brand-info.component.d.ts +23 -0
  38. package/lib/components/brand-details/signatory-details/signatory-details.component.d.ts +17 -0
  39. package/lib/components/configurations/audit-configuration/audit-configuration.component.d.ts +32 -0
  40. package/lib/components/configurations/configurations.component.d.ts +18 -0
  41. package/lib/components/configurations/domain-details/domain-details.component.d.ts +23 -0
  42. package/lib/components/configurations/feature-configuration/feature-configuration.component.d.ts +21 -0
  43. package/lib/components/configurations/report-configuration/add-report/add-report.component.d.ts +24 -0
  44. package/lib/components/configurations/report-configuration/report-configuration.component.d.ts +34 -0
  45. package/lib/components/configurations/ticket-configuration/ticket-configuration.component.d.ts +17 -0
  46. package/lib/components/configurations/user-configuration/user-configuration.component.d.ts +25 -0
  47. package/lib/components/contact-directory/contact-directory.component.d.ts +49 -0
  48. package/lib/components/contact-directory/detele-spoc/detele-spoc.component.d.ts +14 -0
  49. package/lib/components/contact-directory/edit-spoc/edit-spoc.component.d.ts +22 -0
  50. package/lib/components/documents/documents.component.d.ts +26 -0
  51. package/lib/components/payments-subscription/payments-subscription.component.d.ts +83 -0
  52. package/lib/components/payments-subscription/subscription-popups/credit-note/credit-note.component.d.ts +11 -0
  53. package/lib/components/payments-subscription/subscription-popups/multidropdown/multidropdown.component.d.ts +34 -0
  54. package/lib/components/payments-subscription/subscription-popups/need-help/need-help.component.d.ts +25 -0
  55. package/lib/components/payments-subscription/subscription-popups/pricing-revised/pricing-revised.component.d.ts +9 -0
  56. package/lib/components/payments-subscription/subscription-popups/successfull-subscription/successfull-subscription.component.d.ts +5 -0
  57. package/lib/components/payments-subscription/subscription-popups/suspended/suspended.component.d.ts +5 -0
  58. package/lib/components/payments-subscription/subscription-popups/trail-expired/trail-expired.component.d.ts +5 -0
  59. package/lib/components/payments-subscription/subscription-popups/update/update.component.d.ts +19 -0
  60. package/lib/components/payments-subscription/subscription-popups/upgrade-plan/upgrade-plan.component.d.ts +28 -0
  61. package/lib/components/tango-manage-settings/tango-manage-settings.component.d.ts +5 -1
  62. package/lib/directives/dnd.directive.d.ts +11 -0
  63. package/lib/services/client-api.service.d.ts +46 -0
  64. package/lib/services/payment-subscription.service.d.ts +14 -0
  65. package/lib/tango-manage-settings.module.d.ts +38 -3
  66. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "../../../services/client-api.service";
5
+ import * as i3 from "@angular/common";
6
+ export class SignatoryDetailsComponent {
7
+ fb;
8
+ apiService;
9
+ cd;
10
+ signatoryDetailsForm;
11
+ constructor(fb, apiService, cd) {
12
+ this.fb = fb;
13
+ this.apiService = apiService;
14
+ this.cd = cd;
15
+ this.initForm();
16
+ this.apiService.clientFormData.subscribe((res) => {
17
+ if (res) {
18
+ if (res.type === 'input' && res.form === 'signatory-details') {
19
+ this.patchForm(res.value);
20
+ }
21
+ }
22
+ });
23
+ }
24
+ initForm() {
25
+ this.signatoryDetailsForm = this.fb.group({
26
+ name: [''],
27
+ email: [''],
28
+ number: [''],
29
+ designation: [''],
30
+ });
31
+ this.signatoryDetailsForm.disable();
32
+ }
33
+ patchForm(data) {
34
+ this.signatoryDetailsForm.patchValue({
35
+ ...data
36
+ });
37
+ }
38
+ onCancel() {
39
+ this.signatoryDetailsForm.disable();
40
+ this.apiService.clientFormData.next({ value: null, type: 'cancel', form: 'signatory-details' });
41
+ }
42
+ onSubmit() {
43
+ this.apiService.clientFormData.next({ value: this.signatoryDetailsForm.value, type: 'submit', form: 'signatory-details' });
44
+ }
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SignatoryDetailsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ClientApiService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: SignatoryDetailsComponent, selector: "lib-signatory-details", ngImport: i0, template: "<form [formGroup]=\"signatoryDetailsForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"signatoryDetailsForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button type=\"button\" (click)=\"signatoryDetailsForm.disabled ? signatoryDetailsForm.enable() : signatoryDetailsForm.disable()\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"username\" class=\"form-label\">Username <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"name\" type=\"type\" class=\"form-control\" id=\"username\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"email\" type=\"type\" class=\"form-control\" id=\"email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"number\" type=\"type\" class=\"form-control\" id=\"contactNumber\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"designation\" type=\"type\" class=\"form-control\" id=\"designation\"\r\n autocomplete=\"off\">\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"signatoryDetailsForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a (click)=\"onCancel()\" type=\"button\" class=\"btn btn-outline me-4\">Cancel</a>\r\n <a (click)=\" onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: SignatoryDetailsComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'lib-signatory-details', template: "<form [formGroup]=\"signatoryDetailsForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"signatoryDetailsForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button type=\"button\" (click)=\"signatoryDetailsForm.disabled ? signatoryDetailsForm.enable() : signatoryDetailsForm.disable()\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"username\" class=\"form-label\">Username <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"name\" type=\"type\" class=\"form-control\" id=\"username\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"email\" type=\"type\" class=\"form-control\" id=\"email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"contactNumber\" class=\"form-label\">Contact Number <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"number\" type=\"type\" class=\"form-control\" id=\"contactNumber\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"designation\" class=\"form-label\">Designation <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"designation\" type=\"type\" class=\"form-control\" id=\"designation\"\r\n autocomplete=\"off\">\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"signatoryDetailsForm.enabled\">\r\n <div class=\"mb-5 w-100 footer-seperator\"></div>\r\n <div class=\"d-flex justify-content-end\">\r\n <a (click)=\"onCancel()\" type=\"button\" class=\"btn btn-outline me-4\">Cancel</a>\r\n <a (click)=\" onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 \"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n</form>\r\n", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}.footer-seperator{border-top:1px solid #EAECF0}\n"] }]
51
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ClientApiService }, { type: i0.ChangeDetectorRef }] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0b3J5LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXNldHRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9icmFuZC1kZXRhaWxzL3NpZ25hdG9yeS1kZXRhaWxzL3NpZ25hdG9yeS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1zZXR0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvYnJhbmQtZGV0YWlscy9zaWduYXRvcnktZGV0YWlscy9zaWduYXRvcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBeUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3BGLE1BQU0sT0FBTyx5QkFBeUI7SUFJaEI7SUFBeUI7SUFBc0M7SUFGbkYsb0JBQW9CLENBQVc7SUFFL0IsWUFBb0IsRUFBZSxFQUFVLFVBQTRCLEVBQVUsRUFBcUI7UUFBcEYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDdEcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0MsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBRyxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFDO29CQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtpQkFDeEI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ1osV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FDbEM7WUFDQyxHQUFHLElBQUk7U0FDUCxDQUNGLENBQUE7SUFFSCxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLG1CQUFtQixFQUFDLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLG1CQUFtQixFQUFDLENBQUMsQ0FBQTtJQUN2SCxDQUFDO3VHQTNDVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qiw2RENUdEMscWhIQWlEQTs7MkZEeENhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpZW50QXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NsaWVudC1hcGkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1zaWduYXRvcnktZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25hdG9yeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc2lnbmF0b3J5LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWduYXRvcnlEZXRhaWxzQ29tcG9uZW50IHtcclxuXHJcbiAgc2lnbmF0b3J5RGV0YWlsc0Zvcm06IEZvcm1Hcm91cFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5pbml0Rm9ybSgpXHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuY2xpZW50Rm9ybURhdGEuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykgeyAgICAgICAgXHJcbiAgICAgICAgaWYocmVzLnR5cGUgPT09ICdpbnB1dCcgJiYgcmVzLmZvcm0gPT09ICdzaWduYXRvcnktZGV0YWlscycpe1xyXG4gICAgICAgIHRoaXMucGF0Y2hGb3JtKHJlcy52YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLnNpZ25hdG9yeURldGFpbHNGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG5hbWU6IFsnJ10sXHJcbiAgICAgIGVtYWlsOiBbJyddLFxyXG4gICAgICBudW1iZXI6IFsnJ10sXHJcbiAgICAgIGRlc2lnbmF0aW9uOiBbJyddLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNpZ25hdG9yeURldGFpbHNGb3JtLmRpc2FibGUoKVxyXG4gIH1cclxuXHJcbiAgcGF0Y2hGb3JtKGRhdGE6IGFueSkgeyAgICBcclxuICAgIHRoaXMuc2lnbmF0b3J5RGV0YWlsc0Zvcm0ucGF0Y2hWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgLi4uZGF0YVxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgICBcclxuICB9XHJcblxyXG5cclxuICBvbkNhbmNlbCgpe1xyXG4gICAgdGhpcy5zaWduYXRvcnlEZXRhaWxzRm9ybS5kaXNhYmxlKClcclxuICAgIHRoaXMuYXBpU2VydmljZS5jbGllbnRGb3JtRGF0YS5uZXh0KHt2YWx1ZTpudWxsLCB0eXBlOidjYW5jZWwnLCBmb3JtOidzaWduYXRvcnktZGV0YWlscyd9KVxyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKXsgICAgICAgXHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuY2xpZW50Rm9ybURhdGEubmV4dCh7dmFsdWU6dGhpcy5zaWduYXRvcnlEZXRhaWxzRm9ybS52YWx1ZSwgdHlwZTonc3VibWl0JywgZm9ybTonc2lnbmF0b3J5LWRldGFpbHMnfSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwic2lnbmF0b3J5RGV0YWlsc0Zvcm1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2lnbmF0b3J5RGV0YWlsc0Zvcm0uZGlzYWJsZWRcIiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaWduYXRvcnlEZXRhaWxzRm9ybS5kaXNhYmxlZCA/IHNpZ25hdG9yeURldGFpbHNGb3JtLmVuYWJsZSgpIDogc2lnbmF0b3J5RGV0YWlsc0Zvcm0uZGlzYWJsZSgpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgYWxpZ24taXRlbXMtZW5kXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yNTc5XzI1MTI1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY3IDIuNDk5OTNDMTQuMzg1OSAyLjI4MTA2IDE0LjY0NTcgMi4xMDc0NCAxNC45MzE3IDEuOTg4OTlDMTUuMjE3NiAxLjg3MDU0IDE1LjUyNDEgMS44MDk1NyAxNS44MzM3IDEuODA5NTdDMTYuMTQzMiAxLjgwOTU3IDE2LjQ0OTcgMS44NzA1NCAxNi43MzU3IDEuOTg4OTlDMTcuMDIxNiAyLjEwNzQ0IDE3LjI4MTUgMi4yODEwNiAxNy41MDAzIDIuNDk5OTNDMTcuNzE5MiAyLjcxODggMTcuODkyOCAyLjk3ODYzIDE4LjAxMTMgMy4yNjQ2QzE4LjEyOTcgMy41NTA1NyAxOC4xOTA3IDMuODU3MDYgMTguMTkwNyA0LjE2NjU5QzE4LjE5MDcgNC40NzYxMiAxOC4xMjk3IDQuNzgyNjIgMTguMDExMyA1LjA2ODU5QzE3Ljg5MjggNS4zNTQ1NSAxNy43MTkyIDUuNjE0MzkgMTcuNTAwMyA1LjgzMzI2TDYuMjUwMzMgMTcuMDgzM0wxLjY2Njk5IDE4LjMzMzNMMi45MTY5OSAxMy43NDk5TDE0LjE2NyAyLjQ5OTkzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdCBEZXRhaWxzPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTVcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVzZXJuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VXNlcm5hbWUgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInVzZXJuYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FbWFpbCA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImVtYWlsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiY29udGFjdE51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvbnRhY3QgTnVtYmVyIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibnVtYmVyXCIgdHlwZT1cInR5cGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY29udGFjdE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNpZ25hdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkRlc2lnbmF0aW9uIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25cIiB0eXBlPVwidHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkZXNpZ25hdGlvblwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2lnbmF0b3J5RGV0YWlsc0Zvcm0uZW5hYmxlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi01IHctMTAwIGZvb3Rlci1zZXBlcmF0b3JcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtNFwiPkNhbmNlbDwvYT5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIiBvblN1Ym1pdCgpXCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTQgXCI+PHNwYW4+U2F2ZSBDaGFuZ2VzPC9zcGFuPjwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -0,0 +1,156 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import * as XLSX from 'xlsx';
3
+ import { map } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "../../../services/client-api.service";
7
+ import * as i3 from "tango-app-ui-shared";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "../../../directives/dnd.directive";
10
+ export class AuditConfigurationComponent {
11
+ fb;
12
+ apiService;
13
+ cd;
14
+ toast;
15
+ auditConfigForm;
16
+ isMultiple = false;
17
+ bulkUploadInput;
18
+ bulkAddData;
19
+ fileName;
20
+ fileUploadTemplate;
21
+ storeList;
22
+ selectedStore;
23
+ constructor(fb, apiService, cd, toast) {
24
+ this.fb = fb;
25
+ this.apiService = apiService;
26
+ this.cd = cd;
27
+ this.toast = toast;
28
+ this.initForm();
29
+ this.apiService.clientFormData.subscribe((res) => {
30
+ if (res) {
31
+ if (res.type === 'input' && res.form === 'audit-configuration') {
32
+ this.patchForm(res.value);
33
+ }
34
+ }
35
+ });
36
+ this.apiService.clientData.subscribe((e) => {
37
+ if (e) {
38
+ this.getStoresList(e.clientId);
39
+ }
40
+ });
41
+ }
42
+ initForm() {
43
+ this.auditConfigForm = this.fb.group({
44
+ storeId: [''],
45
+ count: [''],
46
+ iteration: [''],
47
+ ratio: [''],
48
+ });
49
+ this.auditConfigForm.disable();
50
+ }
51
+ getStoresList(clientId) {
52
+ this.apiService.getStoreList(clientId).subscribe({
53
+ next: (res) => {
54
+ this.storeList = res.data.result;
55
+ this.selectedStore = this.storeList[0];
56
+ this.getAuditData(this.storeList[0]?.storeId);
57
+ },
58
+ error: (err) => {
59
+ }
60
+ });
61
+ }
62
+ getAuditData(storeId) {
63
+ this.apiService.getAuditConfig(storeId).pipe(map((val) => {
64
+ if (val?.data?.auditConfigs?.ratio) {
65
+ val.data.auditConfigs.ratio = this.normalizeNumber(val.data.auditConfigs.ratio);
66
+ }
67
+ return val;
68
+ })).subscribe({
69
+ next: (res) => {
70
+ this.patchForm({ ...res.data.auditConfigs, storeId: res.data.storeId });
71
+ this.fileUploadTemplate = res.data.templateUrl;
72
+ this.cd.detectChanges();
73
+ },
74
+ error: (err) => {
75
+ }
76
+ });
77
+ }
78
+ normalizeNumber(num) {
79
+ return Math.min(100, Math.max(0, Math.round(num * 100)));
80
+ }
81
+ patchForm(data) {
82
+ this.auditConfigForm.patchValue({
83
+ ...data,
84
+ }, { emitEvent: false, onlySelf: true });
85
+ }
86
+ triggerBulkUploadInput() {
87
+ this.bulkUploadInput.nativeElement.click();
88
+ }
89
+ onBulkInputChange(event) {
90
+ let data = [];
91
+ const target = (event.target);
92
+ const reader = new FileReader();
93
+ reader.readAsBinaryString(target.files[0]);
94
+ reader.onload = (e) => {
95
+ const bstr = e.target.result;
96
+ const wb = XLSX.read(bstr, { type: 'binary' });
97
+ const wsname = wb.SheetNames[0];
98
+ const ws = wb.Sheets[wsname];
99
+ if (wb.SheetNames[0] != 'data') {
100
+ this.toast.getErrorToast('Invalid file');
101
+ }
102
+ else {
103
+ data = XLSX.utils.sheet_to_json(ws);
104
+ data = data.slice(1);
105
+ this.fileName = event.target.files[0].name;
106
+ this.bulkAddData = data;
107
+ this.cd.detectChanges();
108
+ }
109
+ };
110
+ }
111
+ onStoreChange(event) {
112
+ this.selectedStore = event;
113
+ this.getAuditData(event.storeId);
114
+ }
115
+ onCancel() {
116
+ this.apiService.clientFormData.next({ value: null, type: 'cancel', form: 'audit-configuration' });
117
+ this.auditConfigForm.disable();
118
+ }
119
+ onSubmit() {
120
+ if (!this.isMultiple) {
121
+ this.auditConfigForm.value.storeId = this.selectedStore.storeId;
122
+ this.apiService.updateauditConfiguration([this.auditConfigForm.value]).subscribe({
123
+ next: (e) => {
124
+ this.toast.getSuccessToast(e.data?.result);
125
+ },
126
+ error: (e) => {
127
+ this.toast.getErrorToast(e.error?.error);
128
+ this.getAuditData(this.selectedStore.storeId);
129
+ }
130
+ });
131
+ }
132
+ else {
133
+ this.apiService.updateauditConfiguration(this.bulkAddData).subscribe({
134
+ next: (e) => {
135
+ this.toast.getSuccessToast(e.data?.result);
136
+ },
137
+ error: (e) => {
138
+ this.toast.getErrorToast(e.error?.error);
139
+ this.fileName = null;
140
+ this.bulkAddData = null;
141
+ this.cd.detectChanges();
142
+ }
143
+ });
144
+ }
145
+ }
146
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditConfigurationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ClientApiService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Component });
147
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AuditConfigurationComponent, selector: "lib-audit-configuration", viewQueries: [{ propertyName: "bulkUploadInput", first: true, predicate: ["bulkUploadInput"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"auditConfigForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"auditConfigForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button (click)=\"auditConfigForm.disabled ? auditConfigForm.enable() : auditConfigForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMultiple\" class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"storeId\" class=\"form-label\">Store ID</label>\r\n <!-- <select (change)=\"onStoreChange($event)\" formControlName=\"storeId\" id=\"storeId\" class=\"form-select \"\r\n aria-label=\"Default select example\">\r\n <option *ngFor=\"let store of storeList\" [value]=\"store.storeId\">{{store.storeName}}</option>\r\n </select> -->\r\n <lib-select [items]=\"storeList\" [multi]=\"false\" [label]=\"'Stores'\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" [disabled]=\"auditConfigForm.get('storeId')?.disabled\"\r\n [selectedValues]=\"[selectedStore]\" (selected)=\"onStoreChange($event)\"></lib-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"iteration\" class=\"form-label\">No of times for re-audit <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"iteration\" type=\"number\" class=\"form-control disabled-input\" id=\"iteration\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"ratio\" class=\"form-label\">Mapping Percentage <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"ratio\" type=\"number\" class=\"form-control disabled-input\" id=\"ratio\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"count\" class=\"form-label\">Audit Count / Store <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"count\" type=\"number\" class=\"form-control disabled-input\" id=\"count\"\r\n autocomplete=\"off\">\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"isMultiple\" class=\"row g-0\">\r\n <div class=\"col-5 mb-5 d-flex align-items-center\">\r\n <ul>\r\n <li class=\"mb-2\">\r\n 1. Use the template to upload multiple stores at once.\r\n </li>\r\n <li class=\"mb-2 d-flex\">\r\n 2. Download the template here - &nbsp; <a [href]=\"fileUploadTemplate\" class=\"d-flex\" href=\"\">\r\n <svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n Download Template\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n 3. Add your data to the Template File\r\n </li>\r\n <li class=\"mb-2\">\r\n 4. Upload it on the right for processing\r\n </li>\r\n </ul>\r\n\r\n </div>\r\n <div class=\"col-2 d-flex justify-content-center align-items-center mb-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"76\" viewBox=\"0 0 1 76\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 2.74181e-06L1 76H0L0 2.74181e-06H1Z\"\r\n fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-5 mb-5\">\r\n\r\n <div class=\"drop-zone\" libDnd (fileDropped)=\"triggerBulkUploadInput()\">\r\n <svg class=\"mb-2\" width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\" stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4213_43399)\">\r\n <path\r\n d=\"M26.3335 26.3332L23.0002 22.9999M23.0002 22.9999L19.6669 26.3332M23.0002 22.9999V30.4999M29.9919 28.3249C30.8047 27.8818 31.4467 27.1806 31.8168 26.3321C32.1868 25.4835 32.2637 24.5359 32.0354 23.6388C31.807 22.7417 31.2865 21.9462 30.5558 21.3778C29.8251 20.8094 28.9259 20.5005 28.0002 20.4999H26.9502C26.698 19.5243 26.2278 18.6185 25.5752 17.8507C24.9225 17.0829 24.1042 16.4731 23.182 16.0671C22.2597 15.661 21.2573 15.4694 20.2503 15.5065C19.2433 15.5436 18.2578 15.8085 17.3679 16.2813C16.4779 16.7541 15.7068 17.4225 15.1124 18.2362C14.518 19.05 14.1158 19.9879 13.936 20.9794C13.7563 21.9709 13.8036 22.9903 14.0746 23.961C14.3455 24.9316 14.8329 25.8281 15.5002 26.5832\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4213_43399\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <div class=\"mb-2\">\r\n <a (click)=\"triggerBulkUploadInput()\">Click to upload</a>&nbsp;\r\n <span class=\"t1\">or drag and drop</span>\r\n </div>\r\n <div class=\"mb-2\">the data added template file for processing.</div>\r\n <ng-container *ngIf=\"fileName\">\r\n <div class=\"mb-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"320\" height=\"1\" viewBox=\"0 0 320 1\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M320 1H0V0H320V1Z\" fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"mb-2 d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"37\" height=\"36\" viewBox=\"0 0 37 36\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M19.167 11.333H14.5003C14.1467 11.333 13.8076 11.4735 13.5575 11.7235C13.3075 11.9736 13.167 12.3127 13.167 12.6663V23.333C13.167 23.6866 13.3075 24.0258 13.5575 24.2758C13.8076 24.5259 14.1467 24.6663 14.5003 24.6663H22.5003C22.8539 24.6663 23.1931 24.5259 23.4431 24.2758C23.6932 24.0258 23.8337 23.6866 23.8337 23.333V15.9997M19.167 11.333L23.8337 15.9997M19.167 11.333V15.9997H23.8337\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"t3\">{{fileName}}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <input [disabled]=\"auditConfigForm.disabled\" (change)=\"onBulkInputChange($event)\" class=\"d-none\"\r\n #bulkUploadInput type=\"file\"\r\n accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\">\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"auditConfigForm.enabled\">\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-start g-0 mb-2 mt-2\">\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n <div class=\"col-2 text-center\">\r\n Or\r\n </div>\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"switch-form-card\">\r\n <div class=\"d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M24 20V22.6667C24 23.0203 23.8595 23.3594 23.6095 23.6095C23.3594 23.8595 23.0203 24 22.6667 24H13.3333C12.9797 24 12.6406 23.8595 12.3905 23.6095C12.1405 23.3594 12 23.0203 12 22.6667V20M21.3333 15.3333L18 12M18 12L14.6667 15.3333M18 12V20\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"txt-one\">\r\n <ng-container *ngIf=\"!isMultiple\">Add single store for configuration</ng-container>\r\n <ng-container *ngIf=\"isMultiple\">Upload multiple stores for configuration</ng-container>\r\n </div>\r\n </div>\r\n <div>\r\n <button (click)=\"isMultiple = !isMultiple\" class=\"btn btn-outline\">Click Here</button>\r\n </div>\r\n\r\n\r\n</div>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.footer-seperator{border-top:1px solid #EAECF0}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}hr{opacity:.15}.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}ul{list-style:none}ul li{color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px}ul li a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px}.drop-zone{padding:16px 24px;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);display:flex;flex-direction:column;align-items:center}.drop-zone a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;cursor:pointer}.drop-zone .t1{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.drop-zone .t2{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.drop-zone .t3{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "directive", type: i5.DndDirective, selector: "[libDnd]", outputs: ["fileDropped"] }] });
148
+ }
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AuditConfigurationComponent, decorators: [{
150
+ type: Component,
151
+ args: [{ selector: 'lib-audit-configuration', template: "<form [formGroup]=\"auditConfigForm\">\r\n <div class=\"row\">\r\n <div *ngIf=\"auditConfigForm.disabled\" class=\"col-12 mb-5\">\r\n <div class=\" d-flex justify-content-end\">\r\n <button (click)=\"auditConfigForm.disabled ? auditConfigForm.enable() : auditConfigForm.disable()\"\r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMultiple\" class=\"row\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"storeId\" class=\"form-label\">Store ID</label>\r\n <!-- <select (change)=\"onStoreChange($event)\" formControlName=\"storeId\" id=\"storeId\" class=\"form-select \"\r\n aria-label=\"Default select example\">\r\n <option *ngFor=\"let store of storeList\" [value]=\"store.storeId\">{{store.storeName}}</option>\r\n </select> -->\r\n <lib-select [items]=\"storeList\" [multi]=\"false\" [label]=\"'Stores'\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" [disabled]=\"auditConfigForm.get('storeId')?.disabled\"\r\n [selectedValues]=\"[selectedStore]\" (selected)=\"onStoreChange($event)\"></lib-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"iteration\" class=\"form-label\">No of times for re-audit <span\r\n class=\"alert-required\"></span></label>\r\n <input formControlName=\"iteration\" type=\"number\" class=\"form-control disabled-input\" id=\"iteration\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"ratio\" class=\"form-label\">Mapping Percentage <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"ratio\" type=\"number\" class=\"form-control disabled-input\" id=\"ratio\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-5\">\r\n <label for=\"count\" class=\"form-label\">Audit Count / Store <span class=\"alert-required\"></span></label>\r\n <input formControlName=\"count\" type=\"number\" class=\"form-control disabled-input\" id=\"count\"\r\n autocomplete=\"off\">\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"isMultiple\" class=\"row g-0\">\r\n <div class=\"col-5 mb-5 d-flex align-items-center\">\r\n <ul>\r\n <li class=\"mb-2\">\r\n 1. Use the template to upload multiple stores at once.\r\n </li>\r\n <li class=\"mb-2 d-flex\">\r\n 2. Download the template here - &nbsp; <a [href]=\"fileUploadTemplate\" class=\"d-flex\" href=\"\">\r\n <svg class=\"me-2\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n Download Template\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n 3. Add your data to the Template File\r\n </li>\r\n <li class=\"mb-2\">\r\n 4. Upload it on the right for processing\r\n </li>\r\n </ul>\r\n\r\n </div>\r\n <div class=\"col-2 d-flex justify-content-center align-items-center mb-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"76\" viewBox=\"0 0 1 76\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1 2.74181e-06L1 76H0L0 2.74181e-06H1Z\"\r\n fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"col-5 mb-5\">\r\n\r\n <div class=\"drop-zone\" libDnd (fileDropped)=\"triggerBulkUploadInput()\">\r\n <svg class=\"mb-2\" width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\" stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4213_43399)\">\r\n <path\r\n d=\"M26.3335 26.3332L23.0002 22.9999M23.0002 22.9999L19.6669 26.3332M23.0002 22.9999V30.4999M29.9919 28.3249C30.8047 27.8818 31.4467 27.1806 31.8168 26.3321C32.1868 25.4835 32.2637 24.5359 32.0354 23.6388C31.807 22.7417 31.2865 21.9462 30.5558 21.3778C29.8251 20.8094 28.9259 20.5005 28.0002 20.4999H26.9502C26.698 19.5243 26.2278 18.6185 25.5752 17.8507C24.9225 17.0829 24.1042 16.4731 23.182 16.0671C22.2597 15.661 21.2573 15.4694 20.2503 15.5065C19.2433 15.5436 18.2578 15.8085 17.3679 16.2813C16.4779 16.7541 15.7068 17.4225 15.1124 18.2362C14.518 19.05 14.1158 19.9879 13.936 20.9794C13.7563 21.9709 13.8036 22.9903 14.0746 23.961C14.3455 24.9316 14.8329 25.8281 15.5002 26.5832\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4213_43399\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <div class=\"mb-2\">\r\n <a (click)=\"triggerBulkUploadInput()\">Click to upload</a>&nbsp;\r\n <span class=\"t1\">or drag and drop</span>\r\n </div>\r\n <div class=\"mb-2\">the data added template file for processing.</div>\r\n <ng-container *ngIf=\"fileName\">\r\n <div class=\"mb-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"320\" height=\"1\" viewBox=\"0 0 320 1\" fill=\"none\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M320 1H0V0H320V1Z\" fill=\"#EAECF0\" />\r\n </svg>\r\n </div>\r\n <div class=\"mb-2 d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"37\" height=\"36\" viewBox=\"0 0 37 36\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M19.167 11.333H14.5003C14.1467 11.333 13.8076 11.4735 13.5575 11.7235C13.3075 11.9736 13.167 12.3127 13.167 12.6663V23.333C13.167 23.6866 13.3075 24.0258 13.5575 24.2758C13.8076 24.5259 14.1467 24.6663 14.5003 24.6663H22.5003C22.8539 24.6663 23.1931 24.5259 23.4431 24.2758C23.6932 24.0258 23.8337 23.6866 23.8337 23.333V15.9997M19.167 11.333L23.8337 15.9997M19.167 11.333V15.9997H23.8337\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"t3\">{{fileName}}</span>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <input [disabled]=\"auditConfigForm.disabled\" (change)=\"onBulkInputChange($event)\" class=\"d-none\"\r\n #bulkUploadInput type=\"file\"\r\n accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\">\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"auditConfigForm.enabled\">\r\n <div class=\"d-flex justify-content-end\">\r\n <a type=\"button\" class=\"btn btn-outline me-4\" (click)=\"onCancel()\">Cancel</a>\r\n <a type=\"submit\" class=\"btn btn-primary px-4 \" (click)=\"onSubmit()\"><span>Save Changes</span></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row align-items-start g-0 mb-2 mt-2\">\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n <div class=\"col-2 text-center\">\r\n Or\r\n </div>\r\n <div class=\"col-5\">\r\n <hr>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"switch-form-card\">\r\n <div class=\"d-flex align-items-center\">\r\n <svg class=\"me-2\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M24 20V22.6667C24 23.0203 23.8595 23.3594 23.6095 23.6095C23.3594 23.8595 23.0203 24 22.6667 24H13.3333C12.9797 24 12.6406 23.8595 12.3905 23.6095C12.1405 23.3594 12 23.0203 12 22.6667V20M21.3333 15.3333L18 12M18 12L14.6667 15.3333M18 12V20\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"txt-one\">\r\n <ng-container *ngIf=\"!isMultiple\">Add single store for configuration</ng-container>\r\n <ng-container *ngIf=\"isMultiple\">Upload multiple stores for configuration</ng-container>\r\n </div>\r\n </div>\r\n <div>\r\n <button (click)=\"isMultiple = !isMultiple\" class=\"btn btn-outline\">Click Here</button>\r\n </div>\r\n\r\n\r\n</div>", styles: [".form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1.1rem;font-weight:400;color:var(--Gray-500, #667085);-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control[disabled]{background-color:#f9fafb!important}.form-select{font-size:1.1rem;font-weight:400;border-radius:8px!important;color:var(--Gray-500, #667085);border:1px solid var(--Gray-300, #D0D5DD)!important;height:45px}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;display:block;margin-top:6px}.cancel{border-radius:8px;border:1px solid #D0D5DD;background:#fff;color:#344054;font-family:Inter;font-size:14px;font-weight:600;line-height:20px;text-transform:capitalize}.apply{color:#fff;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.footer-seperator{border-top:1px solid #EAECF0}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f9fafb!important}hr{opacity:.15}.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}ul{list-style:none}ul li{color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px}ul li a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px}.drop-zone{padding:16px 24px;border-radius:8px;border:1px solid var(--Gray-200, #EAECF0);background:var(--White, #FFF);display:flex;flex-direction:column;align-items:center}.drop-zone a{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;cursor:pointer}.drop-zone .t1{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.drop-zone .t2{color:var(--Gray-500, #667085);font-size:12px;font-weight:400;line-height:18px}.drop-zone .t3{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
152
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.ClientApiService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }], propDecorators: { bulkUploadInput: [{
153
+ type: ViewChild,
154
+ args: ['bulkUploadInput']
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2F1ZGl0LWNvbmZpZ3VyYXRpb24vYXVkaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2Utc2V0dGluZ3Mvc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb25zL2F1ZGl0LWNvbmZpZ3VyYXRpb24vYXVkaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEYsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVMzQixNQUFNLE9BQU8sMkJBQTJCO0lBYWxCO0lBQXlCO0lBQXNDO0lBQStCO0lBWGxILGVBQWUsQ0FBVztJQUMxQixVQUFVLEdBQVksS0FBSyxDQUFBO0lBQ0csZUFBZSxDQUEwQjtJQUN2RSxXQUFXLENBQU07SUFDakIsUUFBUSxDQUFNO0lBQ2Qsa0JBQWtCLENBQVE7SUFDMUIsU0FBUyxDQUFNO0lBQ2YsYUFBYSxDQUFNO0lBSW5CLFlBQW9CLEVBQWUsRUFBVSxVQUE0QixFQUFVLEVBQXFCLEVBQVUsS0FBbUI7UUFBakgsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25JLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNmLElB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ZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENsaWVudEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbGllbnQtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IHtcclxuXHJcbiAgYXVkaXRDb25maWdGb3JtOiBGb3JtR3JvdXBcclxuICBpc011bHRpcGxlOiBib29sZWFuID0gZmFsc2VcclxuICBAVmlld0NoaWxkKCdidWxrVXBsb2FkSW5wdXQnKSBidWxrVXBsb2FkSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gIGJ1bGtBZGREYXRhOiBhbnk7XHJcbiAgZmlsZU5hbWU6IGFueTtcclxuICBmaWxlVXBsb2FkVGVtcGxhdGU6IHN0cmluZ1xyXG4gIHN0b3JlTGlzdDogYW55O1xyXG4gIHNlbGVjdGVkU3RvcmU6IGFueTtcclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBDbGllbnRBcGlTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmluaXRGb3JtKClcclxuICAgIHRoaXMuYXBpU2VydmljZS5jbGllbnRGb3JtRGF0YS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgaWYgKHJlcy50eXBlID09PSAnaW5wdXQnICYmIHJlcy5mb3JtID09PSAnYXVkaXQtY29uZmlndXJhdGlvbicpIHtcclxuICAgICAgICAgIHRoaXMucGF0Y2hGb3JtKHJlcy52YWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmNsaWVudERhdGEuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZXNMaXN0KGUuY2xpZW50SWQpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdEZvcm0oKSB7XHJcbiAgICB0aGlzLmF1ZGl0Q29uZmlnRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzdG9yZUlkOiBbJyddLFxyXG4gICAgICBjb3VudDogWycnXSxcclxuICAgICAgaXRlcmF0aW9uOiBbJyddLFxyXG4gICAgICByYXRpbzogWycnXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hdWRpdENvbmZpZ0Zvcm0uZGlzYWJsZSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U3RvcmVzTGlzdChjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0U3RvcmVMaXN0KGNsaWVudElkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZUxpc3QgPSByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU3RvcmUgPSB0aGlzLnN0b3JlTGlzdFswXVxyXG4gICAgICAgIHRoaXMuZ2V0QXVkaXREYXRhKHRoaXMuc3RvcmVMaXN0WzBdPy5zdG9yZUlkKVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QXVkaXREYXRhKHN0b3JlSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmdldEF1ZGl0Q29uZmlnKHN0b3JlSWQpLnBpcGUobWFwKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbD8uZGF0YT8uYXVkaXRDb25maWdzPy5yYXRpbykge1xyXG4gICAgICAgIHZhbC5kYXRhLmF1ZGl0Q29uZmlncy5yYXRpbyA9IHRoaXMubm9ybWFsaXplTnVtYmVyKHZhbC5kYXRhLmF1ZGl0Q29uZmlncy5yYXRpbylcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsXHJcbiAgICB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMucGF0Y2hGb3JtKHsgLi4ucmVzLmRhdGEuYXVkaXRDb25maWdzLCBzdG9yZUlkOiByZXMuZGF0YS5zdG9yZUlkIH0pXHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkVGVtcGxhdGUgPSByZXMuZGF0YS50ZW1wbGF0ZVVybFxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBub3JtYWxpemVOdW1iZXIobnVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIE1hdGgucm91bmQobnVtICogMTAwKSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIHBhdGNoRm9ybShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuYXVkaXRDb25maWdGb3JtLnBhdGNoVmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICAuLi5kYXRhLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHRyaWdnZXJCdWxrVXBsb2FkSW5wdXQoKSB7XHJcbiAgICB0aGlzLmJ1bGtVcGxvYWRJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKClcclxuICB9XHJcblxyXG4gIG9uQnVsa0lucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj4oZXZlbnQudGFyZ2V0KTtcclxuICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgIGlmICh3Yi5TaGVldE5hbWVzWzBdICE9ICdkYXRhJykge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnSW52YWxpZCBmaWxlJylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzKTtcclxuICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgxKVxyXG4gICAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZVxyXG4gICAgICAgIHRoaXMuYnVsa0FkZERhdGEgPSBkYXRhXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvblN0b3JlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZSA9IGV2ZW50XHJcbiAgICB0aGlzLmdldEF1ZGl0RGF0YShldmVudC5zdG9yZUlkKVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5jbGllbnRGb3JtRGF0YS5uZXh0KHsgdmFsdWU6IG51bGwsIHR5cGU6ICdjYW5jZWwnLCBmb3JtOiAnYXVkaXQtY29uZmlndXJhdGlvbicgfSlcclxuICAgIHRoaXMuYXVkaXRDb25maWdGb3JtLmRpc2FibGUoKVxyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmF1ZGl0Q29uZmlnRm9ybS52YWx1ZS5zdG9yZUlkID0gdGhpcy5zZWxlY3RlZFN0b3JlLnN0b3JlSWRcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLnVwZGF0ZWF1ZGl0Q29uZmlndXJhdGlvbihbdGhpcy5hdWRpdENvbmZpZ0Zvcm0udmFsdWVdKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChlLmRhdGE/LnJlc3VsdClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGUuZXJyb3I/LmVycm9yKVxyXG4gICAgICAgICAgdGhpcy5nZXRBdWRpdERhdGEodGhpcy5zZWxlY3RlZFN0b3JlLnN0b3JlSWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLnVwZGF0ZWF1ZGl0Q29uZmlndXJhdGlvbih0aGlzLmJ1bGtBZGREYXRhKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChlLmRhdGE/LnJlc3VsdClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGUuZXJyb3I/LmVycm9yKVxyXG4gICAgICAgICAgdGhpcy5maWxlTmFtZSA9IG51bGxcclxuICAgICAgICAgIHRoaXMuYnVsa0FkZERhdGEgPSBudWxsXHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiYXVkaXRDb25maWdGb3JtXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImF1ZGl0Q29uZmlnRm9ybS5kaXNhYmxlZFwiIGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYXVkaXRDb25maWdGb3JtLmRpc2FibGVkID8gYXVkaXRDb25maWdGb3JtLmVuYWJsZSgpIDogYXVkaXRDb25maWdGb3JtLmRpc2FibGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NyAyLjQ5OTkzQzE0LjM4NTkgMi4yODEwNiAxNC42NDU3IDIuMTA3NDQgMTQuOTMxNyAxLjk4ODk5QzE1LjIxNzYgMS44NzA1NCAxNS41MjQxIDEuODA5NTcgMTUuODMzNyAxLjgwOTU3QzE2LjE0MzIgMS44MDk1NyAxNi40NDk3IDEuODcwNTQgMTYuNzM1NyAxLjk4ODk5QzE3LjAyMTYgMi4xMDc0NCAxNy4yODE1IDIuMjgxMDYgMTcuNTAwMyAyLjQ5OTkzQzE3LjcxOTIgMi43MTg4IDE3Ljg5MjggMi45Nzg2MyAxOC4wMTEzIDMuMjY0NkMxOC4xMjk3IDMuNTUwNTcgMTguMTkwNyAzLjg1NzA2IDE4LjE5MDcgNC4xNjY1OUMxOC4xOTA3IDQuNDc2MTIgMTguMTI5NyA0Ljc4MjYyIDE4LjAxMTMgNS4wNjg1OUMxNy44OTI4IDUuMzU0NTUgMTcuNzE5MiA1LjYxNDM5IDE3LjUwMDMgNS44MzMyNkw2LjI1MDMzIDE3LjA4MzNMMS42NjY5OSAxOC4zMzMzTDIuOTE2OTkgMTMuNzQ5OUwxNC4xNjcgMi40OTk5M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNTc5XzI1MTI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc011bHRpcGxlXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdG9yZUlkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmUgSUQ8L2xhYmVsPlxyXG4gICAgICAgICAgICA8IS0tIDxzZWxlY3QgKGNoYW5nZSk9XCJvblN0b3JlQ2hhbmdlKCRldmVudClcIiBmb3JtQ29udHJvbE5hbWU9XCJzdG9yZUlkXCIgaWQ9XCJzdG9yZUlkXCIgY2xhc3M9XCJmb3JtLXNlbGVjdCBcIlxyXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlZmF1bHQgc2VsZWN0IGV4YW1wbGVcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHN0b3JlIG9mIHN0b3JlTGlzdFwiIFt2YWx1ZV09XCJzdG9yZS5zdG9yZUlkXCI+e3tzdG9yZS5zdG9yZU5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgIDxsaWItc2VsZWN0IFtpdGVtc109XCJzdG9yZUxpc3RcIiBbbXVsdGldPVwiZmFsc2VcIiBbbGFiZWxdPVwiJ1N0b3JlcydcIiBbc2VhcmNoRmllbGRdPVwiJ3N0b3JlTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCIgW2Rpc2FibGVkXT1cImF1ZGl0Q29uZmlnRm9ybS5nZXQoJ3N0b3JlSWQnKT8uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cIltzZWxlY3RlZFN0b3JlXVwiIChzZWxlY3RlZCk9XCJvblN0b3JlQ2hhbmdlKCRldmVudClcIj48L2xpYi1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiaXRlcmF0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Tm8gb2YgdGltZXMgZm9yIHJlLWF1ZGl0IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaXRlcmF0aW9uXCIgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRpc2FibGVkLWlucHV0XCIgaWQ9XCJpdGVyYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItNVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwicmF0aW9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5NYXBwaW5nIFBlcmNlbnRhZ2UgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmF0aW9cIiB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZGlzYWJsZWQtaW5wdXRcIiBpZD1cInJhdGlvXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTVcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QXVkaXQgQ291bnQgLyBTdG9yZSA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb3VudFwiIHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBkaXNhYmxlZC1pbnB1dFwiIGlkPVwiY291bnRcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJpc011bHRpcGxlXCIgY2xhc3M9XCJyb3cgZy0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IG1iLTUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgMS4gVXNlIHRoZSB0ZW1wbGF0ZSB0byB1cGxvYWQgbXVsdGlwbGUgc3RvcmVzIGF0IG9uY2UuXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMiBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAyLiBEb3dubG9hZCB0aGUgdGVtcGxhdGUgaGVyZSAtICZuYnNwOyA8YSBbaHJlZl09XCJmaWxlVXBsb2FkVGVtcGxhdGVcIiBjbGFzcz1cImQtZmxleFwiIGhyZWY9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1lLTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNNS44MzMzMyA4LjMzMzMzTDEwIDEyLjVNMTAgMTIuNUwxNC4xNjY3IDguMzMzMzNNMTAgMTIuNVYyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkIFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAzLiBBZGQgeW91ciBkYXRhIHRvIHRoZSBUZW1wbGF0ZSBGaWxlXHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDQuIFVwbG9hZCBpdCBvbiB0aGUgcmlnaHQgZm9yIHByb2Nlc3NpbmdcclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCI3NlwiIHZpZXdCb3g9XCIwIDAgMSA3NlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMSAyLjc0MTgxZS0wNkwxIDc2SDBMMCAyLjc0MTgxZS0wNkgxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgbWItNVwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Atem9uZVwiIGxpYkRuZCAoZmlsZURyb3BwZWQpPVwidHJpZ2dlckJ1bGtVcGxvYWRJbnB1dCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibWItMlwiIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNGMkY0RjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiIHN0cm9rZS13aWR0aD1cIjZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNDIxM180MzM5OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjYuMzMzNSAyNi4zMzMyTDIzLjAwMDIgMjIuOTk5OU0yMy4wMDAyIDIyLjk5OTlMMTkuNjY2OSAyNi4zMzMyTTIzLjAwMDIgMjIuOTk5OVYzMC40OTk5TTI5Ljk5MTkgMjguMzI0OUMzMC44MDQ3IDI3Ljg4MTggMzEuNDQ2NyAyNy4xODA2IDMxLjgxNjggMjYuMzMyMUMzMi4xODY4IDI1LjQ4MzUgMzIuMjYzNyAyNC41MzU5IDMyLjAzNTQgMjMuNjM4OEMzMS44MDcgMjIuNzQxNyAzMS4yODY1IDIxLjk0NjIgMzAuNTU1OCAyMS4zNzc4QzI5LjgyNTEgMjAuODA5NCAyOC45MjU5IDIwLjUwMDUgMjguMDAwMiAyMC40OTk5SDI2Ljk1MDJDMjYuNjk4IDE5LjUyNDMgMjYuMjI3OCAxOC42MTg1IDI1LjU3NTIgMTcuODUwN0MyNC45MjI1IDE3LjA4MjkgMjQuMTA0MiAxNi40NzMxIDIzLjE4MiAxNi4wNjcxQzIyLjI1OTcgMTUuNjYxIDIxLjI1NzMgMTUuNDY5NCAyMC4yNTAzIDE1LjUwNjVDMTkuMjQzMyAxNS41NDM2IDE4LjI1NzggMTUuODA4NSAxNy4zNjc5IDE2LjI4MTNDMTYuNDc3OSAxNi43NTQxIDE1LjcwNjggMTcuNDIyNSAxNS4xMTI0IDE4LjIzNjJDMTQuNTE4IDE5LjA1IDE0LjExNTggMTkuOTg3OSAxMy45MzYgMjAuOTc5NEMxMy43NTYzIDIxLjk3MDkgMTMuODAzNiAyMi45OTAzIDE0LjA3NDYgMjMuOTYxQzE0LjM0NTUgMjQuOTMxNiAxNC44MzI5IDI1LjgyODEgMTUuNTAwMiAyNi41ODMyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzQyMTNfNDMzOTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMyAxMylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwidHJpZ2dlckJ1bGtVcGxvYWRJbnB1dCgpXCI+Q2xpY2sgdG8gdXBsb2FkPC9hPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidDFcIj5vciBkcmFnIGFuZCBkcm9wPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPnRoZSBkYXRhIGFkZGVkIHRlbXBsYXRlIGZpbGUgZm9yIHByb2Nlc3NpbmcuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMyMFwiIGhlaWdodD1cIjFcIiB2aWV3Qm94PVwiMCAwIDMyMCAxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0zMjAgMUgwVjBIMzIwVjFaXCIgZmlsbD1cIiNFQUVDRjBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtZS0yXCIgd2lkdGg9XCIzN1wiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNyAzNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjE2NyAxMS4zMzNIMTQuNTAwM0MxNC4xNDY3IDExLjMzMyAxMy44MDc2IDExLjQ3MzUgMTMuNTU3NSAxMS43MjM1QzEzLjMwNzUgMTEuOTczNiAxMy4xNjcgMTIuMzEyNyAxMy4xNjcgMTIuNjY2M1YyMy4zMzNDMTMuMTY3IDIzLjY4NjYgMTMuMzA3NSAyNC4wMjU4IDEzLjU1NzUgMjQuMjc1OEMxMy44MDc2IDI0LjUyNTkgMTQuMTQ2NyAyNC42NjYzIDE0LjUwMDMgMjQuNjY2M0gyMi41MDAzQzIyLjg1MzkgMjQuNjY2MyAyMy4xOTMxIDI0LjUyNTkgMjMuNDQzMSAyNC4yNzU4QzIzLjY5MzIgMjQuMDI1OCAyMy44MzM3IDIzLjY4NjYgMjMuODMzNyAyMy4zMzNWMTUuOTk5N00xOS4xNjcgMTEuMzMzTDIzLjgzMzcgMTUuOTk5N00xOS4xNjcgMTEuMzMzVjE1Ljk5OTdIMjMuODMzN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQzXCI+e3tmaWxlTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGlucHV0IFtkaXNhYmxlZF09XCJhdWRpdENvbmZpZ0Zvcm0uZGlzYWJsZWRcIiAoY2hhbmdlKT1cIm9uQnVsa0lucHV0Q2hhbmdlKCRldmVudClcIiBjbGFzcz1cImQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAjYnVsa1VwbG9hZElucHV0IHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgIGFjY2VwdD1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJhdWRpdENvbmZpZ0Zvcm0uZW5hYmxlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtNFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9hPlxyXG4gICAgICAgICAgICA8YSB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNCBcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPjxzcGFuPlNhdmUgQ2hhbmdlczwvc3Bhbj48L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLXN0YXJ0IGctMCBtYi0yIG10LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTVcIj5cclxuICAgICAgICAgICAgPGhyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMiB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICBPclxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNVwiPlxyXG4gICAgICAgICAgICA8aHI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPGRpdiBjbGFzcz1cInN3aXRjaC1mb3JtLWNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cIm1lLTJcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiB2aWV3Qm94PVwiMCAwIDM2IDM2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjQgMjBWMjIuNjY2N0MyNCAyMy4wMjAzIDIzLjg1OTUgMjMuMzU5NCAyMy42MDk1IDIzLjYwOTVDMjMuMzU5NCAyMy44NTk1IDIzLjAyMDMgMjQgMjIuNjY2NyAyNEgxMy4zMzMzQzEyLjk3OTcgMjQgMTIuNjQwNiAyMy44NTk1IDEyLjM5MDUgMjMuNjA5NUMxMi4xNDA1IDIzLjM1OTQgMTIgMjMuMDIwMyAxMiAyMi42NjY3VjIwTTIxLjMzMzMgMTUuMzMzM0wxOCAxMk0xOCAxMkwxNC42NjY3IDE1LjMzMzNNMTggMTJWMjBcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0eHQtb25lXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNdWx0aXBsZVwiPkFkZCBzaW5nbGUgc3RvcmUgZm9yIGNvbmZpZ3VyYXRpb248L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTXVsdGlwbGVcIj5VcGxvYWQgbXVsdGlwbGUgc3RvcmVzIGZvciBjb25maWd1cmF0aW9uPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaXNNdWx0aXBsZSA9ICFpc011bHRpcGxlXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIj5DbGljayBIZXJlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG48L2Rpdj4iXX0=