simpo-component-library 2.2.3 → 2.2.31

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 (56) hide show
  1. package/esm2022/lib/elements/index.mjs +6 -6
  2. package/esm2022/lib/elements/my-documents/my-documents.component.mjs +11 -0
  3. package/esm2022/lib/elements/my-orders/my-orders.component.mjs +64 -0
  4. package/esm2022/lib/elements/my-statement/my-statement.component.mjs +26 -0
  5. package/esm2022/lib/elements/need-help/need-help.component.mjs +11 -0
  6. package/esm2022/lib/elements/payment-confirmation/payment-confirmation.component.mjs +90 -0
  7. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  8. package/esm2022/lib/elements/properties/properties.component.mjs +70 -0
  9. package/esm2022/lib/elements/property-view/property-view.component.mjs +42 -0
  10. package/esm2022/lib/sections/kyc-details/kyc-details.component.mjs +163 -0
  11. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +41 -12
  12. package/esm2022/lib/sections/profile-section/profile-section.component.mjs +52 -0
  13. package/esm2022/lib/sections/profile-section/profile-section.modal.mjs +2 -0
  14. package/esm2022/lib/sections/property-component/property-component.component.mjs +78 -7
  15. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  16. package/esm2022/lib/sections/property-detail/property-detail.component.mjs +121 -0
  17. package/esm2022/lib/sections/property-detail/property-detail.model.mjs +2 -0
  18. package/esm2022/lib/sections/property-list/property-list.component.mjs +101 -48
  19. package/esm2022/lib/sections/signup-signin/signup-signin.component.mjs +278 -0
  20. package/esm2022/lib/sections/signup-signin/signup-signin.model.mjs +2 -0
  21. package/esm2022/lib/sections/verify-property-payment/verify-property-payment.component.mjs +55 -0
  22. package/esm2022/lib/services/events.service.mjs +2 -1
  23. package/esm2022/lib/services/rest.service.mjs +73 -5
  24. package/esm2022/lib/styles/index.mjs +6 -1
  25. package/esm2022/public-api.mjs +5 -1
  26. package/fesm2022/simpo-component-library.mjs +3027 -1993
  27. package/fesm2022/simpo-component-library.mjs.map +1 -1
  28. package/lib/elements/index.d.ts +3 -3
  29. package/lib/elements/my-documents/my-documents.component.d.ts +5 -0
  30. package/lib/elements/my-orders/my-orders.component.d.ts +10 -0
  31. package/lib/elements/my-statement/my-statement.component.d.ts +8 -0
  32. package/lib/elements/need-help/need-help.component.d.ts +5 -0
  33. package/lib/elements/payment-confirmation/payment-confirmation.component.d.ts +25 -0
  34. package/lib/elements/properties/properties.component.d.ts +12 -0
  35. package/lib/elements/property-view/property-view.component.d.ts +8 -0
  36. package/lib/sections/kyc-details/kyc-details.component.d.ts +38 -0
  37. package/lib/sections/navbar-section/navbar-section.component.d.ts +9 -1
  38. package/lib/sections/profile-section/profile-section.component.d.ts +16 -0
  39. package/lib/sections/profile-section/profile-section.modal.d.ts +5 -0
  40. package/lib/sections/property-component/property-component.component.d.ts +24 -4
  41. package/lib/sections/property-component/property-component.modal.d.ts +11 -18
  42. package/lib/sections/property-detail/property-detail.component.d.ts +32 -0
  43. package/lib/sections/property-detail/property-detail.model.d.ts +5 -0
  44. package/lib/sections/property-list/property-list.component.d.ts +7 -1
  45. package/lib/sections/signup-signin/signup-signin.component.d.ts +49 -0
  46. package/lib/sections/signup-signin/signup-signin.model.d.ts +10 -0
  47. package/lib/sections/verify-property-payment/verify-property-payment.component.d.ts +16 -0
  48. package/lib/services/events.service.d.ts +1 -0
  49. package/lib/services/rest.service.d.ts +18 -0
  50. package/lib/styles/index.d.ts +4 -0
  51. package/package.json +1 -1
  52. package/public-api.d.ts +4 -0
  53. package/simpo-component-library-2.2.31.tgz +0 -0
  54. package/esm2022/lib/elements/property/property.component.mjs +0 -41
  55. package/lib/elements/property/property.component.d.ts +0 -8
  56. package/simpo-component-library-2.2.3.tgz +0 -0
@@ -0,0 +1,70 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { MatIcon } from '@angular/material/icon';
4
+ import { PropertyViewComponent } from '../property-view/property-view.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ export class PropertiesComponent {
8
+ constructor() {
9
+ this.investments = [
10
+ {
11
+ name: "SQFT Investment",
12
+ details: [
13
+ { name: "Total Sq.ft Owned", value: "43" },
14
+ { name: "Amount Invested", value: "₹5.73 L" },
15
+ { name: "Indicative Market Value", value: "₹6.21 L", spanValue: "+2.1%" },
16
+ { name: "IRR", value: "14%" },
17
+ ]
18
+ },
19
+ {
20
+ name: "Private Investment ",
21
+ details: [
22
+ { name: "Properties Owned", value: "2" },
23
+ { name: "Properties Sq.ft", value: "3092" },
24
+ { name: "Invested Value", value: "₹32.41 L", spanValue: "+2.1%" },
25
+ { name: "Indicative Market Value", value: "₹38.59 L" },
26
+ ]
27
+ }
28
+ ];
29
+ this.activeTab = "ALL_PROPERTIES";
30
+ this.tabs = [
31
+ { viewValue: "All Properties", value: "ALL_PROPERTIES" },
32
+ { viewValue: "My SQFT", value: "SQFT" },
33
+ { viewValue: "Private Investments", value: "PRIVATE" },
34
+ ];
35
+ this.propertyDetails = [{
36
+ propertyImage: ["https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png", "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png", "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png"],
37
+ propertyName: "Real Estate Debt Investment - Blue Moon",
38
+ propertyLocation: "RRR Hyderabad, Telangana",
39
+ propertyType: "SQFT",
40
+ propertyDetail: [
41
+ { textValue: "Invested", value: "₹4.1 L" },
42
+ { textValue: "Sq.ft", value: "32" },
43
+ { textValue: "Indicative Market Value", value: "₹4.1 L" },
44
+ { textValue: "Profit/Loss", value: "+₹4.1 L" },
45
+ ]
46
+ },
47
+ {
48
+ propertyImage: ["https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png", "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png", "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png"],
49
+ propertyName: "Real Estate Debt Investment - Blue Moon",
50
+ propertyLocation: "RRR Hyderabad, Telangana",
51
+ propertyType: "Private Investment",
52
+ propertyDetail: [
53
+ { textValue: "Invested", value: "₹4.1 L" },
54
+ { textValue: "Sq.ft", value: "32" },
55
+ { textValue: "Indicative Market Value", value: "₹4.1 L" },
56
+ { textValue: "Profit/Loss", value: "+₹4.1 L" },
57
+ ]
58
+ }];
59
+ this.viewTab = false;
60
+ }
61
+ ngOnInit() {
62
+ }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertiesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PropertiesComponent, isStandalone: true, selector: "simpo-properties", ngImport: i0, template: "<section class=\"main-container\" *ngIf=\"!viewTab\">\r\n <!-- <div class=\"card-section d-flex gap-2\">\r\n <div class=\"cards\" *ngFor=\"let ele of investments\">\r\n <div class=\"head\">{{ele.name}}</div>\r\n <div class=\"mini-cards\">\r\n <div class=\"mini-card\" *ngFor=\"let ele of ele.details\">\r\n <div class=\"text\">{{ele.name}}</div>\r\n <div class=\"number d-flex\">{{ele.value}}&nbsp;&nbsp;<span *ngIf=\"ele?.spanValue\"\r\n class=\"span-text d-flex\"><mat-icon>arrow_drop_up</mat-icon>\r\n {{ele.spanValue}}</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"property-tabs d-flex gap-10 mt-3\">\r\n <div class=\"tab\" *ngFor=\"let ele of tabs\" (click)=\"activeTab = ele.value\"\r\n [class.tabActive]=\"activeTab == ele.value\">{{ele.viewValue}}</div>\r\n </div> -->\r\n <div class=\"property-cards\">\r\n <ng-container *ngFor=\"let ele of propertyDetails\">\r\n <div class=\"property-card w-100 d-flex gap-10\" (click)=\"viewTab = true\">\r\n <div id=\"carouselExampleInterval\" class=\"carousel slide p-relative w-35\" data-bs-ride=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <ng-container *ngFor=\"let ele of ele.propertyImage;let i = index\">\r\n <div class=\"carousel-item active\" [class.active]=\"i\" data-bs-interval=\"3000\">\r\n <img [src]=\"ele\" class=\"d-block w-100 height-30 br-10\" alt=\"property-image\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"propertyName d-flex justify-content-center p-15\">\r\n <div class=\"carousel d-flex justify-content-end align-items-end\">\r\n <div class=\"carousel-indicators additional-properties-1\">\r\n <ng-container *ngFor=\"let ele of ele.propertyImage;let i = index\">\r\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\"\r\n [attr.data-bs-slide-to]=\"i\" class=\"active additional-properties\"\r\n aria-current=\"true\" aria-label=\"Slide 1\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right-section\">\r\n <div class=\"right-top d-flex justify-content-between\">\r\n <div class=\"head-left\">\r\n <div class=\"propertyname\">{{ele.propertyName}}</div>\r\n <div class=\"property-location\"><img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/384275c1737629729545location_on.png\" alt=\"location image\">{{ele.propertyLocation}}</div>\r\n </div>\r\n <div class=\"head-right\">\r\n <div class=\"type text-center\">{{ele.propertyType}}</div>\r\n </div>\r\n </div>\r\n <!-- <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/637983c1739855715188Vector%2012%20%281%29.png\" class=\"curve-img\"> -->\r\n <div class=\"right-bottom d-flex gap-10 w-75\">\r\n <div class=\"details\" *ngFor=\"let x of ele.propertyDetail;let i = index\"\r\n [class.lst-div]=\"i == ele.propertyDetail.length - 1\">\r\n <div class=\"top-detail text-center\">{{x.value}}</div>\r\n <div class=\"bottom-detail text-center\">{{x.textValue}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</section>\r\n<section class=\"view-container\" *ngIf=\"viewTab\">\r\n <div class=\"back\">\r\n <div class=\"back-text d-flex align-items-center\"><p class=\"my-text mb-0 common-style\" (click)=\"viewTab = false\">My Properties</p><mat-icon class=\"my-text\">keyboard_arrow_right</mat-icon>\r\n <p class=\"prty-text mb-0 common-style\">Property Details</p></div>\r\n </div>\r\n <simpo-property-view [text]=\"'Hello'\"></simpo-property-view>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}mat-icon{font-family:Material Icons!important}.gap-2{gap:2%!important}.cards{background:#fff;border-radius:10px;border:1px solid rgba(0,0,0,.03);width:49%;padding:10px}.head{font-size:18px;font-weight:600;line-height:24px;color:#000;margin-bottom:10px}.mini-cards{display:grid;grid-template-columns:48% 48%;gap:3%}.mini-card{background:#fafafa;border-radius:7px;padding:10px 15px;margin-bottom:10px}.text{font-size:14px;line-height:24px;font-weight:500;color:#01161ecc;margin-bottom:10px}.number{font-size:24px;line-height:24px;font-weight:700;color:#01161e}.span-text{font-size:13px;line-height:24px;font-weight:700;color:#36b37e}.property-tab{display:flex;gap:10px;margin-top:15px}.gap-10{gap:10px}.tab{padding:10px;background:#fff;border:1px solid rgba(0,0,0,.05);border-radius:8px;font-size:16px;line-height:24px;font-weight:500;color:#01161e;cursor:pointer}.tabActive{color:#f8a938!important;border:1px solid rgba(248,169,56,1)!important}.additional-properties{border-radius:50%;height:1vh;width:8px!important}.additional-properties-1{position:unset!important;padding:unset!important;margin:unset!important;width:100%}.p-relative{position:relative}.propertyName{position:absolute;bottom:0;width:100%}.height-30{height:30vh}.w-35{width:35%!important}.property-cards{overflow-y:scroll;height:81vh}.property-card{border-radius:10px!important;background:#fff;border:1px solid rgba(0,0,0,.04);margin-bottom:15px;position:relative;overflow:hidden;cursor:pointer}.br-10{border-radius:10px 0 0 10px}.right-section{width:65%}.property-name{font-size:16px;font-weight:600;line-height:21px;color:#000}.property-location{font-size:14px;font-weight:500;line-height:44px;color:#0000004d}.type{font-size:14px;font-weight:600;line-height:24px;color:#f8a938;background:#ffebcb;border-radius:8px 0 0 9px;padding:6px}.right-bottom{background:#219ebc}.details{border-right:1px solid rgba(255,255,255,.2);padding:8px;margin:8px 0}.top-detail{font-size:20px;font-weight:700;line-height:24px;color:#fff}.bottom-detail{font-size:14px;font-weight:500;line-height:24px;color:#ffffffb3}.head-left{padding:10px}.head-right{padding:10px 0}.lst-div{border:unset!important}.w-75{width:75%!important}.curve-img{position:absolute;width:33px;top:33%;left:31%}.p-15{padding:15px}.my-text{color:#00000080;cursor:pointer}.prty-text{color:#000}.common-style{font-size:14px;line-height:24px;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PropertyViewComponent, selector: "simpo-property-view", inputs: ["text"] }] }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertiesComponent, decorators: [{
67
+ type: Component,
68
+ args: [{ selector: 'simpo-properties', standalone: true, imports: [CommonModule, MatIcon, PropertyViewComponent], template: "<section class=\"main-container\" *ngIf=\"!viewTab\">\r\n <!-- <div class=\"card-section d-flex gap-2\">\r\n <div class=\"cards\" *ngFor=\"let ele of investments\">\r\n <div class=\"head\">{{ele.name}}</div>\r\n <div class=\"mini-cards\">\r\n <div class=\"mini-card\" *ngFor=\"let ele of ele.details\">\r\n <div class=\"text\">{{ele.name}}</div>\r\n <div class=\"number d-flex\">{{ele.value}}&nbsp;&nbsp;<span *ngIf=\"ele?.spanValue\"\r\n class=\"span-text d-flex\"><mat-icon>arrow_drop_up</mat-icon>\r\n {{ele.spanValue}}</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"property-tabs d-flex gap-10 mt-3\">\r\n <div class=\"tab\" *ngFor=\"let ele of tabs\" (click)=\"activeTab = ele.value\"\r\n [class.tabActive]=\"activeTab == ele.value\">{{ele.viewValue}}</div>\r\n </div> -->\r\n <div class=\"property-cards\">\r\n <ng-container *ngFor=\"let ele of propertyDetails\">\r\n <div class=\"property-card w-100 d-flex gap-10\" (click)=\"viewTab = true\">\r\n <div id=\"carouselExampleInterval\" class=\"carousel slide p-relative w-35\" data-bs-ride=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <ng-container *ngFor=\"let ele of ele.propertyImage;let i = index\">\r\n <div class=\"carousel-item active\" [class.active]=\"i\" data-bs-interval=\"3000\">\r\n <img [src]=\"ele\" class=\"d-block w-100 height-30 br-10\" alt=\"property-image\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"propertyName d-flex justify-content-center p-15\">\r\n <div class=\"carousel d-flex justify-content-end align-items-end\">\r\n <div class=\"carousel-indicators additional-properties-1\">\r\n <ng-container *ngFor=\"let ele of ele.propertyImage;let i = index\">\r\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\"\r\n [attr.data-bs-slide-to]=\"i\" class=\"active additional-properties\"\r\n aria-current=\"true\" aria-label=\"Slide 1\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right-section\">\r\n <div class=\"right-top d-flex justify-content-between\">\r\n <div class=\"head-left\">\r\n <div class=\"propertyname\">{{ele.propertyName}}</div>\r\n <div class=\"property-location\"><img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/384275c1737629729545location_on.png\" alt=\"location image\">{{ele.propertyLocation}}</div>\r\n </div>\r\n <div class=\"head-right\">\r\n <div class=\"type text-center\">{{ele.propertyType}}</div>\r\n </div>\r\n </div>\r\n <!-- <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/637983c1739855715188Vector%2012%20%281%29.png\" class=\"curve-img\"> -->\r\n <div class=\"right-bottom d-flex gap-10 w-75\">\r\n <div class=\"details\" *ngFor=\"let x of ele.propertyDetail;let i = index\"\r\n [class.lst-div]=\"i == ele.propertyDetail.length - 1\">\r\n <div class=\"top-detail text-center\">{{x.value}}</div>\r\n <div class=\"bottom-detail text-center\">{{x.textValue}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</section>\r\n<section class=\"view-container\" *ngIf=\"viewTab\">\r\n <div class=\"back\">\r\n <div class=\"back-text d-flex align-items-center\"><p class=\"my-text mb-0 common-style\" (click)=\"viewTab = false\">My Properties</p><mat-icon class=\"my-text\">keyboard_arrow_right</mat-icon>\r\n <p class=\"prty-text mb-0 common-style\">Property Details</p></div>\r\n </div>\r\n <simpo-property-view [text]=\"'Hello'\"></simpo-property-view>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}mat-icon{font-family:Material Icons!important}.gap-2{gap:2%!important}.cards{background:#fff;border-radius:10px;border:1px solid rgba(0,0,0,.03);width:49%;padding:10px}.head{font-size:18px;font-weight:600;line-height:24px;color:#000;margin-bottom:10px}.mini-cards{display:grid;grid-template-columns:48% 48%;gap:3%}.mini-card{background:#fafafa;border-radius:7px;padding:10px 15px;margin-bottom:10px}.text{font-size:14px;line-height:24px;font-weight:500;color:#01161ecc;margin-bottom:10px}.number{font-size:24px;line-height:24px;font-weight:700;color:#01161e}.span-text{font-size:13px;line-height:24px;font-weight:700;color:#36b37e}.property-tab{display:flex;gap:10px;margin-top:15px}.gap-10{gap:10px}.tab{padding:10px;background:#fff;border:1px solid rgba(0,0,0,.05);border-radius:8px;font-size:16px;line-height:24px;font-weight:500;color:#01161e;cursor:pointer}.tabActive{color:#f8a938!important;border:1px solid rgba(248,169,56,1)!important}.additional-properties{border-radius:50%;height:1vh;width:8px!important}.additional-properties-1{position:unset!important;padding:unset!important;margin:unset!important;width:100%}.p-relative{position:relative}.propertyName{position:absolute;bottom:0;width:100%}.height-30{height:30vh}.w-35{width:35%!important}.property-cards{overflow-y:scroll;height:81vh}.property-card{border-radius:10px!important;background:#fff;border:1px solid rgba(0,0,0,.04);margin-bottom:15px;position:relative;overflow:hidden;cursor:pointer}.br-10{border-radius:10px 0 0 10px}.right-section{width:65%}.property-name{font-size:16px;font-weight:600;line-height:21px;color:#000}.property-location{font-size:14px;font-weight:500;line-height:44px;color:#0000004d}.type{font-size:14px;font-weight:600;line-height:24px;color:#f8a938;background:#ffebcb;border-radius:8px 0 0 9px;padding:6px}.right-bottom{background:#219ebc}.details{border-right:1px solid rgba(255,255,255,.2);padding:8px;margin:8px 0}.top-detail{font-size:20px;font-weight:700;line-height:24px;color:#fff}.bottom-detail{font-size:14px;font-weight:500;line-height:24px;color:#ffffffb3}.head-left{padding:10px}.head-right{padding:10px 0}.lst-div{border:unset!important}.w-75{width:75%!important}.curve-img{position:absolute;width:33px;top:33%;left:31%}.p-15{padding:15px}.my-text{color:#00000080;cursor:pointer}.prty-text{color:#000}.common-style{font-size:14px;line-height:24px;font-weight:500}\n"] }]
69
+ }], ctorParameters: () => [] });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3Byb3BlcnRpZXMvcHJvcGVydGllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3Byb3BlcnRpZXMvcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQVNqRixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBUUEsZ0JBQVcsR0FBUztZQUNsQjtnQkFDRSxJQUFJLEVBQUcsaUJBQWlCO2dCQUN4QixPQUFPLEVBQUc7b0JBQ1IsRUFBQyxJQUFJLEVBQUcsbUJBQW1CLEVBQUMsS0FBSyxFQUFDLElBQUksRUFBQztvQkFDdkMsRUFBQyxJQUFJLEVBQUcsaUJBQWlCLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQztvQkFDMUMsRUFBQyxJQUFJLEVBQUcseUJBQXlCLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUcsT0FBTyxFQUFDO29CQUN0RSxFQUFDLElBQUksRUFBRyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQztpQkFDM0I7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRyxxQkFBcUI7Z0JBQzVCLE9BQU8sRUFBRztvQkFDUixFQUFDLElBQUksRUFBRyxrQkFBa0IsRUFBQyxLQUFLLEVBQUMsR0FBRyxFQUFDO29CQUNyQyxFQUFDLElBQUksRUFBRyxrQkFBa0IsRUFBQyxLQUFLLEVBQUMsTUFBTSxFQUFDO29CQUN4QyxFQUFDLElBQUksRUFBRyxnQkFBZ0IsRUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLFNBQVMsRUFBRyxPQUFPLEVBQUM7b0JBQzlELEVBQUMsSUFBSSxFQUFHLHlCQUF5QixFQUFDLEtBQUssRUFBQyxVQUFVLEVBQUM7aUJBQ3BEO2FBQ0Y7U0FDRixDQUFBO1FBRUQsY0FBUyxHQUFTLGdCQUFnQixDQUFBO1FBRWxDLFNBQUksR0FBUztZQUNYLEVBQUMsU0FBUyxFQUFHLGdCQUFnQixFQUFHLEtBQUssRUFBRyxnQkFBZ0IsRUFBQztZQUN6RCxFQUFDLFNBQVMsRUFBRyxTQUFTLEVBQUcsS0FBSyxFQUFHLE1BQU0sRUFBQztZQUN4QyxFQUFDLFNBQVMsRUFBRyxxQkFBcUIsRUFBRyxLQUFLLEVBQUcsU0FBUyxFQUFDO1NBQ3hELENBQUE7UUFFRCxvQkFBZSxHQUFTLENBQUM7Z0JBQ3ZCLGFBQWEsRUFBRyxDQUFDLG9HQUFvRyxFQUFDLG9HQUFvRyxFQUFDLG9HQUFvRyxDQUFDO2dCQUNoVSxZQUFZLEVBQUcseUNBQXlDO2dCQUN4RCxnQkFBZ0IsRUFBRywwQkFBMEI7Z0JBQzdDLFlBQVksRUFBRyxNQUFNO2dCQUNyQixjQUFjLEVBQUc7b0JBQ2YsRUFBQyxTQUFTLEVBQUcsVUFBVSxFQUFDLEtBQUssRUFBRyxRQUFRLEVBQUM7b0JBQ3pDLEVBQUMsU0FBUyxFQUFHLE9BQU8sRUFBQyxLQUFLLEVBQUcsSUFBSSxFQUFDO29CQUNsQyxFQUFDLFNBQVMsRUFBRyx5QkFBeUIsRUFBQyxLQUFLLEVBQUcsUUFBUSxFQUFDO29CQUN4RCxFQUFDLFNBQVMsRUFBRyxhQUFhLEVBQUMsS0FBSyxFQUFHLFNBQVMsRUFBQztpQkFDOUM7YUFDRjtZQUNEO2dCQUNFLGFBQWEsRUFBRyxDQUFDLG9HQUFvRyxFQUFDLG9HQUFvRyxFQUFDLG9HQUFvRyxDQUFDO2dCQUNoVSxZQUFZLEVBQUcseUNBQXlDO2dCQUN4RCxnQkFBZ0IsRUFBRywwQkFBMEI7Z0JBQzdDLFlBQVksRUFBRyxvQkFBb0I7Z0JBQ25DLGNBQWMsRUFBRTtvQkFDZCxFQUFDLFNBQVMsRUFBRyxVQUFVLEVBQUMsS0FBSyxFQUFHLFFBQVEsRUFBQztvQkFDekMsRUFBQyxTQUFTLEVBQUcsT0FBTyxFQUFDLEtBQUssRUFBRyxJQUFJLEVBQUM7b0JBQ2xDLEVBQUMsU0FBUyxFQUFHLHlCQUF5QixFQUFDLEtBQUssRUFBRyxRQUFRLEVBQUM7b0JBQ3hELEVBQUMsU0FBUyxFQUFHLGFBQWEsRUFBQyxLQUFLLEVBQUcsU0FBUyxFQUFDO2lCQUM5QzthQUNGLENBQUMsQ0FBQTtRQUVGLFlBQU8sR0FBYSxLQUFLLENBQUE7SUE1RHpCLENBQUM7SUFFRCxRQUFRO0lBRVIsQ0FBQzs4R0FSVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw0RUNaaEMsb2tKQXVFQSxnNkVEL0RZLFlBQVksZ1FBQUMsT0FBTywySUFBQyxxQkFBcUI7OzJGQUl6QyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBQyxPQUFPLEVBQUMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9wcm9wZXJ0eS12aWV3L3Byb3BlcnR5LXZpZXcuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLE1hdEljb24sUHJvcGVydHlWaWV3Q29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Byb3BlcnRpZXMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3BlcnRpZXNDb21wb25lbnQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcigpe1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcblxyXG4gIH1cclxuXHJcbiAgaW52ZXN0bWVudHMgOiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWUgOiBcIlNRRlQgSW52ZXN0bWVudFwiLFxyXG4gICAgICBkZXRhaWxzIDogW1xyXG4gICAgICAgIHtuYW1lIDogXCJUb3RhbCBTcS5mdCBPd25lZFwiLHZhbHVlOlwiNDNcIn0sXHJcbiAgICAgICAge25hbWUgOiBcIkFtb3VudCBJbnZlc3RlZFwiLHZhbHVlOlwi4oK5NS43MyBMXCJ9LFxyXG4gICAgICAgIHtuYW1lIDogXCJJbmRpY2F0aXZlIE1hcmtldCBWYWx1ZVwiLHZhbHVlOlwi4oK5Ni4yMSBMXCIsc3BhblZhbHVlIDogXCIrMi4xJVwifSxcclxuICAgICAgICB7bmFtZSA6IFwiSVJSXCIsdmFsdWU6XCIxNCVcIn0sXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWUgOiBcIlByaXZhdGUgSW52ZXN0bWVudCBcIixcclxuICAgICAgZGV0YWlscyA6IFtcclxuICAgICAgICB7bmFtZSA6IFwiUHJvcGVydGllcyBPd25lZFwiLHZhbHVlOlwiMlwifSxcclxuICAgICAgICB7bmFtZSA6IFwiUHJvcGVydGllcyBTcS5mdFwiLHZhbHVlOlwiMzA5MlwifSxcclxuICAgICAgICB7bmFtZSA6IFwiSW52ZXN0ZWQgVmFsdWVcIix2YWx1ZTpcIuKCuTMyLjQxIExcIixzcGFuVmFsdWUgOiBcIisyLjElXCJ9LFxyXG4gICAgICAgIHtuYW1lIDogXCJJbmRpY2F0aXZlIE1hcmtldCBWYWx1ZVwiLHZhbHVlOlwi4oK5MzguNTkgTFwifSxcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIF1cclxuXHJcbiAgYWN0aXZlVGFiIDogYW55ID0gXCJBTExfUFJPUEVSVElFU1wiXHJcblxyXG4gIHRhYnMgOiBhbnkgPSBbXHJcbiAgICB7dmlld1ZhbHVlIDogXCJBbGwgUHJvcGVydGllc1wiICwgdmFsdWUgOiBcIkFMTF9QUk9QRVJUSUVTXCJ9LFxyXG4gICAge3ZpZXdWYWx1ZSA6IFwiTXkgU1FGVFwiICwgdmFsdWUgOiBcIlNRRlRcIn0sXHJcbiAgICB7dmlld1ZhbHVlIDogXCJQcml2YXRlIEludmVzdG1lbnRzXCIgLCB2YWx1ZSA6IFwiUFJJVkFURVwifSwgICAgXHJcbiAgXVxyXG5cclxuICBwcm9wZXJ0eURldGFpbHMgOiBhbnkgPSBbe1xyXG4gICAgcHJvcGVydHlJbWFnZSA6IFtcImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvODE1OTIxYzE3MzkyNTQ4NDMxODZpbWFnZSUyMCUyODUlMjkucG5nXCIsXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiLFwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84MTU5MjFjMTczOTI1NDg0MzE4NmltYWdlJTIwJTI4NSUyOS5wbmdcIl0sXHJcbiAgICBwcm9wZXJ0eU5hbWUgOiBcIlJlYWwgRXN0YXRlIERlYnQgSW52ZXN0bWVudCAtIEJsdWUgTW9vblwiLFxyXG4gICAgcHJvcGVydHlMb2NhdGlvbiA6IFwiUlJSIEh5ZGVyYWJhZCwgVGVsYW5nYW5hXCIsXHJcbiAgICBwcm9wZXJ0eVR5cGUgOiBcIlNRRlRcIixcclxuICAgIHByb3BlcnR5RGV0YWlsIDogW1xyXG4gICAgICB7dGV4dFZhbHVlIDogXCJJbnZlc3RlZFwiLHZhbHVlIDogXCLigrk0LjEgTFwifSxcclxuICAgICAge3RleHRWYWx1ZSA6IFwiU3EuZnRcIix2YWx1ZSA6IFwiMzJcIn0sXHJcbiAgICAgIHt0ZXh0VmFsdWUgOiBcIkluZGljYXRpdmUgTWFya2V0IFZhbHVlXCIsdmFsdWUgOiBcIuKCuTQuMSBMXCJ9LFxyXG4gICAgICB7dGV4dFZhbHVlIDogXCJQcm9maXQvTG9zc1wiLHZhbHVlIDogXCIr4oK5NC4xIExcIn0sXHJcbiAgICBdXHJcbiAgfSxcclxuICB7XHJcbiAgICBwcm9wZXJ0eUltYWdlIDogW1wiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84MTU5MjFjMTczOTI1NDg0MzE4NmltYWdlJTIwJTI4NSUyOS5wbmdcIixcImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvODE1OTIxYzE3MzkyNTQ4NDMxODZpbWFnZSUyMCUyODUlMjkucG5nXCIsXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiXSxcclxuICAgIHByb3BlcnR5TmFtZSA6IFwiUmVhbCBFc3RhdGUgRGVidCBJbnZlc3RtZW50IC0gQmx1ZSBNb29uXCIsXHJcbiAgICBwcm9wZXJ0eUxvY2F0aW9uIDogXCJSUlIgSHlkZXJhYmFkLCBUZWxhbmdhbmFcIixcclxuICAgIHByb3BlcnR5VHlwZSA6IFwiUHJpdmF0ZSBJbnZlc3RtZW50XCIsXHJcbiAgICBwcm9wZXJ0eURldGFpbDogW1xyXG4gICAgICB7dGV4dFZhbHVlIDogXCJJbnZlc3RlZFwiLHZhbHVlIDogXCLigrk0LjEgTFwifSxcclxuICAgICAge3RleHRWYWx1ZSA6IFwiU3EuZnRcIix2YWx1ZSA6IFwiMzJcIn0sXHJcbiAgICAgIHt0ZXh0VmFsdWUgOiBcIkluZGljYXRpdmUgTWFya2V0IFZhbHVlXCIsdmFsdWUgOiBcIuKCuTQuMSBMXCJ9LFxyXG4gICAgICB7dGV4dFZhbHVlIDogXCJQcm9maXQvTG9zc1wiLHZhbHVlIDogXCIr4oK5NC4xIExcIn0sXHJcbiAgICBdXHJcbiAgfV1cclxuXHJcbiAgdmlld1RhYiA6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCIgKm5nSWY9XCIhdmlld1RhYlwiPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZC1zZWN0aW9uIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkc1wiICpuZ0Zvcj1cImxldCBlbGUgb2YgaW52ZXN0bWVudHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRcIj57e2VsZS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktY2FyZHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW5pLWNhcmRcIiAqbmdGb3I9XCJsZXQgZWxlIG9mIGVsZS5kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj57e2VsZS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibnVtYmVyIGQtZmxleFwiPnt7ZWxlLnZhbHVlfX0mbmJzcDsmbmJzcDs8c3BhbiAqbmdJZj1cImVsZT8uc3BhblZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Bhbi10ZXh0IGQtZmxleFwiPjxtYXQtaWNvbj5hcnJvd19kcm9wX3VwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZWxlLnNwYW5WYWx1ZX19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktdGFicyBkLWZsZXggZ2FwLTEwIG10LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFiXCIgKm5nRm9yPVwibGV0IGVsZSBvZiB0YWJzXCIgKGNsaWNrKT1cImFjdGl2ZVRhYiA9IGVsZS52YWx1ZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy50YWJBY3RpdmVdPVwiYWN0aXZlVGFiID09IGVsZS52YWx1ZVwiPnt7ZWxlLnZpZXdWYWx1ZX19PC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktY2FyZHNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgcHJvcGVydHlEZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1jYXJkIHctMTAwIGQtZmxleCBnYXAtMTBcIiAoY2xpY2spPVwidmlld1RhYiA9IHRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjYXJvdXNlbEV4YW1wbGVJbnRlcnZhbFwiIGNsYXNzPVwiY2Fyb3VzZWwgc2xpZGUgcC1yZWxhdGl2ZSB3LTM1XCIgZGF0YS1icy1yaWRlPVwiY2Fyb3VzZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWxlIG9mIGVsZS5wcm9wZXJ0eUltYWdlO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGFjdGl2ZVwiIFtjbGFzcy5hY3RpdmVdPVwiaVwiIGRhdGEtYnMtaW50ZXJ2YWw9XCIzMDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVsZVwiIGNsYXNzPVwiZC1ibG9jayB3LTEwMCBoZWlnaHQtMzAgYnItMTBcIiBhbHQ9XCJwcm9wZXJ0eS1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eU5hbWUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcC0xNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9ycyBhZGRpdGlvbmFsLXByb3BlcnRpZXMtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZSBvZiBlbGUucHJvcGVydHlJbWFnZTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdGFyZ2V0PVwiI2Nhcm91c2VsRXhhbXBsZUludGVydmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYnMtc2xpZGUtdG9dPVwiaVwiIGNsYXNzPVwiYWN0aXZlIGFkZGl0aW9uYWwtcHJvcGVydGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWN1cnJlbnQ9XCJ0cnVlXCIgYXJpYS1sYWJlbD1cIlNsaWRlIDFcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtdG9wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHluYW1lXCI+e3tlbGUucHJvcGVydHlOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1sb2NhdGlvblwiPjxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8zODQyNzVjMTczNzYyOTcyOTU0NWxvY2F0aW9uX29uLnBuZ1wiIGFsdD1cImxvY2F0aW9uIGltYWdlXCI+e3tlbGUucHJvcGVydHlMb2NhdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUgdGV4dC1jZW50ZXJcIj57e2VsZS5wcm9wZXJ0eVR5cGV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy82Mzc5ODNjMTczOTg1NTcxNTE4OFZlY3RvciUyMDEyJTIwJTI4MSUyOS5wbmdcIiBjbGFzcz1cImN1cnZlLWltZ1wiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtYm90dG9tIGQtZmxleCBnYXAtMTAgdy03NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiICpuZ0Zvcj1cImxldCB4IG9mIGVsZS5wcm9wZXJ0eURldGFpbDtsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5sc3QtZGl2XT1cImkgPT0gZWxlLnByb3BlcnR5RGV0YWlsLmxlbmd0aCAtIDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtZGV0YWlsIHRleHQtY2VudGVyXCI+e3t4LnZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tZGV0YWlsIHRleHQtY2VudGVyXCI+e3t4LnRleHRWYWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuPHNlY3Rpb24gY2xhc3M9XCJ2aWV3LWNvbnRhaW5lclwiICpuZ0lmPVwidmlld1RhYlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImJhY2tcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFjay10ZXh0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj48cCBjbGFzcz1cIm15LXRleHQgbWItMCBjb21tb24tc3R5bGVcIiAoY2xpY2spPVwidmlld1RhYiA9IGZhbHNlXCI+TXkgUHJvcGVydGllczwvcD48bWF0LWljb24gY2xhc3M9XCJteS10ZXh0XCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxwIGNsYXNzPVwicHJ0eS10ZXh0IG1iLTAgY29tbW9uLXN0eWxlXCI+UHJvcGVydHkgRGV0YWlsczwvcD48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNpbXBvLXByb3BlcnR5LXZpZXcgW3RleHRdPVwiJ0hlbGxvJ1wiPjwvc2ltcG8tcHJvcGVydHktdmlldz5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { MatIcon } from '@angular/material/icon';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class PropertyViewComponent {
7
+ constructor() {
8
+ this.text = "";
9
+ this.propertyDetails = {
10
+ propertyImage: ["https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png", "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png", "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/815921c1739254843186image%20%285%29.png"],
11
+ propertyName: "Ananta One - Blue Moon",
12
+ propertyLocation: "RRR Hyderabad, Telangana",
13
+ investedDate: "12 Jun 2024",
14
+ type: "Rental",
15
+ share: "1.40%",
16
+ documents: ["Title deed", "Property Registration Certificate"],
17
+ description: "Ananta one Apartments is a premium residential development located in the bustling heart of hyderabad. It offers modern amenities and a luxurious lifestyle designed to meet the needs of urban families and professionals.",
18
+ managedBy: [{ img: "https://media.istockphoto.com/id/1410538853/photo/young-man-in-the-public-park.jpg?s=612x612&w=0&k=20&c=EtRJGnNOFPJ2HniBSLWKzsL9Xf7GHinHd5y2Tx3da0E=", name: "Vijay Shankar", role: "Property Manager" }, { img: "https://t3.ftcdn.net/jpg/01/86/40/16/360_F_186401650_6tXxwc5x3pwuA9bYjJG65l9pCFRIAu06.jpg", name: "Sanjana", role: "Operational Manager" }],
19
+ invested: "₹4.1 L",
20
+ totalSqft: "32",
21
+ irr: "12%",
22
+ imv: "₹4.1 L",
23
+ income: "+₹52 k",
24
+ projectedValue: "₹5.21 L",
25
+ potentialApperciation: "8%",
26
+ guaranteedGrowth: "5%",
27
+ marketMovement: "High"
28
+ };
29
+ }
30
+ ngOnInit() {
31
+ console.log(this.text);
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: PropertyViewComponent, isStandalone: true, selector: "simpo-property-view", inputs: { text: "text" }, ngImport: i0, template: "<div class=\"main-container w-100 d-flex gap-10\">\r\n <div class=\"left-container w-60\">\r\n <div class=\"property-detail common-style1\">\r\n <div id=\"carouselExampleInterval\" class=\"carousel slide p-relative w-35\" data-bs-ride=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <ng-container *ngFor=\"let ele of propertyDetails.propertyImage;let i = index\">\r\n <div class=\"carousel-item active\" [class.active]=\"i\" data-bs-interval=\"3000\">\r\n <img [src]=\"ele\" class=\"d-block w-100 height-30 br-10\" alt=\"property-image\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"propertyName d-flex justify-content-center\">\r\n <div class=\"carousel d-flex justify-content-end align-items-end\">\r\n <div class=\"carousel-indicators additional-properties-1\">\r\n <ng-container *ngFor=\"let ele of propertyDetails.propertyImage;let i = index\">\r\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\"\r\n [attr.data-bs-slide-to]=\"i\" class=\"active additional-properties\" aria-current=\"true\"\r\n aria-label=\"Slide 1\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"details mt-10\">\r\n <div class=\"top-details d-flex justify-content-between\">\r\n <div class=\"top-left\">\r\n <div class=\"main-text\">{{propertyDetails.propertyName}}</div>\r\n <div class=\"span-text\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/384275c1737629729545location_on.png\"\r\n alt=\"location image\" width=\"15px\">RRR Hyderabad, Telangana</div>\r\n </div>\r\n <div class=\"top-right d-flex gap-10\">\r\n <div class=\"buy-more common-style2\">\r\n Buy More SQFT\r\n </div>\r\n <div class=\"sell common-style2\">\r\n Sell SQFT\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bottom-details d-flex gap-10 mt-10 justify-content-center\">\r\n <div class=\"left-right d-flex gap-10\">\r\n <div class=\"left\">Invested Date</div>\r\n <div class=\"right\">{{propertyDetails.investedDate}}</div>\r\n </div>\r\n <div class=\"left-right d-flex gap-10\">\r\n <div class=\"left\">Property Type</div>\r\n <div class=\"right\">{{propertyDetails.type}}</div>\r\n </div>\r\n <div class=\"left-right d-flex gap-10\">\r\n <div class=\"left\">Ownership Share</div>\r\n <div class=\"right\">{{propertyDetails.share}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"common-style1\">\r\n <div class=\"head-about-property\">Documents & Reports</div>\r\n <div class=\"file-container d-flex justify-content-between gap-10\">\r\n <div class=\"file d-flex justify-content-between\" *ngFor=\"let ele of propertyDetails.documents\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/678394c1739183726107image%209.png\"\r\n alt=\"pdf\">\r\n <div class=\"doc-text w-75 d-flex align-items-center\"> {{ele.length > 15 ?\r\n ele.substring(0,15)+'...' : ele }}</div>\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/195414c1739183779845fi_3502477.png\"\r\n alt=\"download\" class=\"download-img\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"common-style1\">\r\n <div class=\"head-about-property\">About Property</div>\r\n <div class=\"about-property-text\">{{propertyDetails.description}}</div>\r\n <div class=\"head-about-property\">Property Managed by</div>\r\n <div class=\"managed-cards d-flex gap-10 w-100\">\r\n <div class=\"card-container br-10\" *ngFor=\"let ele of propertyDetails.managedBy\">\r\n <div class=\"img-container d-flex justify-content-center\">\r\n <img [src]=\"ele.img\" alt=\"Manager Image\" class=\"manage-img\">\r\n </div>\r\n <div class=\"card-details\">\r\n <p class=\"name-text text-center mt-10\">{{ele.name}}</p>\r\n <p class=\"role-text text-center\">{{ele.role}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right-container w-40\">\r\n <div class=\"right-content\">\r\n <div class=\"right-head\">Holdings Details</div>\r\n <div class=\"holding-details common-style3\">\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.invested}}</div>\r\n <div class=\"bottom\">Invested</div>\r\n </div>\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.totalSqft}}</div>\r\n <div class=\"bottom\">Sq.ft</div>\r\n </div>\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.irr}}</div>\r\n <div class=\"bottom\">Indicative Market Value</div>\r\n </div>\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.imv}}</div>\r\n <div class=\"bottom\">Internal Returns Rate</div>\r\n </div>\r\n </div>\r\n <div class=\"income br-0-10\">\r\n <div class=\"left-right-1\">\r\n <div class=\"left-1\">Profit/Loss</div><div class=\"right-1\">{{propertyDetails.income}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right-content\">\r\n <div class=\"right-head\">Financial Projections</div>\r\n <div class=\"financial-details common-style3 br-0-10\">\r\n <div class=\"right-left-1 d-flex justify-content-between mb-3\">\r\n <div class=\"left-2\">Projected Value (Next Year)</div><div class=\"right-2\">{{propertyDetails.projectedValue}}</div>\r\n </div>\r\n <div class=\"right-left-1 d-flex justify-content-between mb-3\">\r\n <div class=\"left-2\">Potential Appreciation</div><div class=\"right-2\">{{propertyDetails.potentialApperciation}}</div>\r\n </div>\r\n <div class=\"right-left-1 d-flex justify-content-between mb-3\">\r\n <div class=\"left-2\">Guaranteed Growth</div><div class=\"right-2\">{{propertyDetails.guaranteedGrowth}}</div>\r\n </div>\r\n <div class=\"note-section\">\r\n Note: Above projection are based on past performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["*{font-family:DM Sans!important}mat-icon{font-family:Material Icons!important}.main-container{padding:10px}.left-container,.right-container{height:75vh;overflow-y:scroll}.w-60{width:60%}.w-40{width:40%}.additional-properties{border-radius:50%;height:1vh;width:8px!important}.additional-properties-1{position:unset!important;padding:unset!important;margin:unset!important;width:100%}.p-relative{position:relative}.propertyName{position:absolute;bottom:0;width:100%}.br-10{border-radius:10px}.common-style1{padding:10px;border-radius:10px;background:#fff;margin-bottom:10px}.mt-10{margin-top:10px!important}.main-text{font-weight:600;font-size:18px;line-height:24px;color:#000}.span-text{font-size:14px;font-weight:500;line-height:44px;color:#00000080}.gap-10{gap:10px}.common-style2{padding:10px;border-radius:10px;font-size:14px;line-height:24px;font-weight:600;height:6vh;align-content:center}.buy-more{background:#36b37e;color:#fff}.sell{background:#ffcfc6;color:#f36f56}.left{font-size:14px;line-height:18px;font-weight:500;color:#01161ecc}.right{font-size:14px;line-height:20px;font-weight:600;color:#01161e}.head-about-property{font-weight:600;font-size:16px;line-height:26px;margin-bottom:10px}.file{background:#f7f7f7;border-radius:5px;padding:12px;width:50%}.doc-text{font-size:16px;font-weight:500;line-height:26px;color:#000}.about-property-text{font-weight:400;font-size:16px;line-height:29px;color:#01161eb3}.manage-img{width:70px;height:10vh;border-radius:50%}.card-container{background:#f7f7f7;padding:10px}.name-text{font-size:14px;line-height:24px;font-weight:500;color:#000}.role-text{font-size:14px;font-weight:400;line-height:24px;color:#000000b3}.managed-cards{overflow-x:scroll}.right-content{border:1px solid rgba(0,0,0,.03);border-radius:10px;margin-bottom:15px}.right-head{font-weight:600;font-size:16px;line-height:21px;color:#000;padding:10px}.holding-details{display:grid;grid-template-columns:50% 50%;gap:10px}.top-bottom{padding:10px}.top{font-size:20px;font-weight:700;line-height:24px;color:#000}.bottom{font-size:14px;font-weight:500;line-height:24px;color:#000000b3}.income{background:#fff;padding:10px}.left-right-1{background:linear-gradient(180deg,#0d1b2a,#172b40);display:flex;justify-content:space-between;padding:15px;border-radius:10px}.left-1{font-size:16px;font-weight:700;line-height:24px;color:#fff}.right-1{font-weight:800;font-size:20px;line-height:24px;color:#32f4a2}.left-2{font-size:14px;line-height:20px;font-weight:500;color:#000000b3}.right-2{font-size:20px;line-height:24px;font-weight:700;color:#000}.note-section{font-size:14px;line-height:20px;font-weight:500;color:#01161e66}.common-style3{padding:10px;background:#fff}.br-0-10{border-radius:0 0 10px 10px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: PropertyViewComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'simpo-property-view', standalone: true, imports: [CommonModule, MatIcon], template: "<div class=\"main-container w-100 d-flex gap-10\">\r\n <div class=\"left-container w-60\">\r\n <div class=\"property-detail common-style1\">\r\n <div id=\"carouselExampleInterval\" class=\"carousel slide p-relative w-35\" data-bs-ride=\"carousel\">\r\n <div class=\"carousel-inner\">\r\n <ng-container *ngFor=\"let ele of propertyDetails.propertyImage;let i = index\">\r\n <div class=\"carousel-item active\" [class.active]=\"i\" data-bs-interval=\"3000\">\r\n <img [src]=\"ele\" class=\"d-block w-100 height-30 br-10\" alt=\"property-image\">\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"propertyName d-flex justify-content-center\">\r\n <div class=\"carousel d-flex justify-content-end align-items-end\">\r\n <div class=\"carousel-indicators additional-properties-1\">\r\n <ng-container *ngFor=\"let ele of propertyDetails.propertyImage;let i = index\">\r\n <button type=\"button\" data-bs-target=\"#carouselExampleInterval\"\r\n [attr.data-bs-slide-to]=\"i\" class=\"active additional-properties\" aria-current=\"true\"\r\n aria-label=\"Slide 1\"></button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"details mt-10\">\r\n <div class=\"top-details d-flex justify-content-between\">\r\n <div class=\"top-left\">\r\n <div class=\"main-text\">{{propertyDetails.propertyName}}</div>\r\n <div class=\"span-text\"><img\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/384275c1737629729545location_on.png\"\r\n alt=\"location image\" width=\"15px\">RRR Hyderabad, Telangana</div>\r\n </div>\r\n <div class=\"top-right d-flex gap-10\">\r\n <div class=\"buy-more common-style2\">\r\n Buy More SQFT\r\n </div>\r\n <div class=\"sell common-style2\">\r\n Sell SQFT\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bottom-details d-flex gap-10 mt-10 justify-content-center\">\r\n <div class=\"left-right d-flex gap-10\">\r\n <div class=\"left\">Invested Date</div>\r\n <div class=\"right\">{{propertyDetails.investedDate}}</div>\r\n </div>\r\n <div class=\"left-right d-flex gap-10\">\r\n <div class=\"left\">Property Type</div>\r\n <div class=\"right\">{{propertyDetails.type}}</div>\r\n </div>\r\n <div class=\"left-right d-flex gap-10\">\r\n <div class=\"left\">Ownership Share</div>\r\n <div class=\"right\">{{propertyDetails.share}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"common-style1\">\r\n <div class=\"head-about-property\">Documents & Reports</div>\r\n <div class=\"file-container d-flex justify-content-between gap-10\">\r\n <div class=\"file d-flex justify-content-between\" *ngFor=\"let ele of propertyDetails.documents\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/678394c1739183726107image%209.png\"\r\n alt=\"pdf\">\r\n <div class=\"doc-text w-75 d-flex align-items-center\"> {{ele.length > 15 ?\r\n ele.substring(0,15)+'...' : ele }}</div>\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/195414c1739183779845fi_3502477.png\"\r\n alt=\"download\" class=\"download-img\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"common-style1\">\r\n <div class=\"head-about-property\">About Property</div>\r\n <div class=\"about-property-text\">{{propertyDetails.description}}</div>\r\n <div class=\"head-about-property\">Property Managed by</div>\r\n <div class=\"managed-cards d-flex gap-10 w-100\">\r\n <div class=\"card-container br-10\" *ngFor=\"let ele of propertyDetails.managedBy\">\r\n <div class=\"img-container d-flex justify-content-center\">\r\n <img [src]=\"ele.img\" alt=\"Manager Image\" class=\"manage-img\">\r\n </div>\r\n <div class=\"card-details\">\r\n <p class=\"name-text text-center mt-10\">{{ele.name}}</p>\r\n <p class=\"role-text text-center\">{{ele.role}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right-container w-40\">\r\n <div class=\"right-content\">\r\n <div class=\"right-head\">Holdings Details</div>\r\n <div class=\"holding-details common-style3\">\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.invested}}</div>\r\n <div class=\"bottom\">Invested</div>\r\n </div>\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.totalSqft}}</div>\r\n <div class=\"bottom\">Sq.ft</div>\r\n </div>\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.irr}}</div>\r\n <div class=\"bottom\">Indicative Market Value</div>\r\n </div>\r\n <div class=\"top-bottom\">\r\n <div class=\"top\">{{propertyDetails.imv}}</div>\r\n <div class=\"bottom\">Internal Returns Rate</div>\r\n </div>\r\n </div>\r\n <div class=\"income br-0-10\">\r\n <div class=\"left-right-1\">\r\n <div class=\"left-1\">Profit/Loss</div><div class=\"right-1\">{{propertyDetails.income}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right-content\">\r\n <div class=\"right-head\">Financial Projections</div>\r\n <div class=\"financial-details common-style3 br-0-10\">\r\n <div class=\"right-left-1 d-flex justify-content-between mb-3\">\r\n <div class=\"left-2\">Projected Value (Next Year)</div><div class=\"right-2\">{{propertyDetails.projectedValue}}</div>\r\n </div>\r\n <div class=\"right-left-1 d-flex justify-content-between mb-3\">\r\n <div class=\"left-2\">Potential Appreciation</div><div class=\"right-2\">{{propertyDetails.potentialApperciation}}</div>\r\n </div>\r\n <div class=\"right-left-1 d-flex justify-content-between mb-3\">\r\n <div class=\"left-2\">Guaranteed Growth</div><div class=\"right-2\">{{propertyDetails.guaranteedGrowth}}</div>\r\n </div>\r\n <div class=\"note-section\">\r\n Note: Above projection are based on past performance\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["*{font-family:DM Sans!important}mat-icon{font-family:Material Icons!important}.main-container{padding:10px}.left-container,.right-container{height:75vh;overflow-y:scroll}.w-60{width:60%}.w-40{width:40%}.additional-properties{border-radius:50%;height:1vh;width:8px!important}.additional-properties-1{position:unset!important;padding:unset!important;margin:unset!important;width:100%}.p-relative{position:relative}.propertyName{position:absolute;bottom:0;width:100%}.br-10{border-radius:10px}.common-style1{padding:10px;border-radius:10px;background:#fff;margin-bottom:10px}.mt-10{margin-top:10px!important}.main-text{font-weight:600;font-size:18px;line-height:24px;color:#000}.span-text{font-size:14px;font-weight:500;line-height:44px;color:#00000080}.gap-10{gap:10px}.common-style2{padding:10px;border-radius:10px;font-size:14px;line-height:24px;font-weight:600;height:6vh;align-content:center}.buy-more{background:#36b37e;color:#fff}.sell{background:#ffcfc6;color:#f36f56}.left{font-size:14px;line-height:18px;font-weight:500;color:#01161ecc}.right{font-size:14px;line-height:20px;font-weight:600;color:#01161e}.head-about-property{font-weight:600;font-size:16px;line-height:26px;margin-bottom:10px}.file{background:#f7f7f7;border-radius:5px;padding:12px;width:50%}.doc-text{font-size:16px;font-weight:500;line-height:26px;color:#000}.about-property-text{font-weight:400;font-size:16px;line-height:29px;color:#01161eb3}.manage-img{width:70px;height:10vh;border-radius:50%}.card-container{background:#f7f7f7;padding:10px}.name-text{font-size:14px;line-height:24px;font-weight:500;color:#000}.role-text{font-size:14px;font-weight:400;line-height:24px;color:#000000b3}.managed-cards{overflow-x:scroll}.right-content{border:1px solid rgba(0,0,0,.03);border-radius:10px;margin-bottom:15px}.right-head{font-weight:600;font-size:16px;line-height:21px;color:#000;padding:10px}.holding-details{display:grid;grid-template-columns:50% 50%;gap:10px}.top-bottom{padding:10px}.top{font-size:20px;font-weight:700;line-height:24px;color:#000}.bottom{font-size:14px;font-weight:500;line-height:24px;color:#000000b3}.income{background:#fff;padding:10px}.left-right-1{background:linear-gradient(180deg,#0d1b2a,#172b40);display:flex;justify-content:space-between;padding:15px;border-radius:10px}.left-1{font-size:16px;font-weight:700;line-height:24px;color:#fff}.right-1{font-weight:800;font-size:20px;line-height:24px;color:#32f4a2}.left-2{font-size:14px;line-height:20px;font-weight:500;color:#000000b3}.right-2{font-size:20px;line-height:24px;font-weight:700;color:#000}.note-section{font-size:14px;line-height:20px;font-weight:500;color:#01161e66}.common-style3{padding:10px;background:#fff}.br-0-10{border-radius:0 0 10px 10px!important}\n"] }]
39
+ }], propDecorators: { text: [{
40
+ type: Input
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3Byb3BlcnR5LXZpZXcvcHJvcGVydHktdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3Byb3BlcnR5LXZpZXcvcHJvcGVydHktdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFTakQsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQVNZLFNBQUksR0FBWSxFQUFFLENBQUE7UUFNNUIsb0JBQWUsR0FBUztZQUN0QixhQUFhLEVBQUssQ0FBQyxvR0FBb0csRUFBQyxvR0FBb0csRUFBQyxvR0FBb0csQ0FBQztZQUNsVSxZQUFZLEVBQUcsd0JBQXdCO1lBQ3ZDLGdCQUFnQixFQUFHLDBCQUEwQjtZQUM3QyxZQUFZLEVBQUcsYUFBYTtZQUM1QixJQUFJLEVBQUcsUUFBUTtZQUNmLEtBQUssRUFBRyxPQUFPO1lBQ2YsU0FBUyxFQUFHLENBQUMsWUFBWSxFQUFDLG1DQUFtQyxDQUFDO1lBQzlELFdBQVcsRUFBRyw2TkFBNk47WUFDM08sU0FBUyxFQUFHLENBQUMsRUFBQyxHQUFHLEVBQUcsc0pBQXNKLEVBQUMsSUFBSSxFQUFHLGVBQWUsRUFBQyxJQUFJLEVBQUcsa0JBQWtCLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBRywyRkFBMkYsRUFBQyxJQUFJLEVBQUcsU0FBUyxFQUFDLElBQUksRUFBRyxxQkFBcUIsRUFBQyxDQUFDO1lBQy9XLFFBQVEsRUFBRyxRQUFRO1lBQ25CLFNBQVMsRUFBRyxJQUFJO1lBQ2hCLEdBQUcsRUFBRyxLQUFLO1lBQ1gsR0FBRyxFQUFHLFFBQVE7WUFDZCxNQUFNLEVBQUcsUUFBUTtZQUNqQixjQUFjLEVBQUcsU0FBUztZQUMxQixxQkFBcUIsRUFBRyxJQUFJO1lBQzVCLGdCQUFnQixFQUFHLElBQUk7WUFDdkIsY0FBYyxFQUFHLE1BQU07U0FDeEIsQ0FBQTtLQUlGO0lBM0JDLFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QixDQUFDOzhHQU5VLHFCQUFxQjtrR0FBckIscUJBQXFCLHlHQ1hsQyw0clBBbUlNLDh0RkQ1SE0sWUFBWTs7MkZBSVgscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUMsT0FBTyxDQUFDOzhCQU1yQixJQUFJO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvcGVydHktdmlldycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLE1hdEljb25dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJvcGVydHktdmlldy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlWaWV3Q29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgIHRleHQgOiBzdHJpbmcgPSBcIlwiXHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnRleHQpXHJcbiAgfVxyXG5cclxuICBwcm9wZXJ0eURldGFpbHMgOiBhbnkgPSB7XHJcbiAgICBwcm9wZXJ0eUltYWdlICA6ICBbXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzgxNTkyMWMxNzM5MjU0ODQzMTg2aW1hZ2UlMjAlMjg1JTI5LnBuZ1wiLFwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy84MTU5MjFjMTczOTI1NDg0MzE4NmltYWdlJTIwJTI4NSUyOS5wbmdcIixcImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvODE1OTIxYzE3MzkyNTQ4NDMxODZpbWFnZSUyMCUyODUlMjkucG5nXCJdLFxyXG4gICAgcHJvcGVydHlOYW1lIDogXCJBbmFudGEgT25lIC0gQmx1ZSBNb29uXCIsXHJcbiAgICBwcm9wZXJ0eUxvY2F0aW9uIDogXCJSUlIgSHlkZXJhYmFkLCBUZWxhbmdhbmFcIixcclxuICAgIGludmVzdGVkRGF0ZSA6IFwiMTIgSnVuIDIwMjRcIixcclxuICAgIHR5cGUgOiBcIlJlbnRhbFwiLFxyXG4gICAgc2hhcmUgOiBcIjEuNDAlXCIsXHJcbiAgICBkb2N1bWVudHMgOiBbXCJUaXRsZSBkZWVkXCIsXCJQcm9wZXJ0eSBSZWdpc3RyYXRpb24gQ2VydGlmaWNhdGVcIl0sXHJcbiAgICBkZXNjcmlwdGlvbiA6IFwiQW5hbnRhIG9uZSBBcGFydG1lbnRzIGlzIGEgcHJlbWl1bSByZXNpZGVudGlhbCBkZXZlbG9wbWVudCBsb2NhdGVkIGluIHRoZSBidXN0bGluZyBoZWFydCBvZiBoeWRlcmFiYWQuIEl0IG9mZmVycyBtb2Rlcm4gYW1lbml0aWVzIGFuZCBhIGx1eHVyaW91cyBsaWZlc3R5bGUgZGVzaWduZWQgdG8gbWVldCB0aGUgbmVlZHMgb2YgdXJiYW4gZmFtaWxpZXMgYW5kIHByb2Zlc3Npb25hbHMuXCIsXHJcbiAgICBtYW5hZ2VkQnkgOiBbe2ltZyA6IFwiaHR0cHM6Ly9tZWRpYS5pc3RvY2twaG90by5jb20vaWQvMTQxMDUzODg1My9waG90by95b3VuZy1tYW4taW4tdGhlLXB1YmxpYy1wYXJrLmpwZz9zPTYxMng2MTImdz0wJms9MjAmYz1FdFJKR25OT0ZQSjJIbmlCU0xXS3pzTDlYZjdHSGluSGQ1eTJUeDNkYTBFPVwiLG5hbWUgOiBcIlZpamF5IFNoYW5rYXJcIixyb2xlIDogXCJQcm9wZXJ0eSBNYW5hZ2VyXCJ9LHtpbWcgOiBcImh0dHBzOi8vdDMuZnRjZG4ubmV0L2pwZy8wMS84Ni80MC8xNi8zNjBfRl8xODY0MDE2NTBfNnRYeHdjNXgzcHd1QTliWWpKRzY1bDlwQ0ZSSUF1MDYuanBnXCIsbmFtZSA6IFwiU2FuamFuYVwiLHJvbGUgOiBcIk9wZXJhdGlvbmFsIE1hbmFnZXJcIn1dLFxyXG4gICAgaW52ZXN0ZWQgOiBcIuKCuTQuMSBMXCIsXHJcbiAgICB0b3RhbFNxZnQgOiBcIjMyXCIsXHJcbiAgICBpcnIgOiBcIjEyJVwiLFxyXG4gICAgaW12IDogXCLigrk0LjEgTFwiLFxyXG4gICAgaW5jb21lIDogXCIr4oK5NTIga1wiLFxyXG4gICAgcHJvamVjdGVkVmFsdWUgOiBcIuKCuTUuMjEgTFwiLFxyXG4gICAgcG90ZW50aWFsQXBwZXJjaWF0aW9uIDogXCI4JVwiLFxyXG4gICAgZ3VhcmFudGVlZEdyb3d0aCA6IFwiNSVcIixcclxuICAgIG1hcmtldE1vdmVtZW50IDogXCJIaWdoXCJcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tY29udGFpbmVyIHctMTAwIGQtZmxleCBnYXAtMTBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWNvbnRhaW5lciB3LTYwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWRldGFpbCBjb21tb24tc3R5bGUxXCI+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJjYXJvdXNlbEV4YW1wbGVJbnRlcnZhbFwiIGNsYXNzPVwiY2Fyb3VzZWwgc2xpZGUgcC1yZWxhdGl2ZSB3LTM1XCIgZGF0YS1icy1yaWRlPVwiY2Fyb3VzZWxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZSBvZiBwcm9wZXJ0eURldGFpbHMucHJvcGVydHlJbWFnZTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtIGFjdGl2ZVwiIFtjbGFzcy5hY3RpdmVdPVwiaVwiIGRhdGEtYnMtaW50ZXJ2YWw9XCIzMDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZWxlXCIgY2xhc3M9XCJkLWJsb2NrIHctMTAwIGhlaWdodC0zMCBici0xMFwiIGFsdD1cInByb3BlcnR5LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHlOYW1lIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9ycyBhZGRpdGlvbmFsLXByb3BlcnRpZXMtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWxlIG9mIHByb3BlcnR5RGV0YWlscy5wcm9wZXJ0eUltYWdlO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRhcmdldD1cIiNjYXJvdXNlbEV4YW1wbGVJbnRlcnZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYnMtc2xpZGUtdG9dPVwiaVwiIGNsYXNzPVwiYWN0aXZlIGFkZGl0aW9uYWwtcHJvcGVydGllc1wiIGFyaWEtY3VycmVudD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2xpZGUgMVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscyBtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1kZXRhaWxzIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi10ZXh0XCI+e3twcm9wZXJ0eURldGFpbHMucHJvcGVydHlOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYW4tdGV4dFwiPjxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzM4NDI3NWMxNzM3NjI5NzI5NTQ1bG9jYXRpb25fb24ucG5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJsb2NhdGlvbiBpbWFnZVwiIHdpZHRoPVwiMTVweFwiPlJSUiBIeWRlcmFiYWQsIFRlbGFuZ2FuYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtcmlnaHQgZC1mbGV4IGdhcC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV5LW1vcmUgY29tbW9uLXN0eWxlMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnV5IE1vcmUgU1FGVFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGwgY29tbW9uLXN0eWxlMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsbCBTUUZUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRldGFpbHMgZC1mbGV4IGdhcC0xMCBtdC0xMCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtcmlnaHQgZC1mbGV4IGdhcC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPkludmVzdGVkIERhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+e3twcm9wZXJ0eURldGFpbHMuaW52ZXN0ZWREYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1yaWdodCBkLWZsZXggZ2FwLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+UHJvcGVydHkgVHlwZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj57e3Byb3BlcnR5RGV0YWlscy50eXBlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1yaWdodCBkLWZsZXggZ2FwLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+T3duZXJzaGlwIFNoYXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPnt7cHJvcGVydHlEZXRhaWxzLnNoYXJlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbW9uLXN0eWxlMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1hYm91dC1wcm9wZXJ0eVwiPkRvY3VtZW50cyAmIFJlcG9ydHM8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0Zvcj1cImxldCBlbGUgb2YgcHJvcGVydHlEZXRhaWxzLmRvY3VtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy82NzgzOTRjMTczOTE4MzcyNjEwN2ltYWdlJTIwOS5wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJwZGZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXRleHQgdy03NSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+IHt7ZWxlLmxlbmd0aCA+IDE1ID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnN1YnN0cmluZygwLDE1KSsnLi4uJyA6IGVsZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8xOTU0MTRjMTczOTE4Mzc3OTg0NWZpXzM1MDI0NzcucG5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZG93bmxvYWRcIiBjbGFzcz1cImRvd25sb2FkLWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21tb24tc3R5bGUxXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWFib3V0LXByb3BlcnR5XCI+QWJvdXQgUHJvcGVydHk8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXByb3BlcnR5LXRleHRcIj57e3Byb3BlcnR5RGV0YWlscy5kZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWFib3V0LXByb3BlcnR5XCI+UHJvcGVydHkgTWFuYWdlZCBieTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFuYWdlZC1jYXJkcyBkLWZsZXggZ2FwLTEwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250YWluZXIgYnItMTBcIiAqbmdGb3I9XCJsZXQgZWxlIG9mIHByb3BlcnR5RGV0YWlscy5tYW5hZ2VkQnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZWxlLmltZ1wiIGFsdD1cIk1hbmFnZXIgSW1hZ2VcIiBjbGFzcz1cIm1hbmFnZS1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibmFtZS10ZXh0IHRleHQtY2VudGVyIG10LTEwXCI+e3tlbGUubmFtZX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJvbGUtdGV4dCB0ZXh0LWNlbnRlclwiPnt7ZWxlLnJvbGV9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbnRhaW5lciB3LTQwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWhlYWRcIj5Ib2xkaW5ncyBEZXRhaWxzPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob2xkaW5nLWRldGFpbHMgY29tbW9uLXN0eWxlM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wXCI+e3twcm9wZXJ0eURldGFpbHMuaW52ZXN0ZWR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b21cIj5JbnZlc3RlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BcIj57e3Byb3BlcnR5RGV0YWlscy50b3RhbFNxZnR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b21cIj5TcS5mdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BcIj57e3Byb3BlcnR5RGV0YWlscy5pcnJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b21cIj5JbmRpY2F0aXZlIE1hcmtldCBWYWx1ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BcIj57e3Byb3BlcnR5RGV0YWlscy5pbXZ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b21cIj5JbnRlcm5hbCBSZXR1cm5zIFJhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluY29tZSBici0wLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1yaWdodC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQtMVwiPlByb2ZpdC9Mb3NzPC9kaXY+PGRpdiBjbGFzcz1cInJpZ2h0LTFcIj57e3Byb3BlcnR5RGV0YWlscy5pbmNvbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1oZWFkXCI+RmluYW5jaWFsIFByb2plY3Rpb25zPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaW5hbmNpYWwtZGV0YWlscyBjb21tb24tc3R5bGUzIGJyLTAtMTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1sZWZ0LTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC0yXCI+UHJvamVjdGVkIFZhbHVlIChOZXh0IFllYXIpPC9kaXY+PGRpdiBjbGFzcz1cInJpZ2h0LTJcIj57e3Byb3BlcnR5RGV0YWlscy5wcm9qZWN0ZWRWYWx1ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1sZWZ0LTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC0yXCI+UG90ZW50aWFsIEFwcHJlY2lhdGlvbjwvZGl2PjxkaXYgY2xhc3M9XCJyaWdodC0yXCI+e3twcm9wZXJ0eURldGFpbHMucG90ZW50aWFsQXBwZXJjaWF0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWxlZnQtMSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LTJcIj5HdWFyYW50ZWVkIEdyb3d0aDwvZGl2PjxkaXYgY2xhc3M9XCJyaWdodC0yXCI+e3twcm9wZXJ0eURldGFpbHMuZ3VhcmFudGVlZEdyb3d0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RlLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICBOb3RlOiBBYm92ZSBwcm9qZWN0aW9uIGFyZSBiYXNlZCBvbiBwYXN0IHBlcmZvcm1hbmNlXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -0,0 +1,163 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Optional } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MessageService } from 'primeng/api';
6
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
7
+ import { ToastModule } from 'primeng/toast';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../services/rest.service";
10
+ import * as i2 from "primeng/api";
11
+ import * as i3 from "@angular/router";
12
+ import * as i4 from "@angular/material/dialog";
13
+ import * as i5 from "@angular/material/icon";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "@angular/forms";
16
+ import * as i8 from "@angular/material/progress-spinner";
17
+ import * as i9 from "primeng/toast";
18
+ export class KycDetailsComponent {
19
+ constructor(restService, messageService, router, dialogRef) {
20
+ this.restService = restService;
21
+ this.messageService = messageService;
22
+ this.router = router;
23
+ this.dialogRef = dialogRef;
24
+ this.panRequest = {
25
+ panNumber: ''
26
+ };
27
+ this.aadharRequest = {
28
+ aadhaarNumber: ''
29
+ };
30
+ this.verifyAadharRequest = {
31
+ otp: '',
32
+ refId: '',
33
+ aadhaarNumber: ''
34
+ };
35
+ this.aadharOtpArray = new Array(6).fill('');
36
+ this.isPanVerified = false;
37
+ this.isAadharverified = false;
38
+ this.aadharOtpSent = false;
39
+ this.panVerifyLoader = false;
40
+ this.aadharVerifyLoader = false;
41
+ }
42
+ ngOnInit() {
43
+ this.getKycDetails();
44
+ }
45
+ ngOnDestroy() {
46
+ this.kycDetailsSubscription?.unsubscribe();
47
+ }
48
+ getKycDetails() {
49
+ this.kycDetailsSubscription = this.restService.getKycDetails().subscribe((res) => {
50
+ if (res.message) {
51
+ this.isPanVerified = res.message.panVerified === 'VALID';
52
+ this.isAadharverified = res.message.aadhaarVerified === 'VALID';
53
+ this.aadharRequest.aadhaarNumber = res.message.aadharNo;
54
+ this.panRequest.panNumber = res.message.panNo;
55
+ }
56
+ }, (err) => {
57
+ });
58
+ }
59
+ verifyPanNumber() {
60
+ this.panVerifyLoader = true;
61
+ if (!this.validatePan()) {
62
+ this.messageService.add({
63
+ severity: 'error',
64
+ summary: 'Pan Number',
65
+ detail: 'Enter valid PAN number'
66
+ });
67
+ this.panVerifyLoader = false;
68
+ return;
69
+ }
70
+ this.restService.verifyPan(this.panRequest).subscribe((res) => {
71
+ this.isPanVerified = true;
72
+ this.restService.kycDetails = null;
73
+ this.panVerifyLoader = false;
74
+ ;
75
+ this.checkKycVerification();
76
+ }, () => {
77
+ this.panVerifyLoader = false;
78
+ });
79
+ }
80
+ validatePan() {
81
+ const panRegex = /^[A-Z]{5}[0-9]{4}[A-Z]$/;
82
+ return panRegex.test(this.panRequest.panNumber);
83
+ }
84
+ sendAadharOtp() {
85
+ this.aadharVerifyLoader = true;
86
+ if (!this.validateAadhaar()) {
87
+ this.messageService.add({
88
+ severity: 'error',
89
+ summary: 'Aadhar Number',
90
+ detail: 'Enter valid Aadhar number'
91
+ });
92
+ this.aadharVerifyLoader = false;
93
+ return;
94
+ }
95
+ this.restService.sendAadharOtp(this.aadharRequest).subscribe((res) => {
96
+ this.aadharOtpSent = true;
97
+ this.messageService.add({
98
+ severity: 'success',
99
+ summary: 'OTP Sent',
100
+ detail: 'AAdhar OTP Sent in registered mobile number'
101
+ });
102
+ this.aadharVerifyLoader = false;
103
+ this.verifyAadharRequest.refId = res.message?.ref_id;
104
+ }, () => {
105
+ this.aadharVerifyLoader = false;
106
+ });
107
+ }
108
+ verifyAadharOtp() {
109
+ this.aadharVerifyLoader = true;
110
+ this.verifyAadharRequest.otp = "";
111
+ this.aadharOtpArray.forEach((otp) => {
112
+ this.verifyAadharRequest.otp += otp;
113
+ });
114
+ this.verifyAadharRequest.aadhaarNumber = this.aadharRequest.aadhaarNumber;
115
+ this.restService.verifyAadharOtp(this.verifyAadharRequest).subscribe((res) => {
116
+ this.isAadharverified = true;
117
+ this.restService.kycDetails = null;
118
+ this.aadharVerifyLoader = false;
119
+ this.checkKycVerification();
120
+ }, () => {
121
+ this.aadharVerifyLoader = false;
122
+ });
123
+ }
124
+ validateAadhaar() {
125
+ const aadhaarRegex = /^[2-9]{1}[0-9]{11}$/;
126
+ return aadhaarRegex.test(this.aadharRequest.aadhaarNumber);
127
+ }
128
+ moveAadharOtpCursor(event, idx) {
129
+ if (isNaN(Number(event.key)) && event.code != "Backspace")
130
+ return;
131
+ if (event.code != "Backspace") {
132
+ this.aadharOtpArray[idx] = event.key;
133
+ document.getElementById("aadharOtp_" + (idx + 1))?.focus();
134
+ }
135
+ if (event.code == "Backspace" && !this.aadharOtpArray[idx]) {
136
+ document.getElementById("aadharOtp_" + (idx - 1))?.focus();
137
+ }
138
+ }
139
+ checkKycVerification() {
140
+ if (this.isAadharverified && this.isPanVerified) {
141
+ document.getElementById('closeKycCanvas')?.click();
142
+ this.dialogRef?.close();
143
+ }
144
+ }
145
+ closeDialog() {
146
+ this.dialogRef?.close();
147
+ }
148
+ redirectToProductList() {
149
+ this.router.navigate(['property-list']);
150
+ }
151
+ get isMobile() {
152
+ return window.innerWidth <= 475;
153
+ }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: KycDetailsComponent, deps: [{ token: i1.RestService }, { token: i2.MessageService }, { token: i3.Router }, { token: i4.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: KycDetailsComponent, isStandalone: true, selector: "simpo-kyc-details", providers: [MessageService], ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n<section class=\"main-section\">\r\n <div class=\"display-center\" *ngIf=\"!(isPanVerified && isAadharverified)\">\r\n <img class=\"img\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/970332c1740030187726kyc.png\"\r\n alt=\"\">\r\n <div class=\"text-group\">\r\n <p class=\"heading\">Complete Your KYC to start Investing</p>\r\n <p class=\"desc\">Before you can invest, we need to verify your identity, simply upload your documents,\r\n <br> submit your KYC, and let us handle the rest\r\n </p>\r\n </div>\r\n <button class=\"submit-btn\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\">Submit KYC Now</button>\r\n </div>\r\n <div *ngIf=\"isPanVerified && isAadharverified\" class=\"display-center\">\r\n <div class=\"w-50\">\r\n <div class=\"secured\">\r\n <mat-icon>security</mat-icon>\r\n <p>Your Data is Safe & Secure</p>\r\n </div>\r\n\r\n <div class=\"mt-2\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">PAN Number</label>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" disabled>\r\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">Aadhar Number</label>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" disabled>\r\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-15 text-center\">\r\n <button class=\"submit-btn\" (click)=\"redirectToProductList()\">Let's Grow Wealth</button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<div class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\">\r\n <div class=\"header\">\r\n <p>KYC Details</p>\r\n </div>\r\n <div class=\"middle-section\">\r\n <div class=\"body\">\r\n <div class=\"secured\">\r\n <mat-icon>security</mat-icon>\r\n <p>Your Data is Safe & Secure</p>\r\n </div>\r\n\r\n <div class=\"mt-2\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">PAN Number</label>\r\n <p class=\"verify-text\" (click)=\"verifyPanNumber()\" *ngIf=\"!isPanVerified && !panVerifyLoader\">Verify</p>\r\n <div *ngIf=\"panVerifyLoader\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" [disabled]=\"isPanVerified\">\r\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"isPanVerified\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">Aadhar Number</label>\r\n <p class=\"verify-text\" (click)=\"sendAadharOtp()\" *ngIf=\"!aadharOtpSent && !aadharVerifyLoader\">Send OTP</p>\r\n <div *ngIf=\"aadharVerifyLoader && !aadharOtpSent\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" [disabled]=\"isAadharverified\">\r\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"aadharOtpSent\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\" *ngIf=\"aadharOtpSent\">\r\n <label for=\"\">Enter OTP</label>\r\n\r\n <div id=\"otp\" class=\"otp-input\">\r\n <ng-container *ngFor=\"let otp of [1,2,3,4,5,6]; let idx = index\">\r\n <input type=\"number\" max=\"9\" class=\"otp-input\" [(ngModel)]=\"aadharOtpArray[idx]\"\r\n (keyup)=\"moveAadharOtpCursor($event, idx)\" [id]=\"'aadharOtp_'+idx\" />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <button class=\"cancel-btn\" data-bs-dismiss=\"offcanvas\" id=\"closeKycCanvas\" (click)=\"closeDialog()\">Cancel</button>\r\n <button class=\"submit-btn\" *ngIf=\"aadharOtpSent && !aadharVerifyLoader\" (click)=\"verifyAadharOtp()\">Verify</button>\r\n <button class=\"d-flex submit-btn\" *ngIf=\"aadharVerifyLoader && aadharOtpSent\">\r\n <mat-spinner></mat-spinner> Verifying\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".main-section{height:100%;background:#fff;border-radius:10px}.display-center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.img{width:35%}.text-group{text-align:center;margin-top:3rem;margin-bottom:2rem}.heading{font-size:14px;font-family:DM SANS;font-weight:700;color:#000}.desc{font-size:14px;color:#0009;font-family:DM SANS;font-weight:500}.submit-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:#f8a938;color:#fff;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.cancel-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:transparent;color:#f8a938;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.header{padding:20px;border:1px solid rgba(14,35,60,.16);height:60px}.header p{font-size:17px;margin-bottom:0;font-weight:600;font-family:Inter}.middle-section{height:calc(100vh - 120px);overflow:scroll;background:#fcfcfc}.footer{position:absolute;bottom:0;height:60px;display:flex;align-items:center;justify-content:flex-end;border-top:1px solid rgba(14,35,60,.16);width:100%;padding:20px;gap:14px}.mat-mdc-progress-spinner{height:20px!important;width:20px!important}.offcanvas{width:40%;z-index:100000000}.body{background:#fff;margin:2.5rem;padding:2rem;border-radius:10px}.body label{font-size:14px;font-family:DM SANS;color:#434443;font-weight:400}.w-50{width:50%}.secured{display:flex;justify-content:center;gap:10px}.secured p{font-size:15px;font-family:DM SANS;font-weight:400;color:#0009}.secured mat-icon{display:flex;font-size:18px;color:#00dd80;align-items:center;justify-content:center}.input-box{width:100%;display:flex;justify-content:space-between;padding:10px;border:1px solid rgba(208,213,221,1);border-radius:7px;margin-top:8px}.input-box input{width:90%;border:none;outline:none;font-size:16px;font-family:DM SANS;background:#fff}.verified{color:#1ac100}p{margin-bottom:0}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.mt-15{margin-top:1.5rem}.otp-input{display:flex;gap:20px;margin-top:8px}.otp-input input{width:59px;border:1px solid rgba(208,213,221,1);height:54px;border-radius:8px;outline:none;justify-content:center;text-align:center}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.justify-space{justify-content:space-between}.verify-text{font-size:13px;font-family:DM SANS;color:#f8a938;cursor:pointer}@media screen and (max-width: 475px){.offcanvas{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { 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.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: KycDetailsComponent, decorators: [{
158
+ type: Component,
159
+ args: [{ selector: 'simpo-kyc-details', standalone: true, imports: [MatIconModule, CommonModule, FormsModule, MatProgressSpinnerModule, ToastModule], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n<section class=\"main-section\">\r\n <div class=\"display-center\" *ngIf=\"!(isPanVerified && isAadharverified)\">\r\n <img class=\"img\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/970332c1740030187726kyc.png\"\r\n alt=\"\">\r\n <div class=\"text-group\">\r\n <p class=\"heading\">Complete Your KYC to start Investing</p>\r\n <p class=\"desc\">Before you can invest, we need to verify your identity, simply upload your documents,\r\n <br> submit your KYC, and let us handle the rest\r\n </p>\r\n </div>\r\n <button class=\"submit-btn\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\">Submit KYC Now</button>\r\n </div>\r\n <div *ngIf=\"isPanVerified && isAadharverified\" class=\"display-center\">\r\n <div class=\"w-50\">\r\n <div class=\"secured\">\r\n <mat-icon>security</mat-icon>\r\n <p>Your Data is Safe & Secure</p>\r\n </div>\r\n\r\n <div class=\"mt-2\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">PAN Number</label>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" disabled>\r\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">Aadhar Number</label>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" disabled>\r\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-15 text-center\">\r\n <button class=\"submit-btn\" (click)=\"redirectToProductList()\">Let's Grow Wealth</button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<div class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\">\r\n <div class=\"header\">\r\n <p>KYC Details</p>\r\n </div>\r\n <div class=\"middle-section\">\r\n <div class=\"body\">\r\n <div class=\"secured\">\r\n <mat-icon>security</mat-icon>\r\n <p>Your Data is Safe & Secure</p>\r\n </div>\r\n\r\n <div class=\"mt-2\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">PAN Number</label>\r\n <p class=\"verify-text\" (click)=\"verifyPanNumber()\" *ngIf=\"!isPanVerified && !panVerifyLoader\">Verify</p>\r\n <div *ngIf=\"panVerifyLoader\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" [disabled]=\"isPanVerified\">\r\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"isPanVerified\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\">\r\n <div class=\"d-flex justify-space\">\r\n <label for=\"\">Aadhar Number</label>\r\n <p class=\"verify-text\" (click)=\"sendAadharOtp()\" *ngIf=\"!aadharOtpSent && !aadharVerifyLoader\">Send OTP</p>\r\n <div *ngIf=\"aadharVerifyLoader && !aadharOtpSent\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\r\n </div>\r\n <div class=\"input-box\">\r\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" [disabled]=\"isAadharverified\">\r\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"aadharOtpSent\">check_circle</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\" *ngIf=\"aadharOtpSent\">\r\n <label for=\"\">Enter OTP</label>\r\n\r\n <div id=\"otp\" class=\"otp-input\">\r\n <ng-container *ngFor=\"let otp of [1,2,3,4,5,6]; let idx = index\">\r\n <input type=\"number\" max=\"9\" class=\"otp-input\" [(ngModel)]=\"aadharOtpArray[idx]\"\r\n (keyup)=\"moveAadharOtpCursor($event, idx)\" [id]=\"'aadharOtp_'+idx\" />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer\">\r\n <button class=\"cancel-btn\" data-bs-dismiss=\"offcanvas\" id=\"closeKycCanvas\" (click)=\"closeDialog()\">Cancel</button>\r\n <button class=\"submit-btn\" *ngIf=\"aadharOtpSent && !aadharVerifyLoader\" (click)=\"verifyAadharOtp()\">Verify</button>\r\n <button class=\"d-flex submit-btn\" *ngIf=\"aadharVerifyLoader && aadharOtpSent\">\r\n <mat-spinner></mat-spinner> Verifying\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".main-section{height:100%;background:#fff;border-radius:10px}.display-center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.img{width:35%}.text-group{text-align:center;margin-top:3rem;margin-bottom:2rem}.heading{font-size:14px;font-family:DM SANS;font-weight:700;color:#000}.desc{font-size:14px;color:#0009;font-family:DM SANS;font-weight:500}.submit-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:#f8a938;color:#fff;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.cancel-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:transparent;color:#f8a938;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.header{padding:20px;border:1px solid rgba(14,35,60,.16);height:60px}.header p{font-size:17px;margin-bottom:0;font-weight:600;font-family:Inter}.middle-section{height:calc(100vh - 120px);overflow:scroll;background:#fcfcfc}.footer{position:absolute;bottom:0;height:60px;display:flex;align-items:center;justify-content:flex-end;border-top:1px solid rgba(14,35,60,.16);width:100%;padding:20px;gap:14px}.mat-mdc-progress-spinner{height:20px!important;width:20px!important}.offcanvas{width:40%;z-index:100000000}.body{background:#fff;margin:2.5rem;padding:2rem;border-radius:10px}.body label{font-size:14px;font-family:DM SANS;color:#434443;font-weight:400}.w-50{width:50%}.secured{display:flex;justify-content:center;gap:10px}.secured p{font-size:15px;font-family:DM SANS;font-weight:400;color:#0009}.secured mat-icon{display:flex;font-size:18px;color:#00dd80;align-items:center;justify-content:center}.input-box{width:100%;display:flex;justify-content:space-between;padding:10px;border:1px solid rgba(208,213,221,1);border-radius:7px;margin-top:8px}.input-box input{width:90%;border:none;outline:none;font-size:16px;font-family:DM SANS;background:#fff}.verified{color:#1ac100}p{margin-bottom:0}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.mt-15{margin-top:1.5rem}.otp-input{display:flex;gap:20px;margin-top:8px}.otp-input input{width:59px;border:1px solid rgba(208,213,221,1);height:54px;border-radius:8px;outline:none;justify-content:center;text-align:center}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.justify-space{justify-content:space-between}.verify-text{font-size:13px;font-family:DM SANS;color:#f8a938;cursor:pointer}@media screen and (max-width: 475px){.offcanvas{width:100%}}\n"] }]
160
+ }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.MessageService }, { type: i3.Router }, { type: i4.MatDialogRef, decorators: [{
161
+ type: Optional
162
+ }] }] });
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ljLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9reWMtZGV0YWlscy9reWMtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2t5Yy1kZXRhaWxzL2t5Yy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFXNUMsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFvQixXQUF3QixFQUN6QixjQUE4QixFQUN2QyxNQUFjLEVBQ08sU0FBNEM7UUFIdkQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDTyxjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUczRSxlQUFVLEdBQVE7WUFDaEIsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFBO1FBRUQsa0JBQWEsR0FBUTtZQUNuQixhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFBO1FBRUQsd0JBQW1CLEdBQVE7WUFDekIs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O0lBRUQsb0JBQW9CO1FBQ2xCLElBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUE7WUFDbEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7OEdBM0pVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdFQUpuQixDQUFDLGNBQWMsQ0FBQywwQkNoQjdCLGt4SkFzR0EsMGtGRHZGWSxhQUFhLG1MQUFFLFlBQVksK1BBQUUsV0FBVywyOEJBQUUsd0JBQXdCLGtPQUFFLFdBQVc7OzJGQUs5RSxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsQ0FBQyxhQUMvRSxDQUFDLGNBQWMsQ0FBQzs7MEJBUXhCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8ta3ljLWRldGFpbHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgVG9hc3RNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4va3ljLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9reWMtZGV0YWlscy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ljRGV0YWlsc0NvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEt5Y0RldGFpbHNDb21wb25lbnQ+XHJcbiAgKSB7fVxyXG5cclxuICBwYW5SZXF1ZXN0OiBhbnkgPSB7XHJcbiAgICBwYW5OdW1iZXI6ICcnXHJcbiAgfVxyXG5cclxuICBhYWRoYXJSZXF1ZXN0OiBhbnkgPSB7XHJcbiAgICBhYWRoYWFyTnVtYmVyOiAnJ1xyXG4gIH1cclxuXHJcbiAgdmVyaWZ5QWFkaGFyUmVxdWVzdDogYW55ID0ge1xyXG4gICAgb3RwOiAnJyxcclxuICAgIHJlZklkOiAnJyxcclxuICAgIGFhZGhhYXJOdW1iZXI6ICcnXHJcbiAgfVxyXG4gIGFhZGhhck90cEFycmF5ID0gbmV3IEFycmF5KDYpLmZpbGwoJycpXHJcbiAgaXNQYW5WZXJpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzQWFkaGFydmVyaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhYWRoYXJPdHBTZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFuVmVyaWZ5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWFkaGFyVmVyaWZ5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAga3ljRGV0YWlsc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEt5Y0RldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5reWNEZXRhaWxzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0S3ljRGV0YWlscygpIHtcclxuICAgIHRoaXMua3ljRGV0YWlsc1N1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0S3ljRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzLm1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLmlzUGFuVmVyaWZpZWQgPSByZXMubWVzc2FnZS5wYW5WZXJpZmllZCA9PT0gJ1ZBTElEJztcclxuICAgICAgICB0aGlzLmlzQWFkaGFydmVyaWZpZWQgPSByZXMubWVzc2FnZS5hYWRoYWFyVmVyaWZpZWQgPT09ICdWQUxJRCc7XHJcbiAgICAgICAgdGhpcy5hYWRoYXJSZXF1ZXN0LmFhZGhhYXJOdW1iZXIgPSByZXMubWVzc2FnZS5hYWRoYXJOb1xyXG4gICAgICAgIHRoaXMucGFuUmVxdWVzdC5wYW5OdW1iZXIgPSByZXMubWVzc2FnZS5wYW5ObztcclxuICAgICAgfVxyXG4gICAgfSwgKGVycikgPT4ge1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB2ZXJpZnlQYW5OdW1iZXIoKSB7XHJcbiAgICB0aGlzLnBhblZlcmlmeUxvYWRlciA9IHRydWU7XHJcbiAgICBpZighdGhpcy52YWxpZGF0ZVBhbigpKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICBzdW1tYXJ5OiAnUGFuIE51bWJlcicsXHJcbiAgICAgICAgZGV0YWlsOiAnRW50ZXIgdmFsaWQgUEFOIG51bWJlcidcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucGFuVmVyaWZ5TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UudmVyaWZ5UGFuKHRoaXMucGFuUmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzUGFuVmVyaWZpZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmt5Y0RldGFpbHMgPSBudWxsO1xyXG4gICAgICB0aGlzLnBhblZlcmlmeUxvYWRlciA9IGZhbHNlOztcclxuICAgICAgdGhpcy5jaGVja0t5Y1ZlcmlmaWNhdGlvbigpO1xyXG4gICAgfSwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhblZlcmlmeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUGFuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGFuUmVnZXggPSAvXltBLVpdezV9WzAtOV17NH1bQS1aXSQvO1xyXG4gICAgcmV0dXJuIHBhblJlZ2V4LnRlc3QodGhpcy5wYW5SZXF1ZXN0LnBhbk51bWJlcik7XHJcbiAgfVxyXG5cclxuICBzZW5kQWFkaGFyT3RwKCkge1xyXG4gICAgdGhpcy5hYWRoYXJWZXJpZnlMb2FkZXIgPSB0cnVlO1xyXG4gICAgaWYoIXRoaXMudmFsaWRhdGVBYWRoYWFyKCkpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgIHN1bW1hcnk6ICdBYWRoYXIgTnVtYmVyJyxcclxuICAgICAgICBkZXRhaWw6ICdFbnRlciB2YWxpZCBBYWRoYXIgbnVtYmVyJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hYWRoYXJWZXJpZnlMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2Uuc2VuZEFhZGhhck90cCh0aGlzLmFhZGhhclJlcXVlc3QpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5hYWRoYXJPdHBTZW50ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgc3VtbWFyeTogJ09UUCBTZW50JyxcclxuICAgICAgICBkZXRhaWw6ICdBQWRoYXIgT1RQIFNlbnQgaW4gcmVnaXN0ZXJlZCBtb2JpbGUgbnVtYmVyJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5hYWRoYXJWZXJpZnlMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy52ZXJpZnlBYWRoYXJSZXF1ZXN0LnJlZklkID0gcmVzLm1lc3NhZ2U/LnJlZl9pZDtcclxuICAgIH0sKCkgPT4ge1xyXG4gICAgICB0aGlzLmFhZGhhclZlcmlmeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHZlcmlmeUFhZGhhck90cCgpIHtcclxuICAgIHRoaXMuYWFkaGFyVmVyaWZ5TG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMudmVyaWZ5QWFkaGFyUmVxdWVzdC5vdHAgPSBcIlwiO1xyXG4gICAgdGhpcy5hYWRoYXJPdHBBcnJheS5mb3JFYWNoKChvdHApID0+IHtcclxuICAgICAgdGhpcy52ZXJpZnlBYWRoYXJSZXF1ZXN0Lm90cCArPSBvdHBcclxuICAgIH0pXHJcbiAgICB0aGlzLnZlcmlmeUFhZGhhclJlcXVlc3QuYWFkaGFhck51bWJlciA9IHRoaXMuYWFkaGFyUmVxdWVzdC5hYWRoYWFyTnVtYmVyO1xyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UudmVyaWZ5QWFkaGFyT3RwKHRoaXMudmVyaWZ5QWFkaGFyUmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmlzQWFkaGFydmVyaWZpZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmt5Y0RldGFpbHMgPSBudWxsO1xyXG4gICAgICB0aGlzLmFhZGhhclZlcmlmeUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoZWNrS3ljVmVyaWZpY2F0aW9uKCk7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWFkaGFyVmVyaWZ5TG9hZGVyID0gZmFsc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVBYWRoYWFyKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYWFkaGFhclJlZ2V4ID0gL15bMi05XXsxfVswLTldezExfSQvO1xyXG4gICAgcmV0dXJuIGFhZGhhYXJSZWdleC50ZXN0KHRoaXMuYWFkaGFyUmVxdWVzdC5hYWRoYWFyTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIG1vdmVBYWRoYXJPdHBDdXJzb3IoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGV2ZW50LmtleSkpICYmIGV2ZW50LmNvZGUgIT0gXCJCYWNrc3BhY2VcIilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgdGhpcy5hYWRoYXJPdHBBcnJheVtpZHhdID0gZXZlbnQua2V5O1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFhZGhhck90cF9cIiArIChpZHggKyAxKSk/LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PSBcIkJhY2tzcGFjZVwiICYmICF0aGlzLmFhZGhhck90cEFycmF5W2lkeF0pIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYWRoYXJPdHBfXCIgKyAoaWR4IC0gMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tLeWNWZXJpZmljYXRpb24oKSB7XHJcbiAgICBpZih0aGlzLmlzQWFkaGFydmVyaWZpZWQgJiYgdGhpcy5pc1BhblZlcmlmaWVkKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbG9zZUt5Y0NhbnZhcycpPy5jbGljaygpXHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9Qcm9kdWN0TGlzdCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsncHJvcGVydHktbGlzdCddKVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTW9iaWxlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcbn1cclxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIlxyXG4gICAgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG5cclxuPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cclxuICA8ZGl2IGNsYXNzPVwiZGlzcGxheS1jZW50ZXJcIiAqbmdJZj1cIiEoaXNQYW5WZXJpZmllZCAmJiBpc0FhZGhhcnZlcmlmaWVkKVwiPlxyXG4gICAgPGltZyBjbGFzcz1cImltZ1wiIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvOTcwMzMyYzE3NDAwMzAxODc3MjZreWMucG5nXCJcclxuICAgICAgYWx0PVwiXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1ncm91cFwiPlxyXG4gICAgICA8cCBjbGFzcz1cImhlYWRpbmdcIj5Db21wbGV0ZSBZb3VyIEtZQyB0byBzdGFydCBJbnZlc3Rpbmc8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwiZGVzY1wiPkJlZm9yZSB5b3UgY2FuIGludmVzdCwgd2UgbmVlZCB0byB2ZXJpZnkgeW91ciBpZGVudGl0eSwgc2ltcGx5IHVwbG9hZCB5b3VyIGRvY3VtZW50cyxcclxuICAgICAgICA8YnI+IHN1Ym1pdCB5b3VyIEtZQywgYW5kIGxldCB1cyBoYW5kbGUgdGhlIHJlc3RcclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0LWJ0blwiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiIGRhdGEtYnMtdGFyZ2V0PVwiI29mZmNhbnZhc1JpZ2h0XCJcclxuICAgICAgYXJpYS1jb250cm9scz1cIm9mZmNhbnZhc1JpZ2h0XCI+U3VibWl0IEtZQyBOb3c8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNQYW5WZXJpZmllZCAmJiBpc0FhZGhhcnZlcmlmaWVkXCIgY2xhc3M9XCJkaXNwbGF5LWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInctNTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlY3VyZWRcIj5cclxuICAgICAgICA8bWF0LWljb24+c2VjdXJpdHk8L21hdC1pY29uPlxyXG4gICAgICAgIDxwPllvdXIgRGF0YSBpcyBTYWZlICYgU2VjdXJlPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+UEFOIE51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWJveFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJwYW5SZXF1ZXN0LnBhbk51bWJlclwiIGRpc2FibGVkPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidmVyaWZpZWRcIiB0aXRsZT1cIk9UUCBWZXJpZmllZFwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPkFhZGhhciBOdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYWFkaGFyUmVxdWVzdC5hYWRoYWFyTnVtYmVyXCIgZGlzYWJsZWQ+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZXJpZmllZFwiIHRpdGxlPVwiT1RQIFZlcmlmaWVkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMTUgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic3VibWl0LWJ0blwiIChjbGljayk9XCJyZWRpcmVjdFRvUHJvZHVjdExpc3QoKVwiPkxldCdzIEdyb3cgV2VhbHRoPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxkaXYgY2xhc3M9XCJvZmZjYW52YXMgb2ZmY2FudmFzLWVuZFwiIHRhYmluZGV4PVwiLTFcIiBpZD1cIm9mZmNhbnZhc1JpZ2h0XCIgYXJpYS1sYWJlbGxlZGJ5PVwib2ZmY2FudmFzUmlnaHRMYWJlbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgIDxwPktZQyBEZXRhaWxzPC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtaWRkbGUtc2VjdGlvblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlY3VyZWRcIj5cclxuICAgICAgICA8bWF0LWljb24+c2VjdXJpdHk8L21hdC1pY29uPlxyXG4gICAgICAgIDxwPllvdXIgRGF0YSBpcyBTYWZlICYgU2VjdXJlPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+UEFOIE51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInZlcmlmeS10ZXh0XCIgKGNsaWNrKT1cInZlcmlmeVBhbk51bWJlcigpXCIgKm5nSWY9XCIhaXNQYW5WZXJpZmllZCAmJiAhcGFuVmVyaWZ5TG9hZGVyXCI+VmVyaWZ5PC9wPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInBhblZlcmlmeUxvYWRlclwiIGNsYXNzPVwia3ljLWRldGFpbFwiPjxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicGFuUmVxdWVzdC5wYW5OdW1iZXJcIiBbZGlzYWJsZWRdPVwiaXNQYW5WZXJpZmllZFwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidmVyaWZpZWRcIiB0aXRsZT1cIk9UUCBWZXJpZmllZFwiICpuZ0lmPVwiaXNQYW5WZXJpZmllZFwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPkFhZGhhciBOdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ2ZXJpZnktdGV4dFwiIChjbGljayk9XCJzZW5kQWFkaGFyT3RwKClcIiAqbmdJZj1cIiFhYWRoYXJPdHBTZW50ICYmICFhYWRoYXJWZXJpZnlMb2FkZXJcIj5TZW5kIE9UUDwvcD5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhYWRoYXJWZXJpZnlMb2FkZXIgJiYgIWFhZGhhck90cFNlbnRcIiBjbGFzcz1cImt5Yy1kZXRhaWxcIj48bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtYm94XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImFhZGhhclJlcXVlc3QuYWFkaGFhck51bWJlclwiIFtkaXNhYmxlZF09XCJpc0FhZGhhcnZlcmlmaWVkXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZXJpZmllZFwiIHRpdGxlPVwiT1RQIFZlcmlmaWVkXCIgKm5nSWY9XCJhYWRoYXJPdHBTZW50XCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCIgKm5nSWY9XCJhYWRoYXJPdHBTZW50XCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cIlwiPkVudGVyIE9UUDwvbGFiZWw+XHJcblxyXG4gICAgICAgIDxkaXYgaWQ9XCJvdHBcIiBjbGFzcz1cIm90cC1pbnB1dFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3RwIG9mIFsxLDIsMyw0LDUsNl07IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1heD1cIjlcIiBjbGFzcz1cIm90cC1pbnB1dFwiIFsobmdNb2RlbCldPVwiYWFkaGFyT3RwQXJyYXlbaWR4XVwiXHJcbiAgICAgICAgICAgICAgKGtleXVwKT1cIm1vdmVBYWRoYXJPdHBDdXJzb3IoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidhYWRoYXJPdHBfJytpZHhcIiAvPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG5cIiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIiBpZD1cImNsb3NlS3ljQ2FudmFzXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXQtYnRuXCIgKm5nSWY9XCJhYWRoYXJPdHBTZW50ICYmICFhYWRoYXJWZXJpZnlMb2FkZXJcIiAoY2xpY2spPVwidmVyaWZ5QWFkaGFyT3RwKClcIj5WZXJpZnk8L2J1dHRvbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJkLWZsZXggc3VibWl0LWJ0blwiICpuZ0lmPVwiYWFkaGFyVmVyaWZ5TG9hZGVyICYmIGFhZGhhck90cFNlbnRcIj5cclxuICAgICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+IFZlcmlmeWluZ1xyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=