simpo-component-library 1.4.80 → 1.4.88

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 (68) hide show
  1. package/esm2022/lib/directive/background-directive.mjs +1 -1
  2. package/esm2022/lib/directive/border-directive.mjs +11 -23
  3. package/esm2022/lib/directive/removeCarousel-directive.mjs +73 -0
  4. package/esm2022/lib/ecommerce/json/user-cart.json +40 -0
  5. package/esm2022/lib/ecommerce/json/user-details.json +15 -0
  6. package/esm2022/lib/ecommerce/json/user-favourite.json +32 -0
  7. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +17 -34
  8. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +10 -4
  9. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +49 -158
  10. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +29 -47
  11. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +4 -34
  12. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +23 -39
  13. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +13 -43
  14. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +15 -18
  15. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +20 -104
  16. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  17. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +11 -49
  18. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +2 -2
  19. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -2
  20. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +2 -1
  21. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +166 -0
  22. package/esm2022/lib/sections/carousel-banner/carousel-banner.model.mjs +2 -0
  23. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +4 -4
  24. package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +3 -3
  25. package/esm2022/lib/services/cart.service.mjs +109 -39
  26. package/esm2022/lib/services/events.service.mjs +2 -8
  27. package/esm2022/lib/services/rest.service.mjs +1 -4
  28. package/esm2022/lib/services/storage.service.mjs +30 -68
  29. package/esm2022/lib/styles/index.mjs +1 -8
  30. package/esm2022/lib/styles/style.model.mjs +1 -1
  31. package/esm2022/lib/styles/types.mjs +1 -1
  32. package/esm2022/public-api.mjs +3 -1
  33. package/fesm2022/simpo-component-library.mjs +670 -742
  34. package/fesm2022/simpo-component-library.mjs.map +1 -1
  35. package/lib/directive/background-directive.d.ts +1 -1
  36. package/lib/directive/button-directive.directive.d.ts +1 -1
  37. package/lib/directive/color.directive.d.ts +1 -1
  38. package/lib/directive/removeCarousel-directive.d.ts +35 -0
  39. package/lib/ecommerce/sections/address/address.component.d.ts +5 -7
  40. package/lib/ecommerce/sections/authenticate-user/authenticate-user.component.d.ts +3 -14
  41. package/lib/ecommerce/sections/cart/cart.component.d.ts +2 -6
  42. package/lib/ecommerce/sections/featured-products/featured-products.component.d.ts +2 -5
  43. package/lib/ecommerce/sections/order-details/order-details.component.d.ts +1 -8
  44. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +2 -6
  45. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +1 -7
  46. package/lib/ecommerce/sections/user-basic-info/user-basic-info.component.d.ts +1 -5
  47. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +8 -26
  48. package/lib/ecommerce/sections/user-profile/user-profile.modal.d.ts +8 -5
  49. package/lib/ecommerce/sections/whislist/whislist.component.d.ts +1 -7
  50. package/lib/ecommerce/styles/OrderedItems.modal.d.ts +1 -1
  51. package/lib/ecommerce/styles/cart.modal.d.ts +0 -1
  52. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  53. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +28 -0
  54. package/lib/sections/carousel-banner/carousel-banner.model.d.ts +42 -0
  55. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  56. package/lib/services/cart.service.d.ts +5 -8
  57. package/lib/services/events.service.d.ts +3 -4
  58. package/lib/services/rest.service.d.ts +0 -1
  59. package/lib/services/storage.service.d.ts +44 -10
  60. package/lib/styles/index.d.ts +0 -6
  61. package/lib/styles/style.model.d.ts +1 -4
  62. package/lib/styles/types.d.ts +0 -1
  63. package/package.json +1 -1
  64. package/public-api.d.ts +2 -0
  65. package/simpo-component-library-1.4.88.tgz +0 -0
  66. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +0 -48
  67. package/lib/directive/spacing-horizontal.directive.d.ts +0 -18
  68. package/simpo-component-library-1.4.80.tgz +0 -0
@@ -14,32 +14,29 @@ import BaseSection from '../../../sections/BaseSection';
14
14
  import { ColorDirective } from '../../../directive/color.directive';
15
15
  import { ButtonDirectiveDirective } from '../../../directive/button-directive.directive';
16
16
  import { MatIcon } from '@angular/material/icon';
17
+ import UserCart from '../../json/user-cart.json';
17
18
  import * as i0 from "@angular/core";
18
19
  import * as i1 from ".././../../services/events.service";
19
20
  import * as i2 from "../../../services/rest.service";
20
21
  import * as i3 from "@angular/router";
21
22
  import * as i4 from "../../../services/cart.service";
22
- import * as i5 from "../../../services/storage.service";
23
- import * as i6 from "@angular/common";
24
- import * as i7 from "../../../components/hover-elements/hover-elements.component";
25
- import * as i8 from "../../../components/delete-hover-element/delete-hover-element.component";
26
- import * as i9 from "ngx-skeleton-loader";
23
+ import * as i5 from "@angular/common";
24
+ import * as i6 from "../../../components/hover-elements/hover-elements.component";
25
+ import * as i7 from "../../../components/delete-hover-element/delete-hover-element.component";
26
+ import * as i8 from "ngx-skeleton-loader";
27
27
  export class FeaturedProductsComponent extends BaseSection {
28
- constructor(platformId, _eventService, restService, router, cartService, storageService) {
28
+ constructor(platformId, _eventService, restService, router, cartService) {
29
29
  super();
30
30
  this.platformId = platformId;
31
31
  this._eventService = _eventService;
32
32
  this.restService = restService;
33
33
  this.router = router;
34
34
  this.cartService = cartService;
35
- this.storageService = storageService;
36
35
  this.isRelatedProduct = false;
37
36
  this.isLoading = false;
38
37
  this.edit = true;
39
38
  this._eventSubscriber = null;
40
39
  this.screenWidth = 0;
41
- this.USER_CART = null;
42
- this.USER_WISHLIST = null;
43
40
  if (isPlatformBrowser(this.platformId)) {
44
41
  this.getScreenSize();
45
42
  }
@@ -51,7 +48,9 @@ export class FeaturedProductsComponent extends BaseSection {
51
48
  this.content = this.data?.content;
52
49
  this.styles = this.data?.styles;
53
50
  this.button = this.data?.action.buttons[0];
51
+ // if (this.isRelatedProduct) {
54
52
  this.getFeatureProduct();
53
+ // }
55
54
  this._eventSubscriber = this._eventService.featureCollectionList.subscribe((response) => {
56
55
  this.getFeatureProduct();
57
56
  });
@@ -72,33 +71,11 @@ export class FeaturedProductsComponent extends BaseSection {
72
71
  getFeatureProduct() {
73
72
  this.restService.getFeaturedProduct(this.content?.collectionId).subscribe((response) => {
74
73
  this.responseData = response;
75
- this.storageService.getUserCart().then((cartResponse) => {
76
- cartResponse.onsuccess = (cartData) => {
77
- console.log(cartData);
78
- this.USER_CART = cartData.target.result;
79
- console.log(this.USER_CART);
80
- console.log(this.responseData);
81
- this.responseData?.forEach((product) => {
82
- this.USER_CART?.forEach((item) => {
83
- if (item.itemId == product.itemId)
84
- product.quantity = item.quantity;
85
- });
86
- });
87
- };
88
- });
89
- this.storageService.getUserWhishlist().then((wishlistResponse) => {
90
- wishlistResponse.onsuccess = (whislistData) => {
91
- this.USER_WISHLIST = whislistData.target.result;
92
- console.log("WHISLIST");
93
- console.log(this.USER_WISHLIST);
94
- console.log(this.responseData);
95
- this.responseData?.forEach((product) => {
96
- this.USER_WISHLIST?.forEach((item) => {
97
- if (item.itemId == product.itemId)
98
- product.whislist = true;
99
- });
100
- });
101
- };
74
+ this.responseData?.forEach((product) => {
75
+ UserCart.orderedItems.forEach((item) => {
76
+ if (item.itemId == product.itemId)
77
+ product.quantity = item.quantity;
78
+ });
102
79
  });
103
80
  });
104
81
  }
@@ -107,19 +84,18 @@ export class FeaturedProductsComponent extends BaseSection {
107
84
  this.cartService.addItemToCart(product);
108
85
  }
109
86
  toggleItemToFav(product, type) {
110
- if (type == 'ADD') {
111
- product.whislist = true;
87
+ if (type == 'ADD')
112
88
  this.cartService.addItemToFavourite(product);
113
- }
114
- else {
115
- product.whislist = false;
89
+ else
116
90
  this.cartService.removeItemFromFavourite(product);
117
- }
118
91
  }
119
92
  proceedToProductDesc(productId) {
120
93
  this.router.navigate([`details`], { queryParams: { id: productId } });
121
94
  // this._eventService.redirectToPage.emit({redirectTo: '/details', data: {productId: productId}})
122
95
  }
96
+ isItemFav(product) {
97
+ return this.cartService.getItemIdxJSON(product.itemId, 'FAVOURITE') > -1;
98
+ }
123
99
  togglePreviewImage(product, idx) {
124
100
  const element = document.getElementById('preview_' + idx);
125
101
  element?.classList.add("transition-preivew");
@@ -128,8 +104,11 @@ export class FeaturedProductsComponent extends BaseSection {
128
104
  element?.classList.remove('transition-preivew');
129
105
  }, 50);
130
106
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FeaturedProductsComponent, deps: [{ token: PLATFORM_ID }, { token: i1.EventsService }, { token: i2.RestService }, { token: i3.Router }, { token: i4.CartService }, { token: i5.StorageServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FeaturedProductsComponent, isStandalone: true, selector: "simpo-featured-products", inputs: { data: "data", responseData: "responseData", index: "index", isRelatedProduct: "isRelatedProduct", delete: "delete" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData?.length\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages?.length && product.itemImages[0].imgUrl)\" class=\"default-image\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img src=\"https://www.svgrepo.com/show/149861/t-shirt-black-silhouette.svg\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"product.itemImages?.length && product.itemImages[0].imgUrl\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"price body-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n &#8377;\r\n {{product.price.sellingPrice}}\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'ADD')\" *ngIf=\"!product.whislist\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'REMOVE')\" *ngIf=\"product.whislist\">favorite</mat-icon>\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity\" (click)=\"addItemToCart(product, 'ADD')\">{{content?.button}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.add-product-button{width:20%}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:250px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i6.SlicePipe, name: "slice" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i7.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: i8.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i9.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type:
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FeaturedProductsComponent, deps: [{ token: PLATFORM_ID }, { token: i1.EventsService }, { token: i2.RestService }, { token: i3.Router }, { token: i4.CartService }], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FeaturedProductsComponent, isStandalone: true, selector: "simpo-featured-products", inputs: { data: "data", responseData: "responseData", index: "index", isRelatedProduct: "isRelatedProduct", delete: "delete" }, host: { listeners: { "window: resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData.length > 0\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages.length > 0 && product.itemImages[0].imgUrl)\" class=\"default-image\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img src=\"https://www.svgrepo.com/show/149861/t-shirt-black-silhouette.svg\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"product.itemImages.length > 0 && product.itemImages[0].imgUrl\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"price body-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n &#8377;\r\n {{product.price.sellingPrice}}\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'ADD')\" *ngIf=\"!isItemFav(product)\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'REMOVE')\" *ngIf=\"isItemFav(product)\">favorite</mat-icon>\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity\" (click)=\"addItemToCart(product, 'ADD')\">{{content?.button}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>\r\n", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.add-product-button{width:20%}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:250px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i6.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged"], outputs: ["edit"] }, { kind: "component", type: i7.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i8.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "component", type:
109
+ // TODO: `HttpClientModule` should not be imported into a component directly.
110
+ // Please refactor the code to add `provideHttpClient()` call to the provider list in the
111
+ // application bootstrap logic and remove the `HttpClientModule` import from this component.
133
112
  //directive
134
113
  MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue"] }] }); }
135
114
  }
@@ -139,6 +118,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
139
118
  CommonModule,
140
119
  FormsModule,
141
120
  SimpoComponentModule,
121
+ // TODO: `HttpClientModule` should not be imported into a component directly.
122
+ // Please refactor the code to add `provideHttpClient()` call to the provider list in the
123
+ // application bootstrap logic and remove the `HttpClientModule` import from this component.
142
124
  //directive
143
125
  MatIcon,
144
126
  AnimationDirective,
@@ -151,11 +133,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
151
133
  TextBackgroundDirectiveDirective,
152
134
  ColorDirective,
153
135
  ButtonDirectiveDirective
154
- ], template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData?.length\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages?.length && product.itemImages[0].imgUrl)\" class=\"default-image\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img src=\"https://www.svgrepo.com/show/149861/t-shirt-black-silhouette.svg\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"product.itemImages?.length && product.itemImages[0].imgUrl\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"price body-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n &#8377;\r\n {{product.price.sellingPrice}}\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'ADD')\" *ngIf=\"!product.whislist\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'REMOVE')\" *ngIf=\"product.whislist\">favorite</mat-icon>\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity\" (click)=\"addItemToCart(product, 'ADD')\">{{content?.button}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.add-product-button{width:20%}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:250px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"] }]
136
+ ], template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"container-fluid total-container\" [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div [id]=\"data?.id\" class=\"display-block\" #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [simpoAnimation]=\"styles?.animation\" [simpoLayout]=\"styles?.layout\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <div [innerHTML]=\"item.value\" [ngClass]=\"item.label === 'Heading' ? 'heading-large lh-2 mb-3' : 'body-large'\">\r\n </div>\r\n </div>\r\n <img src=\"https://dev-beeos.s3.amazonaws.com/library-media/714126c1707378935732span.png\" alt=\"\"\r\n class=\"span-img mt-15\">\r\n <div class=\"product-parent\" *ngIf=\"responseData && responseData.length > 0\">\r\n <div *ngFor=\"let product of responseData | slice:getSliceParameters()[0]:getSliceParameters()[1]; let idx = index\" class=\"product\"\r\n [style.width]=\"getProductWidth()\">\r\n <div *ngIf=\"!(product.itemImages.length > 0 && product.itemImages[0].imgUrl)\" class=\"default-image\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img src=\"https://www.svgrepo.com/show/149861/t-shirt-black-silhouette.svg\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"product.itemImages.length > 0 && product.itemImages[0].imgUrl\"(click)=\"proceedToProductDesc(product.itemId)\">\r\n <img [id]=\"'preview_'+idx\" [src]=\"product.itemImages[product.prviewIdx]?.imgUrl\" alt=\"\" class=\"product-img preivew\" (mouseenter)=\"togglePreviewImage(product, idx)\" (mouseleave)=\"product.prviewIdx = 0\">\r\n </div>\r\n <div class=\"mt-15\">\r\n <div class=\"product-name heading-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n {{product.name}}</div>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"price body-large\" [id]=\"data?.id\" [simpoColor]=\"styles?.background?.color\">\r\n &#8377;\r\n {{product.price.sellingPrice}}\r\n </div>\r\n <div *ngIf=\"content?.display?.showButton\" class=\"add-to-cart-btn\">\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'ADD')\" *ngIf=\"!isItemFav(product)\">favorite_border</mat-icon>\r\n <mat-icon [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"toggleItemToFav(product, 'REMOVE')\" *ngIf=\"isItemFav(product)\">favorite</mat-icon>\r\n <button simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\"\r\n [color]=\"styles?.background?.accentColor\" *ngIf=\"!product.quantity\" (click)=\"addItemToCart(product, 'ADD')\">{{content?.button}}</button>\r\n <div class=\"quantity\" *ngIf=\"product.quantity\">\r\n <span (click)=\"addItemToCart(product, 'SUBSTRACT')\">-</span>\r\n <span>{{product.quantity}}</span>\r\n <span (click)=\"addItemToCart(product, 'ADD')\">+</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n </section>\r\n</ng-container>\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n}\">\r\n</ngx-skeleton-loader>\r\n", styles: [".product-parent{display:flex;flex-wrap:wrap;margin-top:15px}.product{padding:10px;cursor:pointer}.product-img{height:310px;width:100%}.price{color:#222;font-size:16px;font-weight:600;line-height:normal}.product-name{color:#222;font-size:16px;line-height:26px;margin-bottom:5px}.add-product-button{width:20%}.mt-15{margin-top:15px}.default-image{background-color:#f2f3f5;text-align:center}.default-image img{width:70%;height:310px}.total-container{height:auto;position:relative}.display-block{display:block!important}.quantity{display:flex;justify-content:space-between;align-items:center;border:1.5px solid lightgray;border-radius:3px;padding:5px;font-weight:600;width:95px}.preivew{transition:opacity .5s ease-in-out;opacity:1}.transition-preview{opacity:0}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}@media screen and (max-width: 475px){.product-img{height:250px}.default-image img{height:250px}}.add-to-cart-btn{display:flex;gap:10px}.add-to-cart-btn .mat-icon{height:30px;width:35px;font-size:27px;margin-top:5px}.add-to-cart-btn button{height:35px;font-size:16px!important}\n"] }]
155
137
  }], ctorParameters: () => [{ type: Object, decorators: [{
156
138
  type: Inject,
157
139
  args: [PLATFORM_ID]
158
- }] }, { type: i1.EventsService }, { type: i2.RestService }, { type: i3.Router }, { type: i4.CartService }, { type: i5.StorageServiceService }], propDecorators: { data: [{
140
+ }] }, { type: i1.EventsService }, { type: i2.RestService }, { type: i3.Router }, { type: i4.CartService }], propDecorators: { data: [{
159
141
  type: Input
160
142
  }], responseData: [{
161
143
  type: Input
@@ -169,4 +151,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
169
151
  type: HostListener,
170
152
  args: ["window: resize", ["$event"]]
171
153
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBd0IsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUt6RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7O0FBNkJqRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsV0FBVztJQWN4RCxZQUMrQixVQUFrQixFQUM5QixhQUE2QixFQUM3QixXQUF3QixFQUN4QixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsY0FBcUM7UUFFdEQsS0FBSyxFQUFFLENBQUE7UUFQc0IsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQWhCL0MscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQzNDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsU0FBSSxHQUFjLElBQUksQ0FBQztRQU1mLHFCQUFnQixHQUF3QixJQUFJLENBQUM7UUFlckQsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFFaEIsY0FBUyxHQUEwQixJQUFJLENBQUM7UUFDeEMsa0JBQWEsR0FBMEIsSUFBSSxDQUFDO1FBUGxELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBT0QsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUVOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0TCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFDLEVBQUU7WUFDekYsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUMsRUFBRTtnQkFDckQsWUFBWSxDQUFDLFNBQVMsR0FBRyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBbUMsQ0FBQztvQkFDckUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBQyxFQUFFO3dCQUN6QyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQWtCLEVBQUMsRUFBRTs0QkFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNO2dDQUMvQixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQ3JDLENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFDLEVBQUU7Z0JBQzlELGdCQUFnQixDQUFDLFNBQVMsR0FBRyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtvQkFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQW1DLENBQUM7b0JBQzdFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUMsRUFBRTt3QkFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFrQixFQUFDLEVBQUU7NEJBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTTtnQ0FDL0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQzVCLENBQUMsQ0FBQyxDQUFBO29CQUNKLENBQUMsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsYUFBYSxDQUFDLE9BQWdCLEVBQUUsSUFBeUI7UUFDdkQsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsZUFBZSxDQUFDLE9BQWdCLEVBQUUsSUFBc0I7UUFDdEQsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFjO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUUsRUFBQyxFQUFFLEVBQUUsU0FBUyxFQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ2xFLGlHQUFpRztJQUNuRyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBZ0IsRUFBRSxHQUFXO1FBQzlDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFN0MsVUFBVSxDQUFDLEdBQUUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xELENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7OEdBNUhVLHlCQUF5QixrQkFlMUIsV0FBVztrR0FmVix5QkFBeUIsOFNDbkR0Qyw0NUhBMkRzQix5b0NEM0JsQixZQUFZLGtaQUNaLFdBQVcsOEJBQ1gsb0JBQW9CO2dCQUNwQixXQUFXO2dCQUNYLE9BQU8sMklBQ1Asa0JBQWtCLHlGQUNsQixtQkFBbUIsbUZBRW5CLGVBQWUsbUZBRWYsY0FBYyxnRkFDZCxnQkFBZ0IscUZBRWhCLGNBQWMsaUZBQ2Qsd0JBQXdCOzsyRkFLZix5QkFBeUI7a0JBdkJyQyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsZ0NBQWdDO3dCQUNoQyxjQUFjO3dCQUNkLHdCQUF3QjtxQkFDekI7OzBCQW1CRSxNQUFNOzJCQUFDLFdBQVc7a0xBZFosSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBMEJOLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgUExBVEZPUk1fSUQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmVhdHVyZWRQcm9kdWN0Q29udGVudE1vZGFsLCBGZWF0dXJlZFByb2R1Y3RNb2RhbCwgRmVhdHVyZWRQcm9kdWN0U3R5bGVzTW9kZWwgfSBmcm9tICcuL2ZlYXR1cmVkLXByb2R1Y3RzLm1vZGFsJztcclxuaW1wb3J0IHsgUHJvZHVjdCwgSXRlbUltYWdlIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJvcmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ib3JkZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi8uLi8uLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tIFwiLi4vLi4vc3R5bGVzL2NhcnQubW9kYWxcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLCBcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgTWF0SWNvbixcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZlYXR1cmVkUHJvZHVjdE1vZGFsO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IFByb2R1Y3RbXVxyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc1JlbGF0ZWRQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZWRpdD8gOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBjb250ZW50PzogRmVhdHVyZWRQcm9kdWN0Q29udGVudE1vZGFsO1xyXG4gIHN0eWxlcz86IEZlYXR1cmVkUHJvZHVjdFN0eWxlc01vZGVsO1xyXG4gIGJ1dHRvbj86IEJ1dHRvbk1vZGVsO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpXHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgXHJcbiAgcHJpdmF0ZSBVU0VSX0NBUlQ6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBVU0VSX1dJU0hMSVNUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OiByZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIGdldFNjcmVlblNpemUoKSB7XHJcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24uYnV0dG9uc1swXTtcclxuICAgIHRoaXMuZ2V0RmVhdHVyZVByb2R1Y3QoKTtcclxuICAgIHRoaXMuX2V2ZW50U3Vic2NyaWJlciA9IHRoaXMuX2V2ZW50U2VydmljZS5mZWF0dXJlQ29sbGVjdGlvbkxpc3Quc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RmVhdHVyZVByb2R1Y3QoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuX2V2ZW50U3Vic2NyaWJlcilcclxuICAgICAgICB0aGlzLl9ldmVudFN1YnNjcmliZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JlZW5XaWR0aCA+IDQ3NSA/ICh0aGlzLnNjcmVlbldpZHRoIDwgMTAyNSA/ICcyNSUnIDogJ2NhbGMoJyArICgoMTAwIC8gKHRoaXMuc3R5bGVzPy5lbGVtZW50SW5Sb3cgfHwgNCkpKSArICclKScpIDogKHRoaXMuc3R5bGVzPy5tb2JpbGVDb2x1bW4gPT09IDEgPyAnMTAwJScgOiAnNTAlJylcclxuICB9XHJcblxyXG4gIGdldFNsaWNlUGFyYW1ldGVycygpIHtcclxuICAgIHJldHVybiBbMCwgKHRoaXMuc3R5bGVzPy5tYXhpbXVtUHJvZHVjdCB8fCAwKV07XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlUHJvZHVjdCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmVhdHVyZWRQcm9kdWN0KHRoaXMuY29udGVudD8uY29sbGVjdGlvbklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXJDYXJ0KCkudGhlbigoY2FydFJlc3BvbnNlKT0+IHtcclxuICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGNhcnREYXRhKTtcclxuICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5VU0VSX0NBUlQpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpO1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zZURhdGE/LmZvckVhY2goKHByb2R1Y3Q6IGFueSk9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0Lml0ZW1JZClcclxuICAgICAgICAgICAgICAgIHByb2R1Y3QucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHdpc2hsaXN0UmVzcG9uc2UpPT4ge1xyXG4gICAgICAgIHdpc2hsaXN0UmVzcG9uc2Uub25zdWNjZXNzID0gKHdoaXNsaXN0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlVTRVJfV0lTSExJU1QgPSB3aGlzbGlzdERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJXSElTTElTVFwiKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuVVNFUl9XSVNITElTVCk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJlc3BvbnNlRGF0YSk7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YT8uZm9yRWFjaCgocHJvZHVjdDogYW55KT0+IHtcclxuICAgICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0Lml0ZW1JZClcclxuICAgICAgICAgICAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuICBhZGRJdGVtVG9DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QsIHR5cGU6ICdBREQnIHwgJ1NVQlNUUkFDVCcpIHtcclxuICAgIHByb2R1Y3QucXVhbnRpdHkgKz0gKHR5cGUgPT0gJ0FERCcgPyAxIDogLTEpOyBcclxuICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0KTtcclxuICB9XHJcbiAgdG9nZ2xlSXRlbVRvRmF2KHByb2R1Y3Q6IFByb2R1Y3QsIHR5cGU6ICdBREQnIHwgJ1JFTU9WRScpIHtcclxuICAgIGlmICh0eXBlID09ICdBREQnKSB7XHJcbiAgICAgIHByb2R1Y3Qud2hpc2xpc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0Zhdm91cml0ZShwcm9kdWN0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBwcm9kdWN0LndoaXNsaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUocHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0SWQ6IGFueSl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYGRldGFpbHNgXSwge3F1ZXJ5UGFyYW1zOiB7aWQ6IHByb2R1Y3RJZH19KTtcclxuICAgIC8vIHRoaXMuX2V2ZW50U2VydmljZS5yZWRpcmVjdFRvUGFnZS5lbWl0KHtyZWRpcmVjdFRvOiAnL2RldGFpbHMnLCBkYXRhOiB7cHJvZHVjdElkOiBwcm9kdWN0SWR9fSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZVByZXZpZXdJbWFnZShwcm9kdWN0OiBQcm9kdWN0LCBpZHg6IG51bWJlcikge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2aWV3XycraWR4KTtcclxuICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoXCJ0cmFuc2l0aW9uLXByZWl2ZXdcIik7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKT0+IHtcclxuICAgICAgcHJvZHVjdC5wcnZpZXdJZHggPSAoKHByb2R1Y3Q/Lml0ZW1JbWFnZXM/Lmxlbmd0aCA/PyAwKSA+IDEgPyAxIDogMCk7XHJcbiAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ3RyYW5zaXRpb24tcHJlaXZldycpO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHRvdGFsLWNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIGNsYXNzPVwiZGlzcGxheS1ibG9ja1wiICNtYWluQ29udGFpbmVyIFtzaW1wb092ZXJsYXldPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCJcclxuICAgICAgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cIml0ZW0udmFsdWVcIiBbbmdDbGFzc109XCJpdGVtLmxhYmVsID09PSAnSGVhZGluZycgPyAnaGVhZGluZy1sYXJnZSBsaC0yIG1iLTMnIDogJ2JvZHktbGFyZ2UnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW1nIHNyYz1cImh0dHBzOi8vZGV2LWJlZW9zLnMzLmFtYXpvbmF3cy5jb20vbGlicmFyeS1tZWRpYS83MTQxMjZjMTcwNzM3ODkzNTczMnNwYW4ucG5nXCIgYWx0PVwiXCJcclxuICAgICAgICBjbGFzcz1cInNwYW4taW1nIG10LTE1XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXBhcmVudFwiICpuZ0lmPVwicmVzcG9uc2VEYXRhICYmIHJlc3BvbnNlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiByZXNwb25zZURhdGEgfCBzbGljZTpnZXRTbGljZVBhcmFtZXRlcnMoKVswXTpnZXRTbGljZVBhcmFtZXRlcnMoKVsxXTsgbGV0IGlkeCA9IGluZGV4XCIgY2xhc3M9XCJwcm9kdWN0XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRQcm9kdWN0V2lkdGgoKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiEocHJvZHVjdC5pdGVtSW1hZ2VzPy5sZW5ndGggJiYgcHJvZHVjdC5pdGVtSW1hZ2VzWzBdLmltZ1VybClcIiBjbGFzcz1cImRlZmF1bHQtaW1hZ2VcIihjbGljayk9XCJwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0Lml0ZW1JZClcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zaG93LzE0OTg2MS90LXNoaXJ0LWJsYWNrLXNpbGhvdWV0dGUuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9kdWN0Lml0ZW1JbWFnZXM/Lmxlbmd0aCAmJiBwcm9kdWN0Lml0ZW1JbWFnZXNbMF0uaW1nVXJsXCIoY2xpY2spPVwicHJvY2VlZFRvUHJvZHVjdERlc2MocHJvZHVjdC5pdGVtSWQpXCI+XHJcbiAgICAgICAgICAgIDxpbWcgW2lkXT1cIidwcmV2aWV3XycraWR4XCIgW3NyY109XCJwcm9kdWN0Lml0ZW1JbWFnZXNbcHJvZHVjdC5wcnZpZXdJZHhdPy5pbWdVcmxcIiBhbHQ9XCJcIiBjbGFzcz1cInByb2R1Y3QtaW1nIHByZWl2ZXdcIiAobW91c2VlbnRlcik9XCJ0b2dnbGVQcmV2aWV3SW1hZ2UocHJvZHVjdCwgaWR4KVwiIChtb3VzZWxlYXZlKT1cInByb2R1Y3QucHJ2aWV3SWR4ID0gMFwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtbmFtZSBoZWFkaW5nLWxhcmdlXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgICAgICAgIHt7cHJvZHVjdC5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZSBib2R5LWxhcmdlXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29sb3JdPVwic3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgJiM4Mzc3O1xyXG4gICAgICAgICAgICAgICAge3twcm9kdWN0LnByaWNlLnNlbGxpbmdQcmljZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dCdXR0b25cIiBjbGFzcz1cImFkZC10by1jYXJ0LWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInRvZ2dsZUl0ZW1Ub0Zhdihwcm9kdWN0LCAnQUREJylcIiAqbmdJZj1cIiFwcm9kdWN0LndoaXNsaXN0XCI+ZmF2b3JpdGVfYm9yZGVyPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJ0b2dnbGVJdGVtVG9GYXYocHJvZHVjdCwgJ1JFTU9WRScpXCIgKm5nSWY9XCJwcm9kdWN0LndoaXNsaXN0XCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cIiFwcm9kdWN0LnF1YW50aXR5XCIgKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgJ0FERCcpXCI+e3tjb250ZW50Py5idXR0b259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YW50aXR5XCIgKm5nSWY9XCJwcm9kdWN0LnF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KHByb2R1Y3QsICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJvZHVjdC5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydChwcm9kdWN0LCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+Il19
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvZmVhdHVyZWQtcHJvZHVjdHMvZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBd0IsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUd6SCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFB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O2tCQTVCckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxvQkFBb0I7d0JBRXhCLDZFQUE2RTt3QkFDN0UseUZBQXlGO3dCQUN6Riw0RkFBNEY7d0JBRXhGLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsY0FBYzt3QkFDZCx3QkFBd0I7cUJBQ3pCOzswQkFtQkUsTUFBTTsyQkFBQyxXQUFXOzhJQWRaLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQXFCTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lELCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVkUHJvZHVjdENvbnRlbnRNb2RhbCwgRmVhdHVyZWRQcm9kdWN0TW9kYWwsIEZlYXR1cmVkUHJvZHVjdFN0eWxlc01vZGVsIH0gZnJvbSAnLi9mZWF0dXJlZC1wcm9kdWN0cy5tb2RhbCc7XHJcbmltcG9ydCB7IFByb2R1Y3QsIEl0ZW1JbWFnZSB9IGZyb20gJy4uLy4uL3N0eWxlcy9wcm9kdWN0Lm1vZGFsJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCb3JkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYm9yZGVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL292ZXJsYXktZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IFVzZXJDYXJ0IGZyb20gJy4uLy4uL2pzb24vdXNlci1jYXJ0Lmpzb24nO1xyXG5pbXBvcnQgVXNlcldpc2hsaXN0IGZyb20gJy4uLy4uL2pzb24vdXNlci1mYXZvdXJpdGUuanNvbic7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLCBcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBcclxuLy8gVE9ETzogYEh0dHBDbGllbnRNb2R1bGVgIHNob3VsZCBub3QgYmUgaW1wb3J0ZWQgaW50byBhIGNvbXBvbmVudCBkaXJlY3RseS5cclxuLy8gUGxlYXNlIHJlZmFjdG9yIHRoZSBjb2RlIHRvIGFkZCBgcHJvdmlkZUh0dHBDbGllbnQoKWAgY2FsbCB0byB0aGUgcHJvdmlkZXIgbGlzdCBpbiB0aGVcclxuLy8gYXBwbGljYXRpb24gYm9vdHN0cmFwIGxvZ2ljIGFuZCByZW1vdmUgdGhlIGBIdHRwQ2xpZW50TW9kdWxlYCBpbXBvcnQgZnJvbSB0aGlzIGNvbXBvbmVudC5cclxuXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgTWF0SWNvbixcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQm9yZGVyRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBPdmVybGF5RGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZmVhdHVyZWQtcHJvZHVjdHMuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVkUHJvZHVjdHNDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZlYXR1cmVkUHJvZHVjdE1vZGFsO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IFByb2R1Y3RbXVxyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc1JlbGF0ZWRQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZWRpdD8gOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkZWxldGU/IDogYm9vbGVhbjtcclxuICBjb250ZW50PzogRmVhdHVyZWRQcm9kdWN0Q29udGVudE1vZGFsO1xyXG4gIHN0eWxlcz86IEZlYXR1cmVkUHJvZHVjdFN0eWxlc01vZGVsO1xyXG4gIGJ1dHRvbj86IEJ1dHRvbk1vZGVsO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlIDogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpXHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzogcmVzaXplXCIsIFtcIiRldmVudFwiXSlcclxuICBnZXRTY3JlZW5TaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmJ1dHRvbiA9IHRoaXMuZGF0YT8uYWN0aW9uLmJ1dHRvbnNbMF07XHJcbiAgICAvLyBpZiAodGhpcy5pc1JlbGF0ZWRQcm9kdWN0KSB7XHJcbiAgICAgIHRoaXMuZ2V0RmVhdHVyZVByb2R1Y3QoKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuX2V2ZW50U3Vic2NyaWJlciA9IHRoaXMuX2V2ZW50U2VydmljZS5mZWF0dXJlQ29sbGVjdGlvbkxpc3Quc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuZ2V0RmVhdHVyZVByb2R1Y3QoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgaWYgKHRoaXMuX2V2ZW50U3Vic2NyaWJlcilcclxuICAgICAgICB0aGlzLl9ldmVudFN1YnNjcmliZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0V2lkdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zY3JlZW5XaWR0aCA+IDQ3NSA/ICh0aGlzLnNjcmVlbldpZHRoIDwgMTAyNSA/ICcyNSUnIDogJ2NhbGMoJyArICgoMTAwIC8gKHRoaXMuc3R5bGVzPy5lbGVtZW50SW5Sb3cgfHwgNCkpKSArICclKScpIDogKHRoaXMuc3R5bGVzPy5tb2JpbGVDb2x1bW4gPT09IDEgPyAnMTAwJScgOiAnNTAlJylcclxuICB9XHJcblxyXG4gIGdldFNsaWNlUGFyYW1ldGVycygpIHtcclxuICAgIHJldHVybiBbMCwgKHRoaXMuc3R5bGVzPy5tYXhpbXVtUHJvZHVjdCB8fCAwKV07XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlUHJvZHVjdCgpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0RmVhdHVyZWRQcm9kdWN0KHRoaXMuY29udGVudD8uY29sbGVjdGlvbklkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT4ge1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlO1xyXG4gICAgICB0aGlzLnJlc3BvbnNlRGF0YT8uZm9yRWFjaCgocHJvZHVjdDogYW55KT0+IHtcclxuICAgICAgICBVc2VyQ2FydC5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKT0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0Lml0ZW1JZClcclxuICAgICAgICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xyXG4gICAgcHJvZHVjdC5xdWFudGl0eSArPSAodHlwZSA9PSAnQUREJyA/IDEgOiAtMSk7IFxyXG4gICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QpO1xyXG4gIH1cclxuICB0b2dnbGVJdGVtVG9GYXYocHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnUkVNT1ZFJykge1xyXG4gICAgaWYgKHR5cGUgPT0gJ0FERCcpXHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3QpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHByb2R1Y3QpO1xyXG4gIH1cclxuXHJcbiAgcHJvY2VlZFRvUHJvZHVjdERlc2MocHJvZHVjdElkOiBhbnkpe1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2BkZXRhaWxzYF0sIHtxdWVyeVBhcmFtczoge2lkOiBwcm9kdWN0SWR9fSk7XHJcbiAgICAvLyB0aGlzLl9ldmVudFNlcnZpY2UucmVkaXJlY3RUb1BhZ2UuZW1pdCh7cmVkaXJlY3RUbzogJy9kZXRhaWxzJywgZGF0YToge3Byb2R1Y3RJZDogcHJvZHVjdElkfX0pXHJcbiAgfVxyXG5cclxuICBpc0l0ZW1GYXYocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FydFNlcnZpY2UuZ2V0SXRlbUlkeEpTT04ocHJvZHVjdC5pdGVtSWQsICdGQVZPVVJJVEUnKSA+IC0xO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUHJldmlld0ltYWdlKHByb2R1Y3Q6IFByb2R1Y3QsIGlkeDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXZpZXdfJytpZHgpO1xyXG4gICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZChcInRyYW5zaXRpb24tcHJlaXZld1wiKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICBwcm9kdWN0LnBydmlld0lkeCA9ICgocHJvZHVjdD8uaXRlbUltYWdlcz8ubGVuZ3RoID8/IDApID4gMSA/IDEgOiAwKTtcclxuICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgndHJhbnNpdGlvbi1wcmVpdmV3Jyk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJjb250YWluZXItZmx1aWQgdG90YWwtY29udGFpbmVyXCIgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIj5cclxuICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgY2xhc3M9XCJkaXNwbGF5LWJsb2NrXCIgI21haW5Db250YWluZXIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIlxyXG4gICAgICBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5pbnB1dFRleHRcIj5cclxuICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbS52YWx1ZVwiIFtuZ0NsYXNzXT1cIml0ZW0ubGFiZWwgPT09ICdIZWFkaW5nJyA/ICdoZWFkaW5nLWxhcmdlIGxoLTIgbWItMycgOiAnYm9keS1sYXJnZSdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9kZXYtYmVlb3MuczMuYW1hem9uYXdzLmNvbS9saWJyYXJ5LW1lZGlhLzcxNDEyNmMxNzA3Mzc4OTM1NzMyc3Bhbi5wbmdcIiBhbHQ9XCJcIlxyXG4gICAgICAgIGNsYXNzPVwic3Bhbi1pbWcgbXQtMTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtcGFyZW50XCIgKm5nSWY9XCJyZXNwb25zZURhdGEgJiYgcmVzcG9uc2VEYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHJlc3BvbnNlRGF0YSB8IHNsaWNlOmdldFNsaWNlUGFyYW1ldGVycygpWzBdOmdldFNsaWNlUGFyYW1ldGVycygpWzFdOyBsZXQgaWR4ID0gaW5kZXhcIiBjbGFzcz1cInByb2R1Y3RcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImdldFByb2R1Y3RXaWR0aCgpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIShwcm9kdWN0Lml0ZW1JbWFnZXMubGVuZ3RoID4gMCAmJiBwcm9kdWN0Lml0ZW1JbWFnZXNbMF0uaW1nVXJsKVwiIGNsYXNzPVwiZGVmYXVsdC1pbWFnZVwiKGNsaWNrKT1cInByb2NlZWRUb1Byb2R1Y3REZXNjKHByb2R1Y3QuaXRlbUlkKVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vd3d3LnN2Z3JlcG8uY29tL3Nob3cvMTQ5ODYxL3Qtc2hpcnQtYmxhY2stc2lsaG91ZXR0ZS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb2R1Y3QuaXRlbUltYWdlcy5sZW5ndGggPiAwICYmIHByb2R1Y3QuaXRlbUltYWdlc1swXS5pbWdVcmxcIihjbGljayk9XCJwcm9jZWVkVG9Qcm9kdWN0RGVzYyhwcm9kdWN0Lml0ZW1JZClcIj5cclxuICAgICAgICAgICAgPGltZyBbaWRdPVwiJ3ByZXZpZXdfJytpZHhcIiBbc3JjXT1cInByb2R1Y3QuaXRlbUltYWdlc1twcm9kdWN0LnBydmlld0lkeF0/LmltZ1VybFwiIGFsdD1cIlwiIGNsYXNzPVwicHJvZHVjdC1pbWcgcHJlaXZld1wiIChtb3VzZWVudGVyKT1cInRvZ2dsZVByZXZpZXdJbWFnZShwcm9kdWN0LCBpZHgpXCIgKG1vdXNlbGVhdmUpPVwicHJvZHVjdC5wcnZpZXdJZHggPSAwXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdC1uYW1lIGhlYWRpbmctbGFyZ2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9Db2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAge3twcm9kdWN0Lm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlIGJvZHktbGFyZ2VcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9Db2xvcl09XCJzdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAmIzgzNzc7XHJcbiAgICAgICAgICAgICAgICB7e3Byb2R1Y3QucHJpY2Uuc2VsbGluZ1ByaWNlfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvblwiIGNsYXNzPVwiYWRkLXRvLWNhcnQtYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwidG9nZ2xlSXRlbVRvRmF2KHByb2R1Y3QsICdBREQnKVwiICpuZ0lmPVwiIWlzSXRlbUZhdihwcm9kdWN0KVwiPmZhdm9yaXRlX2JvcmRlcjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwidG9nZ2xlSXRlbVRvRmF2KHByb2R1Y3QsICdSRU1PVkUnKVwiICpuZ0lmPVwiaXNJdGVtRmF2KHByb2R1Y3QpXCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cIiFwcm9kdWN0LnF1YW50aXR5XCIgKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQocHJvZHVjdCwgJ0FERCcpXCI+e3tjb250ZW50Py5idXR0b259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YW50aXR5XCIgKm5nSWY9XCJwcm9kdWN0LnF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KHByb2R1Y3QsICdTVUJTVFJBQ1QnKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJvZHVjdC5xdWFudGl0eX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydChwcm9kdWN0LCAnQUREJylcIj4rPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICB3aWR0aDogJzEwMCUnLFxyXG4gIGhlaWdodDogJzQwdmgnLFxyXG4gICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgJ3JpZ2h0JzogJzVweCdcclxufVwiPlxyXG48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiJdfQ==
@@ -20,40 +20,13 @@ export class OrderDetailsComponent {
20
20
  ];
21
21
  }
22
22
  ngOnInit() {
23
- this.styles = this.data?.styles;
24
- console.log(this.orderDetailData);
23
+ console.log(this.responseData);
25
24
  this._eventService.showLoadingScreen.subscribe((response) => {
26
25
  this.isLoading = response;
27
26
  });
28
27
  }
29
- get getCardBGColor() {
30
- return this.getComplementColor(this.styles?.background.color ?? "#00000");
31
- }
32
- get isMobile() {
33
- return window.innerWidth <= 475;
34
- }
35
- getComplementColor(hexColor) {
36
- if (hexColor.length <= 4)
37
- hexColor = this.convertHEX(hexColor);
38
- hexColor = hexColor.replace(/^#/, '');
39
- let r = parseInt(hexColor.substring(0, 2), 16);
40
- let g = parseInt(hexColor.substring(2, 4), 16);
41
- let b = parseInt(hexColor.substring(4, 6), 16);
42
- r = 255 - r;
43
- g = 255 - g;
44
- b = 255 - b;
45
- let compHex = `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
46
- return compHex.toUpperCase();
47
- }
48
- convertHEX(hexColor) {
49
- hexColor = hexColor.replace(/^#/, '');
50
- let color = "#";
51
- for (let i = 0; i < 3; i++)
52
- color += (hexColor[i] + hexColor[i + 1]);
53
- return color;
54
- }
55
28
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: OrderDetailsComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: OrderDetailsComponent, isStandalone: true, selector: "simpo-order-details", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete", orderDetailData: "orderDetailData" }, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"d-flex justify-content-between\" [style.flexDirection]=\"isMobile ? 'column' : 'row'\" [style.width.vw]=\"isMobile ? '100' : '65'\" style=\"margin: auto;\">\r\n <div class=\"left\" [style.width.%]=\"isMobile ? '90' : '70'\">\r\n <h1 class=\"fs-3 fw-normal mb-3 d-flex align-items-center onlyDesktop\">\r\n <mat-icon style=\"cursor: pointer;\" class=\"onlyMobile\">keyboard_arrow_left</mat-icon>\r\n <span>Order Details</span>\r\n </h1>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"fs-5\">Order {{ orderDetailData?.orderNum }}</span>\r\n <span class=\" fs-6\">{{ orderDetailData?.createdTimeStamp | date }}, {{ orderDetailData?.brandOrderDetails?.[0]?.orderedItems.length }} items | &#x20b9; {{orderDetailData?.brandOrderDetails?.[0]?.billDetails?.totalGrossValue}}</span>\r\n </div>\r\n <span class=\"fw-bold fs-5\">{{orderDetailData?.brandOrderDetails?.[0]?.businessName | titlecase}}</span>\r\n </div>\r\n <hr />\r\n <div class=\"timeline\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex\">\r\n <mat-icon style=\"margin-right: 10px;\">{{ event.icon }}</mat-icon> \r\n <div class=\"d-flex flex-column ml-2\">\r\n <span class=\"fw-normal fs-6\">{{ event.name }}</span> \r\n <div class=\"fs-6 \">{{event.desc}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n <hr />\r\n <div>\r\n <div *ngFor=\"let item of orderDetailData?.brandOrderDetails?.[0]?.orderedItems\" class=\"d-flex mb-2\" style=\"gap: 10px; width: 100%;\">\r\n <img [src]=\"item.imgUrl\" alt=\"\" style=\"height: 85px;width: 85px;\">\r\n <div class=\"d-flex flex-column justify-content-center\" style=\"gap: 6px; width: 89%;\">\r\n <span class=\"fw-bold fs-6\">{{item.itemName}}</span>\r\n <span class=\"fs-6\">Size: XS</span>\r\n <div class=\"d-flex justify-content-between fs-6\">\r\n <span>{{item.quantity}} X &#x20b9; <span class=\"fw-bold\">{{item.price}}</span></span>\r\n <span> &#x20b9; <span class=\"fw-bold\">{{item.price * item.quantity}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr />\r\n <div class=\"fs-6\">\r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Item Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{orderDetailData?.billDetails?.totalNetValue | number:'1.0-2'}}</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span>Delivery</span>\r\n <span>FREE</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Grand Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{orderDetailData?.billDetails?.totalNetValue | number:'1.0-2'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right\" style=\"width: 28%;\" [style.width.%]=\"isMobile ? '90' : '28'\" [style.background]=\"getCardBGColor\">\r\n <h1 class=\"mb-3 fs-5\">Your Details</h1>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px;\">Name:</span>\r\n <span class=\"fw-bold pl-2\">{{orderDetailData?.userDetails?.userName}}</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Phone:</span>\r\n <span class=\"fw-bold pl-2\">{{ orderDetailData?.userDetails?.mobile }}</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Address:</span>\r\n <span class=\"fw-bold pl-2\">{{ orderDetailData?.userDetails?.deliveryAddress?.addressLine1 }}</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Payment:</span>\r\n <span class=\"fw-bold pl-2\">Manual Payment</span>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-container>\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n", styles: [".right{height:240px;padding:15px;background-color:#f8f8f8;border-radius:8px}hr{border-top-width:2px;margin:15px 0}.mat-icon{height:30px;width:30px;font-size:30px}.timeline{margin:25px 0}.onlyMobile{display:none}@media screen and (max-width: 475px){.onlyDesktop{display:none!important}.onlyMobile{display:block}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: TimelineModule }, { kind: "component", type: i4.Timeline, selector: "p-timeline", inputs: ["value", "style", "styleClass", "align", "layout"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: OrderDetailsComponent, isStandalone: true, selector: "simpo-order-details", inputs: { responseData: "responseData", data: "data", index: "index", edit: "edit", delete: "delete" }, ngImport: i0, template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"d-flex justify-content-between\" style=\"width: 80%; margin: auto;\">\r\n <div class=\"left\" style=\"width: 60%;\">\r\n <h1 class=\"fs-3 fw-normal mb-5 d-flex align-items-center onlyDesktop\" style=\"margin-left: -30px;\">\r\n <mat-icon style=\"cursor: pointer;\">keyboard_arrow_left</mat-icon>\r\n <span>Order Details</span>\r\n </h1>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"text-dark fs-5\">Order {{ responseData.orderId }}</span>\r\n <span class=\"text-muted fs-6\">{{ responseData.orderDate | date }}, {{ responseData.items }} items | &#x20b9; {{responseData.amount}}</span>\r\n </div>\r\n <span class=\"text-dark fw-bold fs-5\">{{responseData.store}}</span>\r\n </div>\r\n <hr />\r\n <div class=\"timeline\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex\">\r\n <mat-icon style=\"margin-right: 10px;\">{{ event.icon }}</mat-icon> \r\n <div class=\"d-flex flex-column ml-2\">\r\n <span class=\"fw-normal fs-6\">{{ event.name }}</span> \r\n <div class=\"fs-6 text-muted\">{{event.desc}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n <hr />\r\n <div>\r\n <div *ngFor=\"let item of responseData.itemList\" class=\"d-flex\" style=\"gap: 10px; width: 100%;\">\r\n <img [src]=\"item.itemImages[0].imgUrl\" alt=\"\" style=\"height: 85px;width: 85px;\">\r\n <div class=\"d-flex flex-column justify-content-center\" style=\"gap: 6px; width: 89%;\">\r\n <span class=\"text-dark fw-bold fs-6\">{{item.name}}</span>\r\n <span class=\"fs-6\">Size: XS</span>\r\n <div class=\"d-flex justify-content-between fs-6\">\r\n <span>1 X &#x20b9; <span class=\"text-dark fw-bold\">{{item.price.sellingPrice}}</span></span>\r\n <span> &#x20b9; <span class=\"text-dark fw-bold\">{{item.price.sellingPrice}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr />\r\n <div class=\"fs-6\">\r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Item Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{responseData.amount}}</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span>Delivery</span>\r\n <span>FREE</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Grand Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{responseData.amount}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right\" style=\"width: 25%; mt-2\">\r\n <h1 class=\"mb-3 fs-5\">Your Details</h1>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Name:</span>\r\n <span class=\"fw-bold pl-2\">Shruti</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Phone:</span>\r\n <span class=\"fw-bold pl-2\">940495483938</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Address:</span>\r\n <span class=\"fw-bold pl-2\">The 27 building, Jayabheri Enclave</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Payment:</span>\r\n <span class=\"fw-bold pl-2\">Manual Payment</span>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-container>\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n", styles: [".right{height:240px;padding:15px;background-color:#f8f8f8;border-radius:8px}hr{border-top-width:2px;margin:15px 0}.mat-icon{height:30px;width:30px;font-size:30px}.timeline{margin:25px 0}@media screen and (max-width: 475px){.onlyDesktop{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: TimelineModule }, { kind: "component", type: i4.Timeline, selector: "p-timeline", inputs: ["value", "style", "styleClass", "align", "layout"] }, { kind: "directive", type: i5.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
57
30
  }
58
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: OrderDetailsComponent, decorators: [{
59
32
  type: Component,
@@ -62,7 +35,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
62
35
  SimpoComponentModule,
63
36
  TimelineModule,
64
37
  MatIcon
65
- ], template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"d-flex justify-content-between\" [style.flexDirection]=\"isMobile ? 'column' : 'row'\" [style.width.vw]=\"isMobile ? '100' : '65'\" style=\"margin: auto;\">\r\n <div class=\"left\" [style.width.%]=\"isMobile ? '90' : '70'\">\r\n <h1 class=\"fs-3 fw-normal mb-3 d-flex align-items-center onlyDesktop\">\r\n <mat-icon style=\"cursor: pointer;\" class=\"onlyMobile\">keyboard_arrow_left</mat-icon>\r\n <span>Order Details</span>\r\n </h1>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"fs-5\">Order {{ orderDetailData?.orderNum }}</span>\r\n <span class=\" fs-6\">{{ orderDetailData?.createdTimeStamp | date }}, {{ orderDetailData?.brandOrderDetails?.[0]?.orderedItems.length }} items | &#x20b9; {{orderDetailData?.brandOrderDetails?.[0]?.billDetails?.totalGrossValue}}</span>\r\n </div>\r\n <span class=\"fw-bold fs-5\">{{orderDetailData?.brandOrderDetails?.[0]?.businessName | titlecase}}</span>\r\n </div>\r\n <hr />\r\n <div class=\"timeline\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex\">\r\n <mat-icon style=\"margin-right: 10px;\">{{ event.icon }}</mat-icon> \r\n <div class=\"d-flex flex-column ml-2\">\r\n <span class=\"fw-normal fs-6\">{{ event.name }}</span> \r\n <div class=\"fs-6 \">{{event.desc}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n <hr />\r\n <div>\r\n <div *ngFor=\"let item of orderDetailData?.brandOrderDetails?.[0]?.orderedItems\" class=\"d-flex mb-2\" style=\"gap: 10px; width: 100%;\">\r\n <img [src]=\"item.imgUrl\" alt=\"\" style=\"height: 85px;width: 85px;\">\r\n <div class=\"d-flex flex-column justify-content-center\" style=\"gap: 6px; width: 89%;\">\r\n <span class=\"fw-bold fs-6\">{{item.itemName}}</span>\r\n <span class=\"fs-6\">Size: XS</span>\r\n <div class=\"d-flex justify-content-between fs-6\">\r\n <span>{{item.quantity}} X &#x20b9; <span class=\"fw-bold\">{{item.price}}</span></span>\r\n <span> &#x20b9; <span class=\"fw-bold\">{{item.price * item.quantity}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr />\r\n <div class=\"fs-6\">\r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Item Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{orderDetailData?.billDetails?.totalNetValue | number:'1.0-2'}}</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span>Delivery</span>\r\n <span>FREE</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Grand Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{orderDetailData?.billDetails?.totalNetValue | number:'1.0-2'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right\" style=\"width: 28%;\" [style.width.%]=\"isMobile ? '90' : '28'\" [style.background]=\"getCardBGColor\">\r\n <h1 class=\"mb-3 fs-5\">Your Details</h1>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px;\">Name:</span>\r\n <span class=\"fw-bold pl-2\">{{orderDetailData?.userDetails?.userName}}</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Phone:</span>\r\n <span class=\"fw-bold pl-2\">{{ orderDetailData?.userDetails?.mobile }}</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Address:</span>\r\n <span class=\"fw-bold pl-2\">{{ orderDetailData?.userDetails?.deliveryAddress?.addressLine1 }}</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Payment:</span>\r\n <span class=\"fw-bold pl-2\">Manual Payment</span>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-container>\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n", styles: [".right{height:240px;padding:15px;background-color:#f8f8f8;border-radius:8px}hr{border-top-width:2px;margin:15px 0}.mat-icon{height:30px;width:30px;font-size:30px}.timeline{margin:25px 0}.onlyMobile{display:none}@media screen and (max-width: 475px){.onlyDesktop{display:none!important}.onlyMobile{display:block}}\n"] }]
38
+ ], template: "<ng-container *ngIf=\"!isLoading\">\r\n <section class=\"d-flex justify-content-between\" style=\"width: 80%; margin: auto;\">\r\n <div class=\"left\" style=\"width: 60%;\">\r\n <h1 class=\"fs-3 fw-normal mb-5 d-flex align-items-center onlyDesktop\" style=\"margin-left: -30px;\">\r\n <mat-icon style=\"cursor: pointer;\">keyboard_arrow_left</mat-icon>\r\n <span>Order Details</span>\r\n </h1>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <div class=\"d-flex flex-column\">\r\n <span class=\"text-dark fs-5\">Order {{ responseData.orderId }}</span>\r\n <span class=\"text-muted fs-6\">{{ responseData.orderDate | date }}, {{ responseData.items }} items | &#x20b9; {{responseData.amount}}</span>\r\n </div>\r\n <span class=\"text-dark fw-bold fs-5\">{{responseData.store}}</span>\r\n </div>\r\n <hr />\r\n <div class=\"timeline\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex\">\r\n <mat-icon style=\"margin-right: 10px;\">{{ event.icon }}</mat-icon> \r\n <div class=\"d-flex flex-column ml-2\">\r\n <span class=\"fw-normal fs-6\">{{ event.name }}</span> \r\n <div class=\"fs-6 text-muted\">{{event.desc}}</div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n <hr />\r\n <div>\r\n <div *ngFor=\"let item of responseData.itemList\" class=\"d-flex\" style=\"gap: 10px; width: 100%;\">\r\n <img [src]=\"item.itemImages[0].imgUrl\" alt=\"\" style=\"height: 85px;width: 85px;\">\r\n <div class=\"d-flex flex-column justify-content-center\" style=\"gap: 6px; width: 89%;\">\r\n <span class=\"text-dark fw-bold fs-6\">{{item.name}}</span>\r\n <span class=\"fs-6\">Size: XS</span>\r\n <div class=\"d-flex justify-content-between fs-6\">\r\n <span>1 X &#x20b9; <span class=\"text-dark fw-bold\">{{item.price.sellingPrice}}</span></span>\r\n <span> &#x20b9; <span class=\"text-dark fw-bold\">{{item.price.sellingPrice}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <hr />\r\n <div class=\"fs-6\">\r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Item Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{responseData.amount}}</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span>Delivery</span>\r\n <span>FREE</span>\r\n </div>\r\n \r\n <div class=\"d-flex justify-content-between my-2\">\r\n <span class=\"fw-normal\">Grand Total</span>\r\n <span class=\"fw-bold\">&#x20b9; {{responseData.amount}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"right\" style=\"width: 25%; mt-2\">\r\n <h1 class=\"mb-3 fs-5\">Your Details</h1>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Name:</span>\r\n <span class=\"fw-bold pl-2\">Shruti</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Phone:</span>\r\n <span class=\"fw-bold pl-2\">940495483938</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Address:</span>\r\n <span class=\"fw-bold pl-2\">The 27 building, Jayabheri Enclave</span>\r\n </div>\r\n <div class=\"my-2 fs-6\">\r\n <span style=\"margin-right: 10px\">Payment:</span>\r\n <span class=\"fw-bold pl-2\">Manual Payment</span>\r\n </div>\r\n </div>\r\n </section>\r\n</ng-container>\r\n\r\n<ngx-skeleton-loader *ngIf=\"isLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\">\r\n </ngx-skeleton-loader>\r\n", styles: [".right{height:240px;padding:15px;background-color:#f8f8f8;border-radius:8px}hr{border-top-width:2px;margin:15px 0}.mat-icon{height:30px;width:30px;font-size:30px}.timeline{margin:25px 0}@media screen and (max-width: 475px){.onlyDesktop{display:none}}\n"] }]
66
39
  }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { responseData: [{
67
40
  type: Input
68
41
  }], data: [{
@@ -73,8 +46,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
73
46
  type: Input
74
47
  }], delete: [{
75
48
  type: Input
76
- }], orderDetailData: [{
77
- type: Input,
78
- args: ["orderDetailData"]
79
49
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9vcmRlci1kZXRhaWxzL29yZGVyLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvb3JkZXItZGV0YWlscy9vcmRlci1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBZ0JsRCxNQUFNLE9BQU8scUJBQXFCO0lBVWhDLFlBQ21CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBSi9DLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFPcEIsa0JBQWEsR0FBUTtZQUMxQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsa0RBQWtELEVBQUU7WUFDbkcsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsa0RBQWtELEVBQUU7WUFDM0csRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsa0RBQWtELEVBQUU7U0FDckcsQ0FBQztJQU5D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QUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ29CLGVBQWU7c0JBQXhDLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgVGltZWxpbmVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RpbWVsaW5lJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvZmlsZVN0eWxlc01vZGFsIH0gZnJvbSAnLi4vdXNlci1wcm9maWxlL3VzZXItcHJvZmlsZS5tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLW9yZGVyLWRldGFpbHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBUaW1lbGluZU1vZHVsZSxcclxuICAgIE1hdEljb25cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmRlci1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vb3JkZXItZGV0YWlscy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT3JkZXJEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSByZXNwb25zZURhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YT86IGFueTtcclxuICBASW5wdXQoKSBpbmRleD8gOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD8gOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZT8gOiBib29sZWFuO1xyXG4gIEBJbnB1dChcIm9yZGVyRGV0YWlsRGF0YVwiKSBvcmRlckRldGFpbERhdGE6IGFueTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdHlsZXM/OiBQcm9maWxlU3R5bGVzTW9kYWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIG9yZGVyVGltaWxpbmU6IGFueSA9IFtcclxuICAgIHsgaWNvbjogXCJ3aWRnZXRzXCIsIG5hbWU6IFwiT3JkZXIgUGxhY2VkXCIsIGRlc2M6IFwiWW91ciBvcmRlciBpcyBzdWNjZXNzZnVsIHBsYWNlZCB0cmFjayB5b3VyIG9yZGVyXCIgfSxcclxuICAgIHsgaWNvbjogXCJsb2NhbF9zaGlwcGluZ1wiLCBuYW1lOiBcIlRvIGJlIFNoaXBwZWRcIiwgZGVzYzogXCJZb3VyIG9yZGVyIGlzIHN1Y2Nlc3NmdWwgcGxhY2VkIHRyYWNrIHlvdXIgb3JkZXJcIiB9LFxyXG4gICAgeyBpY29uOiBcImluYm94XCIsIG5hbWU6IFwiVG8gYmUgRGVsaXZlcmVkXCIsIGRlc2M6IFwiWW91ciBvcmRlciBpcyBzdWNjZXNzZnVsIHBsYWNlZCB0cmFjayB5b3VyIG9yZGVyXCIgfSxcclxuICBdO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLm9yZGVyRGV0YWlsRGF0YSk7XHJcbiAgICAgXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXQgZ2V0Q2FyZEJHQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDb21wbGVtZW50Q29sb3IodGhpcy5zdHlsZXM/LmJhY2tncm91bmQuY29sb3IgPz8gXCIjMDAwMDBcIik7XHJcbiAgfVxyXG4gIGdldCBpc01vYmlsZSgpIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG4gIHByaXZhdGUgZ2V0Q29tcGxlbWVudENvbG9yKGhleENvbG9yOiBzdHJpbmcpIHtcclxuICAgIFxyXG4gICAgaWYgKGhleENvbG9yLmxlbmd0aCA8PSA0KVxyXG4gICAgICBoZXhDb2xvciA9IHRoaXMuY29udmVydEhFWChoZXhDb2xvcik7XHJcblxyXG4gICAgaGV4Q29sb3IgPSBoZXhDb2xvci5yZXBsYWNlKC9eIy8sICcnKTtcclxuXHJcbiAgICBsZXQgciA9IHBhcnNlSW50KGhleENvbG9yLnN1YnN0cmluZygwLCAyKSwgMTYpO1xyXG4gICAgbGV0IGcgPSBwYXJzZUludChoZXhDb2xvci5zdWJzdHJpbmcoMiwgNCksIDE2KTtcclxuICAgIGxldCBiID0gcGFyc2VJbnQoaGV4Q29sb3Iuc3Vic3RyaW5nKDQsIDYpLCAxNik7XHJcblxyXG4gICAgciA9IDI1NSAtIHI7XHJcbiAgICBnID0gMjU1IC0gZztcclxuICAgIGIgPSAyNTUgLSBiO1xyXG5cclxuICAgIGxldCBjb21wSGV4ID0gYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtnLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Yi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xyXG5cclxuICAgIHJldHVybiBjb21wSGV4LnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgY29udmVydEhFWChoZXhDb2xvcjogc3RyaW5nKSB7XHJcbiAgICBoZXhDb2xvciA9IGhleENvbG9yLnJlcGxhY2UoL14jLywgJycpO1xyXG4gICAgbGV0IGNvbG9yID0gXCIjXCI7XHJcbiAgICBmb3IgKGxldCBpPTA7IGk8MzsgaSsrKVxyXG4gICAgICBjb2xvciArPSAoaGV4Q29sb3JbaV0gKyBoZXhDb2xvcltpKzFdKTtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgW3N0eWxlLmZsZXhEaXJlY3Rpb25dPVwiaXNNb2JpbGUgPyAnY29sdW1uJyA6ICdyb3cnXCIgW3N0eWxlLndpZHRoLnZ3XT1cImlzTW9iaWxlID8gJzEwMCcgOiAnNjUnXCIgc3R5bGU9XCJtYXJnaW46IGF1dG87XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbc3R5bGUud2lkdGguJV09XCJpc01vYmlsZSA/ICc5MCcgOiAnNzAnXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImZzLTMgZnctbm9ybWFsIG1iLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBvbmx5RGVza3RvcFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIGNsYXNzPVwib25seU1vYmlsZVwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+T3JkZXIgRGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTVcIj5PcmRlciB7eyBvcmRlckRldGFpbERhdGE/Lm9yZGVyTnVtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIGZzLTZcIj57eyBvcmRlckRldGFpbERhdGE/LmNyZWF0ZWRUaW1lU3RhbXAgfCBkYXRlIH19LCB7eyBvcmRlckRldGFpbERhdGE/LmJyYW5kT3JkZXJEZXRhaWxzPy5bMF0/Lm9yZGVyZWRJdGVtcy5sZW5ndGggfX0gaXRlbXMgfCAmI3gyMGI5OyB7e29yZGVyRGV0YWlsRGF0YT8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8uYmlsbERldGFpbHM/LnRvdGFsR3Jvc3NWYWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgZnMtNVwiPnt7b3JkZXJEZXRhaWxEYXRhPy5icmFuZE9yZGVyRGV0YWlscz8uWzBdPy5idXNpbmVzc05hbWUgfCB0aXRsZWNhc2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwLXRpbWVsaW5lIFt2YWx1ZV09XCJvcmRlclRpbWlsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiBsZXQtZXZlbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweDtcIj57eyBldmVudC5pY29uIH19PC9tYXQtaWNvbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIG1sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LW5vcm1hbCBmcy02XCI+e3sgZXZlbnQubmFtZSB9fTwvc3Bhbj4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgXCI+e3tldmVudC5kZXNjfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRpbWVsaW5lPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9yZGVyRGV0YWlsRGF0YT8uYnJhbmRPcmRlckRldGFpbHM/LlswXT8ub3JkZXJlZEl0ZW1zXCIgY2xhc3M9XCJkLWZsZXggbWItMlwiIHN0eWxlPVwiZ2FwOiAxMHB4OyB3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBhbHQ9XCJcIiBzdHlsZT1cImhlaWdodDogODVweDt3aWR0aDogODVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cImdhcDogNnB4OyB3aWR0aDogODklO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgZnMtNlwiPnt7aXRlbS5pdGVtTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTZcIj5TaXplOiBYUzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW0ucXVhbnRpdHl9fSBYICAmI3gyMGI5OyA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj57e2l0ZW0ucHJpY2V9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gJiN4MjBiOTsgPHNwYW4gY2xhc3M9XCJmdy1ib2xkXCI+e3tpdGVtLnByaWNlICogaXRlbS5xdWFudGl0eX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ub3JtYWxcIj5JdGVtIFRvdGFsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZFwiPiYjeDIwYjk7IHt7b3JkZXJEZXRhaWxEYXRhPy5iaWxsRGV0YWlscz8udG90YWxOZXRWYWx1ZSB8IG51bWJlcjonMS4wLTInfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+RGVsaXZlcnk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+RlJFRTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LW5vcm1hbFwiPkdyYW5kIFRvdGFsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZFwiPiYjeDIwYjk7IHt7b3JkZXJEZXRhaWxEYXRhPy5iaWxsRGV0YWlscz8udG90YWxOZXRWYWx1ZSB8IG51bWJlcjonMS4wLTInfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCIgc3R5bGU9XCJ3aWR0aDogMjglO1wiIFtzdHlsZS53aWR0aC4lXT1cImlzTW9iaWxlID8gJzkwJyA6ICcyOCdcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRDYXJkQkdDb2xvclwiPlxyXG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJtYi0zIGZzLTVcIj5Zb3VyIERldGFpbHM8L2gxPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmcy02XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweDtcIj5OYW1lOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBwbC0yXCI+e3tvcmRlckRldGFpbERhdGE/LnVzZXJEZXRhaWxzPy51c2VyTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj5QaG9uZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgcGwtMlwiPnt7IG9yZGVyRGV0YWlsRGF0YT8udXNlckRldGFpbHM/Lm1vYmlsZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZzLTZcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+QWRkcmVzczo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgcGwtMlwiPnt7IG9yZGVyRGV0YWlsRGF0YT8udXNlckRldGFpbHM/LmRlbGl2ZXJ5QWRkcmVzcz8uYWRkcmVzc0xpbmUxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj5QYXltZW50Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBwbC0yXCI+TWFudWFsIFBheW1lbnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgaGVpZ2h0OiAnNDB2aCcsXHJcbiAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAgICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgICAncmlnaHQnOiAnNXB4J1xyXG4gIH1cIj5cclxuICA8L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9vcmRlci1kZXRhaWxzL29yZGVyLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvb3JkZXItZGV0YWlscy9vcmRlci1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBZWxELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFDbUIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFIL0MsY0FBUyxHQUFZLEtBQUssQ0FBQztRQU1wQixrQkFBYSxHQUFRO1lBQzFCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxrREFBa0QsRUFBRTtZQUNuRyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxrREFBa0QsRUFBRTtZQUMzRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxrREFBa0QsRUFBRTtTQUNyRyxDQUFDO0lBTkMsQ0FBQztJQVFKLFFBQVE7UUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQzs4R0F2QlUscUJBQXFCO2tHQUFyQixxQkFBcUIsdUxDbkJsQyw4ckpBMEZBLHFURC9FSSxZQUFZLGtUQUNaLG9CQUFvQiw4TUFDcEIsY0FBYyxxUUFDZCxPQUFPOzsyRkFLRSxxQkFBcUI7a0JBWmpDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxPQUFPO3FCQUNSO2tGQUtRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgVGltZWxpbmVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RpbWVsaW5lJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tb3JkZXItZGV0YWlscycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIFRpbWVsaW5lTW9kdWxlLFxyXG4gICAgTWF0SWNvblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9vcmRlci1kZXRhaWxzLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcmRlckRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YT86IGFueTtcclxuICBASW5wdXQoKSBkYXRhPzogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPyA6IGJvb2xlYW47XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgcHVibGljIG9yZGVyVGltaWxpbmU6IGFueSA9IFtcclxuICAgIHsgaWNvbjogXCJ3aWRnZXRzXCIsIG5hbWU6IFwiT3JkZXIgUGxhY2VkXCIsIGRlc2M6IFwiWW91ciBvcmRlciBpcyBzdWNjZXNzZnVsIHBsYWNlZCB0cmFjayB5b3VyIG9yZGVyXCIgfSxcclxuICAgIHsgaWNvbjogXCJsb2NhbF9zaGlwcGluZ1wiLCBuYW1lOiBcIlRvIGJlIFNoaXBwZWRcIiwgZGVzYzogXCJZb3VyIG9yZGVyIGlzIHN1Y2Nlc3NmdWwgcGxhY2VkIHRyYWNrIHlvdXIgb3JkZXJcIiB9LFxyXG4gICAgeyBpY29uOiBcImluYm94XCIsIG5hbWU6IFwiVG8gYmUgRGVsaXZlcmVkXCIsIGRlc2M6IFwiWW91ciBvcmRlciBpcyBzdWNjZXNzZnVsIHBsYWNlZCB0cmFjayB5b3VyIG9yZGVyXCIgfSxcclxuICBdO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5yZXNwb25zZURhdGEpOyBcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIHN0eWxlPVwid2lkdGg6IDgwJTsgbWFyZ2luOiBhdXRvO1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPlxyXG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJmcy0zIGZ3LW5vcm1hbCBtYi01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgb25seURlc2t0b3BcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMzBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPk9yZGVyIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmsgZnMtNVwiPk9yZGVyIHt7IHJlc3BvbnNlRGF0YS5vcmRlcklkIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBmcy02XCI+e3sgcmVzcG9uc2VEYXRhLm9yZGVyRGF0ZSB8IGRhdGUgfX0sIHt7IHJlc3BvbnNlRGF0YS5pdGVtcyB9fSBpdGVtcyB8ICYjeDIwYjk7IHt7cmVzcG9uc2VEYXRhLmFtb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFyayBmdy1ib2xkIGZzLTVcIj57e3Jlc3BvbnNlRGF0YS5zdG9yZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZVwiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGltZWxpbmUgW3ZhbHVlXT1cIm9yZGVyVGltaWxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiIGxldC1ldmVudD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4O1wiPnt7IGV2ZW50Lmljb24gfX08L21hdC1pY29uPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctbm9ybWFsIGZzLTZcIj57eyBldmVudC5uYW1lIH19PC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LW11dGVkXCI+e3tldmVudC5kZXNjfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9wLXRpbWVsaW5lPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc3BvbnNlRGF0YS5pdGVtTGlzdFwiIGNsYXNzPVwiZC1mbGV4XCIgc3R5bGU9XCJnYXA6IDEwcHg7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLml0ZW1JbWFnZXNbMF0uaW1nVXJsXCIgYWx0PVwiXCIgc3R5bGU9XCJoZWlnaHQ6IDg1cHg7d2lkdGg6IDg1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDZweDsgd2lkdGg6IDg5JTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhcmsgZnctYm9sZCBmcy02XCI+e3tpdGVtLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy02XCI+U2l6ZTogWFM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MSBYICAmI3gyMGI5OyA8c3BhbiBjbGFzcz1cInRleHQtZGFyayBmdy1ib2xkXCI+e3tpdGVtLnByaWNlLnNlbGxpbmdQcmljZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiAmI3gyMGI5OyA8c3BhbiBjbGFzcz1cInRleHQtZGFyayBmdy1ib2xkXCI+e3tpdGVtLnByaWNlLnNlbGxpbmdQcmljZX19PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ub3JtYWxcIj5JdGVtIFRvdGFsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZFwiPiYjeDIwYjk7IHt7cmVzcG9uc2VEYXRhLmFtb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkRlbGl2ZXJ5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkZSRUU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ub3JtYWxcIj5HcmFuZCBUb3RhbDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGRcIj4mI3gyMGI5OyB7e3Jlc3BvbnNlRGF0YS5hbW91bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIiBzdHlsZT1cIndpZHRoOiAyNSU7IG10LTJcIj5cclxuICAgICAgICAgICAgPGgxIGNsYXNzPVwibWItMyBmcy01XCI+WW91ciBEZXRhaWxzPC9oMT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj5OYW1lOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBwbC0yXCI+U2hydXRpPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj5QaG9uZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgcGwtMlwiPjk0MDQ5NTQ4MzkzODwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZzLTZcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+QWRkcmVzczo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgcGwtMlwiPlRoZSAyNyBidWlsZGluZywgSmF5YWJoZXJpIEVuY2xhdmU8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmcy02XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTBweFwiPlBheW1lbnQ6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkIHBsLTJcIj5NYW51YWwgUGF5bWVudDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICBoZWlnaHQ6ICc0MHZoJyxcclxuICAgICdib3JkZXItcmFkaXVzJzogJzEwcHgnLFxyXG4gICAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAgICdyaWdodCc6ICc1cHgnXHJcbiAgfVwiPlxyXG4gIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuIl19