simpo-component-library 3.6.811 → 3.6.813
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/sections/header-section/header-section.component.mjs +5 -4
- package/fesm2022/simpo-component-library.mjs +4 -3
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/package.json +1 -1
- package/simpo-component-library-3.6.813.tgz +0 -0
- package/simpo-component-library-3.6.811.tgz +0 -0
|
@@ -434,7 +434,8 @@ export class HeaderSectionComponent {
|
|
|
434
434
|
this.router.navigate(['']);
|
|
435
435
|
}
|
|
436
436
|
else {
|
|
437
|
-
this.router.navigate([`${ele.redirectionalUrl}`]);
|
|
437
|
+
// this.router.navigate([`${ele.redirectionalUrl}`]);
|
|
438
|
+
this.router.navigateByUrl(ele.redirectionalUrl);
|
|
438
439
|
}
|
|
439
440
|
}
|
|
440
441
|
setChildMenu(ele) {
|
|
@@ -448,7 +449,7 @@ export class HeaderSectionComponent {
|
|
|
448
449
|
}
|
|
449
450
|
}
|
|
450
451
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderSectionComponent, deps: [{ token: i1.EventsService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.MatDialog }, { token: i4.StorageServiceService }, { token: i5.RestService }, { token: i1.EventsService }, { token: LOCAL_STORAGE }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
451
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeaderSectionComponent, isStandalone: true, selector: "simpo-header-section", inputs: { data: "data", nextComponent: "nextComponent", index: "index", customClass: "customClass", edit: "edit" }, host: { listeners: { "window:scroll": "onScroll($event)", "window:resize": "getScreenSize($event)" } }, viewQueries: [{ propertyName: "childContainer", first: true, predicate: ["childContainer"], descendants: true }], ngImport: i0, template: "<section [id]=\"data?.id\" class=\"total-container w-100\" [class.z-index-10]=\"!isHeaderSticky && isComponentMerged\">\r\n <div class=\"w-100\" [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [ngClass]=\"{'box-shadow': isEcommerceWebsite}\"\r\n [class.margin-bottom]=\"isHeaderSticky && isMobile && categoryList?.length == 0\">\r\n <div [simpoSticky]=\"isHeaderSticky\" [simpoBackground]=\"backgroundInfo\" class=\"w-100\" #childContainer\r\n [categoryHeader]=\"isEcommerceWebsite && categoryList?.length > 0 && !isMobile && !showCategoryMobileHeader()\"\r\n simpoHover [class.bg-transparent]=\"isComponentMerged && scrollValue == 0 && !isMobile\"\r\n (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\"\r\n [class.header--scrolled]=\"data?.styles?.shrinkOnScroll && isHeaderSticky && scrollValue > 0 && !edit\">\r\n <!-- [class.background-position]=\"isComponentMerged && backgroundInfo?.showImage\" -->\r\n <ng-container *ngIf=\"style?.headline?.display\">\r\n <div>\r\n <simpo-moving-text [edit]=\"false\" [delete]=\"false\" [data]=\"data\"></simpo-moving-text>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"style?.styling === 'Header1' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header1Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header2' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header2Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header3' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header3Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header4' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header4Template\"></ng-container>\r\n </div>\r\n\r\n <div [spacingHorizontal]=\"stylesLayout\" [simpoOverlay]=\"backgroundInfo\" *ngIf=\"isEcommerceWebsite\"\r\n [simpoLayout]=\"screenWidth > 475 ? stylesLayout : undefined\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"ecommerce_header\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"input-group mx-2 mb-2 w-96\" *ngIf=\"isMobile && isEcommerceWebsite && !restrictCartBarInPages()\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search for items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + accentColor}\">\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : style?.background?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + style?.background?.accentColor + ' 0%' + ',' + style?.background?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">search</mat-icon>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && !isMobile && data?.styles?.menuType === 'MEGA_MENU'\">\r\n <ng-container *ngTemplateOutlet=\"categoriesHeader\"></ng-container>\r\n </ng-container>\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>\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && isMobile && showCategoryMobileHeader()\">\r\n <ng-container *ngTemplateOutlet=\"mobileCategoryHeader\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"isEcommerceWebsite && isMobile && !restrictInPages()\">\r\n <ng-container *ngTemplateOutlet=\"mobileFooterTemplate\"></ng-container>\r\n </ng-container> -->\r\n</section>\r\n\r\n<ng-template #header1Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 94 : ''\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header2Template>\r\n <div class=\"header1\">\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 93 : ''\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header3Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header4Template>\r\n <div class=\"header1\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container> </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #logoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer mx-1\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size + 80\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\" [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : \r\n ((content?.logo?.size >= 60 && content?.logo?.size <= 100) ? (20) : ((content?.logo?.size || 10) - 10))\"\r\n loading=\"lazy\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #pageLinksTemplate>\r\n <div class=\"navbar-nav pageLinks\" [ngClass]=\"{'align-items-center' : !isMobile}\">\r\n <div class=\"d-flex gap-3\"\r\n [ngClass]=\"{'flex-column': isMobile, 'align-items-center' : !isMobile, 'mobile-page-list': isMobile}\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\" [accentColor]=\"accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle category-btn\" type=\"button\"\r\n [simpoColor]=\"simpoColor\" id=\"link\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | lowercase | titlecase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #buttonsTemplate>\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"action?.display\" class=\"button-display mt-0\" [ngClass]=\"{'w-100 justify-space-around': isMobile}\">\r\n <div *ngFor=\"let button of action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\" [sectionId]=\"data?.id\"\r\n [edit]=\"edit\" [color]=\"data?.styles?.background?.accentColor\" [buttonId]=\"button.id\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n <div class=\"static_login_btn d-flex justify-content-between align-items-center cursor-pointer\"\r\n (click)=\"navigateLogin()\" *ngIf=\"passbookAppStatus && !loggedIn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\">\r\n <mat-icon>person_outline</mat-icon>\r\n Login\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn && !isMobile\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n </div>\r\n <button class=\"mobileLoginButton\" *ngIf=\"isEcommerceWebsite && isMobile && !loggedIn\"\r\n [style.border]=\"'1px solid' + accentColor\" [style.color]=\"accentColor\" (click)=\"goToAccount('LOGIN')\">Login</button>\r\n</ng-template>\r\n\r\n<ng-template #mobileFooterTemplate>\r\n <div class=\"cart-footer\" [style.background]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount > 0 && !restrictCartBarInPages()\">\r\n <div class=\"d-flex justify-content-between px-3 py-2 h-100 align-items-center\">\r\n <div class=\"item-count fw-bold\">\r\n {{ getCartItemsCount ?? 3 }} {{ getCartItemsCount > 1 ? 'items' : 'item' }} in cart\r\n <!-- Total : \u20B9{{ getCartTotalAmount }} -->\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 fw-bold\" (click)=\"goToCart()\">\r\n View Cart <mat-icon [simpoColor]=\"accentColor\">arrow_forward</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mobile-footer\" [simpoBackground]=\"backgroundInfo\">\r\n <div class=\"icons\" (click)=\"goToHome()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">home</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Home</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"searchProducts()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">grid_on</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Shop</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"goToWishlist()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">favorite_border</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Wishlist</span>\r\n </div>\r\n <div class=\"icons position-relative\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">shopping_cart</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Cart</span>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerceButtonsTemplate>\r\n <div class=\"justify-content-between pr-0 d-flex position-relative gap-10 w-100\"\r\n [style.flexDirection]=\"style?.styling === 'Header2' || style?.styling === 'Header4' ? 'row-reverse' : ''\">\r\n <!-- <div class=\"search-icon\" (click)=\"showSearchBar = !showSearchBar\">\r\n <mat-icon [style.color]=\"accentColor\">search</mat-icon>\r\n </div> -->\r\n <div class=\"w-75 d-flex align-items-center\" [ngClass]=\"{'justify-content-center' : !passbookAppStatus}\">\r\n <div class=\"input-group w-75 ml-2\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search For Items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"\r\n [style.color]=\"backgroundInfo?.accentColor\">\r\n <!-- <span class=\"animated-placeholder position-absolute\" \r\n [class.animate]=\"animatePlaceholder\"\r\n *ngIf=\"style?.searchBarPlaceholderList.length > 1 && style?.smartSearchBar\">\r\n {{ currentPlaceholder }}\r\n </span> -->\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType === 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center py-1 px-3 b-1 stores\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" (click)=\"goToSchemes()\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\" *ngIf=\"passbookAppStatus\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n xmlns:svgjs=\"http://svgjs.dev/svgjs\" id=\"Layer_2\" viewBox=\"0 0 60 60\" data-name=\"Layer 2\" width=\"30\"\r\n height=\"30\" version=\"1.1\">\r\n <g width=\"100%\" height=\"100%\" transform=\"matrix(1,0,0,1,0,0)\">\r\n <path d=\"m14.36 46.66.51-9.86-11.93-7.16-1.94 8.43z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m17.17 38.1s0-.02.02-.03c0 0 0-.02.02-.02.04-.05.1-.08.15-.11.02-.01.03-.03.05-.04l4.66-1.94h-.02s-1.87-1.21-1.87-1.21l-3.18 1.57-1.07.53-.43 8.32 1.58-6.9c.01-.06.05-.12.09-.17z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m19.14 34.08-6.27-4.04c-.19-.12-.28-.34-.23-.56l1.08-4.72-9.96 4.14 11.68 7.01z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m30.93 46.42-.5 9.79 32.57-18.67-1.21-6.4-23.16 11.46z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m16 47.65 13.38 8.58.49-9.86-11.93-7.17z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m27.85 39.34s0 0-.01 0c0 0 0 0-.01 0-.08.04-.16.06-.24.06-.05 0-.1-.03-.15-.04-.04-.01-.08-.01-.11-.03l-4.16-2.67-4.37 1.82 11.68 7.01 30.4-15.05-10.71-3.88-22.28 12.78z\"\r\n [attr.fill]=\"accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m28.26 36.01-.1 1.93 32.58-18.69-1.22-6.39-30.86 15.28z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m27.61 28.09-11.93-7.16-1.94 8.43 13.36 8.58z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m58.57 12.15-12.1-4.38-29.97 12.43 11.68 7z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n </g>\r\n </svg>\r\n <div [style.color]=\"accentColor\">Schemes</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center\">\r\n <div class=\"stores d-flex align-items-center gap-2 py-2 px-3\" (click)=\"goToStores()\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" *ngIf=\"storeAvaiable\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\">\r\n <mat-icon [style.color]=\"backgroundInfo?.accentColor\">store</mat-icon>\r\n <span [style.color]=\"backgroundInfo?.accentColor\">Stores</span>\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"!getPincode\">Enter\r\n Pincode\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">{{\"Delivering to: \" +\r\n getPincode}}</div>\r\n\r\n <!-- (mouseleave)=\"showPincodeInput = false\" -->\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToFav()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">favorite</mat-icon>\r\n </div>\r\n <div class=\"d-flex align-items-center position-relative\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">shopping_cart</mat-icon>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')' , 'color' : setColor()}\">\r\n {{getCartItemsCount}}</div>\r\n </div>\r\n <div class=\"loginButton\" *ngIf=\"!loggedIn\" (mouseenter)=\"showLogin = true;showPincodeInput = false\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"27\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12.12 12.78C12.05 12.77 11.96 12.77 11.88 12.78C10.12 12.72 8.71997 11.28 8.71997 9.50998C8.71997 7.69998 10.18 6.22998 12 6.22998C13.81 6.22998 15.28 7.69998 15.28 9.50998C15.27 11.28 13.88 12.72 12.12 12.78Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.74 19.38C16.96 21.01 14.6 22 12 22C9.40001 22 7.04001 21.01 5.26001 19.38C5.36001 18.44 5.96001 17.52 7.03001 16.8C9.77001 14.98 14.25 14.98 16.97 16.8C18.04 17.52 18.64 18.44 18.74 19.38Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\"\r\n stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <!-- <span class=\"fw-normal fs-6\" [simpoColor]=\"accentColor\">Login</span> -->\r\n </div>\r\n <!-- (mouseleave)=\"showLogin = false\" -->\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n <!-- <div> -->\r\n <!-- <button class=\"button\" (click)=\"goToAccount()\" simpoButtonDirective [id]=\"sectionId+buttonId\" [buttonStyle]=\"buttonStyle\" [color]=\"color\" [appButtonEditor]=\"edit ?? false\" [buttonData]=\"buttonContent\">{{buttonContent?.label}}</button> -->\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #navbarLinksTemplate>\r\n <div class=\"navbar-collapse fs-6 position-relative d-flex\" style=\"margin-top: 5px; margin-left: 25px;\"\r\n [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 768\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle\" type=\"button\" [simpoColor]=\"simpoColor\" id=\"link\"\r\n data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | uppercase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"offcanvas\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\"\r\n [ngClass]=\"{'offcanvas-end' : (style?.styling === 'Header1' || style?.styling === 'Header3') && !isEcommerceWebsite, 'offcanvas-start': style?.styling === 'Header2' || style?.styling === 'Header4' || isEcommerceWebsite}\">\r\n <div class=\"offcanvas-header\" [simpoBackground]=\"style?.background\">\r\n <ng-container *ngTemplateOutlet=\"mobileLogoSectionTemplate\"></ng-container>\r\n <!-- <button type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button> -->\r\n <mat-icon data-bs-dismiss=\"offcanvas\">close</mat-icon>\r\n </div>\r\n <div class=\"offcanvas-body\">\r\n <div class=\"pages\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"offcanvas-footer\">\r\n <div class=\"canvas-button\">\r\n <ng-container *ngTemplateOutlet=\"buttonsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #ecomProfileTemplate>\r\n <!-- <mat-icon class=\"h-100 d-flex align-items-center justify-content-center br-50 fs-22 px-3 py-1\"\r\n (click)=\"showSearchBarMobile = !showSearchBarMobile\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon> -->\r\n\r\n\r\n <!-- <input type=\"text\" class=\"form-control mob-form-control\" placeholder=\"Search Product\" aria-label=\"Search Product\"\r\n *ngIf=\"showSearchBarMobile\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"> -->\r\n\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileLogoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer h-100\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\" class=\"h-100\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" class=\"h-100\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"logo\" class=\"h-100\" loading=\"lazy\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #categoriesHeader>\r\n <div class=\"categories-wrapper\"\r\n *ngIf=\"(categoryList?.length > 0 || collectionList?.collections?.length > 0) && !isMobile\"\r\n (mouseleave)=\"showList = false; showCollections = false\">\r\n\r\n <div class=\"blur-overlay\" [class.active]=\"showList || showCollections\"></div>\r\n\r\n <div class=\"categories-header d-flex gap-3 py-2 position-relative\" [spacingHorizontal]=\"stylesLayout\"\r\n [style.background]=\"data?.styles?.headline?.color\">\r\n\r\n <div class=\"category cursor-pointer\" *ngFor=\"let ele of megaMenu; let i = index\"\r\n [style.--border-color]=\"data?.styles?.background?.accentColor\" [simpoColor]=\"data?.styles?.headline?.color\"\r\n (mouseenter)=\"setChildMenu(ele)\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n </div>\r\n\r\n <!-- [class.hide-dropdown]=\"!showList\" -->\r\n <div class=\"list-category\" [class.show-dropdown]=\"showList\" [class.hide-dropdown]=\"!showList\">\r\n <div class=\"row w-100 h-100 mega-menu-scroll-row\">\r\n <ng-container *ngFor=\"let ele of selectedCategory; let i = index\">\r\n <div class=\"mega-menu-scroll-col\" [ngClass]=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY') ? 'col-3' : 'col-2'\">\r\n\r\n <ng-container *ngIf=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY' )\">\r\n <img [src]=\"ele.imageUrl\" [alt]=\"ele?.label\" class=\"w-100 mb-2 br-12 cursor-pointer collectionImage\" *ngIf=\"ele.imageUrl\" (click)=\"redirectionsOfMenu(ele)\" />\r\n </ng-container>\r\n\r\n <div class=\"list-header mb-3 cursor-pointer\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n <ng-container *ngIf=\"ele?.children && ele?.children.length > 0\">\r\n <div class=\"d-flex flex-column gap-3 list-item\">\r\n <ng-container *ngFor=\"let child of ele?.children\">\r\n <div (click)=\"redirectionsOfMenu(child)\" class=\"cursor-pointer\">\r\n {{child?.label | titlecase}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileCategoryHeader>\r\n <div class=\"categories-header d-flex gap-3 py-2 overflow-auto\" *ngIf=\"categoryList?.length > 0 && isMobile\"\r\n [spacingHorizontal]=\"stylesLayout\" [class.margin-top-mob]=\"isHeaderSticky\">\r\n <div class=\"category cursor-pointer d-flex flex-column gap-3\" *ngFor=\"let ele of categoryList;let i = index\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"selectedCategory = ele; filterByCategory()\">\r\n <div class=\"cat-img d-flex justify-content-center align-items-center w-100\">\r\n <img [src]=\"ele?.imageUrls[0]\" alt=\"\" class=\"h-10 br-12\">\r\n </div>\r\n <div class=\"text-center f-14\">{{ele?.categoryName | titlecase}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerce_header>\r\n <header class=\"site-header\">\r\n <!-- Top Bar: Logo, Search, User Actions -->\r\n <div class=\"top-bar\">\r\n\r\n <!-- Mobile Menu Toggle (Checkbox Hack) -->\r\n <div [ngClass]=\"{'mobile-header-left-side': screenWidth <= 475}\">\r\n <label for=\"mobile-menu-checkbox\" class=\"mobile-menu-btn\" data-bs-toggle=\"offcanvas\"\r\n data-bs-target=\"#offcanvasRight\" aria-controls=\"offcanvasRight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"></line>\r\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"></line>\r\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"></line>\r\n </svg>\r\n </label>\r\n\r\n <!-- Logo Section -->\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"Logo\" class=\"logo-img\" [width]=\"content?.logo?.size + 15\"\r\n [height]=\"content?.logo?.size\">\r\n </a>\r\n\r\n <a class=\"textPluslogo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && content?.logo?.text?.isIcon \r\n && content?.logo?.text?.url\">\r\n\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"Icon\" class=\"logo-icon\"\r\n [width]=\"content?.logo?.size + 15\" [height]=\"content?.logo?.size\">\r\n\r\n <span class=\"logo-text\" [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 475\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && !content?.logo?.text?.isIcon\">\r\n\r\n <span class=\"logo-main\" [simpoColor]=\"simpoColor\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n </div>\r\n\r\n <!-- Search Bar -->\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth > 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown menu style -->\r\n <div class=\"dropdown_menu\" *ngIf=\"screenWidth > 475 && data?.styles?.menuType === 'DROPDOWN_MENU'\"\r\n (mouseleave)=\"showList = false; selectedCategory = null\">\r\n <div class=\"dd-nav\">\r\n <div class=\"dd-tab-wrap\" *ngFor=\"let ele of megaMenu\" (mouseenter)=\"setChildMenu(ele)\">\r\n <button type=\"button\" class=\"dd-tab\" [class.dd-tab-active]=\"showList && selectedCategory === ele?.children\"\r\n (click)=\"redirectionsOfMenu(ele)\">\r\n <span class=\"text-nowrap\">{{ele?.label | titlecase}}</span>\r\n <img style=\"width:20px; height:20px\" class=\"tab-arrow\" *ngIf=\"ele?.children?.length\"\r\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/334952c1776866431821dropdown-arrow-svgrepo-com.svg\"\r\n alt=\"dropdown arrow\">\r\n </button>\r\n\r\n <div class=\"dd-panel\" *ngIf=\"showList && selectedCategory === ele?.children && ele?.children?.length\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"dd-item\" *ngFor=\"let child of ele?.children\"\r\n (click)=\"!child?.children?.length ? redirectionsOfMenu(child) : ''\">\r\n <span class=\"text-nowrap\">{{child?.label | titlecase}}</span>\r\n <span class=\"dd-item-arrow\" *ngIf=\"child?.children?.length\">›</span>\r\n\r\n <div class=\"dd-submenu\" *ngIf=\"child?.children?.length\">\r\n <div class=\"dd-sub-item\" *ngFor=\"let sub of child?.children\"\r\n (click)=\"redirectionsOfMenu(sub); $event.stopPropagation()\">\r\n <span class=\"text-nowrap\">{{sub?.label | titlecase}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Right Actions -->\r\n <div class=\"user-actions\">\r\n \r\n <ng-container *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar\">\r\n <a class=\"action-link icon-only dropdown-search-toggle\" (click)=\"showDropdownDesktopSearch = !showDropdownDesktopSearch\"\r\n aria-label=\"Toggle search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"storeAvaiable\">\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n *ngIf=\"!getPincode\">\r\n <!-- <svg width=\"20\" height=\"20\" viewBox=\"0 0 17 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\" fill=\"none\" [simpoColor]=\"simpoColor\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <path\r\n d=\"M8.5 0.5c-3.032 0-5.5 2.467-5.5 5.5 0 4.373 4.913 10.086 5.122 10.328l0.378 0.435 0.378-0.436c0.209-0.241 5.122-5.954 5.122-10.327 0-3.033-2.468-5.5-5.5-5.5zM8.5 15.215c-1.146-1.424-4.5-5.879-4.5-9.215 0-2.481 2.019-4.5 4.5-4.5s4.5 2.019 4.5 4.5c0 3.333-3.354 7.791-4.5 9.215zM8.5 3.139c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zM8.5 8.139c-1.103 0-2-0.897-2-2s0.897-2 2-2 2 0.897 2 2-0.897 2-2 2z\"\r\n fill=\"#000000\" />\r\n </svg> -->\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 512 512\"\r\n [simpoColor]=\"simpoColor\" stroke=\"currentColor\" fill=\"currentColor\">\r\n <g>\r\n <path\r\n d=\"M341.476 338.285c54.483-85.493 47.634-74.827 49.204-77.056C410.516 233.251 421 200.322 421 166 421 74.98 347.139 0 256 0 165.158 0 91 74.832 91 166c0 34.3 10.704 68.091 31.19 96.446l48.332 75.84C118.847 346.227 31 369.892 31 422c0 18.995 12.398 46.065 71.462 67.159C143.704 503.888 198.231 512 256 512c108.025 0 225-30.472 225-90 0-52.117-87.744-75.757-139.524-83.715zm-194.227-92.34a15.57 15.57 0 0 0-.517-.758C129.685 221.735 121 193.941 121 166c0-75.018 60.406-136 135-136 74.439 0 135 61.009 135 136 0 27.986-8.521 54.837-24.646 77.671-1.445 1.906 6.094-9.806-110.354 172.918L147.249 245.945zM256 482c-117.994 0-195-34.683-195-60 0-17.016 39.568-44.995 127.248-55.901l55.102 86.463a14.998 14.998 0 0 0 25.298 0l55.101-86.463C411.431 377.005 451 404.984 451 422c0 25.102-76.313 60-195 60z\">\r\n </path>\r\n <path\r\n d=\"M256 91c-41.355 0-75 33.645-75 75s33.645 75 75 75 75-33.645 75-75-33.645-75-75-75zm0 120c-24.813 0-45-20.187-45-45s20.187-45 45-45 45 20.187 45 45-20.187 45-45 45z\">\r\n </path>\r\n </g>\r\n </svg>\r\n\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">Enter Pincode</span>\r\n\r\n </a>\r\n\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7\"></path>\r\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path>\r\n <path d=\"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4\"></path>\r\n <path d=\"M2 7h20\"></path>\r\n <path\r\n d=\"M22 7v3a2 2 0 0 1-2 2v0a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12v0a2 2 0 0 1-2-2V7\">\r\n </path>\r\n </svg>\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">{{\"Delivering to: \" +\r\n getPincode}}</span>\r\n\r\n </a>\r\n\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <a class=\"action-link icon-only login-btn\" *ngIf=\"!loggedIn\"\r\n (mouseenter)=\"showLogin = true;showPincodeInput = false\" (click)=\"showLogin = !showLogin\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"action-link icon-only\" (click)=\"goToAccount('PROFILE')\" *ngIf=\"loggedIn\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n\r\n <a class=\"action-link icon-only icon-container wishlist-icon\" (click)=\"goToWishlist()\">\r\n <!-- Heart Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path\r\n d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\">\r\n </path>\r\n </svg>\r\n <!-- <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\">2</span> -->\r\n </a>\r\n\r\n <a class=\"action-link icon-only icon-container cart-icon\" (click)=\"goToCart()\">\r\n <!-- Shopping Bag Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z\"></path>\r\n <path d=\"M3 6h18\"></path>\r\n <path d=\"M16 10a4 4 0 0 1-8 0\"></path>\r\n </svg>\r\n <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</span>\r\n </a>\r\n\r\n <div class=\"dropdown-search-expand\"\r\n *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar && showDropdownDesktopSearch\">\r\n <div class=\"dropdown-search-box\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for...\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-close\" (click)=\"showDropdownDesktopSearch = false\" aria-label=\"Close search\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth <= 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n </header>\r\n</ng-template>", styles: [".total-container div[simpoSticky]{top:0!important;left:0!important;right:0!important;margin:0 auto!important;width:100%!important}.header--scrolled{top:10px!important;left:4%!important;right:4%!important;width:92%!important;overflow:hidden!important;border-radius:60px!important;box-shadow:0 10px 40px #0000001f!important;z-index:1000001!important;transition:width .4s cubic-bezier(.16,1,.3,1)}*{font-family:var(--website-font-family)}.animated-placeholder{left:12%;transform:translateY(-50%);transition:all .4s ease;font-size:14px;top:49%;color:#6f6f6f;font-weight:300}.animated-placeholder.animate{transform:translateY(-150%);opacity:0}.w-5{width:5%}.static_login_btn{background:transparent;border-radius:12px;border:2px solid;box-shadow:none;transform:unset;font-size:16px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:100%!important;font-weight:700;font-family:var(--website-font-family);height:43px;gap:5px}.static_login_btn mat-icon{color:#000}mat-icon{font-family:Material Icons!important}.total-container{transition:width .2s ease-in-out}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.categories-header .category{display:flex;align-items:center;font-weight:400;font-size:1rem;flex:0 0 auto}.margin-bottom{margin-bottom:var(--margin-top)}@media only screen and (max-width : 475px){.w-5{width:100%!important}.logo-main,.logo-text{font-size:17px!important}.left-logo-text{padding-top:10px}.mob-form-control{width:96%;border-radius:12px!important}.input-group mat-icon{width:10%!important}.categories-header{height:unset!important}.margin-top-mob{margin-top:var(--margin-top)}.w-98{width:98%}.w-96{width:96%}.paddingEcom{padding-top:5px!important;padding-bottom:5px!important}.right-btn{width:15%!important}.cartItemCount{top:-8px!important;right:-3px!important}.adjustePadding{padding:8px!important}.pageLinks{gap:15px;flex-direction:column!important}.category-btn{color:#000!important;justify-content:left}}.nav-link{text-decoration:none}.cartItemCount{padding:5px;border-radius:5px;color:#fff;top:15px;left:15px;height:15px;width:15px;display:flex;align-items:center;justify-content:center;font-size:9px}#navbarNavAltMarkup{position:fixed;top:0;width:100%;background-color:#0e3f58;height:calc(100vh + -0px);z-index:101}.dropdown-toggle{border-bottom:2px solid transparent;transition:border .5s ease;position:relative;top:-1px}.dropdown-toggle:hover{border-bottom:2px solid rgb(14,63,88)}.inner-height,.nab-bar-mobile{height:100%}.total-container{height:auto;position:relative;background-color:transparent!important}.menu-icon{display:flex;flex-direction:column;gap:0px;align-items:center;justify-content:space-evenly;max-width:55px}.menu-icon hr{border:1px solid;margin:0;width:100%}.pt-0{padding-top:0!important}.pb-0{padding-bottom:0!important}.button{font-size:14px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.stores{border:1px solid;border-radius:12px;cursor:pointer;font-weight:600}.input-group{position:relative;outline:none;height:40px;display:flex;align-items:center;background-color:transparent;margin-right:25px;-webkit-transition:width .4s ease-in-out;transition:width .4s ease-in-out;border-radius:12px}.input-group mat-icon{width:6%;display:flex;align-items:center;justify-content:center;font-size:22px;position:relative;border-radius:0 12px 12px 0}.input-group input{height:100%!important;width:80%;background-color:transparent;border:none;outline:none;font-size:14px;padding-bottom:6px;box-shadow:none}.mat-icon{color:#000}.dropdown-button{font-size:14px!important;width:fit-content!important}.mobile-footer{display:none}@media screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:10001;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;align-items:center;justify-content:center;flex-direction:column}.mobile-footer .mat-icon{font-size:22px}}.nab-bar-mobile{width:100%;padding:5px 10px;height:50px;box-sizing:border-box}.title-row{flex:1;display:flex;align-items:center}.navbar-content{background-color:#0e3f58;padding:10px;margin-top:0!important}.navbar-content .d-flex{margin-top:20px}.navbar-toggler,.close-box{background:transparent;border:none;cursor:pointer;margin-left:10px;width:50px!important}.mat-icon{color:#fff}.button-display{display:flex;gap:8px}.flex-column{flex-direction:column}.justify-space-around{justify-content:space-around}@media screen and (max-width: 475px){.nab-bar-mobile{height:60px}}.cursor-pointer{cursor:pointer}.search-icon{margin-right:20px;display:flex;align-items:center;cursor:pointer}.search-icon mat-icon{font-size:24px}.mat-btn{font-size:14px!important;background:none;display:flex;cursor:pointer;border:none}.mat-btn mat-icon{color:inherit}.dropdown-menu{right:0;left:auto}.header1{display:flex;justify-content:space-between;align-items:center}.gap-15{gap:15px}.gap-10{gap:10px}.ptb-1{padding-top:1rem;padding-bottom:1rem}.text-end{text-align:end}.loginButton{gap:5px;display:flex;align-items:center;color:#fff;border-radius:8px;cursor:pointer;width:40px}.loginButton span{font-weight:600!important}.align-center{align-items:center}.offcanvas{width:70%;z-index:1000000000}.offcanvas mat-icon{color:#000}.offcanvas-body{position:relative}.canvas-button{position:absolute;bottom:20px;left:12px;width:90%}.mobileLoginButton{width:100%;height:40px;border-radius:8px;margin-top:15px;outline:none;background:transparent}.pageLinks{display:flex;flex-direction:row}.category-btn{font-size:16px!important}.h-70{height:70px}.offcanvas-header{height:10vh}.offcanvas-body{height:70vh}.offcanvas-body .pages{height:80%;overflow:scroll}.offcanvas-footer{height:20vh}.h-100{height:100%!important}.box-shadow{box-shadow:-9px 5px 3px #99999929}.sticky-header{position:sticky;top:0;z-index:10000}.mobile-page-list{position:relative;left:10px}.category{position:relative}.category:hover{border-bottom:3px solid var(--border-color);transition:border-bottom .1s ease-in-out}.list-category{padding:15px 30px;color:#000;background-color:#fff!important;height:50vh;position:absolute;width:100%;z-index:1001}.background-position{background-position:center top!important}.image-container{cursor:pointer}.image-container img{border-radius:12px}.each-price:hover{font-weight:700}.col-imag img{border-radius:6px;height:40px}.h-45{height:45vh}.btm-col-name{width:93%;border-radius:0 0 12px 12px;bottom:0}.collection{height:max-content;cursor:pointer}.text-overflow{overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500}.col-5{width:44.666667%}.h-10{height:10vh}.fs-16{font-size:16px}.br-50{border-radius:50%}.col-7{width:56.333333%}.pincode-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:3%;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.form-control{border-radius:12px 0 0 12px}.pin-text{font-size:14px;font-weight:500;white-space:nowrap}.z-index-10{z-index:10!important}.bg-transparent{background-color:transparent!important;background-image:none!important}.error-border{border:2px solid #e53e3e!important}.f-11{font-size:11px}.br-5{border:1px solid rgba(0,0,0,.05)}.f-18{font-size:18px}.f-14{font-size:14px}.info-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:0;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.sign-btn{padding:10px;border-radius:12px;border:1px solid;cursor:pointer}.b-1{border:1px solid;border-radius:12px}@keyframes unrollCarpet{0%{transform:scaleY(0) rotateX(90deg);opacity:0}25%{transform:scaleY(.25) rotateX(67.5deg);opacity:.35}50%{transform:scaleY(.5) rotateX(45deg);opacity:.7}75%{transform:scaleY(.75) rotateX(22.5deg);opacity:.85}to{transform:scaleY(1) rotateX(0);opacity:1}}.pincode-text{font-size:11px;margin-bottom:15px}.cart-footer{position:fixed;width:96%;height:45px;bottom:65px;z-index:100;left:8px;border-radius:10px}.item-count{align-content:center}.fs-22{font-size:22px}.w-15{width:15%!important}.site-header{width:100%;border-bottom:1px solid transparent}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1440px;margin:0 auto}.dropdown_menu{position:relative;min-width:420px}.dd-nav{display:flex;align-items:center;gap:18px}.dd-tab-wrap{position:relative;display:inline-flex}.dd-tab{border:none;background:transparent;padding:6px 2px 12px;font-size:15px;font-weight:500;color:#30343b;line-height:1;border-bottom:3px solid transparent;display:inline-flex;align-items:center;gap:8px}.dd-tab:hover,.dd-tab.dd-tab-active{border-bottom-color:#2f3338}.dd-panel{position:absolute;top:100%;background:#fff;border:1px solid #ececef;box-shadow:0 12px 35px #1d212929;padding:14px 0;z-index:1006}.dd-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;font-size:16px;color:#2c2f35;transition:background-color .2s ease;cursor:pointer}.dd-item:hover{background-color:#f5f6f8}.dd-item-arrow{font-size:20px;line-height:1;color:#5a5f66}.dd-submenu{position:absolute;top:-10px;left:calc(100% + 8px);background:#fff;border:1px solid #ececef;box-shadow:0 10px 26px #1d212926;padding:10px 0;display:none;z-index:1007}.dd-item:hover .dd-submenu{display:block}.dd-sub-item{padding:10px 16px;font-size:15px;color:#2c2f35;transition:background-color .2s ease}.dd-sub-item:hover{background-color:#f5f6f8}.dropdown-search-toggle{cursor:pointer}.dropdown-search-expand{position:absolute;top:calc(100% + 10px);right:0;min-width:320px;z-index:1010}.dropdown-search-box{width:100%;background:#f3f3f3;border:1px solid #e7e7e7;display:flex;align-items:center;gap:12px;padding:10px 14px}.dropdown-search-icon{color:#1f2328;flex:0 0 auto}.dropdown-search-box input{border:none;background:transparent;width:100%;font-size:14px;color:#2f3338;outline:none}.dropdown-search-close{color:#545861;cursor:pointer;flex:0 0 auto}.logo{display:flex;flex-direction:column;align-items:flex-start;color:#5e4042;line-height:1;text-decoration:auto}.logo-img{display:block}.logo-main{font-family:Playfair Display,serif;font-size:32px;font-weight:500;letter-spacing:.5px}.logo-sub{font-family:Montserrat,sans-serif;font-size:10px;letter-spacing:3px;text-transform:uppercase;margin-top:2px;margin-left:2px}.search-wrapper{flex:1;display:flex;justify-content:center;max-width:600px}.search-bar{width:100%;background-color:#f3f3f3;border-radius:8px;display:flex;align-items:center;padding:10px 16px;gap:12px}.search-icon{color:#333;width:18px;height:18px}.search-bar input{border:none;background:transparent;width:100%;font-family:Montserrat,sans-serif;font-size:14px;color:#1a1a1a;outline:none}.search-bar input::placeholder{color:#888;font-weight:400}.user-actions{position:relative;display:flex;align-items:center;gap:24px}.action-link{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#333}.action-link:hover{color:#5e4042}.store-text{white-space:nowrap}.icon-only svg{display:block;cursor:pointer}.main-nav{border-top:1px solid transparent;padding-bottom:15px}.nav-list{display:flex;justify-content:center;flex-wrap:wrap;gap:32px;padding:10px 40px}.nav-list li{position:relative}.nav-list a{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:#333;padding:5px 0;display:inline-block}.nav-list a:hover{color:#5e4042}.has-badge{position:relative}.badge{position:absolute;top:-12px;right:-10px;background-color:#a87b7b;color:#fff;font-size:9px;font-weight:600;padding:2px 6px;border-radius:10px;line-height:1;white-space:nowrap}.mobile-menu-checkbox{display:none}.mobile-menu-btn{display:none;cursor:pointer;color:#333}.hero-placeholder{height:80vh;background-color:#f9f9f9;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#5e4042}.hero-placeholder h1{font-family:Playfair Display,serif;font-size:3rem;margin-bottom:1rem}@media (max-width: 1024px){.nav-list{gap:20px}.store-text{display:none}.search-wrapper{margin:0 20px}}@media (max-width: 768px){.top-bar{padding:15px 20px;flex-wrap:wrap}.search-wrapper{order:3;width:100%;max-width:100%;margin:0 0 15px}.user-actions{gap:16px}.main-nav{display:none;width:100%;background:#fff;border-top:1px solid #eee}.nav-list{flex-direction:column;align-items:center;gap:15px;padding:20px}.badge{position:relative;top:-2px;right:auto;margin-left:8px;vertical-align:middle}.mobile-menu-btn{display:block}.mobile-menu-checkbox:checked~.main-nav{display:block}}@media screen and (max-width: 475px){.store-link{display:none}.info-container{width:100vw;top:62%}}.icon-container{position:relative}.count-badge{position:absolute;top:-8px;right:-8px;font-size:10px;font-weight:600;height:18px;width:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #ffffff}.textPluslogo{display:flex;align-items:center;gap:8px;flex-shrink:0;text-decoration:none}.logo-icon{color:#5e4042}.logo-text{font-size:28px;font-weight:600;color:#1a1a1a;letter-spacing:-.5px}.mobile-header-left-side{display:flex;align-items:center;gap:15px}.categories-wrapper{position:relative;width:100%;z-index:1000}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;position:relative;z-index:1002}.categories-header::-webkit-scrollbar{display:none}.category{position:relative;border-bottom:3px solid transparent;transition:border-color .35s ease,color .35s ease}.category:hover{border-bottom-color:var(--border-color)}.blur-overlay{position:fixed;top:var(--margin-top);left:0;width:100vw;height:calc(100vh - var(--margin-top));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffff47;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,visibility .35s ease;z-index:1000}.blur-overlay.active{opacity:1;visibility:visible}.list-category{padding:20px 30px;color:#111;background:#fff!important;height:50vh;position:absolute;top:100%;left:0;width:100%;z-index:1003;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,transform .35s ease,visibility .35s ease;will-change:opacity,transform;box-shadow:0 18px 40px #0000001a;overflow:hidden}.mega-menu-scroll-row{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}.mega-menu-scroll-col{flex-shrink:0}.collectionImage{border-radius:10px;height:70%!important}.show-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.hide-dropdown{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-5px)}.list-header{margin-bottom:1rem;font-size:16px;font-weight:600}.list-item{gap:1rem;font-size:14px}.each-price{transition:transform .25s ease,font-weight .25s ease,color .25s ease}.each-price:hover{font-weight:700;transform:translate(4px)}.image-container{cursor:pointer;overflow:hidden}.image-container img{border-radius:12px;transition:transform .35s ease}.image-container:hover img{transform:scale(1.04)}.collection{height:max-content;cursor:pointer;transition:transform .25s ease}.collection:hover{transform:translateY(-2px)}\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: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i6.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo", "disabled", "loading", "isFullWidth"] }, { kind: "pipe", type: GenderIcon, name: "genderIcon" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: NavbarButtonElementComponent, selector: "simpo-navbar-button-element", inputs: ["buttonData", "buttonStyle", "selectedStyle", "bgColor", "sectionId", "accentColor"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: SimpoStickyDirective, selector: "[simpoSticky]", inputs: ["simpoSticky", "categoryHeader"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: MatBottomSheetModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "component", type: MovingTextComponent, selector: "simpo-moving-text", inputs: ["data", "edit", "delete", "customClass", "index"] }] }); }
|
|
452
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HeaderSectionComponent, isStandalone: true, selector: "simpo-header-section", inputs: { data: "data", nextComponent: "nextComponent", index: "index", customClass: "customClass", edit: "edit" }, host: { listeners: { "window:scroll": "onScroll($event)", "window:resize": "getScreenSize($event)" } }, viewQueries: [{ propertyName: "childContainer", first: true, predicate: ["childContainer"], descendants: true }], ngImport: i0, template: "<section [id]=\"data?.id\" class=\"total-container w-100\" [class.z-index-10]=\"!isHeaderSticky && isComponentMerged\">\r\n <div class=\"w-100\" [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [ngClass]=\"{'box-shadow': isEcommerceWebsite}\"\r\n [class.margin-bottom]=\"isHeaderSticky && isMobile && categoryList?.length == 0\">\r\n <div [simpoSticky]=\"isHeaderSticky\" [simpoBackground]=\"backgroundInfo\" class=\"w-100\" #childContainer\r\n [categoryHeader]=\"isEcommerceWebsite && categoryList?.length > 0 && !isMobile && !showCategoryMobileHeader()\"\r\n simpoHover [class.bg-transparent]=\"isComponentMerged && scrollValue == 0 && !isMobile\"\r\n (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\"\r\n [class.header--scrolled]=\"data?.styles?.shrinkOnScroll && isHeaderSticky && scrollValue > 0 && !edit\">\r\n <!-- [class.background-position]=\"isComponentMerged && backgroundInfo?.showImage\" -->\r\n <ng-container *ngIf=\"style?.headline?.display\">\r\n <div>\r\n <simpo-moving-text [edit]=\"false\" [delete]=\"false\" [data]=\"data\"></simpo-moving-text>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"style?.styling === 'Header1' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header1Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header2' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header2Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header3' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header3Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header4' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header4Template\"></ng-container>\r\n </div>\r\n\r\n <div [spacingHorizontal]=\"stylesLayout\" [simpoOverlay]=\"backgroundInfo\" *ngIf=\"isEcommerceWebsite\"\r\n [simpoLayout]=\"screenWidth > 475 ? stylesLayout : undefined\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"ecommerce_header\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"input-group mx-2 mb-2 w-96\" *ngIf=\"isMobile && isEcommerceWebsite && !restrictCartBarInPages()\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search for items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + accentColor}\">\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : style?.background?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + style?.background?.accentColor + ' 0%' + ',' + style?.background?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">search</mat-icon>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && !isMobile && data?.styles?.menuType === 'MEGA_MENU'\">\r\n <ng-container *ngTemplateOutlet=\"categoriesHeader\"></ng-container>\r\n </ng-container>\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>\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && isMobile && showCategoryMobileHeader()\">\r\n <ng-container *ngTemplateOutlet=\"mobileCategoryHeader\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"isEcommerceWebsite && isMobile && !restrictInPages()\">\r\n <ng-container *ngTemplateOutlet=\"mobileFooterTemplate\"></ng-container>\r\n </ng-container> -->\r\n</section>\r\n\r\n<ng-template #header1Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 94 : ''\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header2Template>\r\n <div class=\"header1\">\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 93 : ''\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header3Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header4Template>\r\n <div class=\"header1\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container> </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #logoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer mx-1\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size + 80\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\" [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : \r\n ((content?.logo?.size >= 60 && content?.logo?.size <= 100) ? (20) : ((content?.logo?.size || 10) - 10))\"\r\n loading=\"lazy\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #pageLinksTemplate>\r\n <div class=\"navbar-nav pageLinks\" [ngClass]=\"{'align-items-center' : !isMobile}\">\r\n <div class=\"d-flex gap-3\"\r\n [ngClass]=\"{'flex-column': isMobile, 'align-items-center' : !isMobile, 'mobile-page-list': isMobile}\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\" [accentColor]=\"accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle category-btn\" type=\"button\"\r\n [simpoColor]=\"simpoColor\" id=\"link\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | lowercase | titlecase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #buttonsTemplate>\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"action?.display\" class=\"button-display mt-0\" [ngClass]=\"{'w-100 justify-space-around': isMobile}\">\r\n <div *ngFor=\"let button of action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\" [sectionId]=\"data?.id\"\r\n [edit]=\"edit\" [color]=\"data?.styles?.background?.accentColor\" [buttonId]=\"button.id\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n <div class=\"static_login_btn d-flex justify-content-between align-items-center cursor-pointer\"\r\n (click)=\"navigateLogin()\" *ngIf=\"passbookAppStatus && !loggedIn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\">\r\n <mat-icon>person_outline</mat-icon>\r\n Login\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn && !isMobile\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n </div>\r\n <button class=\"mobileLoginButton\" *ngIf=\"isEcommerceWebsite && isMobile && !loggedIn\"\r\n [style.border]=\"'1px solid' + accentColor\" [style.color]=\"accentColor\" (click)=\"goToAccount('LOGIN')\">Login</button>\r\n</ng-template>\r\n\r\n<ng-template #mobileFooterTemplate>\r\n <div class=\"cart-footer\" [style.background]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount > 0 && !restrictCartBarInPages()\">\r\n <div class=\"d-flex justify-content-between px-3 py-2 h-100 align-items-center\">\r\n <div class=\"item-count fw-bold\">\r\n {{ getCartItemsCount ?? 3 }} {{ getCartItemsCount > 1 ? 'items' : 'item' }} in cart\r\n <!-- Total : \u20B9{{ getCartTotalAmount }} -->\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 fw-bold\" (click)=\"goToCart()\">\r\n View Cart <mat-icon [simpoColor]=\"accentColor\">arrow_forward</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mobile-footer\" [simpoBackground]=\"backgroundInfo\">\r\n <div class=\"icons\" (click)=\"goToHome()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">home</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Home</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"searchProducts()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">grid_on</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Shop</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"goToWishlist()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">favorite_border</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Wishlist</span>\r\n </div>\r\n <div class=\"icons position-relative\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">shopping_cart</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Cart</span>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerceButtonsTemplate>\r\n <div class=\"justify-content-between pr-0 d-flex position-relative gap-10 w-100\"\r\n [style.flexDirection]=\"style?.styling === 'Header2' || style?.styling === 'Header4' ? 'row-reverse' : ''\">\r\n <!-- <div class=\"search-icon\" (click)=\"showSearchBar = !showSearchBar\">\r\n <mat-icon [style.color]=\"accentColor\">search</mat-icon>\r\n </div> -->\r\n <div class=\"w-75 d-flex align-items-center\" [ngClass]=\"{'justify-content-center' : !passbookAppStatus}\">\r\n <div class=\"input-group w-75 ml-2\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search For Items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"\r\n [style.color]=\"backgroundInfo?.accentColor\">\r\n <!-- <span class=\"animated-placeholder position-absolute\" \r\n [class.animate]=\"animatePlaceholder\"\r\n *ngIf=\"style?.searchBarPlaceholderList.length > 1 && style?.smartSearchBar\">\r\n {{ currentPlaceholder }}\r\n </span> -->\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType === 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center py-1 px-3 b-1 stores\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" (click)=\"goToSchemes()\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\" *ngIf=\"passbookAppStatus\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n xmlns:svgjs=\"http://svgjs.dev/svgjs\" id=\"Layer_2\" viewBox=\"0 0 60 60\" data-name=\"Layer 2\" width=\"30\"\r\n height=\"30\" version=\"1.1\">\r\n <g width=\"100%\" height=\"100%\" transform=\"matrix(1,0,0,1,0,0)\">\r\n <path d=\"m14.36 46.66.51-9.86-11.93-7.16-1.94 8.43z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m17.17 38.1s0-.02.02-.03c0 0 0-.02.02-.02.04-.05.1-.08.15-.11.02-.01.03-.03.05-.04l4.66-1.94h-.02s-1.87-1.21-1.87-1.21l-3.18 1.57-1.07.53-.43 8.32 1.58-6.9c.01-.06.05-.12.09-.17z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m19.14 34.08-6.27-4.04c-.19-.12-.28-.34-.23-.56l1.08-4.72-9.96 4.14 11.68 7.01z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m30.93 46.42-.5 9.79 32.57-18.67-1.21-6.4-23.16 11.46z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m16 47.65 13.38 8.58.49-9.86-11.93-7.17z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m27.85 39.34s0 0-.01 0c0 0 0 0-.01 0-.08.04-.16.06-.24.06-.05 0-.1-.03-.15-.04-.04-.01-.08-.01-.11-.03l-4.16-2.67-4.37 1.82 11.68 7.01 30.4-15.05-10.71-3.88-22.28 12.78z\"\r\n [attr.fill]=\"accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m28.26 36.01-.1 1.93 32.58-18.69-1.22-6.39-30.86 15.28z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m27.61 28.09-11.93-7.16-1.94 8.43 13.36 8.58z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m58.57 12.15-12.1-4.38-29.97 12.43 11.68 7z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n </g>\r\n </svg>\r\n <div [style.color]=\"accentColor\">Schemes</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center\">\r\n <div class=\"stores d-flex align-items-center gap-2 py-2 px-3\" (click)=\"goToStores()\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" *ngIf=\"storeAvaiable\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\">\r\n <mat-icon [style.color]=\"backgroundInfo?.accentColor\">store</mat-icon>\r\n <span [style.color]=\"backgroundInfo?.accentColor\">Stores</span>\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"!getPincode\">Enter\r\n Pincode\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">{{\"Delivering to: \" +\r\n getPincode}}</div>\r\n\r\n <!-- (mouseleave)=\"showPincodeInput = false\" -->\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToFav()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">favorite</mat-icon>\r\n </div>\r\n <div class=\"d-flex align-items-center position-relative\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">shopping_cart</mat-icon>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')' , 'color' : setColor()}\">\r\n {{getCartItemsCount}}</div>\r\n </div>\r\n <div class=\"loginButton\" *ngIf=\"!loggedIn\" (mouseenter)=\"showLogin = true;showPincodeInput = false\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"27\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12.12 12.78C12.05 12.77 11.96 12.77 11.88 12.78C10.12 12.72 8.71997 11.28 8.71997 9.50998C8.71997 7.69998 10.18 6.22998 12 6.22998C13.81 6.22998 15.28 7.69998 15.28 9.50998C15.27 11.28 13.88 12.72 12.12 12.78Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.74 19.38C16.96 21.01 14.6 22 12 22C9.40001 22 7.04001 21.01 5.26001 19.38C5.36001 18.44 5.96001 17.52 7.03001 16.8C9.77001 14.98 14.25 14.98 16.97 16.8C18.04 17.52 18.64 18.44 18.74 19.38Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\"\r\n stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <!-- <span class=\"fw-normal fs-6\" [simpoColor]=\"accentColor\">Login</span> -->\r\n </div>\r\n <!-- (mouseleave)=\"showLogin = false\" -->\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n <!-- <div> -->\r\n <!-- <button class=\"button\" (click)=\"goToAccount()\" simpoButtonDirective [id]=\"sectionId+buttonId\" [buttonStyle]=\"buttonStyle\" [color]=\"color\" [appButtonEditor]=\"edit ?? false\" [buttonData]=\"buttonContent\">{{buttonContent?.label}}</button> -->\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #navbarLinksTemplate>\r\n <div class=\"navbar-collapse fs-6 position-relative d-flex\" style=\"margin-top: 5px; margin-left: 25px;\"\r\n [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 768\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle\" type=\"button\" [simpoColor]=\"simpoColor\" id=\"link\"\r\n data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | uppercase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"offcanvas\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\"\r\n [ngClass]=\"{'offcanvas-end' : (style?.styling === 'Header1' || style?.styling === 'Header3') && !isEcommerceWebsite, 'offcanvas-start': style?.styling === 'Header2' || style?.styling === 'Header4' || isEcommerceWebsite}\">\r\n <div class=\"offcanvas-header\" [simpoBackground]=\"style?.background\">\r\n <ng-container *ngTemplateOutlet=\"mobileLogoSectionTemplate\"></ng-container>\r\n <!-- <button type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button> -->\r\n <mat-icon data-bs-dismiss=\"offcanvas\">close</mat-icon>\r\n </div>\r\n <div class=\"offcanvas-body\">\r\n <div class=\"pages\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"offcanvas-footer\">\r\n <div class=\"canvas-button\">\r\n <ng-container *ngTemplateOutlet=\"buttonsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #ecomProfileTemplate>\r\n <!-- <mat-icon class=\"h-100 d-flex align-items-center justify-content-center br-50 fs-22 px-3 py-1\"\r\n (click)=\"showSearchBarMobile = !showSearchBarMobile\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon> -->\r\n\r\n\r\n <!-- <input type=\"text\" class=\"form-control mob-form-control\" placeholder=\"Search Product\" aria-label=\"Search Product\"\r\n *ngIf=\"showSearchBarMobile\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"> -->\r\n\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileLogoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer h-100\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\" class=\"h-100\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" class=\"h-100\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"logo\" class=\"h-100\" loading=\"lazy\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #categoriesHeader>\r\n <div class=\"categories-wrapper\"\r\n *ngIf=\"(categoryList?.length > 0 || collectionList?.collections?.length > 0) && !isMobile\"\r\n (mouseleave)=\"showList = false; showCollections = false\">\r\n\r\n <div class=\"blur-overlay\" [class.active]=\"showList || showCollections\"></div>\r\n\r\n <div class=\"categories-header d-flex gap-3 py-2 position-relative\" [spacingHorizontal]=\"stylesLayout\"\r\n [style.background]=\"data?.styles?.headline?.color\">\r\n\r\n <div class=\"category cursor-pointer\" *ngFor=\"let ele of megaMenu; let i = index\"\r\n [style.--border-color]=\"data?.styles?.background?.accentColor\" [simpoColor]=\"data?.styles?.headline?.color\"\r\n (mouseenter)=\"setChildMenu(ele)\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n </div>\r\n\r\n <!-- [class.hide-dropdown]=\"!showList\" -->\r\n <div class=\"list-category\" [class.show-dropdown]=\"showList\" [class.hide-dropdown]=\"!showList\">\r\n <div class=\"row w-100 h-100 mega-menu-scroll-row\">\r\n <ng-container *ngFor=\"let ele of selectedCategory; let i = index\">\r\n <div class=\"mega-menu-scroll-col\" [ngClass]=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY') ? 'col-3' : 'col-2'\">\r\n\r\n <ng-container *ngIf=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY' )\">\r\n <img [src]=\"ele.imageUrl\" [alt]=\"ele?.label\" class=\"w-100 mb-2 br-12 cursor-pointer collectionImage\" *ngIf=\"ele.imageUrl\" (click)=\"redirectionsOfMenu(ele)\" />\r\n </ng-container>\r\n\r\n <div class=\"list-header mb-3 cursor-pointer\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n <ng-container *ngIf=\"ele?.children && ele?.children.length > 0\">\r\n <div class=\"d-flex flex-column gap-3 list-item\">\r\n <ng-container *ngFor=\"let child of ele?.children\">\r\n <div (click)=\"redirectionsOfMenu(child)\" class=\"cursor-pointer\">\r\n {{child?.label | titlecase}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileCategoryHeader>\r\n <div class=\"categories-header d-flex gap-3 py-2 overflow-auto\" *ngIf=\"categoryList?.length > 0 && isMobile\"\r\n [spacingHorizontal]=\"stylesLayout\" [class.margin-top-mob]=\"isHeaderSticky\">\r\n <div class=\"category cursor-pointer d-flex flex-column gap-3\" *ngFor=\"let ele of categoryList;let i = index\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"selectedCategory = ele; filterByCategory()\">\r\n <div class=\"cat-img d-flex justify-content-center align-items-center w-100\">\r\n <img [src]=\"ele?.imageUrls[0]\" alt=\"\" class=\"h-10 br-12\">\r\n </div>\r\n <div class=\"text-center f-14\">{{ele?.categoryName | titlecase}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerce_header>\r\n <header class=\"site-header\">\r\n <!-- Top Bar: Logo, Search, User Actions -->\r\n <div class=\"top-bar\">\r\n\r\n <!-- Mobile Menu Toggle (Checkbox Hack) -->\r\n <div [ngClass]=\"{'mobile-header-left-side': screenWidth <= 475}\">\r\n <label for=\"mobile-menu-checkbox\" class=\"mobile-menu-btn\" data-bs-toggle=\"offcanvas\"\r\n data-bs-target=\"#offcanvasRight\" aria-controls=\"offcanvasRight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"></line>\r\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"></line>\r\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"></line>\r\n </svg>\r\n </label>\r\n\r\n <!-- Logo Section -->\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"Logo\" class=\"logo-img\" [width]=\"content?.logo?.size + 15\"\r\n [height]=\"content?.logo?.size\">\r\n </a>\r\n\r\n <a class=\"textPluslogo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && content?.logo?.text?.isIcon \r\n && content?.logo?.text?.url\">\r\n\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"Icon\" class=\"logo-icon\"\r\n [width]=\"content?.logo?.size + 15\" [height]=\"content?.logo?.size\">\r\n\r\n <span class=\"logo-text\" [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 475\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && !content?.logo?.text?.isIcon\">\r\n\r\n <span class=\"logo-main\" [simpoColor]=\"simpoColor\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n </div>\r\n\r\n <!-- Search Bar -->\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth > 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown menu style -->\r\n <div class=\"dropdown_menu\" *ngIf=\"screenWidth > 475 && data?.styles?.menuType === 'DROPDOWN_MENU'\"\r\n (mouseleave)=\"showList = false; selectedCategory = null\">\r\n <div class=\"dd-nav\">\r\n <div class=\"dd-tab-wrap\" *ngFor=\"let ele of megaMenu\" (mouseenter)=\"setChildMenu(ele)\">\r\n <button type=\"button\" class=\"dd-tab\" [class.dd-tab-active]=\"showList && selectedCategory === ele?.children\"\r\n (click)=\"redirectionsOfMenu(ele)\">\r\n <span class=\"text-nowrap\">{{ele?.label | titlecase}}</span>\r\n <img style=\"width:20px; height:20px\" class=\"tab-arrow\" *ngIf=\"ele?.children?.length\"\r\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/334952c1776866431821dropdown-arrow-svgrepo-com.svg\"\r\n alt=\"dropdown arrow\">\r\n </button>\r\n\r\n <div class=\"dd-panel\" *ngIf=\"showList && selectedCategory === ele?.children && ele?.children?.length\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"dd-item\" *ngFor=\"let child of ele?.children\"\r\n (click)=\"!child?.children?.length ? redirectionsOfMenu(child) : ''\">\r\n <span class=\"text-nowrap\">{{child?.label | titlecase}}</span>\r\n <span class=\"dd-item-arrow\" *ngIf=\"child?.children?.length\">›</span>\r\n\r\n <div class=\"dd-submenu\" *ngIf=\"child?.children?.length\">\r\n <div class=\"dd-sub-item\" *ngFor=\"let sub of child?.children\"\r\n (click)=\"redirectionsOfMenu(sub); $event.stopPropagation()\">\r\n <span class=\"text-nowrap\">{{sub?.label | titlecase}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Right Actions -->\r\n <div class=\"user-actions\">\r\n \r\n <ng-container *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar\">\r\n <a class=\"action-link icon-only dropdown-search-toggle\" (click)=\"showDropdownDesktopSearch = !showDropdownDesktopSearch\"\r\n aria-label=\"Toggle search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"storeAvaiable\">\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n *ngIf=\"!getPincode\">\r\n <!-- <svg width=\"20\" height=\"20\" viewBox=\"0 0 17 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\" fill=\"none\" [simpoColor]=\"simpoColor\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <path\r\n d=\"M8.5 0.5c-3.032 0-5.5 2.467-5.5 5.5 0 4.373 4.913 10.086 5.122 10.328l0.378 0.435 0.378-0.436c0.209-0.241 5.122-5.954 5.122-10.327 0-3.033-2.468-5.5-5.5-5.5zM8.5 15.215c-1.146-1.424-4.5-5.879-4.5-9.215 0-2.481 2.019-4.5 4.5-4.5s4.5 2.019 4.5 4.5c0 3.333-3.354 7.791-4.5 9.215zM8.5 3.139c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zM8.5 8.139c-1.103 0-2-0.897-2-2s0.897-2 2-2 2 0.897 2 2-0.897 2-2 2z\"\r\n fill=\"#000000\" />\r\n </svg> -->\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 512 512\"\r\n [simpoColor]=\"simpoColor\" stroke=\"currentColor\" fill=\"currentColor\">\r\n <g>\r\n <path\r\n d=\"M341.476 338.285c54.483-85.493 47.634-74.827 49.204-77.056C410.516 233.251 421 200.322 421 166 421 74.98 347.139 0 256 0 165.158 0 91 74.832 91 166c0 34.3 10.704 68.091 31.19 96.446l48.332 75.84C118.847 346.227 31 369.892 31 422c0 18.995 12.398 46.065 71.462 67.159C143.704 503.888 198.231 512 256 512c108.025 0 225-30.472 225-90 0-52.117-87.744-75.757-139.524-83.715zm-194.227-92.34a15.57 15.57 0 0 0-.517-.758C129.685 221.735 121 193.941 121 166c0-75.018 60.406-136 135-136 74.439 0 135 61.009 135 136 0 27.986-8.521 54.837-24.646 77.671-1.445 1.906 6.094-9.806-110.354 172.918L147.249 245.945zM256 482c-117.994 0-195-34.683-195-60 0-17.016 39.568-44.995 127.248-55.901l55.102 86.463a14.998 14.998 0 0 0 25.298 0l55.101-86.463C411.431 377.005 451 404.984 451 422c0 25.102-76.313 60-195 60z\">\r\n </path>\r\n <path\r\n d=\"M256 91c-41.355 0-75 33.645-75 75s33.645 75 75 75 75-33.645 75-75-33.645-75-75-75zm0 120c-24.813 0-45-20.187-45-45s20.187-45 45-45 45 20.187 45 45-20.187 45-45 45z\">\r\n </path>\r\n </g>\r\n </svg>\r\n\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">Enter Pincode</span>\r\n\r\n </a>\r\n\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7\"></path>\r\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path>\r\n <path d=\"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4\"></path>\r\n <path d=\"M2 7h20\"></path>\r\n <path\r\n d=\"M22 7v3a2 2 0 0 1-2 2v0a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12v0a2 2 0 0 1-2-2V7\">\r\n </path>\r\n </svg>\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">{{\"Delivering to: \" +\r\n getPincode}}</span>\r\n\r\n </a>\r\n\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <a class=\"action-link icon-only login-btn\" *ngIf=\"!loggedIn\"\r\n (mouseenter)=\"showLogin = true;showPincodeInput = false\" (click)=\"showLogin = !showLogin\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"action-link icon-only\" (click)=\"goToAccount('PROFILE')\" *ngIf=\"loggedIn\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n\r\n <a class=\"action-link icon-only icon-container wishlist-icon\" (click)=\"goToWishlist()\">\r\n <!-- Heart Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path\r\n d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\">\r\n </path>\r\n </svg>\r\n <!-- <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\">2</span> -->\r\n </a>\r\n\r\n <a class=\"action-link icon-only icon-container cart-icon\" (click)=\"goToCart()\">\r\n <!-- Shopping Bag Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z\"></path>\r\n <path d=\"M3 6h18\"></path>\r\n <path d=\"M16 10a4 4 0 0 1-8 0\"></path>\r\n </svg>\r\n <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</span>\r\n </a>\r\n\r\n <div class=\"dropdown-search-expand\"\r\n *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar && showDropdownDesktopSearch\">\r\n <div class=\"dropdown-search-box\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for...\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-close\" (click)=\"showDropdownDesktopSearch = false\" aria-label=\"Close search\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth <= 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n </header>\r\n</ng-template>", styles: [".total-container div[simpoSticky]{top:0!important;left:0!important;right:0!important;margin:0 auto!important;width:100%!important}.header--scrolled{top:10px!important;left:4%!important;right:4%!important;width:92%!important;overflow:hidden!important;border-radius:60px!important;box-shadow:0 10px 40px #0000001f!important;z-index:1000001!important;transition:width .4s cubic-bezier(.16,1,.3,1)}*{font-family:var(--website-font-family)}.animated-placeholder{left:12%;transform:translateY(-50%);transition:all .4s ease;font-size:14px;top:49%;color:#6f6f6f;font-weight:300}.animated-placeholder.animate{transform:translateY(-150%);opacity:0}.w-5{width:5%}.static_login_btn{background:transparent;border-radius:12px;border:2px solid;box-shadow:none;transform:unset;font-size:16px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:100%!important;font-weight:700;font-family:var(--website-font-family);height:43px;gap:5px}.static_login_btn mat-icon{color:#000}mat-icon{font-family:Material Icons!important}.total-container{transition:width .2s ease-in-out}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.categories-header .category{display:flex;align-items:center;font-weight:400;font-size:1rem;flex:0 0 auto}.margin-bottom{margin-bottom:var(--margin-top)}@media only screen and (max-width : 475px){.w-5{width:100%!important}.logo-main,.logo-text{font-size:17px!important}.left-logo-text{padding-top:10px}.mob-form-control{width:96%;border-radius:12px!important}.input-group mat-icon{width:10%!important}.categories-header{height:unset!important}.margin-top-mob{margin-top:var(--margin-top)}.w-98{width:98%}.w-96{width:96%}.paddingEcom{padding-top:5px!important;padding-bottom:5px!important}.right-btn{width:15%!important}.cartItemCount{top:-8px!important;right:-3px!important}.adjustePadding{padding:8px!important}.pageLinks{gap:15px;flex-direction:column!important}.category-btn{color:#000!important;justify-content:left}}.nav-link{text-decoration:none}.cartItemCount{padding:5px;border-radius:5px;color:#fff;top:15px;left:15px;height:15px;width:15px;display:flex;align-items:center;justify-content:center;font-size:9px}#navbarNavAltMarkup{position:fixed;top:0;width:100%;background-color:#0e3f58;height:calc(100vh + -0px);z-index:101}.dropdown-toggle{border-bottom:2px solid transparent;transition:border .5s ease;position:relative;top:-1px}.dropdown-toggle:hover{border-bottom:2px solid rgb(14,63,88)}.inner-height,.nab-bar-mobile{height:100%}.total-container{height:auto;position:relative;background-color:transparent!important}.menu-icon{display:flex;flex-direction:column;gap:0px;align-items:center;justify-content:space-evenly;max-width:55px}.menu-icon hr{border:1px solid;margin:0;width:100%}.pt-0{padding-top:0!important}.pb-0{padding-bottom:0!important}.button{font-size:14px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.stores{border:1px solid;border-radius:12px;cursor:pointer;font-weight:600}.input-group{position:relative;outline:none;height:40px;display:flex;align-items:center;background-color:transparent;margin-right:25px;-webkit-transition:width .4s ease-in-out;transition:width .4s ease-in-out;border-radius:12px}.input-group mat-icon{width:6%;display:flex;align-items:center;justify-content:center;font-size:22px;position:relative;border-radius:0 12px 12px 0}.input-group input{height:100%!important;width:80%;background-color:transparent;border:none;outline:none;font-size:14px;padding-bottom:6px;box-shadow:none}.mat-icon{color:#000}.dropdown-button{font-size:14px!important;width:fit-content!important}.mobile-footer{display:none}@media screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:10001;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;align-items:center;justify-content:center;flex-direction:column}.mobile-footer .mat-icon{font-size:22px}}.nab-bar-mobile{width:100%;padding:5px 10px;height:50px;box-sizing:border-box}.title-row{flex:1;display:flex;align-items:center}.navbar-content{background-color:#0e3f58;padding:10px;margin-top:0!important}.navbar-content .d-flex{margin-top:20px}.navbar-toggler,.close-box{background:transparent;border:none;cursor:pointer;margin-left:10px;width:50px!important}.mat-icon{color:#fff}.button-display{display:flex;gap:8px}.flex-column{flex-direction:column}.justify-space-around{justify-content:space-around}@media screen and (max-width: 475px){.nab-bar-mobile{height:60px}}.cursor-pointer{cursor:pointer}.search-icon{margin-right:20px;display:flex;align-items:center;cursor:pointer}.search-icon mat-icon{font-size:24px}.mat-btn{font-size:14px!important;background:none;display:flex;cursor:pointer;border:none}.mat-btn mat-icon{color:inherit}.dropdown-menu{right:0;left:auto}.header1{display:flex;justify-content:space-between;align-items:center}.gap-15{gap:15px}.gap-10{gap:10px}.ptb-1{padding-top:1rem;padding-bottom:1rem}.text-end{text-align:end}.loginButton{gap:5px;display:flex;align-items:center;color:#fff;border-radius:8px;cursor:pointer;width:40px}.loginButton span{font-weight:600!important}.align-center{align-items:center}.offcanvas{width:70%;z-index:1000000000}.offcanvas mat-icon{color:#000}.offcanvas-body{position:relative}.canvas-button{position:absolute;bottom:20px;left:12px;width:90%}.mobileLoginButton{width:100%;height:40px;border-radius:8px;margin-top:15px;outline:none;background:transparent}.pageLinks{display:flex;flex-direction:row}.category-btn{font-size:16px!important}.h-70{height:70px}.offcanvas-header{height:10vh}.offcanvas-body{height:70vh}.offcanvas-body .pages{height:80%;overflow:scroll}.offcanvas-footer{height:20vh}.h-100{height:100%!important}.box-shadow{box-shadow:-9px 5px 3px #99999929}.sticky-header{position:sticky;top:0;z-index:10000}.mobile-page-list{position:relative;left:10px}.category{position:relative}.category:hover{border-bottom:3px solid var(--border-color);transition:border-bottom .1s ease-in-out}.list-category{padding:15px 30px;color:#000;background-color:#fff!important;height:50vh;position:absolute;width:100%;z-index:1001}.background-position{background-position:center top!important}.image-container{cursor:pointer}.image-container img{border-radius:12px}.each-price:hover{font-weight:700}.col-imag img{border-radius:6px;height:40px}.h-45{height:45vh}.btm-col-name{width:93%;border-radius:0 0 12px 12px;bottom:0}.collection{height:max-content;cursor:pointer}.text-overflow{overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500}.col-5{width:44.666667%}.h-10{height:10vh}.fs-16{font-size:16px}.br-50{border-radius:50%}.col-7{width:56.333333%}.pincode-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:3%;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.form-control{border-radius:12px 0 0 12px}.pin-text{font-size:14px;font-weight:500;white-space:nowrap}.z-index-10{z-index:10!important}.bg-transparent{background-color:transparent!important;background-image:none!important}.error-border{border:2px solid #e53e3e!important}.f-11{font-size:11px}.br-5{border:1px solid rgba(0,0,0,.05)}.f-18{font-size:18px}.f-14{font-size:14px}.info-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:0;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.sign-btn{padding:10px;border-radius:12px;border:1px solid;cursor:pointer}.b-1{border:1px solid;border-radius:12px}@keyframes unrollCarpet{0%{transform:scaleY(0) rotateX(90deg);opacity:0}25%{transform:scaleY(.25) rotateX(67.5deg);opacity:.35}50%{transform:scaleY(.5) rotateX(45deg);opacity:.7}75%{transform:scaleY(.75) rotateX(22.5deg);opacity:.85}to{transform:scaleY(1) rotateX(0);opacity:1}}.pincode-text{font-size:11px;margin-bottom:15px}.cart-footer{position:fixed;width:96%;height:45px;bottom:65px;z-index:100;left:8px;border-radius:10px}.item-count{align-content:center}.fs-22{font-size:22px}.w-15{width:15%!important}.site-header{width:100%;border-bottom:1px solid transparent}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1440px;margin:0 auto}.dropdown_menu{position:relative;min-width:420px}.dd-nav{display:flex;align-items:center;gap:18px}.dd-tab-wrap{position:relative;display:inline-flex}.dd-tab{border:none;background:transparent;padding:6px 2px 12px;font-size:15px;font-weight:500;color:#30343b;line-height:1;border-bottom:3px solid transparent;display:inline-flex;align-items:center;gap:8px}.dd-tab:hover,.dd-tab.dd-tab-active{border-bottom-color:#2f3338}.dd-panel{position:absolute;top:100%;background:#fff;border:1px solid #ececef;box-shadow:0 12px 35px #1d212929;padding:14px 0;z-index:1006}.dd-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;font-size:16px;color:#2c2f35;transition:background-color .2s ease;cursor:pointer}.dd-item:hover{background-color:#f5f6f8}.dd-item-arrow{font-size:20px;line-height:1;color:#5a5f66}.dd-submenu{position:absolute;top:-10px;left:calc(100% + 8px);background:#fff;border:1px solid #ececef;box-shadow:0 10px 26px #1d212926;padding:10px 0;display:none;z-index:1007}.dd-item:hover .dd-submenu{display:block}.dd-sub-item{padding:10px 16px;font-size:15px;color:#2c2f35;transition:background-color .2s ease}.dd-sub-item:hover{background-color:#f5f6f8}.dropdown-search-toggle{cursor:pointer}.dropdown-search-expand{position:absolute;top:calc(100% + 10px);right:0;min-width:320px;z-index:1010}.dropdown-search-box{width:100%;background:#f3f3f3;border:1px solid #e7e7e7;display:flex;align-items:center;gap:12px;padding:10px 14px}.dropdown-search-icon{color:#1f2328;flex:0 0 auto}.dropdown-search-box input{border:none;background:transparent;width:100%;font-size:14px;color:#2f3338;outline:none}.dropdown-search-close{color:#545861;cursor:pointer;flex:0 0 auto}.logo{display:flex;flex-direction:column;align-items:flex-start;color:#5e4042;line-height:1;text-decoration:auto}.logo-img{display:block}.logo-main{font-family:Playfair Display,serif;font-size:32px;font-weight:500;letter-spacing:.5px}.logo-sub{font-family:Montserrat,sans-serif;font-size:10px;letter-spacing:3px;text-transform:uppercase;margin-top:2px;margin-left:2px}.search-wrapper{flex:1;display:flex;justify-content:center;max-width:600px}.search-bar{width:100%;background-color:#f3f3f3;border-radius:8px;display:flex;align-items:center;padding:10px 16px;gap:12px}.search-icon{color:#333;width:18px;height:18px}.search-bar input{border:none;background:transparent;width:100%;font-family:Montserrat,sans-serif;font-size:14px;color:#1a1a1a;outline:none}.search-bar input::placeholder{color:#888;font-weight:400}.user-actions{display:flex;align-items:center;gap:24px}.action-link{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#333}.action-link:hover{color:#5e4042}.store-text{white-space:nowrap}.icon-only svg{display:block;cursor:pointer}.main-nav{border-top:1px solid transparent;padding-bottom:15px}.nav-list{display:flex;justify-content:center;flex-wrap:wrap;gap:32px;padding:10px 40px}.nav-list li{position:relative}.nav-list a{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:#333;padding:5px 0;display:inline-block}.nav-list a:hover{color:#5e4042}.has-badge{position:relative}.badge{position:absolute;top:-12px;right:-10px;background-color:#a87b7b;color:#fff;font-size:9px;font-weight:600;padding:2px 6px;border-radius:10px;line-height:1;white-space:nowrap}.mobile-menu-checkbox{display:none}.mobile-menu-btn{display:none;cursor:pointer;color:#333}.hero-placeholder{height:80vh;background-color:#f9f9f9;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#5e4042}.hero-placeholder h1{font-family:Playfair Display,serif;font-size:3rem;margin-bottom:1rem}@media (max-width: 1024px){.nav-list{gap:20px}.store-text{display:none}.search-wrapper{margin:0 20px}}@media (max-width: 768px){.top-bar{padding:15px 20px;flex-wrap:wrap}.search-wrapper{order:3;width:100%;max-width:100%;margin:0 0 15px}.user-actions{gap:16px}.main-nav{display:none;width:100%;background:#fff;border-top:1px solid #eee}.nav-list{flex-direction:column;align-items:center;gap:15px;padding:20px}.badge{position:relative;top:-2px;right:auto;margin-left:8px;vertical-align:middle}.mobile-menu-btn{display:block}.mobile-menu-checkbox:checked~.main-nav{display:block}}@media screen and (max-width: 475px){.store-link{display:none}.info-container{width:100vw;top:62%}}.icon-container{position:relative}.count-badge{position:absolute;top:-8px;right:-8px;font-size:10px;font-weight:600;height:18px;width:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #ffffff}.textPluslogo{display:flex;align-items:center;gap:8px;flex-shrink:0;text-decoration:none}.logo-icon{color:#5e4042}.logo-text{font-size:28px;font-weight:600;color:#1a1a1a;letter-spacing:-.5px}.mobile-header-left-side{display:flex;align-items:center;gap:15px}.categories-wrapper{position:relative;width:100%;z-index:1000}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;position:relative;z-index:1002}.categories-header::-webkit-scrollbar{display:none}.category{position:relative;border-bottom:3px solid transparent;transition:border-color .35s ease,color .35s ease}.category:hover{border-bottom-color:var(--border-color)}.blur-overlay{position:fixed;top:var(--margin-top);left:0;width:100vw;height:calc(100vh - var(--margin-top));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffff47;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,visibility .35s ease;z-index:1000}.blur-overlay.active{opacity:1;visibility:visible}.list-category{padding:20px 30px;color:#111;background:#fff!important;height:50vh;position:absolute;top:100%;left:0;width:100%;z-index:1003;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,transform .35s ease,visibility .35s ease;will-change:opacity,transform;box-shadow:0 18px 40px #0000001a;overflow:hidden}.mega-menu-scroll-row{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}.mega-menu-scroll-col{flex-shrink:0}.collectionImage{border-radius:10px;height:70%!important}.show-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.hide-dropdown{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-5px)}.list-header{margin-bottom:1rem;font-size:16px;font-weight:600}.list-item{gap:1rem;font-size:14px}.each-price{transition:transform .25s ease,font-weight .25s ease,color .25s ease}.each-price:hover{font-weight:700;transform:translate(4px)}.image-container{cursor:pointer;overflow:hidden}.image-container img{border-radius:12px;transition:transform .35s ease}.image-container:hover img{transform:scale(1.04)}.collection{height:max-content;cursor:pointer;transition:transform .25s ease}.collection:hover{transform:translateY(-2px)}\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: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i6.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo", "disabled", "loading", "isFullWidth"] }, { kind: "pipe", type: GenderIcon, name: "genderIcon" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: NavbarButtonElementComponent, selector: "simpo-navbar-button-element", inputs: ["buttonData", "buttonStyle", "selectedStyle", "bgColor", "sectionId", "accentColor"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: SimpoStickyDirective, selector: "[simpoSticky]", inputs: ["simpoSticky", "categoryHeader"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: MatBottomSheetModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "component", type: MovingTextComponent, selector: "simpo-moving-text", inputs: ["data", "edit", "delete", "customClass", "index"] }] }); }
|
|
452
453
|
}
|
|
453
454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderSectionComponent, decorators: [{
|
|
454
455
|
type: Component,
|
|
@@ -472,7 +473,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
472
473
|
SpacingHorizontalDirective,
|
|
473
474
|
MovingTextComponent,
|
|
474
475
|
ContentFitDirective,
|
|
475
|
-
], template: "<section [id]=\"data?.id\" class=\"total-container w-100\" [class.z-index-10]=\"!isHeaderSticky && isComponentMerged\">\r\n <div class=\"w-100\" [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [ngClass]=\"{'box-shadow': isEcommerceWebsite}\"\r\n [class.margin-bottom]=\"isHeaderSticky && isMobile && categoryList?.length == 0\">\r\n <div [simpoSticky]=\"isHeaderSticky\" [simpoBackground]=\"backgroundInfo\" class=\"w-100\" #childContainer\r\n [categoryHeader]=\"isEcommerceWebsite && categoryList?.length > 0 && !isMobile && !showCategoryMobileHeader()\"\r\n simpoHover [class.bg-transparent]=\"isComponentMerged && scrollValue == 0 && !isMobile\"\r\n (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\"\r\n [class.header--scrolled]=\"data?.styles?.shrinkOnScroll && isHeaderSticky && scrollValue > 0 && !edit\">\r\n <!-- [class.background-position]=\"isComponentMerged && backgroundInfo?.showImage\" -->\r\n <ng-container *ngIf=\"style?.headline?.display\">\r\n <div>\r\n <simpo-moving-text [edit]=\"false\" [delete]=\"false\" [data]=\"data\"></simpo-moving-text>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"style?.styling === 'Header1' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header1Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header2' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header2Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header3' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header3Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header4' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header4Template\"></ng-container>\r\n </div>\r\n\r\n <div [spacingHorizontal]=\"stylesLayout\" [simpoOverlay]=\"backgroundInfo\" *ngIf=\"isEcommerceWebsite\"\r\n [simpoLayout]=\"screenWidth > 475 ? stylesLayout : undefined\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"ecommerce_header\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"input-group mx-2 mb-2 w-96\" *ngIf=\"isMobile && isEcommerceWebsite && !restrictCartBarInPages()\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search for items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + accentColor}\">\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : style?.background?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + style?.background?.accentColor + ' 0%' + ',' + style?.background?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">search</mat-icon>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && !isMobile && data?.styles?.menuType === 'MEGA_MENU'\">\r\n <ng-container *ngTemplateOutlet=\"categoriesHeader\"></ng-container>\r\n </ng-container>\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>\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && isMobile && showCategoryMobileHeader()\">\r\n <ng-container *ngTemplateOutlet=\"mobileCategoryHeader\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"isEcommerceWebsite && isMobile && !restrictInPages()\">\r\n <ng-container *ngTemplateOutlet=\"mobileFooterTemplate\"></ng-container>\r\n </ng-container> -->\r\n</section>\r\n\r\n<ng-template #header1Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 94 : ''\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header2Template>\r\n <div class=\"header1\">\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 93 : ''\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header3Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header4Template>\r\n <div class=\"header1\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container> </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #logoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer mx-1\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size + 80\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\" [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : \r\n ((content?.logo?.size >= 60 && content?.logo?.size <= 100) ? (20) : ((content?.logo?.size || 10) - 10))\"\r\n loading=\"lazy\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #pageLinksTemplate>\r\n <div class=\"navbar-nav pageLinks\" [ngClass]=\"{'align-items-center' : !isMobile}\">\r\n <div class=\"d-flex gap-3\"\r\n [ngClass]=\"{'flex-column': isMobile, 'align-items-center' : !isMobile, 'mobile-page-list': isMobile}\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\" [accentColor]=\"accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle category-btn\" type=\"button\"\r\n [simpoColor]=\"simpoColor\" id=\"link\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | lowercase | titlecase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #buttonsTemplate>\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"action?.display\" class=\"button-display mt-0\" [ngClass]=\"{'w-100 justify-space-around': isMobile}\">\r\n <div *ngFor=\"let button of action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\" [sectionId]=\"data?.id\"\r\n [edit]=\"edit\" [color]=\"data?.styles?.background?.accentColor\" [buttonId]=\"button.id\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n <div class=\"static_login_btn d-flex justify-content-between align-items-center cursor-pointer\"\r\n (click)=\"navigateLogin()\" *ngIf=\"passbookAppStatus && !loggedIn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\">\r\n <mat-icon>person_outline</mat-icon>\r\n Login\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn && !isMobile\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n </div>\r\n <button class=\"mobileLoginButton\" *ngIf=\"isEcommerceWebsite && isMobile && !loggedIn\"\r\n [style.border]=\"'1px solid' + accentColor\" [style.color]=\"accentColor\" (click)=\"goToAccount('LOGIN')\">Login</button>\r\n</ng-template>\r\n\r\n<ng-template #mobileFooterTemplate>\r\n <div class=\"cart-footer\" [style.background]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount > 0 && !restrictCartBarInPages()\">\r\n <div class=\"d-flex justify-content-between px-3 py-2 h-100 align-items-center\">\r\n <div class=\"item-count fw-bold\">\r\n {{ getCartItemsCount ?? 3 }} {{ getCartItemsCount > 1 ? 'items' : 'item' }} in cart\r\n <!-- Total : \u20B9{{ getCartTotalAmount }} -->\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 fw-bold\" (click)=\"goToCart()\">\r\n View Cart <mat-icon [simpoColor]=\"accentColor\">arrow_forward</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mobile-footer\" [simpoBackground]=\"backgroundInfo\">\r\n <div class=\"icons\" (click)=\"goToHome()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">home</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Home</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"searchProducts()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">grid_on</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Shop</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"goToWishlist()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">favorite_border</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Wishlist</span>\r\n </div>\r\n <div class=\"icons position-relative\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">shopping_cart</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Cart</span>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerceButtonsTemplate>\r\n <div class=\"justify-content-between pr-0 d-flex position-relative gap-10 w-100\"\r\n [style.flexDirection]=\"style?.styling === 'Header2' || style?.styling === 'Header4' ? 'row-reverse' : ''\">\r\n <!-- <div class=\"search-icon\" (click)=\"showSearchBar = !showSearchBar\">\r\n <mat-icon [style.color]=\"accentColor\">search</mat-icon>\r\n </div> -->\r\n <div class=\"w-75 d-flex align-items-center\" [ngClass]=\"{'justify-content-center' : !passbookAppStatus}\">\r\n <div class=\"input-group w-75 ml-2\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search For Items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"\r\n [style.color]=\"backgroundInfo?.accentColor\">\r\n <!-- <span class=\"animated-placeholder position-absolute\" \r\n [class.animate]=\"animatePlaceholder\"\r\n *ngIf=\"style?.searchBarPlaceholderList.length > 1 && style?.smartSearchBar\">\r\n {{ currentPlaceholder }}\r\n </span> -->\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType === 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center py-1 px-3 b-1 stores\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" (click)=\"goToSchemes()\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\" *ngIf=\"passbookAppStatus\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n xmlns:svgjs=\"http://svgjs.dev/svgjs\" id=\"Layer_2\" viewBox=\"0 0 60 60\" data-name=\"Layer 2\" width=\"30\"\r\n height=\"30\" version=\"1.1\">\r\n <g width=\"100%\" height=\"100%\" transform=\"matrix(1,0,0,1,0,0)\">\r\n <path d=\"m14.36 46.66.51-9.86-11.93-7.16-1.94 8.43z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m17.17 38.1s0-.02.02-.03c0 0 0-.02.02-.02.04-.05.1-.08.15-.11.02-.01.03-.03.05-.04l4.66-1.94h-.02s-1.87-1.21-1.87-1.21l-3.18 1.57-1.07.53-.43 8.32 1.58-6.9c.01-.06.05-.12.09-.17z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m19.14 34.08-6.27-4.04c-.19-.12-.28-.34-.23-.56l1.08-4.72-9.96 4.14 11.68 7.01z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m30.93 46.42-.5 9.79 32.57-18.67-1.21-6.4-23.16 11.46z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m16 47.65 13.38 8.58.49-9.86-11.93-7.17z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m27.85 39.34s0 0-.01 0c0 0 0 0-.01 0-.08.04-.16.06-.24.06-.05 0-.1-.03-.15-.04-.04-.01-.08-.01-.11-.03l-4.16-2.67-4.37 1.82 11.68 7.01 30.4-15.05-10.71-3.88-22.28 12.78z\"\r\n [attr.fill]=\"accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m28.26 36.01-.1 1.93 32.58-18.69-1.22-6.39-30.86 15.28z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m27.61 28.09-11.93-7.16-1.94 8.43 13.36 8.58z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m58.57 12.15-12.1-4.38-29.97 12.43 11.68 7z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n </g>\r\n </svg>\r\n <div [style.color]=\"accentColor\">Schemes</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center\">\r\n <div class=\"stores d-flex align-items-center gap-2 py-2 px-3\" (click)=\"goToStores()\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" *ngIf=\"storeAvaiable\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\">\r\n <mat-icon [style.color]=\"backgroundInfo?.accentColor\">store</mat-icon>\r\n <span [style.color]=\"backgroundInfo?.accentColor\">Stores</span>\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"!getPincode\">Enter\r\n Pincode\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">{{\"Delivering to: \" +\r\n getPincode}}</div>\r\n\r\n <!-- (mouseleave)=\"showPincodeInput = false\" -->\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToFav()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">favorite</mat-icon>\r\n </div>\r\n <div class=\"d-flex align-items-center position-relative\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">shopping_cart</mat-icon>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')' , 'color' : setColor()}\">\r\n {{getCartItemsCount}}</div>\r\n </div>\r\n <div class=\"loginButton\" *ngIf=\"!loggedIn\" (mouseenter)=\"showLogin = true;showPincodeInput = false\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"27\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12.12 12.78C12.05 12.77 11.96 12.77 11.88 12.78C10.12 12.72 8.71997 11.28 8.71997 9.50998C8.71997 7.69998 10.18 6.22998 12 6.22998C13.81 6.22998 15.28 7.69998 15.28 9.50998C15.27 11.28 13.88 12.72 12.12 12.78Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.74 19.38C16.96 21.01 14.6 22 12 22C9.40001 22 7.04001 21.01 5.26001 19.38C5.36001 18.44 5.96001 17.52 7.03001 16.8C9.77001 14.98 14.25 14.98 16.97 16.8C18.04 17.52 18.64 18.44 18.74 19.38Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\"\r\n stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <!-- <span class=\"fw-normal fs-6\" [simpoColor]=\"accentColor\">Login</span> -->\r\n </div>\r\n <!-- (mouseleave)=\"showLogin = false\" -->\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n <!-- <div> -->\r\n <!-- <button class=\"button\" (click)=\"goToAccount()\" simpoButtonDirective [id]=\"sectionId+buttonId\" [buttonStyle]=\"buttonStyle\" [color]=\"color\" [appButtonEditor]=\"edit ?? false\" [buttonData]=\"buttonContent\">{{buttonContent?.label}}</button> -->\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #navbarLinksTemplate>\r\n <div class=\"navbar-collapse fs-6 position-relative d-flex\" style=\"margin-top: 5px; margin-left: 25px;\"\r\n [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 768\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle\" type=\"button\" [simpoColor]=\"simpoColor\" id=\"link\"\r\n data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | uppercase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"offcanvas\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\"\r\n [ngClass]=\"{'offcanvas-end' : (style?.styling === 'Header1' || style?.styling === 'Header3') && !isEcommerceWebsite, 'offcanvas-start': style?.styling === 'Header2' || style?.styling === 'Header4' || isEcommerceWebsite}\">\r\n <div class=\"offcanvas-header\" [simpoBackground]=\"style?.background\">\r\n <ng-container *ngTemplateOutlet=\"mobileLogoSectionTemplate\"></ng-container>\r\n <!-- <button type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button> -->\r\n <mat-icon data-bs-dismiss=\"offcanvas\">close</mat-icon>\r\n </div>\r\n <div class=\"offcanvas-body\">\r\n <div class=\"pages\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"offcanvas-footer\">\r\n <div class=\"canvas-button\">\r\n <ng-container *ngTemplateOutlet=\"buttonsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #ecomProfileTemplate>\r\n <!-- <mat-icon class=\"h-100 d-flex align-items-center justify-content-center br-50 fs-22 px-3 py-1\"\r\n (click)=\"showSearchBarMobile = !showSearchBarMobile\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon> -->\r\n\r\n\r\n <!-- <input type=\"text\" class=\"form-control mob-form-control\" placeholder=\"Search Product\" aria-label=\"Search Product\"\r\n *ngIf=\"showSearchBarMobile\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"> -->\r\n\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileLogoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer h-100\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\" class=\"h-100\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" class=\"h-100\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"logo\" class=\"h-100\" loading=\"lazy\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #categoriesHeader>\r\n <div class=\"categories-wrapper\"\r\n *ngIf=\"(categoryList?.length > 0 || collectionList?.collections?.length > 0) && !isMobile\"\r\n (mouseleave)=\"showList = false; showCollections = false\">\r\n\r\n <div class=\"blur-overlay\" [class.active]=\"showList || showCollections\"></div>\r\n\r\n <div class=\"categories-header d-flex gap-3 py-2 position-relative\" [spacingHorizontal]=\"stylesLayout\"\r\n [style.background]=\"data?.styles?.headline?.color\">\r\n\r\n <div class=\"category cursor-pointer\" *ngFor=\"let ele of megaMenu; let i = index\"\r\n [style.--border-color]=\"data?.styles?.background?.accentColor\" [simpoColor]=\"data?.styles?.headline?.color\"\r\n (mouseenter)=\"setChildMenu(ele)\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n </div>\r\n\r\n <!-- [class.hide-dropdown]=\"!showList\" -->\r\n <div class=\"list-category\" [class.show-dropdown]=\"showList\" [class.hide-dropdown]=\"!showList\">\r\n <div class=\"row w-100 h-100 mega-menu-scroll-row\">\r\n <ng-container *ngFor=\"let ele of selectedCategory; let i = index\">\r\n <div class=\"mega-menu-scroll-col\" [ngClass]=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY') ? 'col-3' : 'col-2'\">\r\n\r\n <ng-container *ngIf=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY' )\">\r\n <img [src]=\"ele.imageUrl\" [alt]=\"ele?.label\" class=\"w-100 mb-2 br-12 cursor-pointer collectionImage\" *ngIf=\"ele.imageUrl\" (click)=\"redirectionsOfMenu(ele)\" />\r\n </ng-container>\r\n\r\n <div class=\"list-header mb-3 cursor-pointer\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n <ng-container *ngIf=\"ele?.children && ele?.children.length > 0\">\r\n <div class=\"d-flex flex-column gap-3 list-item\">\r\n <ng-container *ngFor=\"let child of ele?.children\">\r\n <div (click)=\"redirectionsOfMenu(child)\" class=\"cursor-pointer\">\r\n {{child?.label | titlecase}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileCategoryHeader>\r\n <div class=\"categories-header d-flex gap-3 py-2 overflow-auto\" *ngIf=\"categoryList?.length > 0 && isMobile\"\r\n [spacingHorizontal]=\"stylesLayout\" [class.margin-top-mob]=\"isHeaderSticky\">\r\n <div class=\"category cursor-pointer d-flex flex-column gap-3\" *ngFor=\"let ele of categoryList;let i = index\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"selectedCategory = ele; filterByCategory()\">\r\n <div class=\"cat-img d-flex justify-content-center align-items-center w-100\">\r\n <img [src]=\"ele?.imageUrls[0]\" alt=\"\" class=\"h-10 br-12\">\r\n </div>\r\n <div class=\"text-center f-14\">{{ele?.categoryName | titlecase}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerce_header>\r\n <header class=\"site-header\">\r\n <!-- Top Bar: Logo, Search, User Actions -->\r\n <div class=\"top-bar\">\r\n\r\n <!-- Mobile Menu Toggle (Checkbox Hack) -->\r\n <div [ngClass]=\"{'mobile-header-left-side': screenWidth <= 475}\">\r\n <label for=\"mobile-menu-checkbox\" class=\"mobile-menu-btn\" data-bs-toggle=\"offcanvas\"\r\n data-bs-target=\"#offcanvasRight\" aria-controls=\"offcanvasRight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"></line>\r\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"></line>\r\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"></line>\r\n </svg>\r\n </label>\r\n\r\n <!-- Logo Section -->\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"Logo\" class=\"logo-img\" [width]=\"content?.logo?.size + 15\"\r\n [height]=\"content?.logo?.size\">\r\n </a>\r\n\r\n <a class=\"textPluslogo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && content?.logo?.text?.isIcon \r\n && content?.logo?.text?.url\">\r\n\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"Icon\" class=\"logo-icon\"\r\n [width]=\"content?.logo?.size + 15\" [height]=\"content?.logo?.size\">\r\n\r\n <span class=\"logo-text\" [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 475\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && !content?.logo?.text?.isIcon\">\r\n\r\n <span class=\"logo-main\" [simpoColor]=\"simpoColor\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n </div>\r\n\r\n <!-- Search Bar -->\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth > 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown menu style -->\r\n <div class=\"dropdown_menu\" *ngIf=\"screenWidth > 475 && data?.styles?.menuType === 'DROPDOWN_MENU'\"\r\n (mouseleave)=\"showList = false; selectedCategory = null\">\r\n <div class=\"dd-nav\">\r\n <div class=\"dd-tab-wrap\" *ngFor=\"let ele of megaMenu\" (mouseenter)=\"setChildMenu(ele)\">\r\n <button type=\"button\" class=\"dd-tab\" [class.dd-tab-active]=\"showList && selectedCategory === ele?.children\"\r\n (click)=\"redirectionsOfMenu(ele)\">\r\n <span class=\"text-nowrap\">{{ele?.label | titlecase}}</span>\r\n <img style=\"width:20px; height:20px\" class=\"tab-arrow\" *ngIf=\"ele?.children?.length\"\r\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/334952c1776866431821dropdown-arrow-svgrepo-com.svg\"\r\n alt=\"dropdown arrow\">\r\n </button>\r\n\r\n <div class=\"dd-panel\" *ngIf=\"showList && selectedCategory === ele?.children && ele?.children?.length\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"dd-item\" *ngFor=\"let child of ele?.children\"\r\n (click)=\"!child?.children?.length ? redirectionsOfMenu(child) : ''\">\r\n <span class=\"text-nowrap\">{{child?.label | titlecase}}</span>\r\n <span class=\"dd-item-arrow\" *ngIf=\"child?.children?.length\">›</span>\r\n\r\n <div class=\"dd-submenu\" *ngIf=\"child?.children?.length\">\r\n <div class=\"dd-sub-item\" *ngFor=\"let sub of child?.children\"\r\n (click)=\"redirectionsOfMenu(sub); $event.stopPropagation()\">\r\n <span class=\"text-nowrap\">{{sub?.label | titlecase}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Right Actions -->\r\n <div class=\"user-actions\">\r\n \r\n <ng-container *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar\">\r\n <a class=\"action-link icon-only dropdown-search-toggle\" (click)=\"showDropdownDesktopSearch = !showDropdownDesktopSearch\"\r\n aria-label=\"Toggle search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"storeAvaiable\">\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n *ngIf=\"!getPincode\">\r\n <!-- <svg width=\"20\" height=\"20\" viewBox=\"0 0 17 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\" fill=\"none\" [simpoColor]=\"simpoColor\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <path\r\n d=\"M8.5 0.5c-3.032 0-5.5 2.467-5.5 5.5 0 4.373 4.913 10.086 5.122 10.328l0.378 0.435 0.378-0.436c0.209-0.241 5.122-5.954 5.122-10.327 0-3.033-2.468-5.5-5.5-5.5zM8.5 15.215c-1.146-1.424-4.5-5.879-4.5-9.215 0-2.481 2.019-4.5 4.5-4.5s4.5 2.019 4.5 4.5c0 3.333-3.354 7.791-4.5 9.215zM8.5 3.139c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zM8.5 8.139c-1.103 0-2-0.897-2-2s0.897-2 2-2 2 0.897 2 2-0.897 2-2 2z\"\r\n fill=\"#000000\" />\r\n </svg> -->\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 512 512\"\r\n [simpoColor]=\"simpoColor\" stroke=\"currentColor\" fill=\"currentColor\">\r\n <g>\r\n <path\r\n d=\"M341.476 338.285c54.483-85.493 47.634-74.827 49.204-77.056C410.516 233.251 421 200.322 421 166 421 74.98 347.139 0 256 0 165.158 0 91 74.832 91 166c0 34.3 10.704 68.091 31.19 96.446l48.332 75.84C118.847 346.227 31 369.892 31 422c0 18.995 12.398 46.065 71.462 67.159C143.704 503.888 198.231 512 256 512c108.025 0 225-30.472 225-90 0-52.117-87.744-75.757-139.524-83.715zm-194.227-92.34a15.57 15.57 0 0 0-.517-.758C129.685 221.735 121 193.941 121 166c0-75.018 60.406-136 135-136 74.439 0 135 61.009 135 136 0 27.986-8.521 54.837-24.646 77.671-1.445 1.906 6.094-9.806-110.354 172.918L147.249 245.945zM256 482c-117.994 0-195-34.683-195-60 0-17.016 39.568-44.995 127.248-55.901l55.102 86.463a14.998 14.998 0 0 0 25.298 0l55.101-86.463C411.431 377.005 451 404.984 451 422c0 25.102-76.313 60-195 60z\">\r\n </path>\r\n <path\r\n d=\"M256 91c-41.355 0-75 33.645-75 75s33.645 75 75 75 75-33.645 75-75-33.645-75-75-75zm0 120c-24.813 0-45-20.187-45-45s20.187-45 45-45 45 20.187 45 45-20.187 45-45 45z\">\r\n </path>\r\n </g>\r\n </svg>\r\n\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">Enter Pincode</span>\r\n\r\n </a>\r\n\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7\"></path>\r\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path>\r\n <path d=\"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4\"></path>\r\n <path d=\"M2 7h20\"></path>\r\n <path\r\n d=\"M22 7v3a2 2 0 0 1-2 2v0a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12v0a2 2 0 0 1-2-2V7\">\r\n </path>\r\n </svg>\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">{{\"Delivering to: \" +\r\n getPincode}}</span>\r\n\r\n </a>\r\n\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <a class=\"action-link icon-only login-btn\" *ngIf=\"!loggedIn\"\r\n (mouseenter)=\"showLogin = true;showPincodeInput = false\" (click)=\"showLogin = !showLogin\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"action-link icon-only\" (click)=\"goToAccount('PROFILE')\" *ngIf=\"loggedIn\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n\r\n <a class=\"action-link icon-only icon-container wishlist-icon\" (click)=\"goToWishlist()\">\r\n <!-- Heart Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path\r\n d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\">\r\n </path>\r\n </svg>\r\n <!-- <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\">2</span> -->\r\n </a>\r\n\r\n <a class=\"action-link icon-only icon-container cart-icon\" (click)=\"goToCart()\">\r\n <!-- Shopping Bag Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z\"></path>\r\n <path d=\"M3 6h18\"></path>\r\n <path d=\"M16 10a4 4 0 0 1-8 0\"></path>\r\n </svg>\r\n <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</span>\r\n </a>\r\n\r\n <div class=\"dropdown-search-expand\"\r\n *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar && showDropdownDesktopSearch\">\r\n <div class=\"dropdown-search-box\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for...\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-close\" (click)=\"showDropdownDesktopSearch = false\" aria-label=\"Close search\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth <= 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n </header>\r\n</ng-template>", styles: [".total-container div[simpoSticky]{top:0!important;left:0!important;right:0!important;margin:0 auto!important;width:100%!important}.header--scrolled{top:10px!important;left:4%!important;right:4%!important;width:92%!important;overflow:hidden!important;border-radius:60px!important;box-shadow:0 10px 40px #0000001f!important;z-index:1000001!important;transition:width .4s cubic-bezier(.16,1,.3,1)}*{font-family:var(--website-font-family)}.animated-placeholder{left:12%;transform:translateY(-50%);transition:all .4s ease;font-size:14px;top:49%;color:#6f6f6f;font-weight:300}.animated-placeholder.animate{transform:translateY(-150%);opacity:0}.w-5{width:5%}.static_login_btn{background:transparent;border-radius:12px;border:2px solid;box-shadow:none;transform:unset;font-size:16px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:100%!important;font-weight:700;font-family:var(--website-font-family);height:43px;gap:5px}.static_login_btn mat-icon{color:#000}mat-icon{font-family:Material Icons!important}.total-container{transition:width .2s ease-in-out}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.categories-header .category{display:flex;align-items:center;font-weight:400;font-size:1rem;flex:0 0 auto}.margin-bottom{margin-bottom:var(--margin-top)}@media only screen and (max-width : 475px){.w-5{width:100%!important}.logo-main,.logo-text{font-size:17px!important}.left-logo-text{padding-top:10px}.mob-form-control{width:96%;border-radius:12px!important}.input-group mat-icon{width:10%!important}.categories-header{height:unset!important}.margin-top-mob{margin-top:var(--margin-top)}.w-98{width:98%}.w-96{width:96%}.paddingEcom{padding-top:5px!important;padding-bottom:5px!important}.right-btn{width:15%!important}.cartItemCount{top:-8px!important;right:-3px!important}.adjustePadding{padding:8px!important}.pageLinks{gap:15px;flex-direction:column!important}.category-btn{color:#000!important;justify-content:left}}.nav-link{text-decoration:none}.cartItemCount{padding:5px;border-radius:5px;color:#fff;top:15px;left:15px;height:15px;width:15px;display:flex;align-items:center;justify-content:center;font-size:9px}#navbarNavAltMarkup{position:fixed;top:0;width:100%;background-color:#0e3f58;height:calc(100vh + -0px);z-index:101}.dropdown-toggle{border-bottom:2px solid transparent;transition:border .5s ease;position:relative;top:-1px}.dropdown-toggle:hover{border-bottom:2px solid rgb(14,63,88)}.inner-height,.nab-bar-mobile{height:100%}.total-container{height:auto;position:relative;background-color:transparent!important}.menu-icon{display:flex;flex-direction:column;gap:0px;align-items:center;justify-content:space-evenly;max-width:55px}.menu-icon hr{border:1px solid;margin:0;width:100%}.pt-0{padding-top:0!important}.pb-0{padding-bottom:0!important}.button{font-size:14px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.stores{border:1px solid;border-radius:12px;cursor:pointer;font-weight:600}.input-group{position:relative;outline:none;height:40px;display:flex;align-items:center;background-color:transparent;margin-right:25px;-webkit-transition:width .4s ease-in-out;transition:width .4s ease-in-out;border-radius:12px}.input-group mat-icon{width:6%;display:flex;align-items:center;justify-content:center;font-size:22px;position:relative;border-radius:0 12px 12px 0}.input-group input{height:100%!important;width:80%;background-color:transparent;border:none;outline:none;font-size:14px;padding-bottom:6px;box-shadow:none}.mat-icon{color:#000}.dropdown-button{font-size:14px!important;width:fit-content!important}.mobile-footer{display:none}@media screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:10001;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;align-items:center;justify-content:center;flex-direction:column}.mobile-footer .mat-icon{font-size:22px}}.nab-bar-mobile{width:100%;padding:5px 10px;height:50px;box-sizing:border-box}.title-row{flex:1;display:flex;align-items:center}.navbar-content{background-color:#0e3f58;padding:10px;margin-top:0!important}.navbar-content .d-flex{margin-top:20px}.navbar-toggler,.close-box{background:transparent;border:none;cursor:pointer;margin-left:10px;width:50px!important}.mat-icon{color:#fff}.button-display{display:flex;gap:8px}.flex-column{flex-direction:column}.justify-space-around{justify-content:space-around}@media screen and (max-width: 475px){.nab-bar-mobile{height:60px}}.cursor-pointer{cursor:pointer}.search-icon{margin-right:20px;display:flex;align-items:center;cursor:pointer}.search-icon mat-icon{font-size:24px}.mat-btn{font-size:14px!important;background:none;display:flex;cursor:pointer;border:none}.mat-btn mat-icon{color:inherit}.dropdown-menu{right:0;left:auto}.header1{display:flex;justify-content:space-between;align-items:center}.gap-15{gap:15px}.gap-10{gap:10px}.ptb-1{padding-top:1rem;padding-bottom:1rem}.text-end{text-align:end}.loginButton{gap:5px;display:flex;align-items:center;color:#fff;border-radius:8px;cursor:pointer;width:40px}.loginButton span{font-weight:600!important}.align-center{align-items:center}.offcanvas{width:70%;z-index:1000000000}.offcanvas mat-icon{color:#000}.offcanvas-body{position:relative}.canvas-button{position:absolute;bottom:20px;left:12px;width:90%}.mobileLoginButton{width:100%;height:40px;border-radius:8px;margin-top:15px;outline:none;background:transparent}.pageLinks{display:flex;flex-direction:row}.category-btn{font-size:16px!important}.h-70{height:70px}.offcanvas-header{height:10vh}.offcanvas-body{height:70vh}.offcanvas-body .pages{height:80%;overflow:scroll}.offcanvas-footer{height:20vh}.h-100{height:100%!important}.box-shadow{box-shadow:-9px 5px 3px #99999929}.sticky-header{position:sticky;top:0;z-index:10000}.mobile-page-list{position:relative;left:10px}.category{position:relative}.category:hover{border-bottom:3px solid var(--border-color);transition:border-bottom .1s ease-in-out}.list-category{padding:15px 30px;color:#000;background-color:#fff!important;height:50vh;position:absolute;width:100%;z-index:1001}.background-position{background-position:center top!important}.image-container{cursor:pointer}.image-container img{border-radius:12px}.each-price:hover{font-weight:700}.col-imag img{border-radius:6px;height:40px}.h-45{height:45vh}.btm-col-name{width:93%;border-radius:0 0 12px 12px;bottom:0}.collection{height:max-content;cursor:pointer}.text-overflow{overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500}.col-5{width:44.666667%}.h-10{height:10vh}.fs-16{font-size:16px}.br-50{border-radius:50%}.col-7{width:56.333333%}.pincode-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:3%;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.form-control{border-radius:12px 0 0 12px}.pin-text{font-size:14px;font-weight:500;white-space:nowrap}.z-index-10{z-index:10!important}.bg-transparent{background-color:transparent!important;background-image:none!important}.error-border{border:2px solid #e53e3e!important}.f-11{font-size:11px}.br-5{border:1px solid rgba(0,0,0,.05)}.f-18{font-size:18px}.f-14{font-size:14px}.info-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:0;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.sign-btn{padding:10px;border-radius:12px;border:1px solid;cursor:pointer}.b-1{border:1px solid;border-radius:12px}@keyframes unrollCarpet{0%{transform:scaleY(0) rotateX(90deg);opacity:0}25%{transform:scaleY(.25) rotateX(67.5deg);opacity:.35}50%{transform:scaleY(.5) rotateX(45deg);opacity:.7}75%{transform:scaleY(.75) rotateX(22.5deg);opacity:.85}to{transform:scaleY(1) rotateX(0);opacity:1}}.pincode-text{font-size:11px;margin-bottom:15px}.cart-footer{position:fixed;width:96%;height:45px;bottom:65px;z-index:100;left:8px;border-radius:10px}.item-count{align-content:center}.fs-22{font-size:22px}.w-15{width:15%!important}.site-header{width:100%;border-bottom:1px solid transparent}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1440px;margin:0 auto}.dropdown_menu{position:relative;min-width:420px}.dd-nav{display:flex;align-items:center;gap:18px}.dd-tab-wrap{position:relative;display:inline-flex}.dd-tab{border:none;background:transparent;padding:6px 2px 12px;font-size:15px;font-weight:500;color:#30343b;line-height:1;border-bottom:3px solid transparent;display:inline-flex;align-items:center;gap:8px}.dd-tab:hover,.dd-tab.dd-tab-active{border-bottom-color:#2f3338}.dd-panel{position:absolute;top:100%;background:#fff;border:1px solid #ececef;box-shadow:0 12px 35px #1d212929;padding:14px 0;z-index:1006}.dd-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;font-size:16px;color:#2c2f35;transition:background-color .2s ease;cursor:pointer}.dd-item:hover{background-color:#f5f6f8}.dd-item-arrow{font-size:20px;line-height:1;color:#5a5f66}.dd-submenu{position:absolute;top:-10px;left:calc(100% + 8px);background:#fff;border:1px solid #ececef;box-shadow:0 10px 26px #1d212926;padding:10px 0;display:none;z-index:1007}.dd-item:hover .dd-submenu{display:block}.dd-sub-item{padding:10px 16px;font-size:15px;color:#2c2f35;transition:background-color .2s ease}.dd-sub-item:hover{background-color:#f5f6f8}.dropdown-search-toggle{cursor:pointer}.dropdown-search-expand{position:absolute;top:calc(100% + 10px);right:0;min-width:320px;z-index:1010}.dropdown-search-box{width:100%;background:#f3f3f3;border:1px solid #e7e7e7;display:flex;align-items:center;gap:12px;padding:10px 14px}.dropdown-search-icon{color:#1f2328;flex:0 0 auto}.dropdown-search-box input{border:none;background:transparent;width:100%;font-size:14px;color:#2f3338;outline:none}.dropdown-search-close{color:#545861;cursor:pointer;flex:0 0 auto}.logo{display:flex;flex-direction:column;align-items:flex-start;color:#5e4042;line-height:1;text-decoration:auto}.logo-img{display:block}.logo-main{font-family:Playfair Display,serif;font-size:32px;font-weight:500;letter-spacing:.5px}.logo-sub{font-family:Montserrat,sans-serif;font-size:10px;letter-spacing:3px;text-transform:uppercase;margin-top:2px;margin-left:2px}.search-wrapper{flex:1;display:flex;justify-content:center;max-width:600px}.search-bar{width:100%;background-color:#f3f3f3;border-radius:8px;display:flex;align-items:center;padding:10px 16px;gap:12px}.search-icon{color:#333;width:18px;height:18px}.search-bar input{border:none;background:transparent;width:100%;font-family:Montserrat,sans-serif;font-size:14px;color:#1a1a1a;outline:none}.search-bar input::placeholder{color:#888;font-weight:400}.user-actions{position:relative;display:flex;align-items:center;gap:24px}.action-link{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#333}.action-link:hover{color:#5e4042}.store-text{white-space:nowrap}.icon-only svg{display:block;cursor:pointer}.main-nav{border-top:1px solid transparent;padding-bottom:15px}.nav-list{display:flex;justify-content:center;flex-wrap:wrap;gap:32px;padding:10px 40px}.nav-list li{position:relative}.nav-list a{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:#333;padding:5px 0;display:inline-block}.nav-list a:hover{color:#5e4042}.has-badge{position:relative}.badge{position:absolute;top:-12px;right:-10px;background-color:#a87b7b;color:#fff;font-size:9px;font-weight:600;padding:2px 6px;border-radius:10px;line-height:1;white-space:nowrap}.mobile-menu-checkbox{display:none}.mobile-menu-btn{display:none;cursor:pointer;color:#333}.hero-placeholder{height:80vh;background-color:#f9f9f9;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#5e4042}.hero-placeholder h1{font-family:Playfair Display,serif;font-size:3rem;margin-bottom:1rem}@media (max-width: 1024px){.nav-list{gap:20px}.store-text{display:none}.search-wrapper{margin:0 20px}}@media (max-width: 768px){.top-bar{padding:15px 20px;flex-wrap:wrap}.search-wrapper{order:3;width:100%;max-width:100%;margin:0 0 15px}.user-actions{gap:16px}.main-nav{display:none;width:100%;background:#fff;border-top:1px solid #eee}.nav-list{flex-direction:column;align-items:center;gap:15px;padding:20px}.badge{position:relative;top:-2px;right:auto;margin-left:8px;vertical-align:middle}.mobile-menu-btn{display:block}.mobile-menu-checkbox:checked~.main-nav{display:block}}@media screen and (max-width: 475px){.store-link{display:none}.info-container{width:100vw;top:62%}}.icon-container{position:relative}.count-badge{position:absolute;top:-8px;right:-8px;font-size:10px;font-weight:600;height:18px;width:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #ffffff}.textPluslogo{display:flex;align-items:center;gap:8px;flex-shrink:0;text-decoration:none}.logo-icon{color:#5e4042}.logo-text{font-size:28px;font-weight:600;color:#1a1a1a;letter-spacing:-.5px}.mobile-header-left-side{display:flex;align-items:center;gap:15px}.categories-wrapper{position:relative;width:100%;z-index:1000}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;position:relative;z-index:1002}.categories-header::-webkit-scrollbar{display:none}.category{position:relative;border-bottom:3px solid transparent;transition:border-color .35s ease,color .35s ease}.category:hover{border-bottom-color:var(--border-color)}.blur-overlay{position:fixed;top:var(--margin-top);left:0;width:100vw;height:calc(100vh - var(--margin-top));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffff47;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,visibility .35s ease;z-index:1000}.blur-overlay.active{opacity:1;visibility:visible}.list-category{padding:20px 30px;color:#111;background:#fff!important;height:50vh;position:absolute;top:100%;left:0;width:100%;z-index:1003;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,transform .35s ease,visibility .35s ease;will-change:opacity,transform;box-shadow:0 18px 40px #0000001a;overflow:hidden}.mega-menu-scroll-row{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}.mega-menu-scroll-col{flex-shrink:0}.collectionImage{border-radius:10px;height:70%!important}.show-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.hide-dropdown{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-5px)}.list-header{margin-bottom:1rem;font-size:16px;font-weight:600}.list-item{gap:1rem;font-size:14px}.each-price{transition:transform .25s ease,font-weight .25s ease,color .25s ease}.each-price:hover{font-weight:700;transform:translate(4px)}.image-container{cursor:pointer;overflow:hidden}.image-container img{border-radius:12px;transition:transform .35s ease}.image-container:hover img{transform:scale(1.04)}.collection{height:max-content;cursor:pointer;transition:transform .25s ease}.collection:hover{transform:translateY(-2px)}\n"] }]
|
|
476
|
+
], template: "<section [id]=\"data?.id\" class=\"total-container w-100\" [class.z-index-10]=\"!isHeaderSticky && isComponentMerged\">\r\n <div class=\"w-100\" [id]=\"data?.id\" [simpoOverlay]=\"style?.background\" [ngClass]=\"{'box-shadow': isEcommerceWebsite}\"\r\n [class.margin-bottom]=\"isHeaderSticky && isMobile && categoryList?.length == 0\">\r\n <div [simpoSticky]=\"isHeaderSticky\" [simpoBackground]=\"backgroundInfo\" class=\"w-100\" #childContainer\r\n [categoryHeader]=\"isEcommerceWebsite && categoryList?.length > 0 && !isMobile && !showCategoryMobileHeader()\"\r\n simpoHover [class.bg-transparent]=\"isComponentMerged && scrollValue == 0 && !isMobile\"\r\n (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\"\r\n [class.header--scrolled]=\"data?.styles?.shrinkOnScroll && isHeaderSticky && scrollValue > 0 && !edit\">\r\n <!-- [class.background-position]=\"isComponentMerged && backgroundInfo?.showImage\" -->\r\n <ng-container *ngIf=\"style?.headline?.display\">\r\n <div>\r\n <simpo-moving-text [edit]=\"false\" [delete]=\"false\" [data]=\"data\"></simpo-moving-text>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"style?.styling === 'Header1' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header1Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header2' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header2Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header3' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header3Template\"></ng-container>\r\n </div>\r\n <div *ngIf=\"style?.styling === 'Header4' && !isEcommerceWebsite\" [spacingHorizontal]=\"stylesLayout\"\r\n [simpoOverlay]=\"backgroundInfo\" [simpoLayout]=\"stylesLayout\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"header4Template\"></ng-container>\r\n </div>\r\n\r\n <div [spacingHorizontal]=\"stylesLayout\" [simpoOverlay]=\"backgroundInfo\" *ngIf=\"isEcommerceWebsite\"\r\n [simpoLayout]=\"screenWidth > 475 ? stylesLayout : undefined\" [isHeader]=\"true\" [id]=\"data?.id\">\r\n <ng-container *ngTemplateOutlet=\"ecommerce_header\"></ng-container>\r\n </div>\r\n\r\n <!-- <div class=\"input-group mx-2 mb-2 w-96\" *ngIf=\"isMobile && isEcommerceWebsite && !restrictCartBarInPages()\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search for items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + accentColor}\">\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : style?.background?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + style?.background?.accentColor + ' 0%' + ',' + style?.background?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">search</mat-icon>\r\n </div> -->\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && !isMobile && data?.styles?.menuType === 'MEGA_MENU'\">\r\n <ng-container *ngTemplateOutlet=\"categoriesHeader\"></ng-container>\r\n </ng-container>\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>\r\n\r\n <ng-container *ngIf=\"isEcommerceWebsite && isMobile && showCategoryMobileHeader()\">\r\n <ng-container *ngTemplateOutlet=\"mobileCategoryHeader\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <ng-container *ngIf=\"isEcommerceWebsite && isMobile && !restrictInPages()\">\r\n <ng-container *ngTemplateOutlet=\"mobileFooterTemplate\"></ng-container>\r\n </ng-container> -->\r\n</section>\r\n\r\n<ng-template #header1Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 94 : ''\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header2Template>\r\n <div class=\"header1\">\r\n <div class=\"d-flex gap-15 align-center\" *ngIf=\"!isMobile\" [style.width.%]=\"isEcommerceWebsite ? 93 : ''\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header3Template>\r\n <div class=\"header1\">\r\n <div [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #header4Template>\r\n <div class=\"header1\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"!isEcommerceWebsite ? buttonsTemplate : null\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"isEcommerceWebsite ? ecommerceButtonsTemplate : null\"></ng-container>\r\n <ng-container *ngIf=\"!isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </ng-container> </ng-container>\r\n <div class=\"d-flex gap-15 align-center\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\r\n aria-controls=\"offcanvasRight\" *ngIf=\"isMobile\">\r\n <mat-icon [simpoColor]=\"simpoColor\">menu</mat-icon>\r\n <ng-container *ngIf=\"isEcommerceWebsite\">\r\n <ng-container *ngTemplateOutlet=\"ecomProfileTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"text-end\" [class.w-15]=\"content?.logo?.isImage\">\r\n <ng-container *ngTemplateOutlet=\"logoSectionTemplate\"></ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #logoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer mx-1\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size + 80\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\" [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : \r\n ((content?.logo?.size >= 60 && content?.logo?.size <= 100) ? (20) : ((content?.logo?.size || 10) - 10))\"\r\n loading=\"lazy\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #pageLinksTemplate>\r\n <div class=\"navbar-nav pageLinks\" [ngClass]=\"{'align-items-center' : !isMobile}\">\r\n <div class=\"d-flex gap-3\"\r\n [ngClass]=\"{'flex-column': isMobile, 'align-items-center' : !isMobile, 'mobile-page-list': isMobile}\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\" [accentColor]=\"accentColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle category-btn\" type=\"button\"\r\n [simpoColor]=\"simpoColor\" id=\"link\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | lowercase | titlecase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n</ng-template>\r\n\r\n<ng-template #buttonsTemplate>\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"action?.display\" class=\"button-display mt-0\" [ngClass]=\"{'w-100 justify-space-around': isMobile}\">\r\n <div *ngFor=\"let button of action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\" [sectionId]=\"data?.id\"\r\n [edit]=\"edit\" [color]=\"data?.styles?.background?.accentColor\" [buttonId]=\"button.id\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n <div class=\"static_login_btn d-flex justify-content-between align-items-center cursor-pointer\"\r\n (click)=\"navigateLogin()\" *ngIf=\"passbookAppStatus && !loggedIn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\">\r\n <mat-icon>person_outline</mat-icon>\r\n Login\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn && !isMobile\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n </div>\r\n <button class=\"mobileLoginButton\" *ngIf=\"isEcommerceWebsite && isMobile && !loggedIn\"\r\n [style.border]=\"'1px solid' + accentColor\" [style.color]=\"accentColor\" (click)=\"goToAccount('LOGIN')\">Login</button>\r\n</ng-template>\r\n\r\n<ng-template #mobileFooterTemplate>\r\n <div class=\"cart-footer\" [style.background]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount > 0 && !restrictCartBarInPages()\">\r\n <div class=\"d-flex justify-content-between px-3 py-2 h-100 align-items-center\">\r\n <div class=\"item-count fw-bold\">\r\n {{ getCartItemsCount ?? 3 }} {{ getCartItemsCount > 1 ? 'items' : 'item' }} in cart\r\n <!-- Total : \u20B9{{ getCartTotalAmount }} -->\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 fw-bold\" (click)=\"goToCart()\">\r\n View Cart <mat-icon [simpoColor]=\"accentColor\">arrow_forward</mat-icon>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mobile-footer\" [simpoBackground]=\"backgroundInfo\">\r\n <div class=\"icons\" (click)=\"goToHome()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">home</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Home</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"searchProducts()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">grid_on</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Shop</span>\r\n </div>\r\n <div class=\"icons\" (click)=\"goToWishlist()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">favorite_border</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Wishlist</span>\r\n </div>\r\n <div class=\"icons position-relative\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"simpoColor\">shopping_cart</mat-icon>\r\n <span [simpoColor]=\"simpoColor\">Cart</span>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerceButtonsTemplate>\r\n <div class=\"justify-content-between pr-0 d-flex position-relative gap-10 w-100\"\r\n [style.flexDirection]=\"style?.styling === 'Header2' || style?.styling === 'Header4' ? 'row-reverse' : ''\">\r\n <!-- <div class=\"search-icon\" (click)=\"showSearchBar = !showSearchBar\">\r\n <mat-icon [style.color]=\"accentColor\">search</mat-icon>\r\n </div> -->\r\n <div class=\"w-75 d-flex align-items-center\" [ngClass]=\"{'justify-content-center' : !passbookAppStatus}\">\r\n <div class=\"input-group w-75 ml-2\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Search For Items\" aria-label=\"Search Product\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"\r\n [style.color]=\"backgroundInfo?.accentColor\">\r\n <!-- <span class=\"animated-placeholder position-absolute\" \r\n [class.animate]=\"animatePlaceholder\"\r\n *ngIf=\"style?.searchBarPlaceholderList.length > 1 && style?.smartSearchBar\">\r\n {{ currentPlaceholder }}\r\n </span> -->\r\n <mat-icon class=\"h-100\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType === 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center py-1 px-3 b-1 stores\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" (click)=\"goToSchemes()\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\" *ngIf=\"passbookAppStatus\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n xmlns:svgjs=\"http://svgjs.dev/svgjs\" id=\"Layer_2\" viewBox=\"0 0 60 60\" data-name=\"Layer 2\" width=\"30\"\r\n height=\"30\" version=\"1.1\">\r\n <g width=\"100%\" height=\"100%\" transform=\"matrix(1,0,0,1,0,0)\">\r\n <path d=\"m14.36 46.66.51-9.86-11.93-7.16-1.94 8.43z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m17.17 38.1s0-.02.02-.03c0 0 0-.02.02-.02.04-.05.1-.08.15-.11.02-.01.03-.03.05-.04l4.66-1.94h-.02s-1.87-1.21-1.87-1.21l-3.18 1.57-1.07.53-.43 8.32 1.58-6.9c.01-.06.05-.12.09-.17z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m19.14 34.08-6.27-4.04c-.19-.12-.28-.34-.23-.56l1.08-4.72-9.96 4.14 11.68 7.01z\"\r\n [attr.fill]=\"backgroundInfo?.accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m30.93 46.42-.5 9.79 32.57-18.67-1.21-6.4-23.16 11.46z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m16 47.65 13.38 8.58.49-9.86-11.93-7.17z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path\r\n d=\"m27.85 39.34s0 0-.01 0c0 0 0 0-.01 0-.08.04-.16.06-.24.06-.05 0-.1-.03-.15-.04-.04-.01-.08-.01-.11-.03l-4.16-2.67-4.37 1.82 11.68 7.01 30.4-15.05-10.71-3.88-22.28 12.78z\"\r\n [attr.fill]=\"accentColor\" fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\"\r\n stroke-opacity=\"1\" />\r\n <path d=\"m28.26 36.01-.1 1.93 32.58-18.69-1.22-6.39-30.86 15.28z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m27.61 28.09-11.93-7.16-1.94 8.43 13.36 8.58z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n <path d=\"m58.57 12.15-12.1-4.38-29.97 12.43 11.68 7z\" [attr.fill]=\"backgroundInfo?.accentColor\"\r\n fill-opacity=\"1\" data-original-color=\"#000000ff\" stroke=\"none\" stroke-opacity=\"1\" />\r\n </g>\r\n </svg>\r\n <div [style.color]=\"accentColor\">Schemes</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center\">\r\n <div class=\"stores d-flex align-items-center gap-2 py-2 px-3\" (click)=\"goToStores()\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" *ngIf=\"storeAvaiable\"\r\n [style.background]=\"getRGBA(backgroundInfo?.accentColor , 10)\">\r\n <mat-icon [style.color]=\"backgroundInfo?.accentColor\">store</mat-icon>\r\n <span [style.color]=\"backgroundInfo?.accentColor\">Stores</span>\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"!getPincode\">Enter\r\n Pincode\r\n </div>\r\n <div class=\"pin-text\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">{{\"Delivering to: \" +\r\n getPincode}}</div>\r\n\r\n <!-- (mouseleave)=\"showPincodeInput = false\" -->\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToFav()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">favorite</mat-icon>\r\n </div>\r\n <div class=\"d-flex align-items-center position-relative\" style=\"gap: 5px; cursor: pointer;\" (click)=\"goToCart()\">\r\n <mat-icon [simpoColor]=\"backgroundInfo?.color\">shopping_cart</mat-icon>\r\n <div class=\"position-absolute cartItemCount\" *ngIf=\"getCartItemsCount\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')' , 'color' : setColor()}\">\r\n {{getCartItemsCount}}</div>\r\n </div>\r\n <div class=\"loginButton\" *ngIf=\"!loggedIn\" (mouseenter)=\"showLogin = true;showPincodeInput = false\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"27\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M12.12 12.78C12.05 12.77 11.96 12.77 11.88 12.78C10.12 12.72 8.71997 11.28 8.71997 9.50998C8.71997 7.69998 10.18 6.22998 12 6.22998C13.81 6.22998 15.28 7.69998 15.28 9.50998C15.27 11.28 13.88 12.72 12.12 12.78Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M18.74 19.38C16.96 21.01 14.6 22 12 22C9.40001 22 7.04001 21.01 5.26001 19.38C5.36001 18.44 5.96001 17.52 7.03001 16.8C9.77001 14.98 14.25 14.98 16.97 16.8C18.04 17.52 18.64 18.44 18.74 19.38Z\"\r\n fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\"\r\n stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <!-- <span class=\"fw-normal fs-6\" [simpoColor]=\"accentColor\">Login</span> -->\r\n </div>\r\n <!-- (mouseleave)=\"showLogin = false\" -->\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n </div>\r\n <!-- <div> -->\r\n <!-- <button class=\"button\" (click)=\"goToAccount()\" simpoButtonDirective [id]=\"sectionId+buttonId\" [buttonStyle]=\"buttonStyle\" [color]=\"color\" [appButtonEditor]=\"edit ?? false\" [buttonData]=\"buttonContent\">{{buttonContent?.label}}</button> -->\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #navbarLinksTemplate>\r\n <div class=\"navbar-collapse fs-6 position-relative d-flex\" style=\"margin-top: 5px; margin-left: 25px;\"\r\n [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 768\">\r\n <ng-container *ngFor=\"let item of getNavbarButton\">\r\n <ng-container *ngIf=\"item.showHeader\">\r\n <simpo-navbar-button-element [buttonData]=\"item\" [selectedStyle]=\"style?.navigationStyle\"\r\n [buttonStyle]=\"style?.navbarButtonStyle\" [bgColor]=\"simpoColor\"\r\n [sectionId]=\"data?.id\"></simpo-navbar-button-element>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let link of getDropdownLinks; let idx = index\">\r\n <ng-container *ngIf=\"content?.ecomlinks?.[link]?.length \">\r\n <div class=\"position-relative\">\r\n <button mat-stroked-button class=\"mat-btn dropdown-toggle\" type=\"button\" [simpoColor]=\"simpoColor\" id=\"link\"\r\n data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n {{link | uppercase}}\r\n </button>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"link\">\r\n <a class=\"dropdown-item\" *ngFor=\"let menu of getValues(content?.ecomlinks?.[link])\"\r\n (click)=\"applyFilter(menu, link)\">{{menu}}</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"offcanvas\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\"\r\n [ngClass]=\"{'offcanvas-end' : (style?.styling === 'Header1' || style?.styling === 'Header3') && !isEcommerceWebsite, 'offcanvas-start': style?.styling === 'Header2' || style?.styling === 'Header4' || isEcommerceWebsite}\">\r\n <div class=\"offcanvas-header\" [simpoBackground]=\"style?.background\">\r\n <ng-container *ngTemplateOutlet=\"mobileLogoSectionTemplate\"></ng-container>\r\n <!-- <button type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button> -->\r\n <mat-icon data-bs-dismiss=\"offcanvas\">close</mat-icon>\r\n </div>\r\n <div class=\"offcanvas-body\">\r\n <div class=\"pages\">\r\n <ng-container *ngTemplateOutlet=\"pageLinksTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"offcanvas-footer\">\r\n <div class=\"canvas-button\">\r\n <ng-container *ngTemplateOutlet=\"buttonsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #ecomProfileTemplate>\r\n <!-- <mat-icon class=\"h-100 d-flex align-items-center justify-content-center br-50 fs-22 px-3 py-1\"\r\n (click)=\"showSearchBarMobile = !showSearchBarMobile\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? backgroundInfo?.accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"backgroundInfo?.color\">search</mat-icon> -->\r\n\r\n\r\n <!-- <input type=\"text\" class=\"form-control mob-form-control\" placeholder=\"Search Product\" aria-label=\"Search Product\"\r\n *ngIf=\"showSearchBarMobile\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n [ngStyle]=\"{'border' : '1px solid ' + backgroundInfo?.accentColor}\"> -->\r\n\r\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; cursor: pointer;\" (click)=\"goToAccount('PROFILE')\"\r\n *ngIf=\"loggedIn\">\r\n <img loading=\"lazy\" [src]=\"userGender | genderIcon\" style=\"height: 27px;\">\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileLogoSectionTemplate>\r\n <div class=\"d-flex gap-3 align-center cursor-pointer h-100\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\" class=\"h-100\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" class=\"h-100\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"simpoColor\">\r\n <b>{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"goToHome()\"> -->\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"logo\" class=\"h-100\" loading=\"lazy\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\" (click)=\"!edit ? goToHome() : ''\">\r\n <!-- </div> -->\r\n</ng-template>\r\n\r\n<ng-template #categoriesHeader>\r\n <div class=\"categories-wrapper\"\r\n *ngIf=\"(categoryList?.length > 0 || collectionList?.collections?.length > 0) && !isMobile\"\r\n (mouseleave)=\"showList = false; showCollections = false\">\r\n\r\n <div class=\"blur-overlay\" [class.active]=\"showList || showCollections\"></div>\r\n\r\n <div class=\"categories-header d-flex gap-3 py-2 position-relative\" [spacingHorizontal]=\"stylesLayout\"\r\n [style.background]=\"data?.styles?.headline?.color\">\r\n\r\n <div class=\"category cursor-pointer\" *ngFor=\"let ele of megaMenu; let i = index\"\r\n [style.--border-color]=\"data?.styles?.background?.accentColor\" [simpoColor]=\"data?.styles?.headline?.color\"\r\n (mouseenter)=\"setChildMenu(ele)\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n </div>\r\n\r\n <!-- [class.hide-dropdown]=\"!showList\" -->\r\n <div class=\"list-category\" [class.show-dropdown]=\"showList\" [class.hide-dropdown]=\"!showList\">\r\n <div class=\"row w-100 h-100 mega-menu-scroll-row\">\r\n <ng-container *ngFor=\"let ele of selectedCategory; let i = index\">\r\n <div class=\"mega-menu-scroll-col\" [ngClass]=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY') ? 'col-3' : 'col-2'\">\r\n\r\n <ng-container *ngIf=\"ele?.children?.length == 0 && (ele.type=='COLLECTIONS' || ele.type=='CATEGORY' )\">\r\n <img [src]=\"ele.imageUrl\" [alt]=\"ele?.label\" class=\"w-100 mb-2 br-12 cursor-pointer collectionImage\" *ngIf=\"ele.imageUrl\" (click)=\"redirectionsOfMenu(ele)\" />\r\n </ng-container>\r\n\r\n <div class=\"list-header mb-3 cursor-pointer\" (click)=\"redirectionsOfMenu(ele)\">\r\n {{ele?.label | titlecase}}\r\n </div>\r\n <ng-container *ngIf=\"ele?.children && ele?.children.length > 0\">\r\n <div class=\"d-flex flex-column gap-3 list-item\">\r\n <ng-container *ngFor=\"let child of ele?.children\">\r\n <div (click)=\"redirectionsOfMenu(child)\" class=\"cursor-pointer\">\r\n {{child?.label | titlecase}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #mobileCategoryHeader>\r\n <div class=\"categories-header d-flex gap-3 py-2 overflow-auto\" *ngIf=\"categoryList?.length > 0 && isMobile\"\r\n [spacingHorizontal]=\"stylesLayout\" [class.margin-top-mob]=\"isHeaderSticky\">\r\n <div class=\"category cursor-pointer d-flex flex-column gap-3\" *ngFor=\"let ele of categoryList;let i = index\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"selectedCategory = ele; filterByCategory()\">\r\n <div class=\"cat-img d-flex justify-content-center align-items-center w-100\">\r\n <img [src]=\"ele?.imageUrls[0]\" alt=\"\" class=\"h-10 br-12\">\r\n </div>\r\n <div class=\"text-center f-14\">{{ele?.categoryName | titlecase}}</div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #ecommerce_header>\r\n <header class=\"site-header\">\r\n <!-- Top Bar: Logo, Search, User Actions -->\r\n <div class=\"top-bar\">\r\n\r\n <!-- Mobile Menu Toggle (Checkbox Hack) -->\r\n <div [ngClass]=\"{'mobile-header-left-side': screenWidth <= 475}\">\r\n <label for=\"mobile-menu-checkbox\" class=\"mobile-menu-btn\" data-bs-toggle=\"offcanvas\"\r\n data-bs-target=\"#offcanvasRight\" aria-controls=\"offcanvasRight\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\"></line>\r\n <line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"></line>\r\n <line x1=\"4\" y1=\"18\" x2=\"20\" y2=\"18\"></line>\r\n </svg>\r\n </label>\r\n\r\n <!-- Logo Section -->\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img [src]=\"content?.logo?.image?.url\" alt=\"Logo\" class=\"logo-img\" [width]=\"content?.logo?.size + 15\"\r\n [height]=\"content?.logo?.size\">\r\n </a>\r\n\r\n <a class=\"textPluslogo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && content?.logo?.text?.isIcon \r\n && content?.logo?.text?.url\">\r\n\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"Icon\" class=\"logo-icon\"\r\n [width]=\"content?.logo?.size + 15\" [height]=\"content?.logo?.size\">\r\n\r\n <span class=\"logo-text\" [simpoColor]=\"simpoColor\" *ngIf=\"screenWidth > 475\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n\r\n <a class=\"logo\" (click)=\"!edit ? goToHome() : ''\" *ngIf=\"!content?.logo?.isImage \r\n && content?.logo?.text?.isText \r\n && !content?.logo?.text?.isIcon\">\r\n\r\n <span class=\"logo-main\" [simpoColor]=\"simpoColor\">\r\n {{ content?.siteName?.value }}\r\n </span>\r\n </a>\r\n </div>\r\n\r\n <!-- Search Bar -->\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth > 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown menu style -->\r\n <div class=\"dropdown_menu\" *ngIf=\"screenWidth > 475 && data?.styles?.menuType === 'DROPDOWN_MENU'\"\r\n (mouseleave)=\"showList = false; selectedCategory = null\">\r\n <div class=\"dd-nav\">\r\n <div class=\"dd-tab-wrap\" *ngFor=\"let ele of megaMenu\" (mouseenter)=\"setChildMenu(ele)\">\r\n <button type=\"button\" class=\"dd-tab\" [class.dd-tab-active]=\"showList && selectedCategory === ele?.children\"\r\n (click)=\"redirectionsOfMenu(ele)\">\r\n <span class=\"text-nowrap\">{{ele?.label | titlecase}}</span>\r\n <img style=\"width:20px; height:20px\" class=\"tab-arrow\" *ngIf=\"ele?.children?.length\"\r\n src=\"https://d2z9497xp8xb12.cloudfront.net/prod-images/334952c1776866431821dropdown-arrow-svgrepo-com.svg\"\r\n alt=\"dropdown arrow\">\r\n </button>\r\n\r\n <div class=\"dd-panel\" *ngIf=\"showList && selectedCategory === ele?.children && ele?.children?.length\"\r\n (click)=\"$event.stopPropagation()\">\r\n <div class=\"dd-item\" *ngFor=\"let child of ele?.children\"\r\n (click)=\"!child?.children?.length ? redirectionsOfMenu(child) : ''\">\r\n <span class=\"text-nowrap\">{{child?.label | titlecase}}</span>\r\n <span class=\"dd-item-arrow\" *ngIf=\"child?.children?.length\">›</span>\r\n\r\n <div class=\"dd-submenu\" *ngIf=\"child?.children?.length\">\r\n <div class=\"dd-sub-item\" *ngFor=\"let sub of child?.children\"\r\n (click)=\"redirectionsOfMenu(sub); $event.stopPropagation()\">\r\n <span class=\"text-nowrap\">{{sub?.label | titlecase}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Right Actions -->\r\n <div class=\"user-actions\">\r\n \r\n <ng-container *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar\">\r\n <a class=\"action-link icon-only dropdown-search-toggle\" (click)=\"showDropdownDesktopSearch = !showDropdownDesktopSearch\"\r\n aria-label=\"Toggle search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"storeAvaiable\">\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;showLogin = false\"\r\n *ngIf=\"!getPincode\">\r\n <!-- <svg width=\"20\" height=\"20\" viewBox=\"0 0 17 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke=\"currentColor\" fill=\"none\" [simpoColor]=\"simpoColor\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <path\r\n d=\"M8.5 0.5c-3.032 0-5.5 2.467-5.5 5.5 0 4.373 4.913 10.086 5.122 10.328l0.378 0.435 0.378-0.436c0.209-0.241 5.122-5.954 5.122-10.327 0-3.033-2.468-5.5-5.5-5.5zM8.5 15.215c-1.146-1.424-4.5-5.879-4.5-9.215 0-2.481 2.019-4.5 4.5-4.5s4.5 2.019 4.5 4.5c0 3.333-3.354 7.791-4.5 9.215zM8.5 3.139c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zM8.5 8.139c-1.103 0-2-0.897-2-2s0.897-2 2-2 2 0.897 2 2-0.897 2-2 2z\"\r\n fill=\"#000000\" />\r\n </svg> -->\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 512 512\"\r\n [simpoColor]=\"simpoColor\" stroke=\"currentColor\" fill=\"currentColor\">\r\n <g>\r\n <path\r\n d=\"M341.476 338.285c54.483-85.493 47.634-74.827 49.204-77.056C410.516 233.251 421 200.322 421 166 421 74.98 347.139 0 256 0 165.158 0 91 74.832 91 166c0 34.3 10.704 68.091 31.19 96.446l48.332 75.84C118.847 346.227 31 369.892 31 422c0 18.995 12.398 46.065 71.462 67.159C143.704 503.888 198.231 512 256 512c108.025 0 225-30.472 225-90 0-52.117-87.744-75.757-139.524-83.715zm-194.227-92.34a15.57 15.57 0 0 0-.517-.758C129.685 221.735 121 193.941 121 166c0-75.018 60.406-136 135-136 74.439 0 135 61.009 135 136 0 27.986-8.521 54.837-24.646 77.671-1.445 1.906 6.094-9.806-110.354 172.918L147.249 245.945zM256 482c-117.994 0-195-34.683-195-60 0-17.016 39.568-44.995 127.248-55.901l55.102 86.463a14.998 14.998 0 0 0 25.298 0l55.101-86.463C411.431 377.005 451 404.984 451 422c0 25.102-76.313 60-195 60z\">\r\n </path>\r\n <path\r\n d=\"M256 91c-41.355 0-75 33.645-75 75s33.645 75 75 75 75-33.645 75-75-33.645-75-75-75zm0 120c-24.813 0-45-20.187-45-45s20.187-45 45-45 45 20.187 45 45-20.187 45-45 45z\">\r\n </path>\r\n </g>\r\n </svg>\r\n\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">Enter Pincode</span>\r\n\r\n </a>\r\n\r\n <a class=\"action-link store-link\" (mouseenter)=\"showPincodeInput = true;;showLogin = false\"\r\n [style.color]=\"backgroundInfo?.accentColor\" *ngIf=\"getPincode && getPincode.length == 6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7\"></path>\r\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path>\r\n <path d=\"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4\"></path>\r\n <path d=\"M2 7h20\"></path>\r\n <path\r\n d=\"M22 7v3a2 2 0 0 1-2 2v0a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12v0a2 2 0 0 1-2-2V7\">\r\n </path>\r\n </svg>\r\n <span class=\"store-text\" [simpoColor]=\"simpoColor\">{{\"Delivering to: \" +\r\n getPincode}}</span>\r\n\r\n </a>\r\n\r\n <div class=\"pincode-container p-3\" *ngIf=\"showPincodeInput\" (mouseleave)=\"showPincodeInput = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your PIN Code unlocks\r\n </div>\r\n <div class=\"sub-text text-center f-14 pincode-text\">\r\n Fastest delivery date, Try-at-Home availability,\r\n Nearest store and In-store design!\r\n </div>\r\n <div class=\"input-group mt-2 br-5 d-flex align-items-center justify-content-between px-3\"\r\n [class.error-border]=\"pinError\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Pincode\" aria-label=\"Pincode\" [(ngModel)]=\"pincode\"\r\n class=\"w-75 p-0\">\r\n <div class=\"input-sub-text f-11 w-25 text-end cursor-pointer\" (click)=\"setPincode()\">SUBMIT</div>\r\n </div>\r\n <div class=\"text-start mt-2 f-11\" *ngIf=\"pinError\">\r\n Please enter a valid pincode\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <a class=\"action-link icon-only login-btn\" *ngIf=\"!loggedIn\"\r\n (mouseenter)=\"showLogin = true;showPincodeInput = false\" (click)=\"showLogin = !showLogin\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"action-link icon-only\" (click)=\"goToAccount('PROFILE')\" *ngIf=\"loggedIn\">\r\n <!-- User Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"></path>\r\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"info-container p-3\" *ngIf=\"showLogin\" (mouseleave)=\"showLogin = false\">\r\n <div class=\"text text-center mb-2 f-18 fw-bold\">\r\n Your Account\r\n </div>\r\n <div class=\"sub-text text-center f-14\">\r\n Access account & manage your orders.\r\n </div>\r\n <div class=\"btn-container w-100 d-flex justify-content-between mt-3 gap-3\">\r\n <div (click)=\"goToAccount('SIGNUP')\" class=\"w-50 text-center sign-btn border-0\"\r\n [ngStyle]=\"{'background' : backgroundInfo?.accentBackgroundType == 'Solid' ? accentColor : 'linear-gradient(to right,' + backgroundInfo?.accentColor + ' 0%' + ',' + backgroundInfo?.secondaryAccentColor +' 100%' + ')'}\"\r\n [style.color]=\"style?.background?.color\">Sign Up</div>\r\n <div (click)=\"goToAccount('LOGIN')\" class=\"w-50 text-center sign-btn\"\r\n [style.borderColor]=\"backgroundInfo?.accentColor\" [style.color]=\"backgroundInfo?.accentColor\">Log In</div>\r\n </div>\r\n </div>\r\n\r\n <a class=\"action-link icon-only icon-container wishlist-icon\" (click)=\"goToWishlist()\">\r\n <!-- Heart Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path\r\n d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\">\r\n </path>\r\n </svg>\r\n <!-- <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\">2</span> -->\r\n </a>\r\n\r\n <a class=\"action-link icon-only icon-container cart-icon\" (click)=\"goToCart()\">\r\n <!-- Shopping Bag Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" [simpoColor]=\"simpoColor\"\r\n stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z\"></path>\r\n <path d=\"M3 6h18\"></path>\r\n <path d=\"M16 10a4 4 0 0 1-8 0\"></path>\r\n </svg>\r\n <span class=\"count-badge\" [style.backgroundColor]=\"accentColor\" [simpoColor]=\"accentColor\"\r\n *ngIf=\"getCartItemsCount\">{{getCartItemsCount}}</span>\r\n </a>\r\n\r\n <div class=\"dropdown-search-expand\"\r\n *ngIf=\"data?.styles?.menuType === 'DROPDOWN_MENU' && screenWidth > 475 && content?.showSearchBar && showDropdownDesktopSearch\">\r\n <div class=\"dropdown-search-box\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for...\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n class=\"dropdown-search-close\" (click)=\"showDropdownDesktopSearch = false\" aria-label=\"Close search\">\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"search-wrapper\" *ngIf=\"screenWidth <= 475 && content?.showSearchBar && data?.styles?.menuType !== 'DROPDOWN_MENU'\">\r\n <div class=\"search-bar\">\r\n <!-- Search Icon SVG -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"search-icon\">\r\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n </svg>\r\n <input type=\"text\" placeholder=\"Search for item\" [(ngModel)]=\"searchText\" (ngModelChange)=\"waitBeforeSearch()\"\r\n aria-label=\"Search\">\r\n </div>\r\n </div>\r\n\r\n </header>\r\n</ng-template>", styles: [".total-container div[simpoSticky]{top:0!important;left:0!important;right:0!important;margin:0 auto!important;width:100%!important}.header--scrolled{top:10px!important;left:4%!important;right:4%!important;width:92%!important;overflow:hidden!important;border-radius:60px!important;box-shadow:0 10px 40px #0000001f!important;z-index:1000001!important;transition:width .4s cubic-bezier(.16,1,.3,1)}*{font-family:var(--website-font-family)}.animated-placeholder{left:12%;transform:translateY(-50%);transition:all .4s ease;font-size:14px;top:49%;color:#6f6f6f;font-weight:300}.animated-placeholder.animate{transform:translateY(-150%);opacity:0}.w-5{width:5%}.static_login_btn{background:transparent;border-radius:12px;border:2px solid;box-shadow:none;transform:unset;font-size:16px!important;padding:8px 20px;display:inline-flex;align-items:center;justify-content:center;width:100%!important;font-weight:700;font-family:var(--website-font-family);height:43px;gap:5px}.static_login_btn mat-icon{color:#000}mat-icon{font-family:Material Icons!important}.total-container{transition:width .2s ease-in-out}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none}.categories-header .category{display:flex;align-items:center;font-weight:400;font-size:1rem;flex:0 0 auto}.margin-bottom{margin-bottom:var(--margin-top)}@media only screen and (max-width : 475px){.w-5{width:100%!important}.logo-main,.logo-text{font-size:17px!important}.left-logo-text{padding-top:10px}.mob-form-control{width:96%;border-radius:12px!important}.input-group mat-icon{width:10%!important}.categories-header{height:unset!important}.margin-top-mob{margin-top:var(--margin-top)}.w-98{width:98%}.w-96{width:96%}.paddingEcom{padding-top:5px!important;padding-bottom:5px!important}.right-btn{width:15%!important}.cartItemCount{top:-8px!important;right:-3px!important}.adjustePadding{padding:8px!important}.pageLinks{gap:15px;flex-direction:column!important}.category-btn{color:#000!important;justify-content:left}}.nav-link{text-decoration:none}.cartItemCount{padding:5px;border-radius:5px;color:#fff;top:15px;left:15px;height:15px;width:15px;display:flex;align-items:center;justify-content:center;font-size:9px}#navbarNavAltMarkup{position:fixed;top:0;width:100%;background-color:#0e3f58;height:calc(100vh + -0px);z-index:101}.dropdown-toggle{border-bottom:2px solid transparent;transition:border .5s ease;position:relative;top:-1px}.dropdown-toggle:hover{border-bottom:2px solid rgb(14,63,88)}.inner-height,.nab-bar-mobile{height:100%}.total-container{height:auto;position:relative;background-color:transparent!important}.menu-icon{display:flex;flex-direction:column;gap:0px;align-items:center;justify-content:space-evenly;max-width:55px}.menu-icon hr{border:1px solid;margin:0;width:100%}.pt-0{padding-top:0!important}.pb-0{padding-bottom:0!important}.button{font-size:14px!important;padding:1rem 2rem;display:inline-flex;align-items:center;justify-content:center;width:fit-content!important}.stores{border:1px solid;border-radius:12px;cursor:pointer;font-weight:600}.input-group{position:relative;outline:none;height:40px;display:flex;align-items:center;background-color:transparent;margin-right:25px;-webkit-transition:width .4s ease-in-out;transition:width .4s ease-in-out;border-radius:12px}.input-group mat-icon{width:6%;display:flex;align-items:center;justify-content:center;font-size:22px;position:relative;border-radius:0 12px 12px 0}.input-group input{height:100%!important;width:80%;background-color:transparent;border:none;outline:none;font-size:14px;padding-bottom:6px;box-shadow:none}.mat-icon{color:#000}.dropdown-button{font-size:14px!important;width:fit-content!important}.mobile-footer{display:none}@media screen and (max-width: 475px){.mobile-footer{width:100vw;height:60px;box-shadow:#64646f33 -2px -16px 29px;position:fixed;bottom:0;z-index:10001;display:flex!important;justify-content:space-around;align-items:center}.mobile-footer .icons{margin-top:5px;display:flex;align-items:center;justify-content:center;flex-direction:column}.mobile-footer .mat-icon{font-size:22px}}.nab-bar-mobile{width:100%;padding:5px 10px;height:50px;box-sizing:border-box}.title-row{flex:1;display:flex;align-items:center}.navbar-content{background-color:#0e3f58;padding:10px;margin-top:0!important}.navbar-content .d-flex{margin-top:20px}.navbar-toggler,.close-box{background:transparent;border:none;cursor:pointer;margin-left:10px;width:50px!important}.mat-icon{color:#fff}.button-display{display:flex;gap:8px}.flex-column{flex-direction:column}.justify-space-around{justify-content:space-around}@media screen and (max-width: 475px){.nab-bar-mobile{height:60px}}.cursor-pointer{cursor:pointer}.search-icon{margin-right:20px;display:flex;align-items:center;cursor:pointer}.search-icon mat-icon{font-size:24px}.mat-btn{font-size:14px!important;background:none;display:flex;cursor:pointer;border:none}.mat-btn mat-icon{color:inherit}.dropdown-menu{right:0;left:auto}.header1{display:flex;justify-content:space-between;align-items:center}.gap-15{gap:15px}.gap-10{gap:10px}.ptb-1{padding-top:1rem;padding-bottom:1rem}.text-end{text-align:end}.loginButton{gap:5px;display:flex;align-items:center;color:#fff;border-radius:8px;cursor:pointer;width:40px}.loginButton span{font-weight:600!important}.align-center{align-items:center}.offcanvas{width:70%;z-index:1000000000}.offcanvas mat-icon{color:#000}.offcanvas-body{position:relative}.canvas-button{position:absolute;bottom:20px;left:12px;width:90%}.mobileLoginButton{width:100%;height:40px;border-radius:8px;margin-top:15px;outline:none;background:transparent}.pageLinks{display:flex;flex-direction:row}.category-btn{font-size:16px!important}.h-70{height:70px}.offcanvas-header{height:10vh}.offcanvas-body{height:70vh}.offcanvas-body .pages{height:80%;overflow:scroll}.offcanvas-footer{height:20vh}.h-100{height:100%!important}.box-shadow{box-shadow:-9px 5px 3px #99999929}.sticky-header{position:sticky;top:0;z-index:10000}.mobile-page-list{position:relative;left:10px}.category{position:relative}.category:hover{border-bottom:3px solid var(--border-color);transition:border-bottom .1s ease-in-out}.list-category{padding:15px 30px;color:#000;background-color:#fff!important;height:50vh;position:absolute;width:100%;z-index:1001}.background-position{background-position:center top!important}.image-container{cursor:pointer}.image-container img{border-radius:12px}.each-price:hover{font-weight:700}.col-imag img{border-radius:6px;height:40px}.h-45{height:45vh}.btm-col-name{width:93%;border-radius:0 0 12px 12px;bottom:0}.collection{height:max-content;cursor:pointer}.text-overflow{overflow:hidden;text-overflow:ellipsis;font-size:14px;font-weight:500}.col-5{width:44.666667%}.h-10{height:10vh}.fs-16{font-size:16px}.br-50{border-radius:50%}.col-7{width:56.333333%}.pincode-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:3%;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.form-control{border-radius:12px 0 0 12px}.pin-text{font-size:14px;font-weight:500;white-space:nowrap}.z-index-10{z-index:10!important}.bg-transparent{background-color:transparent!important;background-image:none!important}.error-border{border:2px solid #e53e3e!important}.f-11{font-size:11px}.br-5{border:1px solid rgba(0,0,0,.05)}.f-18{font-size:18px}.f-14{font-size:14px}.info-container{position:absolute;background:#fff;color:#000;height:max-content;width:20vw;right:0;top:90%;z-index:10;border-radius:0 0 30px 30px;transform-origin:top;box-shadow:0 2px 4px #c8c8c880;animation:unrollCarpet .5s ease-out forwards}.sign-btn{padding:10px;border-radius:12px;border:1px solid;cursor:pointer}.b-1{border:1px solid;border-radius:12px}@keyframes unrollCarpet{0%{transform:scaleY(0) rotateX(90deg);opacity:0}25%{transform:scaleY(.25) rotateX(67.5deg);opacity:.35}50%{transform:scaleY(.5) rotateX(45deg);opacity:.7}75%{transform:scaleY(.75) rotateX(22.5deg);opacity:.85}to{transform:scaleY(1) rotateX(0);opacity:1}}.pincode-text{font-size:11px;margin-bottom:15px}.cart-footer{position:fixed;width:96%;height:45px;bottom:65px;z-index:100;left:8px;border-radius:10px}.item-count{align-content:center}.fs-22{font-size:22px}.w-15{width:15%!important}.site-header{width:100%;border-bottom:1px solid transparent}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1440px;margin:0 auto}.dropdown_menu{position:relative;min-width:420px}.dd-nav{display:flex;align-items:center;gap:18px}.dd-tab-wrap{position:relative;display:inline-flex}.dd-tab{border:none;background:transparent;padding:6px 2px 12px;font-size:15px;font-weight:500;color:#30343b;line-height:1;border-bottom:3px solid transparent;display:inline-flex;align-items:center;gap:8px}.dd-tab:hover,.dd-tab.dd-tab-active{border-bottom-color:#2f3338}.dd-panel{position:absolute;top:100%;background:#fff;border:1px solid #ececef;box-shadow:0 12px 35px #1d212929;padding:14px 0;z-index:1006}.dd-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;font-size:16px;color:#2c2f35;transition:background-color .2s ease;cursor:pointer}.dd-item:hover{background-color:#f5f6f8}.dd-item-arrow{font-size:20px;line-height:1;color:#5a5f66}.dd-submenu{position:absolute;top:-10px;left:calc(100% + 8px);background:#fff;border:1px solid #ececef;box-shadow:0 10px 26px #1d212926;padding:10px 0;display:none;z-index:1007}.dd-item:hover .dd-submenu{display:block}.dd-sub-item{padding:10px 16px;font-size:15px;color:#2c2f35;transition:background-color .2s ease}.dd-sub-item:hover{background-color:#f5f6f8}.dropdown-search-toggle{cursor:pointer}.dropdown-search-expand{position:absolute;top:calc(100% + 10px);right:0;min-width:320px;z-index:1010}.dropdown-search-box{width:100%;background:#f3f3f3;border:1px solid #e7e7e7;display:flex;align-items:center;gap:12px;padding:10px 14px}.dropdown-search-icon{color:#1f2328;flex:0 0 auto}.dropdown-search-box input{border:none;background:transparent;width:100%;font-size:14px;color:#2f3338;outline:none}.dropdown-search-close{color:#545861;cursor:pointer;flex:0 0 auto}.logo{display:flex;flex-direction:column;align-items:flex-start;color:#5e4042;line-height:1;text-decoration:auto}.logo-img{display:block}.logo-main{font-family:Playfair Display,serif;font-size:32px;font-weight:500;letter-spacing:.5px}.logo-sub{font-family:Montserrat,sans-serif;font-size:10px;letter-spacing:3px;text-transform:uppercase;margin-top:2px;margin-left:2px}.search-wrapper{flex:1;display:flex;justify-content:center;max-width:600px}.search-bar{width:100%;background-color:#f3f3f3;border-radius:8px;display:flex;align-items:center;padding:10px 16px;gap:12px}.search-icon{color:#333;width:18px;height:18px}.search-bar input{border:none;background:transparent;width:100%;font-family:Montserrat,sans-serif;font-size:14px;color:#1a1a1a;outline:none}.search-bar input::placeholder{color:#888;font-weight:400}.user-actions{display:flex;align-items:center;gap:24px}.action-link{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:#333}.action-link:hover{color:#5e4042}.store-text{white-space:nowrap}.icon-only svg{display:block;cursor:pointer}.main-nav{border-top:1px solid transparent;padding-bottom:15px}.nav-list{display:flex;justify-content:center;flex-wrap:wrap;gap:32px;padding:10px 40px}.nav-list li{position:relative}.nav-list a{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:#333;padding:5px 0;display:inline-block}.nav-list a:hover{color:#5e4042}.has-badge{position:relative}.badge{position:absolute;top:-12px;right:-10px;background-color:#a87b7b;color:#fff;font-size:9px;font-weight:600;padding:2px 6px;border-radius:10px;line-height:1;white-space:nowrap}.mobile-menu-checkbox{display:none}.mobile-menu-btn{display:none;cursor:pointer;color:#333}.hero-placeholder{height:80vh;background-color:#f9f9f9;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#5e4042}.hero-placeholder h1{font-family:Playfair Display,serif;font-size:3rem;margin-bottom:1rem}@media (max-width: 1024px){.nav-list{gap:20px}.store-text{display:none}.search-wrapper{margin:0 20px}}@media (max-width: 768px){.top-bar{padding:15px 20px;flex-wrap:wrap}.search-wrapper{order:3;width:100%;max-width:100%;margin:0 0 15px}.user-actions{gap:16px}.main-nav{display:none;width:100%;background:#fff;border-top:1px solid #eee}.nav-list{flex-direction:column;align-items:center;gap:15px;padding:20px}.badge{position:relative;top:-2px;right:auto;margin-left:8px;vertical-align:middle}.mobile-menu-btn{display:block}.mobile-menu-checkbox:checked~.main-nav{display:block}}@media screen and (max-width: 475px){.store-link{display:none}.info-container{width:100vw;top:62%}}.icon-container{position:relative}.count-badge{position:absolute;top:-8px;right:-8px;font-size:10px;font-weight:600;height:18px;width:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #ffffff}.textPluslogo{display:flex;align-items:center;gap:8px;flex-shrink:0;text-decoration:none}.logo-icon{color:#5e4042}.logo-text{font-size:28px;font-weight:600;color:#1a1a1a;letter-spacing:-.5px}.mobile-header-left-side{display:flex;align-items:center;gap:15px}.categories-wrapper{position:relative;width:100%;z-index:1000}.categories-header{gap:26px!important;overflow-x:auto;width:100%;align-items:center;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;position:relative;z-index:1002}.categories-header::-webkit-scrollbar{display:none}.category{position:relative;border-bottom:3px solid transparent;transition:border-color .35s ease,color .35s ease}.category:hover{border-bottom-color:var(--border-color)}.blur-overlay{position:fixed;top:var(--margin-top);left:0;width:100vw;height:calc(100vh - var(--margin-top));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffff47;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,visibility .35s ease;z-index:1000}.blur-overlay.active{opacity:1;visibility:visible}.list-category{padding:20px 30px;color:#111;background:#fff!important;height:50vh;position:absolute;top:100%;left:0;width:100%;z-index:1003;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s ease,transform .35s ease,visibility .35s ease;will-change:opacity,transform;box-shadow:0 18px 40px #0000001a;overflow:hidden}.mega-menu-scroll-row{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}.mega-menu-scroll-col{flex-shrink:0}.collectionImage{border-radius:10px;height:70%!important}.show-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.hide-dropdown{opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-5px)}.list-header{margin-bottom:1rem;font-size:16px;font-weight:600}.list-item{gap:1rem;font-size:14px}.each-price{transition:transform .25s ease,font-weight .25s ease,color .25s ease}.each-price:hover{font-weight:700;transform:translate(4px)}.image-container{cursor:pointer;overflow:hidden}.image-container img{border-radius:12px;transition:transform .35s ease}.image-container:hover img{transform:scale(1.04)}.collection{height:max-content;cursor:pointer;transition:transform .25s ease}.collection:hover{transform:translateY(-2px)}\n"] }]
|
|
476
477
|
}], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.MatDialog }, { type: i4.StorageServiceService }, { type: i5.RestService }, { type: i1.EventsService }, { type: undefined, decorators: [{
|
|
477
478
|
type: Inject,
|
|
478
479
|
args: [LOCAL_STORAGE]
|
|
@@ -496,4 +497,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
496
497
|
type: HostListener,
|
|
497
498
|
args: ['window:resize', ['$event']]
|
|
498
499
|
}] } });
|
|
499
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9oZWFkZXItc2VjdGlvbi9oZWFkZXItc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2hlYWRlci1zZWN0aW9uL2hlYWRlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFFdEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRXBHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JB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QUN0QixtQkFBbUIsMEdBQ25CLG1CQUFtQixtRkFDbkIsY0FBYyxnRkFDZCxnQkFBZ0IscUZBQ2hCLG9CQUFvQixxR0FDcEIsY0FBYyxnRkFDZCxvQkFBb0IsOEJBQ3BCLGVBQWUsMk5BQ2YsYUFBYSwrQkFDYiwwQkFBMEIsMkdBQzFCLG1CQUFtQjs7NEZBTVYsc0JBQXNCO2tCQTNCbEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixVQUFVO3dCQUNWLE9BQU87d0JBQ1AsNEJBQTRCO3dCQUM1QixXQUFXO3dCQUNYLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsMEJBQTBCO3dCQUMxQixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEI7OzBCQW9DRSxNQUFNOzJCQUFDLGFBQWE7eUNBL0JkLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDdUIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBaUczQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlFekMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIZWFkZXJDb250ZW50TW9kZWwsIEhlYWRlclNlY3Rpb25Nb2RlbCwgSGVhZGVyU3R5bGVNb2RlbCB9IGZyb20gJy4vaGVhZGVyLXNlY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBOYXZiYXJCdXR0b25FbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi9lbGVtZW50cy9uYXZiYXItYnV0dG9uLWVsZW1lbnQvbmF2YmFyLWJ1dHRvbi1lbGVtZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL292ZXJsYXktZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSG92ZXJFbGVtZW50c0NvbXBvbmVudCB9IGZyb20gJy4vLi4vLi4vY29tcG9uZW50cy9ob3Zlci1lbGVtZW50cy9ob3Zlci1lbGVtZW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3Rpb25Nb2RlbCwgQmFja2dyb3VuZE1vZGVsLCBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvU3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3N0aWNreS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBHZW5kZXJJY29uIH0gZnJvbSAnLi4vLi4vcGlwZXMvZ2VuZGVyLnBpcGUnO1xyXG5pbXBvcnQgeyBNYXRCb3R0b21TaGVldE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldCc7XHJcbmltcG9ydCB7IENhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lY29tbWVyY2Uvc2VjdGlvbnMvY2FydC9jYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEhlYWRlcl9UeXBlLCBQcm9kdWN0Q2FyZFRoZW1lIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2luZGV4JztcclxuaW1wb3J0IHsgTW92aW5nVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NlY3Rpb25zL21vdmluZy10ZXh0L21vdmluZy10ZXh0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vdmluZ1RleHRNb2RhbCB9IGZyb20gJy4uL21vdmluZy10ZXh0L21vdmluZy10ZXh0Lm1vZGFsJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS50b2tlbic7XHJcbmltcG9ydCB7IFN0b3JhZ2VMaWtlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS1saWtlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWhlYWRlci1zZWN0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgR2VuZGVySWNvbixcclxuICAgIE1hdEljb24sXHJcbiAgICBOYXZiYXJCdXR0b25FbGVtZW50Q29tcG9uZW50LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBIb3ZlckVsZW1lbnRzQ29tcG9uZW50LFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIENvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIE92ZXJsYXlEaXJlY3RpdmUsXHJcbiAgICBTaW1wb1N0aWNreURpcmVjdGl2ZSxcclxuICAgIENvbG9yRGlyZWN0aXZlLFxyXG4gICAgTWF0Qm90dG9tU2hlZXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsXHJcbiAgICBNb3ZpbmdUZXh0Q29tcG9uZW50LFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2hlYWRlci1zZWN0aW9uLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhPzogSGVhZGVyU2VjdGlvbk1vZGVsO1xyXG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnQ6IGFueTtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQFZpZXdDaGlsZChcImNoaWxkQ29udGFpbmVyXCIpIGNoaWxkQ29udGFpbmVyOiBhbnk7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xyXG4gIHB1YmxpYyBzY3JvbGxWYWx1ZTogbnVtYmVyID0gMDtcclxuICBjb250ZW50PzogSGVhZGVyQ29udGVudE1vZGVsIHwgYW55O1xyXG4gIHN0eWxlPzogSGVhZGVyU3R5bGVNb2RlbFxyXG4gIGFjdGlvbj86IEFjdGlvbk1vZGVsXHJcbiAgY29sb3IgPSAnIzAwMDAwMCc7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gXCJcIjtcclxuICB0aGVtZSA9IFByb2R1Y3RDYXJkVGhlbWU7XHJcbiAgSGVhZGVyU3R5bGluZyA9IEhlYWRlcl9UeXBlXHJcbiAgcGFyZW50SGVpZ2h0OiBudW1iZXIgPSA3MDsgLy8gRGVmYXVsdCBoZWlnaHRcclxuICAvLyBtYXREaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuICBjdXJyZW50UGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG4gIHBsYWNlaG9sZGVySW5kZXg6IG51bWJlciA9IDA7XHJcbiAgYW5pbWF0ZVBsYWNlaG9sZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiBwcml2YXRlIF9ldmVudFN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIEBJbmplY3QoTE9DQUxfU1RPUkFHRSkgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlTGlrZVxyXG4gICAgLy8gcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGVBbGxEYXRhKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENoYW5nZVRpbWVvdXQ6IGFueTtcclxuICB3YWl0QmVmb3JlU2VhcmNoKCkge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoQ2hhbmdlVGltZW91dCk7XHJcbiAgICB0aGlzLnNlYXJjaENoYW5nZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zZWFyY2hQcm9kdWN0cygpO1xyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcbiAgc2VhcmNoUHJvZHVjdHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9saXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgc2VhcmNoVHh0OiB0aGlzLnNlYXJjaFRleHQgfSB9KTtcclxuICB9XHJcbiAgZ29Ub0ZhdigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3dpc2hsaXN0J10pO1xyXG4gIH1cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG4gIGdvVG9BY2NvdW50KHJlZGlyZWN0VG86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Byb2ZpbGUnXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocmVkaXJlY3RUbyA9PSAnU0lHTlVQJyB8fCByZWRpcmVjdFRvID09ICdMT0dJTicpXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSwgeyBxdWVyeVBhcmFtczogeyByZWRpcmVjdFRvOiByZWRpcmVjdFRvIH0gfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbG9nZ2VkSW4oKSB7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRVc2VyTmFtZSgpIHtcclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgIHJldHVybiB1c2VyPy5jb250YWN0Lm5hbWU7XHJcbiAgfVxyXG4gIC8vIGNoYW5nZVBsYWNlaG9sZGVyKCkge1xyXG4gIC8vICAgdGhpcy5hbmltYXRlUGxhY2Vob2xkZXIgPSB0cnVlO1xyXG5cclxuICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnBsYWNlaG9sZGVySW5kZXggPVxyXG4gIC8vICAgICAgICh0aGlzLnBsYWNlaG9sZGVySW5kZXggKyAxKSAlXHJcbiAgLy8gICAgICAgdGhpcy5zdHlsZT8uc2VhcmNoQmFyUGxhY2Vob2xkZXJMaXN0Lmxlbmd0aDtcclxuXHJcbiAgLy8gICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID1cclxuICAvLyAgICAgICB0aGlzLnN0eWxlPy5zZWFyY2hCYXJQbGFjZWhvbGRlckxpc3RbdGhpcy5wbGFjZWhvbGRlckluZGV4XS52YWx1ZTtcclxuXHJcbiAgLy8gICAgIHRoaXMuYW5pbWF0ZVBsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgLy8gICB9LCA0MDApOyAvLyBhbmltYXRpb24gZHVyYXRpb25cclxuICAvLyB9XHJcbiAgZ29Ub1dpc2hsaXN0KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvd2lzaGxpc3QnXSk7XHJcbiAgfVxyXG4gIGdvVG9DYXJ0KCkge1xyXG4gICAgaWYgKGZhbHNlKSB7XHJcbiAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oQ2FydENvbXBvbmVudCwgeyB3aWR0aDogJzI4dncnLCBwYW5lbENsYXNzOiAnc2lkZXBhbmVsLWNsYXNzJywgZGF0YTogeyB3aW5kb3c6IHRydWUgfSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2NhcnQnXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFwcGx5RmlsdGVyKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgdmFsdWUgPSB2YWx1ZVswXT8ucmVwbGFjZShcIiBcIiwgXCJfXCIpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbGlzdCddLCB7IHF1ZXJ5UGFyYW1zOiB7IFt0eXBlXTogdmFsdWUgfSB9KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXHJcbiAgb25TY3JvbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zY3JvbGxWYWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgdGhpcy5pc1Njcm9sbGVkID0gd2luZG93LnNjcm9sbFkgPiA1MDtcclxuICB9XHJcbiAgbW92aW5nVGV4dD86IE1vdmluZ1RleHRNb2RhbFxyXG4gIHRvU2hvd0luSmV3ZWxsZXJ5OiBib29sZWFuID0gZmFsc2VcclxuICBkaWZmZXI6IGFueTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcclxuICAgIHRoaXMuc3R5bGUgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuYWN0aW9uID0gdGhpcy5kYXRhPy5hY3Rpb247XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocVBhcmFtKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHFQYXJhbVtcInNlYXJjaFR4dFwiXTtcclxuICAgIH0pXHJcbiAgICAgdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuICAgIC8vIHRoaXMuZXZlbnRTZXJ2aWNlLmFjdGl2YXRlU21hcnRTZWFyY2guc3Vic2NyaWJlKChyZXM6IGJvb2xlYW4pID0+IHtcclxuICAgIC8vICAgaWYgKHRoaXMuc3R5bGU/LnNlYXJjaEJhclBsYWNlaG9sZGVyTGlzdD8ubGVuZ3RoID4gMCAmJiByZXMpIHtcclxuICAgIC8vICAgICB0aGlzLmN1cnJlbnRQbGFjZWhvbGRlciA9IHRoaXMuc3R5bGU/LnNlYXJjaEJhclBsYWNlaG9sZGVyTGlzdFswXS52YWx1ZTtcclxuXHJcbiAgICAvLyAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgLy8gICAgICAgdGhpcy5jaGFuZ2VQbGFjZWhvbGRlcigpO1xyXG4gICAgLy8gICAgIH0sIDMwMDApO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgaWYgKHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbj8uaW5jbHVkZXMoJ2NhcmF0bGFuZScpIHx8IHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbj8uaW5jbHVkZXMoJ29ycmEnKSkge1xyXG4gICAgICB0aGlzLnRvU2hvd0luSmV3ZWxsZXJ5ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRWNvbW1lcmNlV2Vic2l0ZSkge1xyXG4gICAgICB0aGlzLmdldENhdGVnb3JpZXNIZWFkZXIoKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldFBhcmVudEhlaWdodCgpXHJcbiAgICB9LCAzMDAwKVxyXG4gICAgdGhpcy5jaGVja1Bhc3Nib29rQXBwKCk7XHJcblxyXG4gICAgdGhpcy5fZXZlbnRTdWJzY3JpYmVyID0gdGhpcy5fZXZlbnRTZXJ2aWNlLm1lbnVMaXN0LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG4gICAgfSlcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0UGFyZW50SGVpZ2h0KClcclxuICAgICAgfSwgMTAwMClcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY2hpbGRDb250YWluZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG4gIHBhc3Nib29rQXBwU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hlY2tQYXNzYm9va0FwcCgpIHtcclxuICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJyk7XHJcbiAgICBjb25zdCBiSWQgPSBkZXRhaWxzID8/ICcnO1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5QYXNzYm9va0FwcFN0YXR1cyhiSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcz8uZGF0YSkge1xyXG4gICAgICAgIHRoaXMucGFzc2Jvb2tBcHBTdGF0dXMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBzaG93U2VhcmNoQmFyTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0Ryb3Bkb3duRGVza3RvcFNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTmF2YmFyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSA0NzU7XHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgZ2V0U2NyZWVuU2l6ZShldmVudD86IG51bWJlcikge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuICBoZWlnaHQ6IGFueVxyXG4gIGdldFBhcmVudEhlaWdodCgpIHtcclxuICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5jaGlsZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsSGVpZ2h0O1xyXG4gICAgaWYgKHRoaXMubmV4dENvbXBvbmVudD8uc3R5bGVzPy5tZXJnZSlcclxuICAgICAgdGhpcy5ldmVudFNlcnZpY2UuZWxlbWVudEhlaWdodC5lbWl0KHRoaXMuaGVpZ2h0KVxyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFwiLS1tYXJnaW4tdG9wXCIsIHRoaXMuaGVpZ2h0ICsgXCJweFwiKVxyXG4gIH1cclxuICBnZXQgZ2V0RHJvcGRvd25MaW5rcygpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQ/LmVjb21saW5rcyAmJiB0aGlzLmlzRWNvbW1lcmNlV2Vic2l0ZSlcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udGVudD8uZWNvbWxpbmtzKTtcclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcbiAgZ2V0IGlzRWNvbW1lcmNlV2Vic2l0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LnR5cGUgPT0gXCJFX0NPTU1FUkNFXCI7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMuaXNOYXZiYXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG93RWRpdG9yczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzaG93RWRpdFRhYnMoaXNTaG93OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dFZGl0b3JzID0gaXNTaG93O1xyXG4gIH1cclxuICBnb1RvSG9tZSgpIHtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnUkVRVUVTVF9GUk9NJykgPT09ICdFX0NPTU1FUkNFJylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnJ10pO1xyXG4gIH1cclxuICBnZXQgaXNIZWFkZXJTdGlja3koKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5zdHlsZXM/LnN0aWNreTtcclxuICB9XHJcbiAgZ2V0IGJhY2tncm91bmRJbmZvKCkge1xyXG4gICAgbGV0IGJhY2tncm91bmQ6IEJhY2tncm91bmRNb2RlbCB8IHt9ID0ge307XHJcbiAgICB0aGlzLmdldFBhcmVudEhlaWdodCgpO1xyXG4gICAgcmV0dXJuIHRoaXMubmV4dENvbXBvbmVudD8uc3R5bGVzPy5tZXJnZSAmJiB0aGlzLnNjcm9sbFZhbHVlID09IDAgJiYgIXRoaXMuaXNNb2JpbGUgPyB7IC4uLnRoaXMubmV4dENvbXBvbmVudC5zdHlsZXMuYmFja2dyb3VuZCB9IDogeyAuLi50aGlzLmRhdGE/LnN0eWxlcy5iYWNrZ3JvdW5kIH07XHJcbiAgfVxyXG4gIGdldCBzaW1wb0NvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV4dENvbXBvbmVudD8uc3R5bGVzPy5tZXJnZSA/ICh0aGlzLnNjcm9sbFZhbHVlID4gMCA/IHRoaXMuc3R5bGU/LmJhY2tncm91bmQuY29sb3IgOiB0aGlzLm5leHRDb21wb25lbnQuc3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvcikgOiB0aGlzLnN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvcjtcclxuICB9XHJcbiAgZ2V0IGFjY2VudENvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV4dENvbXBvbmVudD8uc3R5bGVzPy5tZXJnZSA/ICh0aGlzLnNjcm9sbFZhbHVlID4gMCA/IHRoaXMuc3R5bGU/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogdGhpcy5uZXh0Q29tcG9uZW50LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IpIDogdGhpcy5zdHlsZT8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3I7XHJcbiAgfVxyXG4gIGdldCBpc1RyYW5zcGFyZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV4dENvbXBvbmVudD8uc3R5bGVzPy5tZXJnZSAmJiB0aGlzLnNjcm9sbFZhbHVlID09IDA7XHJcbiAgfVxyXG4gIHJlZGlyZWN0VG8oY29udGVudDogYW55KSB7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGNvbnRlbnQgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93U2VhcmNoQmFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBpc0NvbXBvbmVudE1lcmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLm5leHRDb21wb25lbnQ/LnN0eWxlcz8ubWVyZ2U7XHJcbiAgfVxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHsgZGF0YTogdGhpcy5kYXRhIH0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGdldCBjYW5TaG93TW9iaWxlRm9vdGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNFY29tbWVyY2VXZWJzaXRlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dNb2JpbGVIb21lSWNvbigpIHtcclxuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xyXG4gICAgcmV0dXJuICEodXJsLmluY2x1ZGVzKFwiY2FydFwiKSB8fCB1cmwuaW5jbHVkZXMoXCJwcm9maWxlXCIpIHx8IHVybC5pbmNsdWRlcyhcIndpc2hsaXN0XCIpKTtcclxuICB9XHJcbiAgZ2V0IGdldENhcnRJdGVtc0NvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRUb3RhbENhcnRJdGVtcztcclxuICB9XHJcbiAgZ2V0IGdldENhcnRUb3RhbEFtb3VudCgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2FydEFtb3VudCgpKTtcclxuICAgIC8vIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldENhcnRBbW91bnQoKTtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldENhcnRUb3RhbEFtb3VudDtcclxuICB9XHJcbiAgZ2V0IGdldEhlYWRlclN0eWxpbmcoKTogSGVhZGVyX1R5cGUgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc3R5bGU/LnN0eWxpbmc7XHJcbiAgfVxyXG4gIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8IDQ3NTtcclxuICB9XHJcbiAgZ2V0S2V5cyhvYmplY3Q6IGFueSk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpO1xyXG4gIH1cclxuICBnZXRWYWx1ZXMob2JqZWN0OiBhbnkpOiB1bmtub3duW10ge1xyXG4gICAgY29uc3Qga2V5czogdW5rbm93bltdID0gW107XHJcbiAgICBvYmplY3QuZm9yRWFjaCgoa2V5OiBhbnkpID0+IGtleXMucHVzaChPYmplY3QudmFsdWVzKGtleSkpKTtcclxuICAgIHJldHVybiBbLi4ubmV3IFNldChrZXlzKV07XHJcbiAgfVxyXG4gIGdldCB1c2VyR2VuZGVyKCkge1xyXG4gICAgY29uc3QgdXNlciA9ICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSBhcyBVc2VyKTtcclxuICAgIGlmICh1c2VyKVxyXG4gICAgICByZXR1cm4gdXNlci5nZW5kZXI7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBnZXROYXZiYXJCdXR0b24oKSB7XHJcbiAgICBsZXQgY291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgcGFnZTogYW55W10gPSBbXVxyXG4gICAgZm9yIChsZXQgYnV0dG9uIG9mIHRoaXMuY29udGVudD8ubmF2YmFyQnV0dG9ucyB8fCBbXSkge1xyXG4gICAgICBpZiAoW1xyXG4gICAgICAgICdIb21lJyxcclxuICAgICAgICAnUHJvZHVjdCBEZXNjcmlwdGlvbicsXHJcbiAgICAgICAgJ0NhcnQnLFxyXG4gICAgICAgICdXaXNobGlzdCcsXHJcbiAgICAgICAgJ1VzZXIgcHJvZmlsZScsXHJcbiAgICAgICAgJ1Byb2R1Y3QgTGlzdCcsXHJcbiAgICAgICAgJ0NoZWNrb3V0JyxcclxuICAgICAgICAnQXV0aCcsXHJcbiAgICAgICAgJ1BheW1lbnQgVmVyaWZpY2F0aW9uJyxcclxuICAgICAgICAnTGlzdCBDYXRlZ29yeScsXHJcbiAgICAgICAgJ0F1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJ1xyXG4gICAgICBdLmluY2x1ZGVzKGJ1dHRvbi5sYWJlbCkpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNvdW50IDwgNiAmJiBidXR0b24uc2hvd0hlYWRlcikge1xyXG4gICAgICAgIHBhZ2UucHVzaChidXR0b24pO1xyXG4gICAgICAgIGNvdW50Kys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFnZTtcclxuICB9XHJcblxyXG5cclxuICBpc1Njcm9sbGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxyXG4gIC8vIG9uV2luZG93U2Nyb2xsKCkge1xyXG4gIC8vICAgdGhpcy5pc1Njcm9sbGVkID0gIHdpbmRvdy5zY3JvbGxZID4gNTA7XHJcbiAgLy8gfVxyXG4gIHNldENvbG9yKCkge1xyXG4gICAgY29uc3QgdGhyZXNob2xkID0gMTMwOyAvLyBBZGp1c3QgdGhpcyB0aHJlc2hvbGQgYXMgbmVlZGVkXHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQodGhpcy5iYWNrZ3JvdW5kSW5mby5hY2NlbnRDb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZyA9IHBhcnNlSW50KHRoaXMuYmFja2dyb3VuZEluZm8uYWNjZW50Q29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgIGNvbnN0IGIgPSBwYXJzZUludCh0aGlzLmJhY2tncm91bmRJbmZvLmFjY2VudENvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICBjb25zdCBicmlnaHRuZXNzID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xyXG5cclxuICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gIH1cclxuICBzaG93TGlzdDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgc2hvd0NvbGxlY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2F0ZWdvcnlMaXN0OiBhbnk7XHJcbiAgY29sbGVjdGlvbkxpc3Q6IGFueTtcclxuICBzZWxlY3RlZENhdGVnb3J5OiBhbnk7XHJcbiAgc3RvcmVBdmFpYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldENhdGVnb3JpZXNIZWFkZXIoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldENhdGVnb3JpZXNIZWFkZXJEYXRhKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnN0b3JlQXZhaWFibGUgPSByZXM/LmRhdGE/LnN0b3JlQXZhaWxhYmxlO1xyXG4gICAgICB0aGlzLnNjaGVtZUF2YWlsYWJsZSA9IHJlcz8uZGF0YT8uc2NoZW1lc0F2YWlsYWJsZVxyXG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IHJlcz8uZGF0YT8uY2F0ZWdvcnlEZXRhaWxzO1xyXG4gICAgICB0aGlzLmNvbGxlY3Rpb25MaXN0ID0gcmVzPy5kYXRhPy5pdGVtQ29sbGVjdGlvbnM7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVzdHJpY3RJblBhZ2VzKCkge1xyXG4gICAgbGV0IHBhdGhuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgaWYgKHBhdGhuYW1lLmluY2x1ZGVzKCcvbG9naW4nKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmVzdHJpY3RDYXJ0QmFySW5QYWdlcygpIHtcclxuICAgIGxldCBwYXRobmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcclxuICAgIGlmIChwYXRobmFtZS5pbmNsdWRlcygnL2xvZ2luJykgfHwgcGF0aG5hbWUuaW5jbHVkZXMoJy9jYXJ0JykgfHwgcGF0aG5hbWUuaW5jbHVkZXMoJy93aXNobGlzdCcpIHx8IHBhdGhuYW1lLmluY2x1ZGVzKCcvZGV0YWlscycpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBzY2hlbWVBdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGdvVG9TdG9yZXMoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zdG9yZS1saXN0J10pO1xyXG4gIH1cclxuICBPYmplY3QgPSBPYmplY3RcclxuICBhcHBseUZpbHRlclRvTGlzdChvYmo6IGFueSwgdHlwZTogYW55KSB7XHJcbiAgICBpZiAodHlwZSA9PSAncHJpY2UnKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xpc3QnXSwgeyBxdWVyeVBhcmFtczogeyBjYXRlZ29yeTogdGhpcy5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeU5hbWUsIG1pblByaWNlOiBvYmo/Lm1pblByaWNlLCBtYXhQcmljZTogb2JqPy5tYXhQcmljZSwgcGFnZU5vOiAxIH0gfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PSAnY29sbGVjdGlvbicpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbGlzdCddLCB7IHF1ZXJ5UGFyYW1zOiB7IGNhdGVnb3J5OiB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5TmFtZSwgY29sbGVjdGlvbnM6IG9iaj8ucmVwbGFjZUFsbChcIiBcIiwgJ18nKSwgcGFnZU5vOiAxIH0gfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZSA9PSAnY29sbGVjdGlvbnMnKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xpc3QnXSwgeyBxdWVyeVBhcmFtczogeyBjb2xsZWN0aW9uczogb2JqPy5yZXBsYWNlQWxsKFwiIFwiLCAnXycpLCBwYWdlTm86IDEgfSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbHRlckJ5Q2F0ZWdvcnkoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9saXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgY2F0ZWdvcnk6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlOYW1lLCBwYWdlTm86IDEgfSB9KTtcclxuICB9XHJcblxyXG4gIHNob3dQaW5jb2RlSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwaW5jb2RlOiBhbnkgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgncGluY29kZScpID8/IFwiXCI7XHJcbiAgZ2V0UGluY29kZTogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ3BpbmNvZGUnKSB8fCAnJztcclxuICBwaW5FcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNldFBpbmNvZGUoKSB7XHJcbiAgICBpZiAodGhpcy5waW5jb2RlICYmIHRoaXMucGluY29kZT8ubGVuZ3RoID09IDYpIHtcclxuICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oJ3BpbmNvZGUnLCB0aGlzLnBpbmNvZGUpO1xyXG4gICAgICB0aGlzLmdldFBpbmNvZGUgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgncGluY29kZScpIHx8ICcnO1xyXG4gICAgICB0aGlzLnBpbkVycm9yID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBpbkVycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dMb2dpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnb1RvU2NoZW1lcygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3NjaGVtZS1lbnJvbGxtZW50J10pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UkdCQShiZ0NvbG9yOiBhbnksIG9wYWNpdHk6IG51bWJlcik6IGFueSB7XHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZyA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgIGNvbnN0IGIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IC8gMTAwfSlgO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NhdGVnb3J5TW9iaWxlSGVhZGVyKCkge1xyXG4gICAgY29uc3QgcGF0aG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XHJcbiAgICByZXR1cm4gcGF0aG5hbWUuaW5jbHVkZXMoJy9saXN0JykgfHwgcGF0aG5hbWUgPT09ICcvJyB8fCBwYXRobmFtZSA9PT0gJyc7XHJcbiAgfVxyXG5cclxuICBieU1ldGFsQW5kU3RvbmU6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgbmFtZTogJ0dvbGQnLFxyXG4gICAgICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmNhcmF0bGFuZS5jb20vbWVkaWEvc3RhdGljL2ltYWdlcy93ZWIvbWVudS8yMmt0LUdvbGQtMngucG5nJyxcclxuICAgICAgc3RhdHVzOiBmYWxzZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ0RpYW1vbmQnLFxyXG4gICAgICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmNhcmF0bGFuZS5jb20vbWVkaWEvc3RhdGljL2ltYWdlcy93ZWIvbWVudS9EaWFtb25kLTF4LnBuZycsXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdQZWFybCcsXHJcbiAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4uY2FyYXRsYW5lLmNvbS9zdGF0aWMvaW1hZ2VzL2Rpc2NvdmVyeS9yZXNwb25zaXZlLWhhbWJ1cmdlci1tZW51L3Byb2R1Y3RzLWFuZC1zZXJ2aWNlcy9wZWFybC0xeC5wbmcnLFxyXG4gICAgICBzdGF0dXM6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnR2Vtc3RvbmUnLFxyXG4gICAgICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmNhcmF0bGFuZS5jb20vbWVkaWEvc3RhdGljL2ltYWdlcy93ZWIvbWVudS9HZW1zdG9uZS0xeC5wbmcnLFxyXG4gICAgICBzdGF0dXM6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnWWVsbG93IEdvbGQnLFxyXG4gICAgICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmNhcmF0bGFuZS5jb20vbWVkaWEvc3RhdGljL2ltYWdlcy93ZWIvbWVudS9ZZWxsb3ctR29sZC0xeC5wbmcnLFxyXG4gICAgICBzdGF0dXM6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnUm9zZSBHb2xkJyxcclxuICAgICAgaW1hZ2VVcmw6ICdodHRwczovL2Nkbi5jYXJhdGxhbmUuY29tL21lZGlhL3N0YXRpYy9pbWFnZXMvd2ViL21lbnUvUm9zZS1Hb2xkLTF4LnBuZycsXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdXaGl0ZSBHb2xkJyxcclxuICAgICAgaW1hZ2VVcmw6ICdodHRwczovL2Nkbi5jYXJhdGxhbmUuY29tL21lZGlhL3N0YXRpYy9pbWFnZXMvd2ViL21lbnUvd2hpdGUtR29sZC0xeC5wbmcnLFxyXG4gICAgICBzdGF0dXM6IGZhbHNlXHJcbiAgICB9XHJcbiAgXVxyXG4gIG5hdmlnYXRlTG9naW4oKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddKVxyXG4gIH1cclxuXHJcbiAgbWVnYU1lbnU6IGFueSA9IFtdXHJcbiAgZ2V0TWVudUl0ZW1zKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRNZW51SXRlbXModGhpcy5jb250ZW50Py5tZW51SWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgdGhpcy5tZWdhTWVudSA9IHJlcy5kYXRhLmRhdGEgfHwgW107XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdGlvbnNPZk1lbnUoZWxlOiBhbnkpIHtcclxuXHJcbiAgICBpZiAoIWVsZS5yZWRpcmVjdGlvbmFsVXJsICYmIGVsZS5yZWRpcmVjdGlvbmFsVXJsPy5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsZS50eXBlID09ICdIT01FX1BBR0UnKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnJ10pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake2VsZS5yZWRpcmVjdGlvbmFsVXJsfWBdKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Q2hpbGRNZW51KGVsZTogYW55KSB7XHJcbiAgICBpZiAoZWxlLmNoaWxkcmVuICYmIGVsZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0xpc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSBlbGUuY2hpbGRyZW47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dMaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBbaWRdPVwiZGF0YT8uaWRcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lciB3LTEwMFwiIFtjbGFzcy56LWluZGV4LTEwXT1cIiFpc0hlYWRlclN0aWNreSAmJiBpc0NvbXBvbmVudE1lcmdlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGU/LmJhY2tncm91bmRcIiBbbmdDbGFzc109XCJ7J2JveC1zaGFkb3cnOiBpc0Vjb21tZXJjZVdlYnNpdGV9XCJcclxuICAgIFtjbGFzcy5tYXJnaW4tYm90dG9tXT1cImlzSGVhZGVyU3RpY2t5ICYmIGlzTW9iaWxlICYmIGNhdGVnb3J5TGlzdD8ubGVuZ3RoID09IDBcIj5cclxuICAgIDxkaXYgW3NpbXBvU3RpY2t5XT1cImlzSGVhZGVyU3RpY2t5XCIgW3NpbXBvQmFja2dyb3VuZF09XCJiYWNrZ3JvdW5kSW5mb1wiIGNsYXNzPVwidy0xMDBcIiAjY2hpbGRDb250YWluZXJcclxuICAgICAgW2NhdGVnb3J5SGVhZGVyXT1cImlzRWNvbW1lcmNlV2Vic2l0ZSAmJiBjYXRlZ29yeUxpc3Q/Lmxlbmd0aCA+IDAgJiYgIWlzTW9iaWxlICYmICFzaG93Q2F0ZWdvcnlNb2JpbGVIZWFkZXIoKVwiXHJcbiAgICAgIHNpbXBvSG92ZXIgW2NsYXNzLmJnLXRyYW5zcGFyZW50XT1cImlzQ29tcG9uZW50TWVyZ2VkICYmIHNjcm9sbFZhbHVlID09IDAgJiYgIWlzTW9iaWxlXCJcclxuICAgICAgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgW2NsYXNzLmhlYWRlci0tc2Nyb2xsZWRdPVwiZGF0YT8uc3R5bGVzPy5zaHJpbmtPblNjcm9sbCAmJiBpc0hlYWRlclN0aWNreSAmJiBzY3JvbGxWYWx1ZSA+IDAgJiYgIWVkaXRcIj5cclxuICAgICAgPCEtLSBbY2xhc3MuYmFja2dyb3VuZC1wb3NpdGlvbl09XCJpc0NvbXBvbmVudE1lcmdlZCAmJiBiYWNrZ3JvdW5kSW5mbz8uc2hvd0ltYWdlXCIgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uaGVhZGxpbmU/LmRpc3BsYXlcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNpbXBvLW1vdmluZy10ZXh0IFtlZGl0XT1cImZhbHNlXCIgW2RlbGV0ZV09XCJmYWxzZVwiIFtkYXRhXT1cImRhdGFcIj48L3NpbXBvLW1vdmluZy10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjEnICYmICFpc0Vjb21tZXJjZVdlYnNpdGVcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCJcclxuICAgICAgICBbc2ltcG9PdmVybGF5XT1cImJhY2tncm91bmRJbmZvXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlc0xheW91dFwiIFtpc0hlYWRlcl09XCJ0cnVlXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcjFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInN0eWxlPy5zdHlsaW5nID09PSAnSGVhZGVyMicgJiYgIWlzRWNvbW1lcmNlV2Vic2l0ZVwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIlxyXG4gICAgICAgIFtzaW1wb092ZXJsYXldPVwiYmFja2dyb3VuZEluZm9cIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzTGF5b3V0XCIgW2lzSGVhZGVyXT1cInRydWVcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyMlRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIzJyAmJiAhaXNFY29tbWVyY2VXZWJzaXRlXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiXHJcbiAgICAgICAgW3NpbXBvT3ZlcmxheV09XCJiYWNrZ3JvdW5kSW5mb1wiIFtzaW1wb0xheW91dF09XCJzdHlsZXNMYXlvdXRcIiBbaXNIZWFkZXJdPVwidHJ1ZVwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXIzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjQnICYmICFpc0Vjb21tZXJjZVdlYnNpdGVcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCJcclxuICAgICAgICBbc2ltcG9PdmVybGF5XT1cImJhY2tncm91bmRJbmZvXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlc0xheW91dFwiIFtpc0hlYWRlcl09XCJ0cnVlXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcjRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb092ZXJsYXldPVwiYmFja2dyb3VuZEluZm9cIiAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZVwiXHJcbiAgICAgICAgW3NpbXBvTGF5b3V0XT1cInNjcmVlbldpZHRoID4gNDc1ID8gc3R5bGVzTGF5b3V0IDogdW5kZWZpbmVkXCIgW2lzSGVhZGVyXT1cInRydWVcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWNvbW1lcmNlX2hlYWRlclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG14LTIgbWItMiB3LTk2XCIgKm5nSWY9XCJpc01vYmlsZSAmJiBpc0Vjb21tZXJjZVdlYnNpdGUgJiYgIXJlc3RyaWN0Q2FydEJhckluUGFnZXMoKVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZm9yIGl0ZW1zXCIgYXJpYS1sYWJlbD1cIlNlYXJjaCBQcm9kdWN0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cIndhaXRCZWZvcmVTZWFyY2goKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcicgOiAnMXB4IHNvbGlkICcgKyBhY2NlbnRDb2xvcn1cIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnIDogc3R5bGU/LmJhY2tncm91bmQ/LmFjY2VudEJhY2tncm91bmRUeXBlID09ICdTb2xpZCcgPyAgIGFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgc3R5bGU/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBzdHlsZT8uYmFja2dyb3VuZD8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKSd9XCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlICYmICFpc01vYmlsZSAmJiBkYXRhPy5zdHlsZXM/Lm1lbnVUeXBlID09PSAnTUVHQV9NRU5VJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXRlZ29yaWVzSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZSAmJiBpc01vYmlsZSAmJiBzaG93Q2F0ZWdvcnlNb2JpbGVIZWFkZXIoKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlQ2F0ZWdvcnlIZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Vjb21tZXJjZVdlYnNpdGUgJiYgaXNNb2JpbGUgJiYgIXJlc3RyaWN0SW5QYWdlcygpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlRm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyMVRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIxXCI+XHJcbiAgICA8ZGl2IFtjbGFzcy53LTE1XT1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2VcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvZ29TZWN0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgKm5nSWY9XCIhaXNNb2JpbGVcIiBbc3R5bGUud2lkdGguJV09XCJpc0Vjb21tZXJjZVdlYnNpdGUgPyA5NCA6ICcnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNFY29tbWVyY2VXZWJzaXRlID8gZWNvbW1lcmNlQnV0dG9uc1RlbXBsYXRlIDogbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIWlzRWNvbW1lcmNlV2Vic2l0ZSA/IGJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJpc01vYmlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVjb21Qcm9maWxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXHJcbiAgICAgICAgYXJpYS1jb250cm9scz1cIm9mZmNhbnZhc1JpZ2h0XCI+bWVudTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyMlRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIxXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNSBhbGlnbi1jZW50ZXJcIiAqbmdJZj1cIiFpc01vYmlsZVwiIFtzdHlsZS53aWR0aC4lXT1cImlzRWNvbW1lcmNlV2Vic2l0ZSA/IDkzIDogJydcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIiFpc0Vjb21tZXJjZVdlYnNpdGUgPyBidXR0b25zVGVtcGxhdGUgOiBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc0Vjb21tZXJjZVdlYnNpdGUgPyBlY29tbWVyY2VCdXR0b25zVGVtcGxhdGUgOiBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNSBhbGlnbi1jZW50ZXJcIiBkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiIGRhdGEtYnMtdGFyZ2V0PVwiI29mZmNhbnZhc1JpZ2h0XCJcclxuICAgICAgYXJpYS1jb250cm9scz1cIm9mZmNhbnZhc1JpZ2h0XCIgKm5nSWY9XCJpc01vYmlsZVwiPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVjb21Qcm9maWxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiIFtjbGFzcy53LTE1XT1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2VcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvZ29TZWN0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXIzVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlcjFcIj5cclxuICAgIDxkaXYgW2NsYXNzLnctMTVdPVwiY29udGVudD8ubG9nbz8uaXNJbWFnZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNFY29tbWVyY2VXZWJzaXRlID8gZWNvbW1lcmNlQnV0dG9uc1RlbXBsYXRlIDogbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIWlzRWNvbW1lcmNlV2Vic2l0ZSA/IGJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXHJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJvZmZjYW52YXNSaWdodFwiICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlY29tUHJvZmlsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2hlYWRlcjRUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyMVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIWlzRWNvbW1lcmNlV2Vic2l0ZSA/IGJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzRWNvbW1lcmNlV2Vic2l0ZSA/IGVjb21tZXJjZUJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0Vjb21tZXJjZVdlYnNpdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUxpbmtzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXHJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJvZmZjYW52YXNSaWdodFwiICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgPG1hdC1pY29uIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIj5tZW51PC9tYXQtaWNvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlY29tUHJvZmlsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIiBbY2xhc3Mudy0xNV09XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvZ29TZWN0aW9uVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgbXgtMVwiXHJcbiAgICAqbmdJZj1cIiFjb250ZW50Py5sb2dvPy5pc0ltYWdlIHx8ICFjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgKGNsaWNrKT1cIiFlZGl0ID8gZ29Ub0hvbWUoKSA6ICcnXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ubG9nbz8udGV4dD8uaXNJY29uICYmIGNvbnRlbnQ/LmxvZ28/LnRleHQ/LnVybFwiPlxyXG4gICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBhbHQ9XCJsb2dvXCIgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemUgKyA4MFwiIGxvYWRpbmc9XCJsYXp5XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLXNtYWxsXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy50ZXh0Py5pc1RleHRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+XHJcbiAgICAgIDxiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtbGctY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIiAoY2xpY2spPVwiZ29Ub0hvbWUoKVwiPiAtLT5cclxuICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgYWx0PVwibG9nb1wiIFtzdHlsZS53aWR0aC4lXT1cInNjcmVlbldpZHRoID4gNDc1IHx8IChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSA8IDUwID8gY29udGVudD8ubG9nbz8uc2l6ZSA6IFxyXG4gICAgKChjb250ZW50Py5sb2dvPy5zaXplID49IDYwICAmJiBjb250ZW50Py5sb2dvPy5zaXplIDw9IDEwMCkgPyAoMjApIDogKChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSAtIDEwKSlcIlxyXG4gICAgbG9hZGluZz1cImxhenlcIiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2UgJiYgY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIChjbGljayk9XCIhZWRpdCA/IGdvVG9Ib21lKCkgOiAnJ1wiPlxyXG4gIDwhLS0gPC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwYWdlTGlua3NUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwibmF2YmFyLW5hdiBwYWdlTGlua3NcIiBbbmdDbGFzc109XCJ7J2FsaWduLWl0ZW1zLWNlbnRlcicgOiAhaXNNb2JpbGV9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydmbGV4LWNvbHVtbic6IGlzTW9iaWxlLCAnYWxpZ24taXRlbXMtY2VudGVyJyA6ICFpc01vYmlsZSwgJ21vYmlsZS1wYWdlLWxpc3QnOiBpc01vYmlsZX1cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXROYXZiYXJCdXR0b25cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5zaG93SGVhZGVyXCI+XHJcbiAgICAgICAgICA8c2ltcG8tbmF2YmFyLWJ1dHRvbi1lbGVtZW50IFtidXR0b25EYXRhXT1cIml0ZW1cIiBbc2VsZWN0ZWRTdHlsZV09XCJzdHlsZT8ubmF2aWdhdGlvblN0eWxlXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cInN0eWxlPy5uYXZiYXJCdXR0b25TdHlsZVwiIFtiZ0NvbG9yXT1cInNpbXBvQ29sb3JcIiBbYWNjZW50Q29sb3JdPVwiYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCI+PC9zaW1wby1uYXZiYXItYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBnZXREcm9wZG93bkxpbmtzOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmVjb21saW5rcz8uW2xpbmtdPy5sZW5ndGggXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm1hdC1idG4gZHJvcGRvd24tdG9nZ2xlIGNhdGVnb3J5LWJ0blwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgaWQ9XCJsaW5rXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIHt7bGluayB8IGxvd2VyY2FzZSB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwibGlua1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBnZXRWYWx1ZXMoY29udGVudD8uZWNvbWxpbmtzPy5bbGlua10pXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXIobWVudSwgbGluaylcIj57e21lbnV9fTwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25zVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImFjdGlvbj8uZGlzcGxheVwiIGNsYXNzPVwiYnV0dG9uLWRpc3BsYXkgbXQtMFwiIFtuZ0NsYXNzXT1cInsndy0xMDAganVzdGlmeS1zcGFjZS1hcm91bmQnOiBpc01vYmlsZX1cIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkNvbnRlbnRdPVwiYnV0dG9uLmNvbnRlbnRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgW2VkaXRdPVwiZWRpdFwiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW2J1dHRvbklkXT1cImJ1dHRvbi5pZFwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdGljX2xvZ2luX2J0biBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVMb2dpbigpXCIgKm5nSWY9XCJwYXNzYm9va0FwcFN0YXR1cyAmJiAhbG9nZ2VkSW5cIlxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8bWF0LWljb24+cGVyc29uX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgIExvZ2luXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA4cHg7IGN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwiZ29Ub0FjY291bnQoJ1BST0ZJTEUnKVwiXHJcbiAgICAgICAgKm5nSWY9XCJsb2dnZWRJbiAmJiAhaXNNb2JpbGVcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJ1c2VyR2VuZGVyIHwgZ2VuZGVySWNvblwiIHN0eWxlPVwiaGVpZ2h0OiAyN3B4O1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxidXR0b24gY2xhc3M9XCJtb2JpbGVMb2dpbkJ1dHRvblwiICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlICYmIGlzTW9iaWxlICYmICFsb2dnZWRJblwiXHJcbiAgICBbc3R5bGUuYm9yZGVyXT1cIicxcHggc29saWQnICsgYWNjZW50Q29sb3JcIiBbc3R5bGUuY29sb3JdPVwiYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiZ29Ub0FjY291bnQoJ0xPR0lOJylcIj5Mb2dpbjwvYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtb2JpbGVGb290ZXJUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiY2FydC1mb290ZXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJhY2NlbnRDb2xvclwiIFtzaW1wb0NvbG9yXT1cImFjY2VudENvbG9yXCJcclxuICAgICpuZ0lmPVwiZ2V0Q2FydEl0ZW1zQ291bnQgPiAwICYmICFyZXN0cmljdENhcnRCYXJJblBhZ2VzKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHgtMyBweS0yIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb3VudCBmdy1ib2xkXCI+XHJcbiAgICAgICAge3sgZ2V0Q2FydEl0ZW1zQ291bnQgPz8gMyB9fSB7eyBnZXRDYXJ0SXRlbXNDb3VudCA+IDEgPyAnaXRlbXMnIDogJ2l0ZW0nIH19IGluIGNhcnRcclxuICAgICAgICA8IS0tIFRvdGFsIDog4oK5e3sgZ2V0Q2FydFRvdGFsQW1vdW50IH19IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgZnctYm9sZFwiIChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgICAgVmlldyBDYXJ0IDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJhY2NlbnRDb2xvclwiPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLWZvb3RlclwiIFtzaW1wb0JhY2tncm91bmRdPVwiYmFja2dyb3VuZEluZm9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJnb1RvSG9tZSgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+aG9tZTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIj5Ib21lPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwic2VhcmNoUHJvZHVjdHMoKVwiPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPmdyaWRfb248L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+U2hvcDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cImdvVG9XaXNobGlzdCgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+ZmF2b3JpdGVfYm9yZGVyPC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPldpc2hsaXN0PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWNvbnMgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2spPVwiZ29Ub0NhcnQoKVwiPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPnNob3BwaW5nX2NhcnQ8L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+Q2FydDwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNhcnRJdGVtQ291bnRcIiAqbmdJZj1cImdldENhcnRJdGVtc0NvdW50XCI+e3tnZXRDYXJ0SXRlbXNDb3VudH19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZWNvbW1lcmNlQnV0dG9uc1RlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwci0wIGQtZmxleCBwb3NpdGlvbi1yZWxhdGl2ZSBnYXAtMTAgdy0xMDBcIlxyXG4gICAgW3N0eWxlLmZsZXhEaXJlY3Rpb25dPVwic3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIyJyB8fCBzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjQnID8gJ3Jvdy1yZXZlcnNlJyA6ICcnXCI+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJzZWFyY2gtaWNvblwiIChjbGljayk9XCJzaG93U2VhcmNoQmFyID0gIXNob3dTZWFyY2hCYXJcIj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJhY2NlbnRDb2xvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy03NSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICFwYXNzYm9va0FwcFN0YXR1c31cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctNzUgbWwtMlwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggRm9yIEl0ZW1zXCIgYXJpYS1sYWJlbD1cIlNlYXJjaCBQcm9kdWN0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cIndhaXRCZWZvcmVTZWFyY2goKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcicgOiAnMXB4IHNvbGlkICcgKyBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3J9XCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYW5pbWF0ZWQtcGxhY2Vob2xkZXIgcG9zaXRpb24tYWJzb2x1dGVcIiBcclxuICAgICAgICAgIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGVQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAqbmdJZj1cInN0eWxlPy5zZWFyY2hCYXJQbGFjZWhvbGRlckxpc3QubGVuZ3RoID4gMSAmJiBzdHlsZT8uc21hcnRTZWFyY2hCYXJcIj5cclxuICAgICAgICAgIHt7IGN1cnJlbnRQbGFjZWhvbGRlciB9fVxyXG4gICAgICAgIDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kJyA6IGJhY2tncm91bmRJbmZvPy5hY2NlbnRCYWNrZ3JvdW5kVHlwZSA9PT0gJ1NvbGlkJyA/ICAgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgIGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvciArICcgMCUnICsgJywnICsgIGJhY2tncm91bmRJbmZvPy5zZWNvbmRhcnlBY2NlbnRDb2xvciArJyAxMDAlJyArICcpJ31cIlxyXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5jb2xvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBweS0xIHB4LTMgYi0xIHN0b3Jlc1wiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJnb1RvU2NoZW1lcygpXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRSR0JBKGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvciAsIDEwKVwiICpuZ0lmPVwicGFzc2Jvb2tBcHBTdGF0dXNcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxyXG4gICAgICAgICAgeG1sbnM6c3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2L3N2Z2pzXCIgaWQ9XCJMYXllcl8yXCIgdmlld0JveD1cIjAgMCA2MCA2MFwiIGRhdGEtbmFtZT1cIkxheWVyIDJcIiB3aWR0aD1cIjMwXCJcclxuICAgICAgICAgIGhlaWdodD1cIjMwXCIgdmVyc2lvbj1cIjEuMVwiPlxyXG4gICAgICAgICAgPGcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHRyYW5zZm9ybT1cIm1hdHJpeCgxLDAsMCwxLDAsMClcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIm0xNC4zNiA0Ni42Ni41MS05Ljg2LTExLjkzLTcuMTYtMS45NCA4LjQzelwiIFthdHRyLmZpbGxdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxXCIgZGF0YS1vcmlnaW5hbC1jb2xvcj1cIiMwMDAwMDBmZlwiIHN0cm9rZT1cIm5vbmVcIiBzdHJva2Utb3BhY2l0eT1cIjFcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJtMTcuMTcgMzguMXMwLS4wMi4wMi0uMDNjMCAwIDAtLjAyLjAyLS4wMi4wNC0uMDUuMS0uMDguMTUtLjExLjAyLS4wMS4wMy0uMDMuMDUtLjA0bDQuNjYtMS45NGgtLjAycy0xLjg3LTEuMjEtMS44Ny0xLjIxbC0zLjE4IDEuNTctMS4wNy41My0uNDMgOC4zMiAxLjU4LTYuOWMuMDEtLjA2LjA1LS4xMi4wOS0uMTd6XCJcclxuICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIm0xOS4xNCAzNC4wOC02LjI3LTQuMDRjLS4xOS0uMTItLjI4LS4zNC0uMjMtLjU2bDEuMDgtNC43Mi05Ljk2IDQuMTQgMTEuNjggNy4wMXpcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCIgZmlsbC1vcGFjaXR5PVwiMVwiIGRhdGEtb3JpZ2luYWwtY29sb3I9XCIjMDAwMDAwZmZcIiBzdHJva2U9XCJub25lXCJcclxuICAgICAgICAgICAgICBzdHJva2Utb3BhY2l0eT1cIjFcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwibTMwLjkzIDQ2LjQyLS41IDkuNzkgMzIuNTctMTguNjctMS4yMS02LjQtMjMuMTYgMTEuNDZ6XCIgW2F0dHIuZmlsbF09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTYgNDcuNjUgMTMuMzggOC41OC40OS05Ljg2LTExLjkzLTcuMTd6XCIgW2F0dHIuZmlsbF09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIm0yNy44NSAzOS4zNHMwIDAtLjAxIDBjMCAwIDAgMC0uMDEgMC0uMDguMDQtLjE2LjA2LS4yNC4wNi0uMDUgMC0uMS0uMDMtLjE1LS4wNC0uMDQtLjAxLS4wOC0uMDEtLjExLS4wM2wtNC4xNi0yLjY3LTQuMzcgMS44MiAxMS42OCA3LjAxIDMwLjQtMTUuMDUtMTAuNzEtMy44OC0yMi4yOCAxMi43OHpcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiYWNjZW50Q29sb3JcIiBmaWxsLW9wYWNpdHk9XCIxXCIgZGF0YS1vcmlnaW5hbC1jb2xvcj1cIiMwMDAwMDBmZlwiIHN0cm9rZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJtMjguMjYgMzYuMDEtLjEgMS45MyAzMi41OC0xOC42OS0xLjIyLTYuMzktMzAuODYgMTUuMjh6XCIgW2F0dHIuZmlsbF09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJtMjcuNjEgMjguMDktMTEuOTMtNy4xNi0xLjk0IDguNDMgMTMuMzYgOC41OHpcIiBbYXR0ci5maWxsXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiIGRhdGEtb3JpZ2luYWwtY29sb3I9XCIjMDAwMDAwZmZcIiBzdHJva2U9XCJub25lXCIgc3Ryb2tlLW9wYWNpdHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIm01OC41NyAxMi4xNS0xMi4xLTQuMzgtMjkuOTcgMTIuNDMgMTEuNjggN3pcIiBbYXR0ci5maWxsXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiIGRhdGEtb3JpZ2luYWwtY29sb3I9XCIjMDAwMDAwZmZcIiBzdHJva2U9XCJub25lXCIgc3Ryb2tlLW9wYWNpdHk9XCIxXCIgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8ZGl2IFtzdHlsZS5jb2xvcl09XCJhY2NlbnRDb2xvclwiPlNjaGVtZXM8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZXMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBweS0yIHB4LTNcIiAoY2xpY2spPVwiZ29Ub1N0b3JlcygpXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJzdG9yZUF2YWlhYmxlXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRSR0JBKGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvciAsIDEwKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCI+c3RvcmU8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5TdG9yZXM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGluLXRleHRcIiAobW91c2VlbnRlcik9XCJzaG93UGluY29kZUlucHV0ID0gdHJ1ZTtzaG93TG9naW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiIWdldFBpbmNvZGVcIj5FbnRlclxyXG4gICAgICAgIFBpbmNvZGVcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwaW4tdGV4dFwiIChtb3VzZWVudGVyKT1cInNob3dQaW5jb2RlSW5wdXQgPSB0cnVlOztzaG93TG9naW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiZ2V0UGluY29kZSAmJiBnZXRQaW5jb2RlLmxlbmd0aCA9PSA2XCI+e3tcIkRlbGl2ZXJpbmcgdG86IFwiICtcclxuICAgICAgICBnZXRQaW5jb2RlfX08L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gKG1vdXNlbGVhdmUpPVwic2hvd1BpbmNvZGVJbnB1dCA9IGZhbHNlXCIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwaW5jb2RlLWNvbnRhaW5lciBwLTNcIiAqbmdJZj1cInNob3dQaW5jb2RlSW5wdXRcIiAobW91c2VsZWF2ZSk9XCJzaG93UGluY29kZUlucHV0ID0gZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBtYi0yIGYtMTggZnctYm9sZFwiPlxyXG4gICAgICAgICAgWW91ciBQSU4gQ29kZSB1bmxvY2tzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHRleHQtY2VudGVyIGYtMTQgcGluY29kZS10ZXh0XCI+XHJcbiAgICAgICAgICBGYXN0ZXN0IGRlbGl2ZXJ5IGRhdGUsIFRyeS1hdC1Ib21lIGF2YWlsYWJpbGl0eSxcclxuICAgICAgICAgIE5lYXJlc3Qgc3RvcmUgYW5kIEluLXN0b3JlIGRlc2lnbiFcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbXQtMiBici01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHgtM1wiXHJcbiAgICAgICAgICBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInBpbkVycm9yXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiUGluY29kZVwiIGFyaWEtbGFiZWw9XCJQaW5jb2RlXCIgWyhuZ01vZGVsKV09XCJwaW5jb2RlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ3LTc1IHAtMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXN1Yi10ZXh0IGYtMTEgdy0yNSB0ZXh0LWVuZCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZXRQaW5jb2RlKClcIj5TVUJNSVQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdGFydCBtdC0yIGYtMTFcIiAqbmdJZj1cInBpbkVycm9yXCI+XHJcbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSB2YWxpZCBwaW5jb2RlXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA1cHg7IGN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwiZ29Ub0ZhdigpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtzaW1wb0NvbG9yXT1cImJhY2tncm91bmRJbmZvPy5jb2xvclwiPmZhdm9yaXRlPC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCIgc3R5bGU9XCJnYXA6IDVweDsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtzaW1wb0NvbG9yXT1cImJhY2tncm91bmRJbmZvPy5jb2xvclwiPnNob3BwaW5nX2NhcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBjYXJ0SXRlbUNvdW50XCIgKm5nSWY9XCJnZXRDYXJ0SXRlbXNDb3VudFwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnIDogYmFja2dyb3VuZEluZm8/LmFjY2VudEJhY2tncm91bmRUeXBlID09ICdTb2xpZCcgPyAgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBiYWNrZ3JvdW5kSW5mbz8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKScgLCAnY29sb3InIDogc2V0Q29sb3IoKX1cIj5cclxuICAgICAgICAgIHt7Z2V0Q2FydEl0ZW1zQ291bnR9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ2luQnV0dG9uXCIgKm5nSWY9XCIhbG9nZ2VkSW5cIiAobW91c2VlbnRlcik9XCJzaG93TG9naW4gPSB0cnVlO3Nob3dQaW5jb2RlSW5wdXQgPSBmYWxzZVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIyN1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xMi4xMiAxMi43OEMxMi4wNSAxMi43NyAxMS45NiAxMi43NyAxMS44OCAxMi43OEMxMC4xMiAxMi43MiA4LjcxOTk3IDExLjI4IDguNzE5OTcgOS41MDk5OEM4LjcxOTk3IDcuNjk5OTggMTAuMTggNi4yMjk5OCAxMiA2LjIyOTk4QzEzLjgxIDYuMjI5OTggMTUuMjggNy42OTk5OCAxNS4yOCA5LjUwOTk4QzE1LjI3IDExLjI4IDEzLjg4IDEyLjcyIDEyLjEyIDEyLjc4WlwiXHJcbiAgICAgICAgICAgIGZpbGw9XCIjMjkyRDMyXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTE4Ljc0IDE5LjM4QzE2Ljk2IDIxLjAxIDE0LjYgMjIgMTIgMjJDOS40MDAwMSAyMiA3LjA0MDAxIDIxLjAxIDUuMjYwMDEgMTkuMzhDNS4zNjAwMSAxOC40NCA1Ljk2MDAxIDE3LjUyIDcuMDMwMDEgMTYuOEM5Ljc3MDAxIDE0Ljk4IDE0LjI1IDE0Ljk4IDE2Ljk3IDE2LjhDMTguMDQgMTcuNTIgMTguNjQgMTguNDQgMTguNzQgMTkuMzhaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiMyOTJEMzJcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTIgMjJDMTcuNTIyOCAyMiAyMiAxNy41MjI4IDIyIDEyQzIyIDYuNDc3MTUgMTcuNTIyOCAyIDEyIDJDNi40NzcxNSAyIDIgNi40NzcxNSAyIDEyQzIgMTcuNTIyOCA2LjQ3NzE1IDIyIDEyIDIyWlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPiA8IS0tIDxzcGFuIGNsYXNzPVwiZnctbm9ybWFsIGZzLTZcIiBbc2ltcG9Db2xvcl09XCJhY2NlbnRDb2xvclwiPkxvZ2luPC9zcGFuPiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gKG1vdXNlbGVhdmUpPVwic2hvd0xvZ2luID0gZmFsc2VcIiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tY29udGFpbmVyIHAtM1wiICpuZ0lmPVwic2hvd0xvZ2luXCIgKG1vdXNlbGVhdmUpPVwic2hvd0xvZ2luID0gZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBtYi0yIGYtMTggZnctYm9sZFwiPlxyXG4gICAgICAgICAgWW91ciBBY2NvdW50XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHRleHQtY2VudGVyIGYtMTRcIj5cclxuICAgICAgICAgIEFjY2VzcyBhY2NvdW50ICYgbWFuYWdlIHlvdXIgb3JkZXJzLlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyIHctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGdhcC0zXCI+XHJcbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJnb1RvQWNjb3VudCgnU0lHTlVQJylcIiBjbGFzcz1cInctNTAgdGV4dC1jZW50ZXIgc2lnbi1idG4gYm9yZGVyLTBcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnIDogYmFja2dyb3VuZEluZm8/LmFjY2VudEJhY2tncm91bmRUeXBlID09ICdTb2xpZCcgPyAgIGFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBiYWNrZ3JvdW5kSW5mbz8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKSd9XCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlNpZ24gVXA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdvVG9BY2NvdW50KCdMT0dJTicpXCIgY2xhc3M9XCJ3LTUwIHRleHQtY2VudGVyIHNpZ24tYnRuXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5Mb2cgSW48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDhweDsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJnb1RvQWNjb3VudCgnUFJPRklMRScpXCJcclxuICAgICAgICAqbmdJZj1cImxvZ2dlZEluXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwidXNlckdlbmRlciB8IGdlbmRlckljb25cIiBzdHlsZT1cImhlaWdodDogMjdweDtcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdj4gLS0+XHJcbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZ29Ub0FjY291bnQoKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJzZWN0aW9uSWQrYnV0dG9uSWRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uU3R5bGVcIiBbY29sb3JdPVwiY29sb3JcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBbYnV0dG9uRGF0YV09XCJidXR0b25Db250ZW50XCI+e3tidXR0b25Db250ZW50Py5sYWJlbH19PC9idXR0b24+IC0tPlxyXG4gICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25hdmJhckxpbmtzVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm5hdmJhci1jb2xsYXBzZSBmcy02IHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4OyBtYXJnaW4tbGVmdDogMjVweDtcIlxyXG4gICAgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiICpuZ0lmPVwic2NyZWVuV2lkdGggPiA3NjhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TmF2YmFyQnV0dG9uXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnNob3dIZWFkZXJcIj5cclxuICAgICAgICA8c2ltcG8tbmF2YmFyLWJ1dHRvbi1lbGVtZW50IFtidXR0b25EYXRhXT1cIml0ZW1cIiBbc2VsZWN0ZWRTdHlsZV09XCJzdHlsZT8ubmF2aWdhdGlvblN0eWxlXCJcclxuICAgICAgICAgIFtidXR0b25TdHlsZV09XCJzdHlsZT8ubmF2YmFyQnV0dG9uU3R5bGVcIiBbYmdDb2xvcl09XCJzaW1wb0NvbG9yXCJcclxuICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIj48L3NpbXBvLW5hdmJhci1idXR0b24tZWxlbWVudD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGdldERyb3Bkb3duTGlua3M7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uZWNvbWxpbmtzPy5bbGlua10/Lmxlbmd0aCBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwibWF0LWJ0biBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiIGlkPVwibGlua1wiXHJcbiAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICB7e2xpbmsgfCB1cHBlcmNhc2V9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImxpbmtcIj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IG1lbnUgb2YgZ2V0VmFsdWVzKGNvbnRlbnQ/LmVjb21saW5rcz8uW2xpbmtdKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyKG1lbnUsIGxpbmspXCI+e3ttZW51fX08L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJvZmZjYW52YXNcIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJvZmZjYW52YXNSaWdodFwiIGFyaWEtbGFiZWxsZWRieT1cIm9mZmNhbnZhc1JpZ2h0TGFiZWxcIlxyXG4gIFtuZ0NsYXNzXT1cInsnb2ZmY2FudmFzLWVuZCcgOiAoc3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIxJyB8fCBzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjMnKSAmJiAhaXNFY29tbWVyY2VXZWJzaXRlLCAnb2ZmY2FudmFzLXN0YXJ0Jzogc3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIyJyB8fCBzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjQnIHx8IGlzRWNvbW1lcmNlV2Vic2l0ZX1cIj5cclxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWhlYWRlclwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGU/LmJhY2tncm91bmRcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGVMb2dvU2VjdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPiAtLT5cclxuICAgIDxtYXQtaWNvbiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm9mZmNhbnZhcy1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbnZhcy1idXR0b25cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNlY29tUHJvZmlsZVRlbXBsYXRlPlxyXG4gIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGJyLTUwIGZzLTIyIHB4LTMgcHktMVwiXHJcbiAgICAoY2xpY2spPVwic2hvd1NlYXJjaEJhck1vYmlsZSA9ICFzaG93U2VhcmNoQmFyTW9iaWxlXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCcgOiBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50QmFja2dyb3VuZFR5cGUgPT0gJ1NvbGlkJyA/ICAgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBiYWNrZ3JvdW5kSW5mbz8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKSd9XCJcclxuICAgIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPiAtLT5cclxuXHJcblxyXG4gIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW9iLWZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFByb2R1Y3RcIiBhcmlhLWxhYmVsPVwiU2VhcmNoIFByb2R1Y3RcIlxyXG4gICAgKm5nSWY9XCJzaG93U2VhcmNoQmFyTW9iaWxlXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwid2FpdEJlZm9yZVNlYXJjaCgpXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJyA6ICcxcHggc29saWQgJyArIGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvcn1cIj4gLS0+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDhweDsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJnb1RvQWNjb3VudCgnUFJPRklMRScpXCJcclxuICAgICpuZ0lmPVwibG9nZ2VkSW5cIj5cclxuICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cInVzZXJHZW5kZXIgfCBnZW5kZXJJY29uXCIgc3R5bGU9XCJoZWlnaHQ6IDI3cHg7XCI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI21vYmlsZUxvZ29TZWN0aW9uVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgaC0xMDBcIlxyXG4gICAgKm5nSWY9XCIhY29udGVudD8ubG9nbz8uaXNJbWFnZSB8fCAhY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIChjbGljayk9XCIhZWRpdCA/IGdvVG9Ib21lKCkgOiAnJ1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvbiAmJiBjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LnVybFwiIGFsdD1cImxvZ29cIiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLXNtYWxsXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy50ZXh0Py5pc1RleHRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+XHJcbiAgICAgIDxiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtbGctY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIiAoY2xpY2spPVwiZ29Ub0hvbWUoKVwiPiAtLT5cclxuICA8aW1nIFtzcmNdPVwiY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIGFsdD1cImxvZ29cIiBjbGFzcz1cImgtMTAwXCIgbG9hZGluZz1cImxhenlcIlxyXG4gICAgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIiAoY2xpY2spPVwiIWVkaXQgPyBnb1RvSG9tZSgpIDogJydcIj5cclxuICA8IS0tIDwvZGl2PiAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc0hlYWRlcj5cclxuICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcy13cmFwcGVyXCJcclxuICAgICpuZ0lmPVwiKGNhdGVnb3J5TGlzdD8ubGVuZ3RoID4gMCB8fCBjb2xsZWN0aW9uTGlzdD8uY29sbGVjdGlvbnM/Lmxlbmd0aCA+IDApICYmICFpc01vYmlsZVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJzaG93TGlzdCA9IGZhbHNlOyBzaG93Q29sbGVjdGlvbnMgPSBmYWxzZVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJibHVyLW92ZXJsYXlcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dMaXN0IHx8IHNob3dDb2xsZWN0aW9uc1wiPjwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWhlYWRlciBkLWZsZXggZ2FwLTMgcHktMiBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvclwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IGN1cnNvci1wb2ludGVyXCIgKm5nRm9yPVwibGV0IGVsZSBvZiBtZWdhTWVudTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgW3N0eWxlLi0tYm9yZGVyLWNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbc2ltcG9Db2xvcl09XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvclwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0Q2hpbGRNZW51KGVsZSlcIiAoY2xpY2spPVwicmVkaXJlY3Rpb25zT2ZNZW51KGVsZSlcIj5cclxuICAgICAgICB7e2VsZT8ubGFiZWwgfCB0aXRsZWNhc2V9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gW2NsYXNzLmhpZGUtZHJvcGRvd25dPVwiIXNob3dMaXN0XCIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1jYXRlZ29yeVwiIFtjbGFzcy5zaG93LWRyb3Bkb3duXT1cInNob3dMaXN0XCIgW2NsYXNzLmhpZGUtZHJvcGRvd25dPVwiIXNob3dMaXN0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgaC0xMDAgbWVnYS1tZW51LXNjcm9sbC1yb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2Ygc2VsZWN0ZWRDYXRlZ29yeTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZ2EtbWVudS1zY3JvbGwtY29sXCIgW25nQ2xhc3NdPVwiZWxlPy5jaGlsZHJlbj8ubGVuZ3RoID09IDAgJiYgKGVsZS50eXBlPT0nQ09MTEVDVElPTlMnIHx8IGVsZS50eXBlPT0nQ0FURUdPUlknKSA/ICdjb2wtMycgOiAnY29sLTInXCI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlPy5jaGlsZHJlbj8ubGVuZ3RoID09IDAgJiYgKGVsZS50eXBlPT0nQ09MTEVDVElPTlMnIHx8IGVsZS50eXBlPT0nQ0FURUdPUlknIClcIj5cclxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZWxlLmltYWdlVXJsXCIgW2FsdF09XCJlbGU/LmxhYmVsXCIgY2xhc3M9XCJ3LTEwMCBtYi0yIGJyLTEyIGN1cnNvci1wb2ludGVyIGNvbGxlY3Rpb25JbWFnZVwiICpuZ0lmPVwiZWxlLmltYWdlVXJsXCIgKGNsaWNrKT1cInJlZGlyZWN0aW9uc09mTWVudShlbGUpXCIgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1oZWFkZXIgbWItMyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdGlvbnNPZk1lbnUoZWxlKVwiPlxyXG4gICAgICAgICAgICAgIHt7ZWxlPy5sYWJlbCB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlPy5jaGlsZHJlbiAmJiBlbGU/LmNoaWxkcmVuLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zIGxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgZWxlPy5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJyZWRpcmVjdGlvbnNPZk1lbnUoY2hpbGQpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Y2hpbGQ/LmxhYmVsIHwgdGl0bGVjYXNlfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbW9iaWxlQ2F0ZWdvcnlIZWFkZXI+XHJcbiAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtaGVhZGVyIGQtZmxleCBnYXAtMyAgcHktMiBvdmVyZmxvdy1hdXRvXCIgKm5nSWY9XCJjYXRlZ29yeUxpc3Q/Lmxlbmd0aCA+IDAgJiYgaXNNb2JpbGVcIlxyXG4gICAgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtjbGFzcy5tYXJnaW4tdG9wLW1vYl09XCJpc0hlYWRlclN0aWNreVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IGN1cnNvci1wb2ludGVyIGQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiICpuZ0Zvcj1cImxldCBlbGUgb2YgY2F0ZWdvcnlMaXN0O2xldCBpID0gaW5kZXhcIlxyXG4gICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJzZWxlY3RlZENhdGVnb3J5ID0gZWxlOyBmaWx0ZXJCeUNhdGVnb3J5KClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdC1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImVsZT8uaW1hZ2VVcmxzWzBdXCIgYWx0PVwiXCIgY2xhc3M9XCJoLTEwIGJyLTEyXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgZi0xNFwiPnt7ZWxlPy5jYXRlZ29yeU5hbWUgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Vjb21tZXJjZV9oZWFkZXI+XHJcbiAgPGhlYWRlciBjbGFzcz1cInNpdGUtaGVhZGVyXCI+XHJcbiAgICA8IS0tIFRvcCBCYXI6IExvZ28sIFNlYXJjaCwgVXNlciBBY3Rpb25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cclxuXHJcbiAgICAgIDwhLS0gTW9iaWxlIE1lbnUgVG9nZ2xlIChDaGVja2JveCBIYWNrKSAtLT5cclxuICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J21vYmlsZS1oZWFkZXItbGVmdC1zaWRlJzogc2NyZWVuV2lkdGggPD0gNDc1fVwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJtb2JpbGUtbWVudS1jaGVja2JveFwiIGNsYXNzPVwibW9iaWxlLW1lbnUtYnRuXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIlxyXG4gICAgICAgICAgZGF0YS1icy10YXJnZXQ9XCIjb2ZmY2FudmFzUmlnaHRcIiBhcmlhLWNvbnRyb2xzPVwib2ZmY2FudmFzUmlnaHRcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgIDxsaW5lIHgxPVwiNFwiIHkxPVwiMTJcIiB4Mj1cIjIwXCIgeTI9XCIxMlwiPjwvbGluZT5cclxuICAgICAgICAgICAgPGxpbmUgeDE9XCI0XCIgeTE9XCI2XCIgeDI9XCIyMFwiIHkyPVwiNlwiPjwvbGluZT5cclxuICAgICAgICAgICAgPGxpbmUgeDE9XCI0XCIgeTE9XCIxOFwiIHgyPVwiMjBcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgPCEtLSBMb2dvIFNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJsb2dvXCIgKGNsaWNrKT1cIiFlZGl0ID8gZ29Ub0hvbWUoKSA6ICcnXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgYWx0PVwiTG9nb1wiIGNsYXNzPVwibG9nby1pbWdcIiBbd2lkdGhdPVwiY29udGVudD8ubG9nbz8uc2l6ZSAgKyAxNVwiXHJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiY29udGVudD8ubG9nbz8uc2l6ZVwiPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0UGx1c2xvZ29cIiAoY2xpY2spPVwiIWVkaXQgPyBnb1RvSG9tZSgpIDogJydcIiAqbmdJZj1cIiFjb250ZW50Py5sb2dvPy5pc0ltYWdlIFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8uaXNUZXh0IFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8uaXNJY29uIFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8udXJsXCI+XHJcblxyXG4gICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiY29udGVudD8ubG9nbz8udGV4dD8udXJsXCIgYWx0PVwiSWNvblwiIGNsYXNzPVwibG9nby1pY29uXCJcclxuICAgICAgICAgICAgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemUgKyAxNVwiIFtoZWlnaHRdPVwiY29udGVudD8ubG9nbz8uc2l6ZVwiPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9nby10ZXh0XCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiICpuZ0lmPVwic2NyZWVuV2lkdGggPiA0NzVcIj5cclxuICAgICAgICAgICAge3sgY29udGVudD8uc2l0ZU5hbWU/LnZhbHVlIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImxvZ29cIiAoY2xpY2spPVwiIWVkaXQgPyBnb1RvSG9tZSgpIDogJydcIiAqbmdJZj1cIiFjb250ZW50Py5sb2dvPy5pc0ltYWdlIFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8uaXNUZXh0IFxyXG4gICAgICAgICAgJiYgIWNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvblwiPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9nby1tYWluXCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPlxyXG4gICAgICAgICAgICB7eyBjb250ZW50Py5zaXRlTmFtZT8udmFsdWUgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTZWFyY2ggQmFyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNDc1ICYmIGNvbnRlbnQ/LnNob3dTZWFyY2hCYXIgJiYgZGF0YT8uc3R5bGVzPy5tZW51VHlwZSAhPT0gJ0RST1BET1dOX01FTlUnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1iYXJcIj5cclxuICAgICAgICAgIDwhLS0gU2VhcmNoIEljb24gU1ZHIC0tPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwic2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB5MT1cIjIxXCIgeDI9XCIxNi42NVwiIHkyPVwiMTYuNjVcIj48L2xpbmU+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGZvciBpdGVtXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwid2FpdEJlZm9yZVNlYXJjaCgpXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gRHJvcGRvd24gbWVudSBzdHlsZSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX21lbnVcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNDc1ICYmIGRhdGE/LnN0eWxlcz8ubWVudVR5cGUgPT09ICdEUk9QRE9XTl9NRU5VJ1wiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwic2hvd0xpc3QgPSBmYWxzZTsgc2VsZWN0ZWRDYXRlZ29yeSA9IG51bGxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGQtbmF2XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGQtdGFiLXdyYXBcIiAqbmdGb3I9XCJsZXQgZWxlIG9mIG1lZ2FNZW51XCIgKG1vdXNlZW50ZXIpPVwic2V0Q2hpbGRNZW51KGVsZSlcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkZC10YWJcIiBbY2xhc3MuZGQtdGFiLWFjdGl2ZV09XCJzaG93TGlzdCAmJiBzZWxlY3RlZENhdGVnb3J5ID09PSBlbGU/LmNoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVkaXJlY3Rpb25zT2ZNZW51KGVsZSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tlbGU/LmxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjIwcHg7IGhlaWdodDoyMHB4XCIgY2xhc3M9XCJ0YWItYXJyb3dcIiAqbmdJZj1cImVsZT8uY2hpbGRyZW4/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzMzNDk1MmMxNzc2ODY2NDMxODIxZHJvcGRvd24tYXJyb3ctc3ZncmVwby1jb20uc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImRyb3Bkb3duIGFycm93XCI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkLXBhbmVsXCIgKm5nSWY9XCJzaG93TGlzdCAmJiBzZWxlY3RlZENhdGVnb3J5ID09PSBlbGU/LmNoaWxkcmVuICYmIGVsZT8uY2hpbGRyZW4/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZC1pdGVtXCIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGVsZT8uY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjaGlsZD8uY2hpbGRyZW4/Lmxlbmd0aCA/IHJlZGlyZWN0aW9uc09mTWVudShjaGlsZCkgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7Y2hpbGQ/LmxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRkLWl0ZW0tYXJyb3dcIiAqbmdJZj1cImNoaWxkPy5jaGlsZHJlbj8ubGVuZ3RoXCI+JiM4MjUwOzwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGQtc3VibWVudVwiICpuZ0lmPVwiY2hpbGQ/LmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkLXN1Yi1pdGVtXCIgKm5nRm9yPVwibGV0IHN1YiBvZiBjaGlsZD8uY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdGlvbnNPZk1lbnUoc3ViKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7c3ViPy5sYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8IS0tIFJpZ2h0IEFjdGlvbnMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWFjdGlvbnNcIj5cclxuICAgICAgICBcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uc3R5bGVzPy5tZW51VHlwZSA9PT0gJ0RST1BET1dOX01FTlUnICYmIHNjcmVlbldpZHRoID4gNDc1ICYmIGNvbnRlbnQ/LnNob3dTZWFyY2hCYXJcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmsgaWNvbi1vbmx5IGRyb3Bkb3duLXNlYXJjaC10b2dnbGVcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duRGVza3RvcFNlYXJjaCA9ICFzaG93RHJvcGRvd25EZXNrdG9wU2VhcmNoXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRvZ2dsZSBzZWFyY2hcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHkxPVwiMjFcIiB4Mj1cIjE2LjY1XCIgeTI9XCIxNi42NVwiPjwvbGluZT5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZUF2YWlhYmxlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1saW5rIHN0b3JlLWxpbmtcIiAobW91c2VlbnRlcik9XCJzaG93UGluY29kZUlucHV0ID0gdHJ1ZTtzaG93TG9naW4gPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWdldFBpbmNvZGVcIj5cclxuICAgICAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cIm5vbmVcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNOC41IDAuNWMtMy4wMzIgMC01LjUgMi40NjctNS41IDUuNSAwIDQuMzczIDQuOTEzIDEwLjA4NiA1LjEyMiAxMC4zMjhsMC4zNzggMC40MzUgMC4zNzgtMC40MzZjMC4yMDktMC4yNDEgNS4xMjItNS45NTQgNS4xMjItMTAuMzI3IDAtMy4wMzMtMi40NjgtNS41LTUuNS01LjV6TTguNSAxNS4yMTVjLTEuMTQ2LTEuNDI0LTQuNS01Ljg3OS00LjUtOS4yMTUgMC0yLjQ4MSAyLjAxOS00LjUgNC41LTQuNXM0LjUgMi4wMTkgNC41IDQuNWMwIDMuMzMzLTMuMzU0IDcuNzkxLTQuNSA5LjIxNXpNOC41IDMuMTM5Yy0xLjY1NCAwLTMgMS4zNDYtMyAzczEuMzQ2IDMgMyAzIDMtMS4zNDYgMy0zLTEuMzQ2LTMtMy0zek04LjUgOC4xMzljLTEuMTAzIDAtMi0wLjg5Ny0yLTJzMC44OTctMiAyLTIgMiAwLjg5NyAyIDItMC44OTcgMi0yIDJ6XCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAwMDAwXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCJcclxuICAgICAgICAgICAgICBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgZD1cIk0zNDEuNDc2IDMzOC4yODVjNTQuNDgzLTg1LjQ5MyA0Ny42MzQtNzQuODI3IDQ5LjIwNC03Ny4wNTZDNDEwLjUxNiAyMzMuMjUxIDQyMSAyMDAuMzIyIDQyMSAxNjYgNDIxIDc0Ljk4IDM0Ny4xMzkgMCAyNTYgMCAxNjUuMTU4IDAgOTEgNzQuODMyIDkxIDE2NmMwIDM0LjMgMTAuNzA0IDY4LjA5MSAzMS4xOSA5Ni40NDZsNDguMzMyIDc1Ljg0QzExOC44NDcgMzQ2LjIyNyAzMSAzNjkuODkyIDMxIDQyMmMwIDE4Ljk5NSAxMi4zOTggNDYuMDY1IDcxLjQ2MiA2Ny4xNTlDMTQzLjcwNCA1MDMuODg4IDE5OC4yMzEgNTEyIDI1NiA1MTJjMTA4LjAyNSAwIDIyNS0zMC40NzIgMjI1LTkwIDAtNTIuMTE3LTg3Ljc0NC03NS43NTctMTM5LjUyNC04My43MTV6bS0xOTQuMjI3LTkyLjM0YTE1LjU3IDE1LjU3IDAgMCAwLS41MTctLjc1OEMxMjkuNjg1IDIyMS43MzUgMTIxIDE5My45NDEgMTIxIDE2NmMwLTc1LjAxOCA2MC40MDYtMTM2IDEzNS0xMzYgNzQuNDM5IDAgMTM1IDYxLjAwOSAxMzUgMTM2IDAgMjcuOTg2LTguNTIxIDU0LjgzNy0yNC42NDYgNzcuNjcxLTEuNDQ1IDEuOTA2IDYuMDk0LTkuODA2LTExMC4zNTQgMTcyLjkxOEwxNDcuMjQ5IDI0NS45NDV6TTI1NiA0ODJjLTExNy45OTQgMC0xOTUtMzQuNjgzLTE5NS02MCAwLTE3LjAxNiAzOS41NjgtNDQuOTk1IDEyNy4yNDgtNTUuOTAxbDU1LjEwMiA4Ni40NjNhMTQuOTk4IDE0Ljk5OCAwIDAgMCAyNS4yOTggMGw1NS4xMDEtODYuNDYzQzQxMS40MzEgMzc3LjAwNSA0NTEgNDA0Ljk4NCA0NTEgNDIyYzAgMjUuMTAyLTc2LjMxMyA2MC0xOTUgNjB6XCI+XHJcbiAgICAgICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTI1NiA5MWMtNDEuMzU1IDAtNzUgMzMuNjQ1LTc1IDc1czMzLjY0NSA3NSA3NSA3NSA3NS0zMy42NDUgNzUtNzUtMzMuNjQ1LTc1LTc1LTc1em0wIDEyMGMtMjQuODEzIDAtNDUtMjAuMTg3LTQ1LTQ1czIwLjE4Ny00NSA0NS00NSA0NSAyMC4xODcgNDUgNDUtMjAuMTg3IDQ1LTQ1IDQ1elwiPlxyXG4gICAgICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0b3JlLXRleHRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+RW50ZXIgUGluY29kZTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGluayBzdG9yZS1saW5rXCIgKG1vdXNlZW50ZXIpPVwic2hvd1BpbmNvZGVJbnB1dCA9IHRydWU7O3Nob3dMb2dpbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiZ2V0UGluY29kZSAmJiBnZXRQaW5jb2RlLmxlbmd0aCA9PSA2XCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBkPVwibTIgNyA0LjQxLTQuNDFBMiAyIDAgMCAxIDcuODMgMmg4LjM0YTIgMiAwIDAgMSAxLjQyLjU5TDIyIDdcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk00IDEydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi04XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgMjJ2LTRhMiAyIDAgMCAwLTItMmgtMmEyIDIgMCAwIDAtMiAydjRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDdoMjBcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjIgN3YzYTIgMiAwIDAgMS0yIDJ2MGEyLjcgMi43IDAgMCAxLTEuNTktLjYzLjcuNyAwIDAgMC0uODIgMEEyLjcgMi43IDAgMCAxIDE2IDEyYTIuNyAyLjcgMCAwIDEtMS41OS0uNjMuNy43IDAgMCAwLS44MiAwQTIuNyAyLjcgMCAwIDEgMTIgMTJhMi43IDIuNyAwIDAgMS0xLjU5LS42My43LjcgMCAwIDAtLjgyIDBBMi43IDIuNyAwIDAgMSA4IDEyYTIuNyAyLjcgMCAwIDEtMS41OS0uNjMuNy43IDAgMCAwLS44MiAwQTIuNyAyLjcgMCAwIDEgNCAxMnYwYTIgMiAwIDAgMS0yLTJWN1wiPlxyXG4gICAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcmUtdGV4dFwiIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIj57e1wiRGVsaXZlcmluZyB0bzogXCIgK1xyXG4gICAgICAgICAgICAgIGdldFBpbmNvZGV9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBpbmNvZGUtY29udGFpbmVyIHAtM1wiICpuZ0lmPVwic2hvd1BpbmNvZGVJbnB1dFwiIChtb3VzZWxlYXZlKT1cInNob3dQaW5jb2RlSW5wdXQgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBtYi0yIGYtMTggZnctYm9sZFwiPlxyXG4gICAgICAgICAgICAgIFlvdXIgUElOIENvZGUgdW5sb2Nrc1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHRleHQtY2VudGVyIGYtMTQgcGluY29kZS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgRmFzdGVzdCBkZWxpdmVyeSBkYXRlLCBUcnktYXQtSG9tZSBhdmFpbGFiaWxpdHksXHJcbiAgICAgICAgICAgICAgTmVhcmVzdCBzdG9yZSBhbmQgSW4tc3RvcmUgZGVzaWduIVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG10LTIgYnItNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHB4LTNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwicGluRXJyb3JcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiUGluY29kZVwiIGFyaWEtbGFiZWw9XCJQaW5jb2RlXCIgWyhuZ01vZGVsKV09XCJwaW5jb2RlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy03NSBwLTBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc3ViLXRleHQgZi0xMSB3LTI1IHRleHQtZW5kIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNldFBpbmNvZGUoKVwiPlNVQk1JVDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXQtMiBmLTExXCIgKm5nSWY9XCJwaW5FcnJvclwiPlxyXG4gICAgICAgICAgICAgIFBsZWFzZSBlbnRlciBhIHZhbGlkIHBpbmNvZGVcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGluayBpY29uLW9ubHkgbG9naW4tYnRuXCIgKm5nSWY9XCIhbG9nZ2VkSW5cIlxyXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd0xvZ2luID0gdHJ1ZTtzaG93UGluY29kZUlucHV0ID0gZmFsc2VcIiAoY2xpY2spPVwic2hvd0xvZ2luID0gIXNob3dMb2dpblwiPlxyXG4gICAgICAgICAgPCEtLSBVc2VyIEljb24gU1ZHIC0tPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjdcIiByPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1saW5rIGljb24tb25seVwiIChjbGljayk9XCJnb1RvQWNjb3VudCgnUFJPRklMRScpXCIgKm5nSWY9XCJsb2dnZWRJblwiPlxyXG4gICAgICAgICAgPCEtLSBVc2VyIEljb24gU1ZHIC0tPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjdcIiByPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1jb250YWluZXIgcC0zXCIgKm5nSWY9XCJzaG93TG9naW5cIiAobW91c2VsZWF2ZSk9XCJzaG93TG9naW4gPSBmYWxzZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgdGV4dC1jZW50ZXIgbWItMiBmLTE4IGZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgWW91ciBBY2NvdW50XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dCB0ZXh0LWNlbnRlciBmLTE0XCI+XHJcbiAgICAgICAgICAgIEFjY2VzcyBhY2NvdW50ICYgbWFuYWdlIHlvdXIgb3JkZXJzLlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWNvbnRhaW5lciB3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBnYXAtM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnb1RvQWNjb3VudCgnU0lHTlVQJylcIiBjbGFzcz1cInctNTAgdGV4dC1jZW50ZXIgc2lnbi1idG4gYm9yZGVyLTBcIlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCcgOiBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50QmFja2dyb3VuZFR5cGUgPT0gJ1NvbGlkJyA/ICAgYWNjZW50Q29sb3IgOiAnbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCcgKyBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3IgKyAnIDAlJyArICcsJyArIGJhY2tncm91bmRJbmZvPy5zZWNvbmRhcnlBY2NlbnRDb2xvciArJyAxMDAlJyArICcpJ31cIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIj5TaWduIFVwPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdvVG9BY2NvdW50KCdMT0dJTicpXCIgY2xhc3M9XCJ3LTUwIHRleHQtY2VudGVyIHNpZ24tYnRuXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCIgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiPkxvZyBJbjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmsgaWNvbi1vbmx5IGljb24tY29udGFpbmVyIHdpc2hsaXN0LWljb25cIiAoY2xpY2spPVwiZ29Ub1dpc2hsaXN0KClcIj5cclxuICAgICAgICAgIDwhLS0gSGVhcnQgSWNvbiBTVkcgLS0+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTkgMTRjMS40OS0xLjQ2IDMtMy4yMSAzLTUuNUE1LjUgNS41IDAgMCAwIDE2LjUgM2MtMS43NiAwLTMgLjUtNC41IDItMS41LTEuNS0yLjc0LTItNC41LTJBNS41IDUuNSAwIDAgMCAyIDguNWMwIDIuMyAxLjUgNC4wNSAzIDUuNWw3IDdaXCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50LWJhZGdlXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJhY2NlbnRDb2xvclwiIFtzaW1wb0NvbG9yXT1cImFjY2VudENvbG9yXCI+Mjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1saW5rIGljb24tb25seSBpY29uLWNvbnRhaW5lciBjYXJ0LWljb25cIiAoY2xpY2spPVwiZ29Ub0NhcnQoKVwiPlxyXG4gICAgICAgICAgPCEtLSBTaG9wcGluZyBCYWcgSWNvbiBTVkcgLS0+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTYgMiAzIDZ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjZsLTMtNFpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyA2aDE4XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDEwYTQgNCAwIDAgMS04IDBcIj48L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnQtYmFkZ2VcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImFjY2VudENvbG9yXCIgW3NpbXBvQ29sb3JdPVwiYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImdldENhcnRJdGVtc0NvdW50XCI+e3tnZXRDYXJ0SXRlbXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXNlYXJjaC1leHBhbmRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJkYXRhPy5zdHlsZXM/Lm1lbnVUeXBlID09PSAnRFJPUERPV05fTUVOVScgJiYgc2NyZWVuV2lkdGggPiA0NzUgJiYgY29udGVudD8uc2hvd1NlYXJjaEJhciAmJiBzaG93RHJvcGRvd25EZXNrdG9wU2VhcmNoXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tc2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjhcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeTE9XCIyMVwiIHgyPVwiMTYuNjVcIiB5Mj1cIjE2LjY1XCI+PC9saW5lPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZm9yLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwid2FpdEJlZm9yZVNlYXJjaCgpXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1zZWFyY2gtY2xvc2VcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duRGVza3RvcFNlYXJjaCA9IGZhbHNlXCIgYXJpYS1sYWJlbD1cIkNsb3NlIHNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMThcIiB5MT1cIjZcIiB4Mj1cIjZcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiNlwiIHkxPVwiNlwiIHgyPVwiMThcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiICpuZ0lmPVwic2NyZWVuV2lkdGggPD0gNDc1ICYmIGNvbnRlbnQ/LnNob3dTZWFyY2hCYXIgJiYgZGF0YT8uc3R5bGVzPy5tZW51VHlwZSAhPT0gJ0RST1BET1dOX01FTlUnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyXCI+XHJcbiAgICAgICAgPCEtLSBTZWFyY2ggSWNvbiBTVkcgLS0+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjhcIj48L2NpcmNsZT5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB5MT1cIjIxXCIgeDI9XCIxNi42NVwiIHkyPVwiMTYuNjVcIj48L2xpbmU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZm9yIGl0ZW1cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJ3YWl0QmVmb3JlU2VhcmNoKClcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaFwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2hlYWRlcj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
500
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9oZWFkZXItc2VjdGlvbi9oZWFkZXItc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2hlYWRlci1zZWN0aW9uL2hlYWRlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFFdEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBRXBHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFHMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUd2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7QUErQm5FLE1BQU0sT0FBTyxzQkFBc0I7SUF3QmpDLFlBQ21CLGFBQTRCLEVBQzVCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixTQUFvQixFQUNwQixjQUFxQyxFQUM5QyxXQUF3QixFQUN4QixZQUEyQixFQUNKLE9BQW9CO0lBQ25ELG1DQUFtQzs7UUFSbEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUM5QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUNKLFlBQU8sR0FBUCxPQUFPLENBQWE7UUEzQjVDLFNBQUksR0FBYSxJQUFJLENBQUM7UUFHeEIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFJL0IsVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QixrQkFBYSxHQUFHLFdBQVcsQ0FBQTtRQUMzQixpQkFBWSxHQUFXLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtRQUM1QyxpQ0FBaUM7UUFDakMsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3Qix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDN0IscUJBQWdCLEdBQXdCLElBQUksQ0FBQztRQXVGcEQsc0JBQWlCLEdBQVksS0FBSyxDQUFBO1FBNENsQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFVbkMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUMzQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQXlCMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFnQzdCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBK0UvQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBYzVCLGFBQVEsR0FBWSxLQUFLLENBQUE7UUFDekIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFJakMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUF3Qi9CLG9CQUFlLEdBQVksS0FBSyxDQUFBO1FBSWhDLFdBQU0sR0FBRyxNQUFNLENBQUE7UUFpQmYscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLFlBQU8sR0FBUSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckQsZUFBVSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBVzFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFrQjNCLG9CQUFlLEdBQVE7WUFDckI7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osUUFBUSxFQUFFLHlFQUF5RTtnQkFDbkYsTUFBTSxFQUFFLEtBQUs7YUFDZDtZQUNEO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSx1RUFBdUU7Z0JBQ2pGLE1BQU0sRUFBRSxLQUFLO2FBQ2Q7WUFDRDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixRQUFRLEVBQUUsZ0hBQWdIO2dCQUMxSCxNQUFNLEVBQUUsS0FBSzthQUNkO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFFBQVEsRUFBRSx3RUFBd0U7Z0JBQ2xGLE1BQU0sRUFBRSxLQUFLO2FBQ2Q7WUFDRDtnQkFDRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsUUFBUSxFQUFFLDJFQUEyRTtnQkFDckYsTUFBTSxFQUFFLEtBQUs7YUFDZDtZQUNEO2dCQUNFLElBQUksRUFBRSxXQUFXO2dCQUNqQixRQUFRLEVBQUUseUVBQXlFO2dCQUNuRixNQUFNLEVBQUUsS0FBSzthQUNkO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFFBQVEsRUFBRSwwRUFBMEU7Z0JBQ3BGLE1BQU0sRUFBRSxLQUFLO2FBQ2Q7U0FDRixDQUFBO1FBS0QsYUFBUSxHQUFRLEVBQUUsQ0FBQTtRQW5aaEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFpQixDQUFDO0lBQ2xELENBQUM7SUFDRCxXQUFXLENBQUMsVUFBZTtRQUN6QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFVBQVUsSUFBSSxRQUFRLElBQUksVUFBVSxJQUFJLE9BQU87Z0JBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztRQUVkLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsT0FBTyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBQ0Qsd0JBQXdCO0lBQ3hCLG9DQUFvQztJQUVwQyx1QkFBdUI7SUFDdkIsOEJBQThCO0lBQzlCLHNDQUFzQztJQUN0QyxxREFBcUQ7SUFFckQsZ0NBQWdDO0lBQ2hDLDJFQUEyRTtJQUUzRSx1Q0FBdUM7SUFDdkMsbUNBQW1DO0lBQ25DLElBQUk7SUFDSixZQUFZO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0csQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXLENBQUMsS0FBVSxFQUFFLElBQVk7UUFDbEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUlELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQixzRUFBc0U7UUFDdEUsbUVBQW1FO1FBQ25FLCtFQUErRTtRQUUvRSwwQkFBMEI7UUFDMUIsa0NBQWtDO1FBQ2xDLGdCQUFnQjtRQUNoQixNQUFNO1FBQ04sS0FBSztRQUNMLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDeEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ1IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7WUFDeEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDN0QsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBTUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7UUFDL0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFDRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxrQkFBa0I7WUFDcEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBSUQsWUFBWSxDQUFDLE1BQWU7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLFlBQVk7WUFDdkQsT0FBTztRQUVULElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxVQUFVLEdBQXlCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMxSyxDQUFDO0lBQ0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUM7SUFDbEwsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDO0lBQ3JNLENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQVk7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBSUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDakMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNwQixvREFBb0Q7UUFDcEQsOENBQThDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTyxDQUFDLE1BQVc7UUFDakIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBVztRQUNuQixNQUFNLElBQUksR0FBYyxFQUFFLENBQUM7UUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixNQUFNLElBQUksR0FBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBVyxDQUFDO1FBQ3JELElBQUksSUFBSTtZQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxLQUFLLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksSUFBSSxHQUFVLEVBQUUsQ0FBQTtRQUNwQixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUk7Z0JBQ0YsTUFBTTtnQkFDTixxQkFBcUI7Z0JBQ3JCLE1BQU07Z0JBQ04sVUFBVTtnQkFDVixjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsVUFBVTtnQkFDVixNQUFNO2dCQUNOLHNCQUFzQjtnQkFDdEIsZUFBZTtnQkFDZix5QkFBeUI7YUFDMUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLFNBQVM7WUFDWCxDQUFDO1lBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEIsS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUlELHFDQUFxQztJQUNyQyxxQkFBcUI7SUFDckIsNENBQTRDO0lBQzVDLElBQUk7SUFDSixRQUFRO1FBQ04sTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsa0NBQWtDO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFeEQsT0FBTyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDO0lBT0QsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDO1lBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQTtZQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDO1lBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3hDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELHNCQUFzQjtRQUNwQixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUN4QyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqSSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFRLEVBQUUsSUFBUztRQUNuQyxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuSyxDQUFDO1FBQ0QsSUFBSSxJQUFJLElBQUksWUFBWSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pKLENBQUM7UUFDRCxJQUFJLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUcsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBTUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFJRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFZLEVBQUUsT0FBZTtRQUNuQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3BELENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDMUMsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsS0FBSyxHQUFHLElBQUksUUFBUSxLQUFLLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBdUNELGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFRO1FBRXpCLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixxREFBcUQ7WUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUdILENBQUM7SUFFRCxZQUFZLENBQUMsR0FBUTtRQUNuQixJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDOytHQXhkVSxzQkFBc0IseU5BZ0N2QixhQUFhO21HQWhDWixzQkFBc0IsOFpDN0RuQyxvK2lEQW15QmMsaW5lRDd2QlYsWUFBWSxpeEJBQ1osb0JBQW9CLHNNQUNwQixVQUFVLG1EQUNWLE9BQU8sMklBQ1AsNEJBQTRCLHNLQUM1QixXQUFXLCttQkFDWCxzQkFBc0IseUpBQ3RCLG1CQUFtQiwwR0FDbkIsbUJBQW1CLG1GQUNuQixjQUFjLGdGQUNkLGdCQUFnQixxRkFDaEIsb0JBQW9CLHFHQUNwQixjQUFjLGdGQUNkLG9CQUFvQiw4QkFDcEIsZUFBZSwyTkFDZixhQUFhLCtCQUNiLDBCQUEwQiwyR0FDMUIsbUJBQW1COzs0RkFNVixzQkFBc0I7a0JBM0JsQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCw0QkFBNEI7d0JBQzVCLFdBQVc7d0JBQ1gsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3FCQUNwQjs7MEJBb0NFLE1BQU07MkJBQUMsYUFBYTt5Q0EvQmQsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUN1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFpRzNCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUV6QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhlYWRlckNvbnRlbnRNb2RlbCwgSGVhZGVyU2VjdGlvbk1vZGVsLCBIZWFkZXJTdHlsZU1vZGVsIH0gZnJvbSAnLi9oZWFkZXItc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNpbXBvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvc2ltcG8tYnV0dG9uL3NpbXBvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE5hdmJhckJ1dHRvbkVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uL2VsZW1lbnRzL25hdmJhci1idXR0b24tZWxlbWVudC9uYXZiYXItYnV0dG9uLWVsZW1lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi9jb21wb25lbnRzL2hvdmVyLWVsZW1lbnRzL2hvdmVyLWVsZW1lbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGlvbk1vZGVsLCBCYWNrZ3JvdW5kTW9kZWwsIExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgQ29sb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9TdGlja3lEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3RpY2t5LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbCc7XHJcbmltcG9ydCB7IEdlbmRlckljb24gfSBmcm9tICcuLi8uLi9waXBlcy9nZW5kZXIucGlwZSc7XHJcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgQ2FydENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zZWN0aW9ucy9jYXJ0L2NhcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSGVhZGVyX1R5cGUsIFByb2R1Y3RDYXJkVGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBNb3ZpbmdUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VjdGlvbnMvbW92aW5nLXRleHQvbW92aW5nLXRleHQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTW92aW5nVGV4dE1vZGFsIH0gZnJvbSAnLi4vbW92aW5nLXRleHQvbW92aW5nLXRleHQubW9kYWwnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnRva2VuJztcclxuaW1wb3J0IHsgU3RvcmFnZUxpa2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLWxpa2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8taGVhZGVyLXNlY3Rpb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICBHZW5kZXJJY29uLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE5hdmJhckJ1dHRvbkVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEhvdmVyRWxlbWVudHNDb21wb25lbnQsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFNpbXBvU3RpY2t5RGlyZWN0aXZlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICBNYXRCb3R0b21TaGVldE1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdE1lbnVNb2R1bGUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIE1vdmluZ1RleHRDb21wb25lbnQsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZGVyLXNlY3Rpb24uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlclNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBIZWFkZXJTZWN0aW9uTW9kZWw7XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudDogYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuID0gdHJ1ZTtcclxuICBAVmlld0NoaWxkKFwiY2hpbGRDb250YWluZXJcIikgY2hpbGRDb250YWluZXI6IGFueTtcclxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgcHVibGljIHNjcm9sbFZhbHVlOiBudW1iZXIgPSAwO1xyXG4gIGNvbnRlbnQ/OiBIZWFkZXJDb250ZW50TW9kZWwgfCBhbnk7XHJcbiAgc3R5bGU/OiBIZWFkZXJTdHlsZU1vZGVsXHJcbiAgYWN0aW9uPzogQWN0aW9uTW9kZWxcclxuICBjb2xvciA9ICcjMDAwMDAwJztcclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHRoZW1lID0gUHJvZHVjdENhcmRUaGVtZTtcclxuICBIZWFkZXJTdHlsaW5nID0gSGVhZGVyX1R5cGVcclxuICBwYXJlbnRIZWlnaHQ6IG51bWJlciA9IDcwOyAvLyBEZWZhdWx0IGhlaWdodFxyXG4gIC8vIG1hdERpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xyXG4gIGN1cnJlbnRQbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgcGxhY2Vob2xkZXJJbmRleDogbnVtYmVyID0gMDtcclxuICBhbmltYXRlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuIHByaXZhdGUgX2V2ZW50U3Vic2NyaWJlcjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlXHJcbiAgICAvLyBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZUFsbERhdGEoKTtcclxuICB9XHJcbiAgc2VhcmNoQ2hhbmdlVGltZW91dDogYW55O1xyXG4gIHdhaXRCZWZvcmVTZWFyY2goKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hDaGFuZ2VUaW1lb3V0KTtcclxuICAgIHRoaXMuc2VhcmNoQ2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNlYXJjaFByb2R1Y3RzKCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuICBzZWFyY2hQcm9kdWN0cygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xpc3QnXSwgeyBxdWVyeVBhcmFtczogeyBzZWFyY2hUeHQ6IHRoaXMuc2VhcmNoVGV4dCB9IH0pO1xyXG4gIH1cclxuICBnb1RvRmF2KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvd2lzaGxpc3QnXSk7XHJcbiAgfVxyXG4gIGdldCBzdHlsZXNMYXlvdXQoKSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlPy5sYXlvdXQgfSBhcyBMYXlPdXRNb2RlbDtcclxuICB9XHJcbiAgZ29Ub0FjY291bnQocmVkaXJlY3RUbzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCkpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvZmlsZSddKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChyZWRpcmVjdFRvID09ICdTSUdOVVAnIHx8IHJlZGlyZWN0VG8gPT0gJ0xPR0lOJylcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IHJlZGlyZWN0VG86IHJlZGlyZWN0VG8gfSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBsb2dnZWRJbigpIHtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSlcclxuICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldFVzZXJOYW1lKCkge1xyXG4gICAgY29uc3QgdXNlciA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgcmV0dXJuIHVzZXI/LmNvbnRhY3QubmFtZTtcclxuICB9XHJcbiAgLy8gY2hhbmdlUGxhY2Vob2xkZXIoKSB7XHJcbiAgLy8gICB0aGlzLmFuaW1hdGVQbGFjZWhvbGRlciA9IHRydWU7XHJcblxyXG4gIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMucGxhY2Vob2xkZXJJbmRleCA9XHJcbiAgLy8gICAgICAgKHRoaXMucGxhY2Vob2xkZXJJbmRleCArIDEpICVcclxuICAvLyAgICAgICB0aGlzLnN0eWxlPy5zZWFyY2hCYXJQbGFjZWhvbGRlckxpc3QubGVuZ3RoO1xyXG5cclxuICAvLyAgICAgdGhpcy5jdXJyZW50UGxhY2Vob2xkZXIgPVxyXG4gIC8vICAgICAgIHRoaXMuc3R5bGU/LnNlYXJjaEJhclBsYWNlaG9sZGVyTGlzdFt0aGlzLnBsYWNlaG9sZGVySW5kZXhdLnZhbHVlO1xyXG5cclxuICAvLyAgICAgdGhpcy5hbmltYXRlUGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAvLyAgIH0sIDQwMCk7IC8vIGFuaW1hdGlvbiBkdXJhdGlvblxyXG4gIC8vIH1cclxuICBnb1RvV2lzaGxpc3QoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy93aXNobGlzdCddKTtcclxuICB9XHJcbiAgZ29Ub0NhcnQoKSB7XHJcbiAgICBpZiAoZmFsc2UpIHtcclxuICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihDYXJ0Q29tcG9uZW50LCB7IHdpZHRoOiAnMjh2dycsIHBhbmVsQ2xhc3M6ICdzaWRlcGFuZWwtY2xhc3MnLCBkYXRhOiB7IHdpbmRvdzogdHJ1ZSB9IH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2FydCddKTtcclxuICAgIH1cclxuICB9XHJcbiAgYXBwbHlGaWx0ZXIodmFsdWU6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICB2YWx1ZSA9IHZhbHVlWzBdPy5yZXBsYWNlKFwiIFwiLCBcIl9cIik7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9saXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgW3R5cGVdOiB2YWx1ZSB9IH0pO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcclxuICBvblNjcm9sbChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNjcm9sbFZhbHVlID0gd2luZG93LnNjcm9sbFk7XHJcbiAgICB0aGlzLmlzU2Nyb2xsZWQgPSB3aW5kb3cuc2Nyb2xsWSA+IDUwO1xyXG4gIH1cclxuICBtb3ZpbmdUZXh0PzogTW92aW5nVGV4dE1vZGFsXHJcbiAgdG9TaG93SW5KZXdlbGxlcnk6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGRpZmZlcjogYW55O1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZSA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5hY3Rpb24gPSB0aGlzLmRhdGE/LmFjdGlvbjtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChxUGFyYW0pID0+IHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gcVBhcmFtW1wic2VhcmNoVHh0XCJdO1xyXG4gICAgfSlcclxuICAgICB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG4gICAgLy8gdGhpcy5ldmVudFNlcnZpY2UuYWN0aXZhdGVTbWFydFNlYXJjaC5zdWJzY3JpYmUoKHJlczogYm9vbGVhbikgPT4ge1xyXG4gICAgLy8gICBpZiAodGhpcy5zdHlsZT8uc2VhcmNoQmFyUGxhY2Vob2xkZXJMaXN0Py5sZW5ndGggPiAwICYmIHJlcykge1xyXG4gICAgLy8gICAgIHRoaXMuY3VycmVudFBsYWNlaG9sZGVyID0gdGhpcy5zdHlsZT8uc2VhcmNoQmFyUGxhY2Vob2xkZXJMaXN0WzBdLnZhbHVlO1xyXG5cclxuICAgIC8vICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLmNoYW5nZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAvLyAgICAgfSwgMzAwMCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICBpZiAod2luZG93Py5sb2NhdGlvbj8ub3JpZ2luPy5pbmNsdWRlcygnY2FyYXRsYW5lJykgfHwgd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luPy5pbmNsdWRlcygnb3JyYScpKSB7XHJcbiAgICAgIHRoaXMudG9TaG93SW5KZXdlbGxlcnkgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFY29tbWVyY2VXZWJzaXRlKSB7XHJcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0hlYWRlcigpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0UGFyZW50SGVpZ2h0KClcclxuICAgIH0sIDMwMDApXHJcbiAgICB0aGlzLmNoZWNrUGFzc2Jvb2tBcHAoKTtcclxuXHJcbiAgICB0aGlzLl9ldmVudFN1YnNjcmliZXIgPSB0aGlzLl9ldmVudFNlcnZpY2UubWVudUxpc3Quc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0TWVudUl0ZW1zKCk7XHJcbiAgICB9KVxyXG4gICAgXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXRQYXJlbnRIZWlnaHQoKVxyXG4gICAgICB9LCAxMDAwKVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5jaGlsZENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcbiAgcGFzc2Jvb2tBcHBTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGVja1Bhc3Nib29rQXBwKCkge1xyXG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiSWQnKTtcclxuICAgIGNvbnN0IGJJZCA9IGRldGFpbHMgPz8gJyc7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLlBhc3Nib29rQXBwU3RhdHVzKGJJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5wYXNzYm9va0FwcFN0YXR1cyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHNob3dTZWFyY2hCYXJNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RHJvcGRvd25EZXNrdG9wU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNOYXZiYXJPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IDQ3NTtcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBnZXRTY3JlZW5TaXplKGV2ZW50PzogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG4gIGhlaWdodDogYW55XHJcbiAgZ2V0UGFyZW50SGVpZ2h0KCkge1xyXG4gICAgdGhpcy5oZWlnaHQgPSB0aGlzLmNoaWxkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxIZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5uZXh0Q29tcG9uZW50Py5zdHlsZXM/Lm1lcmdlKVxyXG4gICAgICB0aGlzLmV2ZW50U2VydmljZS5lbGVtZW50SGVpZ2h0LmVtaXQodGhpcy5oZWlnaHQpXHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLW1hcmdpbi10b3BcIiwgdGhpcy5oZWlnaHQgKyBcInB4XCIpXHJcbiAgfVxyXG4gIGdldCBnZXREcm9wZG93bkxpbmtzKCkge1xyXG4gICAgaWYgKHRoaXMuY29udGVudD8uZWNvbWxpbmtzICYmIHRoaXMuaXNFY29tbWVyY2VXZWJzaXRlKVxyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb250ZW50Py5lY29tbGlua3MpO1xyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuICBnZXQgaXNFY29tbWVyY2VXZWJzaXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8udHlwZSA9PSBcIkVfQ09NTUVSQ0VcIjtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5pc05hdmJhck9wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNob3dFZGl0b3JzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNob3dFZGl0VGFicyhpc1Nob3c6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2hvd0VkaXRvcnMgPSBpc1Nob3c7XHJcbiAgfVxyXG4gIGdvVG9Ib21lKCkge1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdSRVFVRVNUX0ZST00nKSA9PT0gJ0VfQ09NTUVSQ0UnKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycnXSk7XHJcbiAgfVxyXG4gIGdldCBpc0hlYWRlclN0aWNreSgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGE/LnN0eWxlcz8uc3RpY2t5O1xyXG4gIH1cclxuICBnZXQgYmFja2dyb3VuZEluZm8oKSB7XHJcbiAgICBsZXQgYmFja2dyb3VuZDogQmFja2dyb3VuZE1vZGVsIHwge30gPSB7fTtcclxuICAgIHRoaXMuZ2V0UGFyZW50SGVpZ2h0KCk7XHJcbiAgICByZXR1cm4gdGhpcy5uZXh0Q29tcG9uZW50Py5zdHlsZXM/Lm1lcmdlICYmIHRoaXMuc2Nyb2xsVmFsdWUgPT0gMCAmJiAhdGhpcy5pc01vYmlsZSA/IHsgLi4udGhpcy5uZXh0Q29tcG9uZW50LnN0eWxlcy5iYWNrZ3JvdW5kIH0gOiB7IC4uLnRoaXMuZGF0YT8uc3R5bGVzLmJhY2tncm91bmQgfTtcclxuICB9XHJcbiAgZ2V0IHNpbXBvQ29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXh0Q29tcG9uZW50Py5zdHlsZXM/Lm1lcmdlID8gKHRoaXMuc2Nyb2xsVmFsdWUgPiAwID8gdGhpcy5zdHlsZT8uYmFja2dyb3VuZC5jb2xvciA6IHRoaXMubmV4dENvbXBvbmVudC5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yKSA6IHRoaXMuc3R5bGU/LmJhY2tncm91bmQ/LmNvbG9yO1xyXG4gIH1cclxuICBnZXQgYWNjZW50Q29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXh0Q29tcG9uZW50Py5zdHlsZXM/Lm1lcmdlID8gKHRoaXMuc2Nyb2xsVmFsdWUgPiAwID8gdGhpcy5zdHlsZT8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiB0aGlzLm5leHRDb21wb25lbnQuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcikgOiB0aGlzLnN0eWxlPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcjtcclxuICB9XHJcbiAgZ2V0IGlzVHJhbnNwYXJlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZXh0Q29tcG9uZW50Py5zdHlsZXM/Lm1lcmdlICYmIHRoaXMuc2Nyb2xsVmFsdWUgPT0gMDtcclxuICB9XHJcbiAgcmVkaXJlY3RUbyhjb250ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5idXR0b25SZWRpcmVjdGlvbi5lbWl0KHsgZGF0YTogY29udGVudCB9KTtcclxuICB9XHJcblxyXG4gIHNob3dTZWFyY2hCYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGlzQ29tcG9uZW50TWVyZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmV4dENvbXBvbmVudD8uc3R5bGVzPy5tZXJnZTtcclxuICB9XHJcbiAgZWRpdFNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhblNob3dNb2JpbGVGb290ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0Vjb21tZXJjZVdlYnNpdGU7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd01vYmlsZUhvbWVJY29uKCkge1xyXG4gICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICByZXR1cm4gISh1cmwuaW5jbHVkZXMoXCJjYXJ0XCIpIHx8IHVybC5pbmNsdWRlcyhcInByb2ZpbGVcIikgfHwgdXJsLmluY2x1ZGVzKFwid2lzaGxpc3RcIikpO1xyXG4gIH1cclxuICBnZXQgZ2V0Q2FydEl0ZW1zQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFRvdGFsQ2FydEl0ZW1zO1xyXG4gIH1cclxuICBnZXQgZ2V0Q2FydFRvdGFsQW1vdW50KCkge1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5zdG9yYWdlU2VydmljZS5nZXRDYXJ0QW1vdW50KCkpO1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2FydEFtb3VudCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0Q2FydFRvdGFsQW1vdW50O1xyXG4gIH1cclxuICBnZXQgZ2V0SGVhZGVyU3R5bGluZygpOiBIZWFkZXJfVHlwZSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zdHlsZT8uc3R5bGluZztcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgNDc1O1xyXG4gIH1cclxuICBnZXRLZXlzKG9iamVjdDogYW55KTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iamVjdCk7XHJcbiAgfVxyXG4gIGdldFZhbHVlcyhvYmplY3Q6IGFueSk6IHVua25vd25bXSB7XHJcbiAgICBjb25zdCBrZXlzOiB1bmtub3duW10gPSBbXTtcclxuICAgIG9iamVjdC5mb3JFYWNoKChrZXk6IGFueSkgPT4ga2V5cy5wdXNoKE9iamVjdC52YWx1ZXMoa2V5KSkpO1xyXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KGtleXMpXTtcclxuICB9XHJcbiAgZ2V0IHVzZXJHZW5kZXIoKSB7XHJcbiAgICBjb25zdCB1c2VyID0gKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpIGFzIFVzZXIpO1xyXG4gICAgaWYgKHVzZXIpXHJcbiAgICAgIHJldHVybiB1c2VyLmdlbmRlcjtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldE5hdmJhckJ1dHRvbigpIHtcclxuICAgIGxldCBjb3VudDogbnVtYmVyID0gMDtcclxuICAgIGxldCBwYWdlOiBhbnlbXSA9IFtdXHJcbiAgICBmb3IgKGxldCBidXR0b24gb2YgdGhpcy5jb250ZW50Py5uYXZiYXJCdXR0b25zIHx8IFtdKSB7XHJcbiAgICAgIGlmIChbXHJcbiAgICAgICAgJ0hvbWUnLFxyXG4gICAgICAgICdQcm9kdWN0IERlc2NyaXB0aW9uJyxcclxuICAgICAgICAnQ2FydCcsXHJcbiAgICAgICAgJ1dpc2hsaXN0JyxcclxuICAgICAgICAnVXNlciBwcm9maWxlJyxcclxuICAgICAgICAnUHJvZHVjdCBMaXN0JyxcclxuICAgICAgICAnQ2hlY2tvdXQnLFxyXG4gICAgICAgICdBdXRoJyxcclxuICAgICAgICAnUGF5bWVudCBWZXJpZmljYXRpb24nLFxyXG4gICAgICAgICdMaXN0IENhdGVnb3J5JyxcclxuICAgICAgICAnQXV0aGVudGljYXRpb24gUmVxdWlyZWQnXHJcbiAgICAgIF0uaW5jbHVkZXMoYnV0dG9uLmxhYmVsKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY291bnQgPCA2ICYmIGJ1dHRvbi5zaG93SGVhZGVyKSB7XHJcbiAgICAgICAgcGFnZS5wdXNoKGJ1dHRvbik7XHJcbiAgICAgICAgY291bnQrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYWdlO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzU2Nyb2xsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgW10pXHJcbiAgLy8gb25XaW5kb3dTY3JvbGwoKSB7XHJcbiAgLy8gICB0aGlzLmlzU2Nyb2xsZWQgPSAgd2luZG93LnNjcm9sbFkgPiA1MDtcclxuICAvLyB9XHJcbiAgc2V0Q29sb3IoKSB7XHJcbiAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7IC8vIEFkanVzdCB0aGlzIHRocmVzaG9sZCBhcyBuZWVkZWRcclxuICAgIGNvbnN0IHIgPSBwYXJzZUludCh0aGlzLmJhY2tncm91bmRJbmZvLmFjY2VudENvbG9yLnNsaWNlKDEsIDMpLCAxNik7XHJcbiAgICBjb25zdCBnID0gcGFyc2VJbnQodGhpcy5iYWNrZ3JvdW5kSW5mby5hY2NlbnRDb2xvci5zbGljZSgzLCA1KSwgMTYpO1xyXG4gICAgY29uc3QgYiA9IHBhcnNlSW50KHRoaXMuYmFja2dyb3VuZEluZm8uYWNjZW50Q29sb3Iuc2xpY2UoNSwgNyksIDE2KTtcclxuICAgIGNvbnN0IGJyaWdodG5lc3MgPSAociAqIDI5OSArIGcgKiA1ODcgKyBiICogMTE0KSAvIDEwMDA7XHJcblxyXG4gICAgcmV0dXJuIGJyaWdodG5lc3MgPiB0aHJlc2hvbGQgPyAnIzAwMDAwMCcgOiAnI2ZmZmZmZic7XHJcbiAgfVxyXG4gIHNob3dMaXN0OiBib29sZWFuID0gZmFsc2VcclxuICBzaG93Q29sbGVjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjYXRlZ29yeUxpc3Q6IGFueTtcclxuICBjb2xsZWN0aW9uTGlzdDogYW55O1xyXG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IGFueTtcclxuICBzdG9yZUF2YWlhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ2V0Q2F0ZWdvcmllc0hlYWRlcigpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0hlYWRlckRhdGEoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVBdmFpYWJsZSA9IHJlcz8uZGF0YT8uc3RvcmVBdmFpbGFibGU7XHJcbiAgICAgIHRoaXMuc2NoZW1lQXZhaWxhYmxlID0gcmVzPy5kYXRhPy5zY2hlbWVzQXZhaWxhYmxlXHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gcmVzPy5kYXRhPy5jYXRlZ29yeURldGFpbHM7XHJcbiAgICAgIHRoaXMuY29sbGVjdGlvbkxpc3QgPSByZXM/LmRhdGE/Lml0ZW1Db2xsZWN0aW9ucztcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByZXN0cmljdEluUGFnZXMoKSB7XHJcbiAgICBsZXQgcGF0aG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XHJcbiAgICBpZiAocGF0aG5hbWUuaW5jbHVkZXMoJy9sb2dpbicpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXN0cmljdENhcnRCYXJJblBhZ2VzKCkge1xyXG4gICAgbGV0IHBhdGhuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgaWYgKHBhdGhuYW1lLmluY2x1ZGVzKCcvbG9naW4nKSB8fCBwYXRobmFtZS5pbmNsdWRlcygnL2NhcnQnKSB8fCBwYXRobmFtZS5pbmNsdWRlcygnL3dpc2hsaXN0JykgfHwgcGF0aG5hbWUuaW5jbHVkZXMoJy9kZXRhaWxzJykpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHNjaGVtZUF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgZ29Ub1N0b3JlcygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N0b3JlLWxpc3QnXSk7XHJcbiAgfVxyXG4gIE9iamVjdCA9IE9iamVjdFxyXG4gIGFwcGx5RmlsdGVyVG9MaXN0KG9iajogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGlmICh0eXBlID09ICdwcmljZScpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbGlzdCddLCB7IHF1ZXJ5UGFyYW1zOiB7IGNhdGVnb3J5OiB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5TmFtZSwgbWluUHJpY2U6IG9iaj8ubWluUHJpY2UsIG1heFByaWNlOiBvYmo/Lm1heFByaWNlLCBwYWdlTm86IDEgfSB9KTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICdjb2xsZWN0aW9uJykge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9saXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgY2F0ZWdvcnk6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlOYW1lLCBjb2xsZWN0aW9uczogb2JqPy5yZXBsYWNlQWxsKFwiIFwiLCAnXycpLCBwYWdlTm86IDEgfSB9KTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlID09ICdjb2xsZWN0aW9ucycpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbGlzdCddLCB7IHF1ZXJ5UGFyYW1zOiB7IGNvbGxlY3Rpb25zOiBvYmo/LnJlcGxhY2VBbGwoXCIgXCIsICdfJyksIHBhZ2VObzogMSB9IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyQnlDYXRlZ29yeSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xpc3QnXSwgeyBxdWVyeVBhcmFtczogeyBjYXRlZ29yeTogdGhpcy5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeU5hbWUsIHBhZ2VObzogMSB9IH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd1BpbmNvZGVJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBpbmNvZGU6IGFueSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdwaW5jb2RlJykgPz8gXCJcIjtcclxuICBnZXRQaW5jb2RlOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgncGluY29kZScpIHx8ICcnO1xyXG4gIHBpbkVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2V0UGluY29kZSgpIHtcclxuICAgIGlmICh0aGlzLnBpbmNvZGUgJiYgdGhpcy5waW5jb2RlPy5sZW5ndGggPT0gNikge1xyXG4gICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSgncGluY29kZScsIHRoaXMucGluY29kZSk7XHJcbiAgICAgIHRoaXMuZ2V0UGluY29kZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdwaW5jb2RlJykgfHwgJyc7XHJcbiAgICAgIHRoaXMucGluRXJyb3IgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGluRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0xvZ2luOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdvVG9TY2hlbWVzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvc2NoZW1lLWVucm9sbG1lbnQnXSk7XHJcbiAgfVxyXG5cclxuICBnZXRSR0JBKGJnQ29sb3I6IGFueSwgb3BhY2l0eTogbnVtYmVyKTogYW55IHtcclxuICAgIGNvbnN0IHIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDEsIDMpLCAxNik7XHJcbiAgICBjb25zdCBnID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgzLCA1KSwgMTYpO1xyXG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoNSwgNyksIDE2KTtcclxuICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke29wYWNpdHkgLyAxMDB9KWA7XHJcbiAgfVxyXG5cclxuICBzaG93Q2F0ZWdvcnlNb2JpbGVIZWFkZXIoKSB7XHJcbiAgICBjb25zdCBwYXRobmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcclxuICAgIHJldHVybiBwYXRobmFtZS5pbmNsdWRlcygnL2xpc3QnKSB8fCBwYXRobmFtZSA9PT0gJy8nIHx8IHBhdGhuYW1lID09PSAnJztcclxuICB9XHJcblxyXG4gIGJ5TWV0YWxBbmRTdG9uZTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiAnR29sZCcsXHJcbiAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4uY2FyYXRsYW5lLmNvbS9tZWRpYS9zdGF0aWMvaW1hZ2VzL3dlYi9tZW51LzIya3QtR29sZC0yeC5wbmcnLFxyXG4gICAgICBzdGF0dXM6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBuYW1lOiAnRGlhbW9uZCcsXHJcbiAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4uY2FyYXRsYW5lLmNvbS9tZWRpYS9zdGF0aWMvaW1hZ2VzL3dlYi9tZW51L0RpYW1vbmQtMXgucG5nJyxcclxuICAgICAgc3RhdHVzOiBmYWxzZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ1BlYXJsJyxcclxuICAgICAgaW1hZ2VVcmw6ICdodHRwczovL2Nkbi5jYXJhdGxhbmUuY29tL3N0YXRpYy9pbWFnZXMvZGlzY292ZXJ5L3Jlc3BvbnNpdmUtaGFtYnVyZ2VyLW1lbnUvcHJvZHVjdHMtYW5kLXNlcnZpY2VzL3BlYXJsLTF4LnBuZycsXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdHZW1zdG9uZScsXHJcbiAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4uY2FyYXRsYW5lLmNvbS9tZWRpYS9zdGF0aWMvaW1hZ2VzL3dlYi9tZW51L0dlbXN0b25lLTF4LnBuZycsXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdZZWxsb3cgR29sZCcsXHJcbiAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9jZG4uY2FyYXRsYW5lLmNvbS9tZWRpYS9zdGF0aWMvaW1hZ2VzL3dlYi9tZW51L1llbGxvdy1Hb2xkLTF4LnBuZycsXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6ICdSb3NlIEdvbGQnLFxyXG4gICAgICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmNhcmF0bGFuZS5jb20vbWVkaWEvc3RhdGljL2ltYWdlcy93ZWIvbWVudS9Sb3NlLUdvbGQtMXgucG5nJyxcclxuICAgICAgc3RhdHVzOiBmYWxzZVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgbmFtZTogJ1doaXRlIEdvbGQnLFxyXG4gICAgICBpbWFnZVVybDogJ2h0dHBzOi8vY2RuLmNhcmF0bGFuZS5jb20vbWVkaWEvc3RhdGljL2ltYWdlcy93ZWIvbWVudS93aGl0ZS1Hb2xkLTF4LnBuZycsXHJcbiAgICAgIHN0YXR1czogZmFsc2VcclxuICAgIH1cclxuICBdXHJcbiAgbmF2aWdhdGVMb2dpbigpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pXHJcbiAgfVxyXG5cclxuICBtZWdhTWVudTogYW55ID0gW11cclxuICBnZXRNZW51SXRlbXMoKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldE1lbnVJdGVtcyh0aGlzLmNvbnRlbnQ/Lm1lbnVJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICB0aGlzLm1lZ2FNZW51ID0gcmVzLmRhdGEuZGF0YSB8fCBbXTtcclxuICAgIH0sIGVyciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0aW9uc09mTWVudShlbGU6IGFueSkge1xyXG5cclxuICAgIGlmICghZWxlLnJlZGlyZWN0aW9uYWxVcmwgJiYgZWxlLnJlZGlyZWN0aW9uYWxVcmw/Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZWxlLnR5cGUgPT0gJ0hPTUVfUEFHRScpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycnXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7ZWxlLnJlZGlyZWN0aW9uYWxVcmx9YF0pO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGVsZS5yZWRpcmVjdGlvbmFsVXJsKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0Q2hpbGRNZW51KGVsZTogYW55KSB7XHJcbiAgICBpZiAoZWxlLmNoaWxkcmVuICYmIGVsZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0xpc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSBlbGUuY2hpbGRyZW47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dMaXN0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBbaWRdPVwiZGF0YT8uaWRcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lciB3LTEwMFwiIFtjbGFzcy56LWluZGV4LTEwXT1cIiFpc0hlYWRlclN0aWNreSAmJiBpc0NvbXBvbmVudE1lcmdlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb092ZXJsYXldPVwic3R5bGU/LmJhY2tncm91bmRcIiBbbmdDbGFzc109XCJ7J2JveC1zaGFkb3cnOiBpc0Vjb21tZXJjZVdlYnNpdGV9XCJcclxuICAgIFtjbGFzcy5tYXJnaW4tYm90dG9tXT1cImlzSGVhZGVyU3RpY2t5ICYmIGlzTW9iaWxlICYmIGNhdGVnb3J5TGlzdD8ubGVuZ3RoID09IDBcIj5cclxuICAgIDxkaXYgW3NpbXBvU3RpY2t5XT1cImlzSGVhZGVyU3RpY2t5XCIgW3NpbXBvQmFja2dyb3VuZF09XCJiYWNrZ3JvdW5kSW5mb1wiIGNsYXNzPVwidy0xMDBcIiAjY2hpbGRDb250YWluZXJcclxuICAgICAgW2NhdGVnb3J5SGVhZGVyXT1cImlzRWNvbW1lcmNlV2Vic2l0ZSAmJiBjYXRlZ29yeUxpc3Q/Lmxlbmd0aCA+IDAgJiYgIWlzTW9iaWxlICYmICFzaG93Q2F0ZWdvcnlNb2JpbGVIZWFkZXIoKVwiXHJcbiAgICAgIHNpbXBvSG92ZXIgW2NsYXNzLmJnLXRyYW5zcGFyZW50XT1cImlzQ29tcG9uZW50TWVyZ2VkICYmIHNjcm9sbFZhbHVlID09IDAgJiYgIWlzTW9iaWxlXCJcclxuICAgICAgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgW2NsYXNzLmhlYWRlci0tc2Nyb2xsZWRdPVwiZGF0YT8uc3R5bGVzPy5zaHJpbmtPblNjcm9sbCAmJiBpc0hlYWRlclN0aWNreSAmJiBzY3JvbGxWYWx1ZSA+IDAgJiYgIWVkaXRcIj5cclxuICAgICAgPCEtLSBbY2xhc3MuYmFja2dyb3VuZC1wb3NpdGlvbl09XCJpc0NvbXBvbmVudE1lcmdlZCAmJiBiYWNrZ3JvdW5kSW5mbz8uc2hvd0ltYWdlXCIgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uaGVhZGxpbmU/LmRpc3BsYXlcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNpbXBvLW1vdmluZy10ZXh0IFtlZGl0XT1cImZhbHNlXCIgW2RlbGV0ZV09XCJmYWxzZVwiIFtkYXRhXT1cImRhdGFcIj48L3NpbXBvLW1vdmluZy10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjEnICYmICFpc0Vjb21tZXJjZVdlYnNpdGVcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCJcclxuICAgICAgICBbc2ltcG9PdmVybGF5XT1cImJhY2tncm91bmRJbmZvXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlc0xheW91dFwiIFtpc0hlYWRlcl09XCJ0cnVlXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcjFUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInN0eWxlPy5zdHlsaW5nID09PSAnSGVhZGVyMicgJiYgIWlzRWNvbW1lcmNlV2Vic2l0ZVwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIlxyXG4gICAgICAgIFtzaW1wb092ZXJsYXldPVwiYmFja2dyb3VuZEluZm9cIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzTGF5b3V0XCIgW2lzSGVhZGVyXT1cInRydWVcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyMlRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIzJyAmJiAhaXNFY29tbWVyY2VXZWJzaXRlXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiXHJcbiAgICAgICAgW3NpbXBvT3ZlcmxheV09XCJiYWNrZ3JvdW5kSW5mb1wiIFtzaW1wb0xheW91dF09XCJzdHlsZXNMYXlvdXRcIiBbaXNIZWFkZXJdPVwidHJ1ZVwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXIzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjQnICYmICFpc0Vjb21tZXJjZVdlYnNpdGVcIiBbc3BhY2luZ0hvcml6b250YWxdPVwic3R5bGVzTGF5b3V0XCJcclxuICAgICAgICBbc2ltcG9PdmVybGF5XT1cImJhY2tncm91bmRJbmZvXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlc0xheW91dFwiIFtpc0hlYWRlcl09XCJ0cnVlXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcjRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb092ZXJsYXldPVwiYmFja2dyb3VuZEluZm9cIiAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZVwiXHJcbiAgICAgICAgW3NpbXBvTGF5b3V0XT1cInNjcmVlbldpZHRoID4gNDc1ID8gc3R5bGVzTGF5b3V0IDogdW5kZWZpbmVkXCIgW2lzSGVhZGVyXT1cInRydWVcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWNvbW1lcmNlX2hlYWRlclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG14LTIgbWItMiB3LTk2XCIgKm5nSWY9XCJpc01vYmlsZSAmJiBpc0Vjb21tZXJjZVdlYnNpdGUgJiYgIXJlc3RyaWN0Q2FydEJhckluUGFnZXMoKVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZm9yIGl0ZW1zXCIgYXJpYS1sYWJlbD1cIlNlYXJjaCBQcm9kdWN0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cIndhaXRCZWZvcmVTZWFyY2goKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcicgOiAnMXB4IHNvbGlkICcgKyBhY2NlbnRDb2xvcn1cIj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnIDogc3R5bGU/LmJhY2tncm91bmQ/LmFjY2VudEJhY2tncm91bmRUeXBlID09ICdTb2xpZCcgPyAgIGFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgc3R5bGU/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBzdHlsZT8uYmFja2dyb3VuZD8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKSd9XCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlICYmICFpc01vYmlsZSAmJiBkYXRhPy5zdHlsZXM/Lm1lbnVUeXBlID09PSAnTUVHQV9NRU5VJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXRlZ29yaWVzSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZSAmJiBpc01vYmlsZSAmJiBzaG93Q2F0ZWdvcnlNb2JpbGVIZWFkZXIoKVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlQ2F0ZWdvcnlIZWFkZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Vjb21tZXJjZVdlYnNpdGUgJiYgaXNNb2JpbGUgJiYgIXJlc3RyaWN0SW5QYWdlcygpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlRm9vdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyMVRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIxXCI+XHJcbiAgICA8ZGl2IFtjbGFzcy53LTE1XT1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2VcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvZ29TZWN0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgKm5nSWY9XCIhaXNNb2JpbGVcIiBbc3R5bGUud2lkdGguJV09XCJpc0Vjb21tZXJjZVdlYnNpdGUgPyA5NCA6ICcnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNFY29tbWVyY2VXZWJzaXRlID8gZWNvbW1lcmNlQnV0dG9uc1RlbXBsYXRlIDogbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIWlzRWNvbW1lcmNlV2Vic2l0ZSA/IGJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgKm5nSWY9XCJpc01vYmlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVjb21Qcm9maWxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXHJcbiAgICAgICAgYXJpYS1jb250cm9scz1cIm9mZmNhbnZhc1JpZ2h0XCI+bWVudTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyMlRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIxXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNSBhbGlnbi1jZW50ZXJcIiAqbmdJZj1cIiFpc01vYmlsZVwiIFtzdHlsZS53aWR0aC4lXT1cImlzRWNvbW1lcmNlV2Vic2l0ZSA/IDkzIDogJydcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIiFpc0Vjb21tZXJjZVdlYnNpdGUgPyBidXR0b25zVGVtcGxhdGUgOiBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc0Vjb21tZXJjZVdlYnNpdGUgPyBlY29tbWVyY2VCdXR0b25zVGVtcGxhdGUgOiBudWxsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNSBhbGlnbi1jZW50ZXJcIiBkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiIGRhdGEtYnMtdGFyZ2V0PVwiI29mZmNhbnZhc1JpZ2h0XCJcclxuICAgICAgYXJpYS1jb250cm9scz1cIm9mZmNhbnZhc1JpZ2h0XCIgKm5nSWY9XCJpc01vYmlsZVwiPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVjb21Qcm9maWxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiIFtjbGFzcy53LTE1XT1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2VcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvZ29TZWN0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXIzVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlcjFcIj5cclxuICAgIDxkaXYgW2NsYXNzLnctMTVdPVwiY29udGVudD8ubG9nbz8uaXNJbWFnZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFY29tbWVyY2VXZWJzaXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNFY29tbWVyY2VXZWJzaXRlID8gZWNvbW1lcmNlQnV0dG9uc1RlbXBsYXRlIDogbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIWlzRWNvbW1lcmNlV2Vic2l0ZSA/IGJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXHJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJvZmZjYW52YXNSaWdodFwiICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlY29tUHJvZmlsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPm1lbnU8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2hlYWRlcjRUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyMVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIWlzRWNvbW1lcmNlV2Vic2l0ZSA/IGJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlzRWNvbW1lcmNlV2Vic2l0ZSA/IGVjb21tZXJjZUJ1dHRvbnNUZW1wbGF0ZSA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0Vjb21tZXJjZVdlYnNpdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUxpbmtzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+IDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTUgYWxpZ24tY2VudGVyXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXHJcbiAgICAgIGFyaWEtY29udHJvbHM9XCJvZmZjYW52YXNSaWdodFwiICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgPG1hdC1pY29uIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIj5tZW51PC9tYXQtaWNvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRWNvbW1lcmNlV2Vic2l0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlY29tUHJvZmlsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIiBbY2xhc3Mudy0xNV09XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvZ29TZWN0aW9uVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgbXgtMVwiXHJcbiAgICAqbmdJZj1cIiFjb250ZW50Py5sb2dvPy5pc0ltYWdlIHx8ICFjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgKGNsaWNrKT1cIiFlZGl0ID8gZ29Ub0hvbWUoKSA6ICcnXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ubG9nbz8udGV4dD8uaXNJY29uICYmIGNvbnRlbnQ/LmxvZ28/LnRleHQ/LnVybFwiPlxyXG4gICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBhbHQ9XCJsb2dvXCIgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemUgKyA4MFwiIGxvYWRpbmc9XCJsYXp5XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLXNtYWxsXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy50ZXh0Py5pc1RleHRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+XHJcbiAgICAgIDxiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtbGctY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIiAoY2xpY2spPVwiZ29Ub0hvbWUoKVwiPiAtLT5cclxuICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgYWx0PVwibG9nb1wiIFtzdHlsZS53aWR0aC4lXT1cInNjcmVlbldpZHRoID4gNDc1IHx8IChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSA8IDUwID8gY29udGVudD8ubG9nbz8uc2l6ZSA6IFxyXG4gICAgKChjb250ZW50Py5sb2dvPy5zaXplID49IDYwICAmJiBjb250ZW50Py5sb2dvPy5zaXplIDw9IDEwMCkgPyAoMjApIDogKChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSAtIDEwKSlcIlxyXG4gICAgbG9hZGluZz1cImxhenlcIiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2UgJiYgY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIChjbGljayk9XCIhZWRpdCA/IGdvVG9Ib21lKCkgOiAnJ1wiPlxyXG4gIDwhLS0gPC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNwYWdlTGlua3NUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwibmF2YmFyLW5hdiBwYWdlTGlua3NcIiBbbmdDbGFzc109XCJ7J2FsaWduLWl0ZW1zLWNlbnRlcicgOiAhaXNNb2JpbGV9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydmbGV4LWNvbHVtbic6IGlzTW9iaWxlLCAnYWxpZ24taXRlbXMtY2VudGVyJyA6ICFpc01vYmlsZSwgJ21vYmlsZS1wYWdlLWxpc3QnOiBpc01vYmlsZX1cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXROYXZiYXJCdXR0b25cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5zaG93SGVhZGVyXCI+XHJcbiAgICAgICAgICA8c2ltcG8tbmF2YmFyLWJ1dHRvbi1lbGVtZW50IFtidXR0b25EYXRhXT1cIml0ZW1cIiBbc2VsZWN0ZWRTdHlsZV09XCJzdHlsZT8ubmF2aWdhdGlvblN0eWxlXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cInN0eWxlPy5uYXZiYXJCdXR0b25TdHlsZVwiIFtiZ0NvbG9yXT1cInNpbXBvQ29sb3JcIiBbYWNjZW50Q29sb3JdPVwiYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCI+PC9zaW1wby1uYXZiYXItYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBnZXREcm9wZG93bkxpbmtzOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmVjb21saW5rcz8uW2xpbmtdPy5sZW5ndGggXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm1hdC1idG4gZHJvcGRvd24tdG9nZ2xlIGNhdGVnb3J5LWJ0blwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgaWQ9XCJsaW5rXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgIHt7bGluayB8IGxvd2VyY2FzZSB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwibGlua1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBnZXRWYWx1ZXMoY29udGVudD8uZWNvbWxpbmtzPy5bbGlua10pXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXIobWVudSwgbGluaylcIj57e21lbnV9fTwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25zVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImFjdGlvbj8uZGlzcGxheVwiIGNsYXNzPVwiYnV0dG9uLWRpc3BsYXkgbXQtMFwiIFtuZ0NsYXNzXT1cInsndy0xMDAganVzdGlmeS1zcGFjZS1hcm91bmQnOiBpc01vYmlsZX1cIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkNvbnRlbnRdPVwiYnV0dG9uLmNvbnRlbnRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgW2VkaXRdPVwiZWRpdFwiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgW2J1dHRvbklkXT1cImJ1dHRvbi5pZFwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdGljX2xvZ2luX2J0biBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVMb2dpbigpXCIgKm5nSWY9XCJwYXNzYm9va0FwcFN0YXR1cyAmJiAhbG9nZ2VkSW5cIlxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8bWF0LWljb24+cGVyc29uX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgIExvZ2luXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA4cHg7IGN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwiZ29Ub0FjY291bnQoJ1BST0ZJTEUnKVwiXHJcbiAgICAgICAgKm5nSWY9XCJsb2dnZWRJbiAmJiAhaXNNb2JpbGVcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJ1c2VyR2VuZGVyIHwgZ2VuZGVySWNvblwiIHN0eWxlPVwiaGVpZ2h0OiAyN3B4O1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxidXR0b24gY2xhc3M9XCJtb2JpbGVMb2dpbkJ1dHRvblwiICpuZ0lmPVwiaXNFY29tbWVyY2VXZWJzaXRlICYmIGlzTW9iaWxlICYmICFsb2dnZWRJblwiXHJcbiAgICBbc3R5bGUuYm9yZGVyXT1cIicxcHggc29saWQnICsgYWNjZW50Q29sb3JcIiBbc3R5bGUuY29sb3JdPVwiYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiZ29Ub0FjY291bnQoJ0xPR0lOJylcIj5Mb2dpbjwvYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtb2JpbGVGb290ZXJUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiY2FydC1mb290ZXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJhY2NlbnRDb2xvclwiIFtzaW1wb0NvbG9yXT1cImFjY2VudENvbG9yXCJcclxuICAgICpuZ0lmPVwiZ2V0Q2FydEl0ZW1zQ291bnQgPiAwICYmICFyZXN0cmljdENhcnRCYXJJblBhZ2VzKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHgtMyBweS0yIGgtMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jb3VudCBmdy1ib2xkXCI+XHJcbiAgICAgICAge3sgZ2V0Q2FydEl0ZW1zQ291bnQgPz8gMyB9fSB7eyBnZXRDYXJ0SXRlbXNDb3VudCA+IDEgPyAnaXRlbXMnIDogJ2l0ZW0nIH19IGluIGNhcnRcclxuICAgICAgICA8IS0tIFRvdGFsIDog4oK5e3sgZ2V0Q2FydFRvdGFsQW1vdW50IH19IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgZnctYm9sZFwiIChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgICAgVmlldyBDYXJ0IDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJhY2NlbnRDb2xvclwiPmFycm93X2ZvcndhcmQ8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9iaWxlLWZvb3RlclwiIFtzaW1wb0JhY2tncm91bmRdPVwiYmFja2dyb3VuZEluZm9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJnb1RvSG9tZSgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+aG9tZTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIj5Ib21lPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwic2VhcmNoUHJvZHVjdHMoKVwiPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPmdyaWRfb248L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+U2hvcDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cImdvVG9XaXNobGlzdCgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+ZmF2b3JpdGVfYm9yZGVyPC9tYXQtaWNvbj5cclxuICAgICAgPHNwYW4gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPldpc2hsaXN0PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWNvbnMgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2spPVwiZ29Ub0NhcnQoKVwiPlxyXG4gICAgICA8bWF0LWljb24gW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPnNob3BwaW5nX2NhcnQ8L21hdC1pY29uPlxyXG4gICAgICA8c3BhbiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+Q2FydDwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNhcnRJdGVtQ291bnRcIiAqbmdJZj1cImdldENhcnRJdGVtc0NvdW50XCI+e3tnZXRDYXJ0SXRlbXNDb3VudH19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZWNvbW1lcmNlQnV0dG9uc1RlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwci0wIGQtZmxleCBwb3NpdGlvbi1yZWxhdGl2ZSBnYXAtMTAgdy0xMDBcIlxyXG4gICAgW3N0eWxlLmZsZXhEaXJlY3Rpb25dPVwic3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIyJyB8fCBzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjQnID8gJ3Jvdy1yZXZlcnNlJyA6ICcnXCI+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJzZWFyY2gtaWNvblwiIChjbGljayk9XCJzaG93U2VhcmNoQmFyID0gIXNob3dTZWFyY2hCYXJcIj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJhY2NlbnRDb2xvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy03NSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJyA6ICFwYXNzYm9va0FwcFN0YXR1c31cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctNzUgbWwtMlwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggRm9yIEl0ZW1zXCIgYXJpYS1sYWJlbD1cIlNlYXJjaCBQcm9kdWN0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiIChuZ01vZGVsQ2hhbmdlKT1cIndhaXRCZWZvcmVTZWFyY2goKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcicgOiAnMXB4IHNvbGlkICcgKyBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3J9XCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYW5pbWF0ZWQtcGxhY2Vob2xkZXIgcG9zaXRpb24tYWJzb2x1dGVcIiBcclxuICAgICAgICAgIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGVQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAqbmdJZj1cInN0eWxlPy5zZWFyY2hCYXJQbGFjZWhvbGRlckxpc3QubGVuZ3RoID4gMSAmJiBzdHlsZT8uc21hcnRTZWFyY2hCYXJcIj5cclxuICAgICAgICAgIHt7IGN1cnJlbnRQbGFjZWhvbGRlciB9fVxyXG4gICAgICAgIDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaC0xMDBcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kJyA6IGJhY2tncm91bmRJbmZvPy5hY2NlbnRCYWNrZ3JvdW5kVHlwZSA9PT0gJ1NvbGlkJyA/ICAgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgIGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvciArICcgMCUnICsgJywnICsgIGJhY2tncm91bmRJbmZvPy5zZWNvbmRhcnlBY2NlbnRDb2xvciArJyAxMDAlJyArICcpJ31cIlxyXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5jb2xvclwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBweS0xIHB4LTMgYi0xIHN0b3Jlc1wiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJnb1RvU2NoZW1lcygpXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRSR0JBKGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvciAsIDEwKVwiICpuZ0lmPVwicGFzc2Jvb2tBcHBTdGF0dXNcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxyXG4gICAgICAgICAgeG1sbnM6c3ZnanM9XCJodHRwOi8vc3ZnanMuZGV2L3N2Z2pzXCIgaWQ9XCJMYXllcl8yXCIgdmlld0JveD1cIjAgMCA2MCA2MFwiIGRhdGEtbmFtZT1cIkxheWVyIDJcIiB3aWR0aD1cIjMwXCJcclxuICAgICAgICAgIGhlaWdodD1cIjMwXCIgdmVyc2lvbj1cIjEuMVwiPlxyXG4gICAgICAgICAgPGcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHRyYW5zZm9ybT1cIm1hdHJpeCgxLDAsMCwxLDAsMClcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIm0xNC4zNiA0Ni42Ni41MS05Ljg2LTExLjkzLTcuMTYtMS45NCA4LjQzelwiIFthdHRyLmZpbGxdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIxXCIgZGF0YS1vcmlnaW5hbC1jb2xvcj1cIiMwMDAwMDBmZlwiIHN0cm9rZT1cIm5vbmVcIiBzdHJva2Utb3BhY2l0eT1cIjFcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJtMTcuMTcgMzguMXMwLS4wMi4wMi0uMDNjMCAwIDAtLjAyLjAyLS4wMi4wNC0uMDUuMS0uMDguMTUtLjExLjAyLS4wMS4wMy0uMDMuMDUtLjA0bDQuNjYtMS45NGgtLjAycy0xLjg3LTEuMjEtMS44Ny0xLjIxbC0zLjE4IDEuNTctMS4wNy41My0uNDMgOC4zMiAxLjU4LTYuOWMuMDEtLjA2LjA1LS4xMi4wOS0uMTd6XCJcclxuICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLW9wYWNpdHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIm0xOS4xNCAzNC4wOC02LjI3LTQuMDRjLS4xOS0uMTItLjI4LS4zNC0uMjMtLjU2bDEuMDgtNC43Mi05Ljk2IDQuMTQgMTEuNjggNy4wMXpcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCIgZmlsbC1vcGFjaXR5PVwiMVwiIGRhdGEtb3JpZ2luYWwtY29sb3I9XCIjMDAwMDAwZmZcIiBzdHJva2U9XCJub25lXCJcclxuICAgICAgICAgICAgICBzdHJva2Utb3BhY2l0eT1cIjFcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwibTMwLjkzIDQ2LjQyLS41IDkuNzkgMzIuNTctMTguNjctMS4yMS02LjQtMjMuMTYgMTEuNDZ6XCIgW2F0dHIuZmlsbF09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTYgNDcuNjUgMTMuMzggOC41OC40OS05Ljg2LTExLjkzLTcuMTd6XCIgW2F0dHIuZmlsbF09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgZD1cIm0yNy44NSAzOS4zNHMwIDAtLjAxIDBjMCAwIDAgMC0uMDEgMC0uMDguMDQtLjE2LjA2LS4yNC4wNi0uMDUgMC0uMS0uMDMtLjE1LS4wNC0uMDQtLjAxLS4wOC0uMDEtLjExLS4wM2wtNC4xNi0yLjY3LTQuMzcgMS44MiAxMS42OCA3LjAxIDMwLjQtMTUuMDUtMTAuNzEtMy44OC0yMi4yOCAxMi43OHpcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiYWNjZW50Q29sb3JcIiBmaWxsLW9wYWNpdHk9XCIxXCIgZGF0YS1vcmlnaW5hbC1jb2xvcj1cIiMwMDAwMDBmZlwiIHN0cm9rZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJtMjguMjYgMzYuMDEtLjEgMS45MyAzMi41OC0xOC42OS0xLjIyLTYuMzktMzAuODYgMTUuMjh6XCIgW2F0dHIuZmlsbF09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjFcIiBkYXRhLW9yaWdpbmFsLWNvbG9yPVwiIzAwMDAwMGZmXCIgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS1vcGFjaXR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJtMjcuNjEgMjguMDktMTEuOTMtNy4xNi0xLjk0IDguNDMgMTMuMzYgOC41OHpcIiBbYXR0ci5maWxsXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiIGRhdGEtb3JpZ2luYWwtY29sb3I9XCIjMDAwMDAwZmZcIiBzdHJva2U9XCJub25lXCIgc3Ryb2tlLW9wYWNpdHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIm01OC41NyAxMi4xNS0xMi4xLTQuMzgtMjkuOTcgMTIuNDMgMTEuNjggN3pcIiBbYXR0ci5maWxsXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMVwiIGRhdGEtb3JpZ2luYWwtY29sb3I9XCIjMDAwMDAwZmZcIiBzdHJva2U9XCJub25lXCIgc3Ryb2tlLW9wYWNpdHk9XCIxXCIgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8ZGl2IFtzdHlsZS5jb2xvcl09XCJhY2NlbnRDb2xvclwiPlNjaGVtZXM8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZXMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBweS0yIHB4LTNcIiAoY2xpY2spPVwiZ29Ub1N0b3JlcygpXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJzdG9yZUF2YWlhYmxlXCJcclxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRSR0JBKGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvciAsIDEwKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCI+c3RvcmU8L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5TdG9yZXM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGluLXRleHRcIiAobW91c2VlbnRlcik9XCJzaG93UGluY29kZUlucHV0ID0gdHJ1ZTtzaG93TG9naW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiIWdldFBpbmNvZGVcIj5FbnRlclxyXG4gICAgICAgIFBpbmNvZGVcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwaW4tdGV4dFwiIChtb3VzZWVudGVyKT1cInNob3dQaW5jb2RlSW5wdXQgPSB0cnVlOztzaG93TG9naW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiZ2V0UGluY29kZSAmJiBnZXRQaW5jb2RlLmxlbmd0aCA9PSA2XCI+e3tcIkRlbGl2ZXJpbmcgdG86IFwiICtcclxuICAgICAgICBnZXRQaW5jb2RlfX08L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gKG1vdXNlbGVhdmUpPVwic2hvd1BpbmNvZGVJbnB1dCA9IGZhbHNlXCIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwaW5jb2RlLWNvbnRhaW5lciBwLTNcIiAqbmdJZj1cInNob3dQaW5jb2RlSW5wdXRcIiAobW91c2VsZWF2ZSk9XCJzaG93UGluY29kZUlucHV0ID0gZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBtYi0yIGYtMTggZnctYm9sZFwiPlxyXG4gICAgICAgICAgWW91ciBQSU4gQ29kZSB1bmxvY2tzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHRleHQtY2VudGVyIGYtMTQgcGluY29kZS10ZXh0XCI+XHJcbiAgICAgICAgICBGYXN0ZXN0IGRlbGl2ZXJ5IGRhdGUsIFRyeS1hdC1Ib21lIGF2YWlsYWJpbGl0eSxcclxuICAgICAgICAgIE5lYXJlc3Qgc3RvcmUgYW5kIEluLXN0b3JlIGRlc2lnbiFcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbXQtMiBici01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHgtM1wiXHJcbiAgICAgICAgICBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInBpbkVycm9yXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiUGluY29kZVwiIGFyaWEtbGFiZWw9XCJQaW5jb2RlXCIgWyhuZ01vZGVsKV09XCJwaW5jb2RlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ3LTc1IHAtMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LXN1Yi10ZXh0IGYtMTEgdy0yNSB0ZXh0LWVuZCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZXRQaW5jb2RlKClcIj5TVUJNSVQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zdGFydCBtdC0yIGYtMTFcIiAqbmdJZj1cInBpbkVycm9yXCI+XHJcbiAgICAgICAgICBQbGVhc2UgZW50ZXIgYSB2YWxpZCBwaW5jb2RlXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiZ2FwOiA1cHg7IGN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwiZ29Ub0ZhdigpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtzaW1wb0NvbG9yXT1cImJhY2tncm91bmRJbmZvPy5jb2xvclwiPmZhdm9yaXRlPC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCIgc3R5bGU9XCJnYXA6IDVweDsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtzaW1wb0NvbG9yXT1cImJhY2tncm91bmRJbmZvPy5jb2xvclwiPnNob3BwaW5nX2NhcnQ8L21hdC1pY29uPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBjYXJ0SXRlbUNvdW50XCIgKm5nSWY9XCJnZXRDYXJ0SXRlbXNDb3VudFwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnIDogYmFja2dyb3VuZEluZm8/LmFjY2VudEJhY2tncm91bmRUeXBlID09ICdTb2xpZCcgPyAgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBiYWNrZ3JvdW5kSW5mbz8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKScgLCAnY29sb3InIDogc2V0Q29sb3IoKX1cIj5cclxuICAgICAgICAgIHt7Z2V0Q2FydEl0ZW1zQ291bnR9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZ2luQnV0dG9uXCIgKm5nSWY9XCIhbG9nZ2VkSW5cIiAobW91c2VlbnRlcik9XCJzaG93TG9naW4gPSB0cnVlO3Nob3dQaW5jb2RlSW5wdXQgPSBmYWxzZVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIyN1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xMi4xMiAxMi43OEMxMi4wNSAxMi43NyAxMS45NiAxMi43NyAxMS44OCAxMi43OEMxMC4xMiAxMi43MiA4LjcxOTk3IDExLjI4IDguNzE5OTcgOS41MDk5OEM4LjcxOTk3IDcuNjk5OTggMTAuMTggNi4yMjk5OCAxMiA2LjIyOTk4QzEzLjgxIDYuMjI5OTggMTUuMjggNy42OTk5OCAxNS4yOCA5LjUwOTk4QzE1LjI3IDExLjI4IDEzLjg4IDEyLjcyIDEyLjEyIDEyLjc4WlwiXHJcbiAgICAgICAgICAgIGZpbGw9XCIjMjkyRDMyXCIgc3Ryb2tlPVwiIzI5MkQzMlwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTE4Ljc0IDE5LjM4QzE2Ljk2IDIxLjAxIDE0LjYgMjIgMTIgMjJDOS40MDAwMSAyMiA3LjA0MDAxIDIxLjAxIDUuMjYwMDEgMTkuMzhDNS4zNjAwMSAxOC40NCA1Ljk2MDAxIDE3LjUyIDcuMDMwMDEgMTYuOEM5Ljc3MDAxIDE0Ljk4IDE0LjI1IDE0Ljk4IDE2Ljk3IDE2LjhDMTguMDQgMTcuNTIgMTguNjQgMTguNDQgMTguNzQgMTkuMzhaXCJcclxuICAgICAgICAgICAgZmlsbD1cIiMyOTJEMzJcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTIgMjJDMTcuNTIyOCAyMiAyMiAxNy41MjI4IDIyIDEyQzIyIDYuNDc3MTUgMTcuNTIyOCAyIDEyIDJDNi40NzcxNSAyIDIgNi40NzcxNSAyIDEyQzIgMTcuNTIyOCA2LjQ3NzE1IDIyIDEyIDIyWlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMyOTJEMzJcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgIDwvc3ZnPiA8IS0tIDxzcGFuIGNsYXNzPVwiZnctbm9ybWFsIGZzLTZcIiBbc2ltcG9Db2xvcl09XCJhY2NlbnRDb2xvclwiPkxvZ2luPC9zcGFuPiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gKG1vdXNlbGVhdmUpPVwic2hvd0xvZ2luID0gZmFsc2VcIiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tY29udGFpbmVyIHAtM1wiICpuZ0lmPVwic2hvd0xvZ2luXCIgKG1vdXNlbGVhdmUpPVwic2hvd0xvZ2luID0gZmFsc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBtYi0yIGYtMTggZnctYm9sZFwiPlxyXG4gICAgICAgICAgWW91ciBBY2NvdW50XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHRleHQtY2VudGVyIGYtMTRcIj5cclxuICAgICAgICAgIEFjY2VzcyBhY2NvdW50ICYgbWFuYWdlIHlvdXIgb3JkZXJzLlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyIHctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGdhcC0zXCI+XHJcbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJnb1RvQWNjb3VudCgnU0lHTlVQJylcIiBjbGFzcz1cInctNTAgdGV4dC1jZW50ZXIgc2lnbi1idG4gYm9yZGVyLTBcIlxyXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnIDogYmFja2dyb3VuZEluZm8/LmFjY2VudEJhY2tncm91bmRUeXBlID09ICdTb2xpZCcgPyAgIGFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBiYWNrZ3JvdW5kSW5mbz8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKSd9XCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlNpZ24gVXA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdvVG9BY2NvdW50KCdMT0dJTicpXCIgY2xhc3M9XCJ3LTUwIHRleHQtY2VudGVyIHNpZ24tYnRuXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3JcIj5Mb2cgSW48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDhweDsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJnb1RvQWNjb3VudCgnUFJPRklMRScpXCJcclxuICAgICAgICAqbmdJZj1cImxvZ2dlZEluXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwidXNlckdlbmRlciB8IGdlbmRlckljb25cIiBzdHlsZT1cImhlaWdodDogMjdweDtcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdj4gLS0+XHJcbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZ29Ub0FjY291bnQoKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJzZWN0aW9uSWQrYnV0dG9uSWRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uU3R5bGVcIiBbY29sb3JdPVwiY29sb3JcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBbYnV0dG9uRGF0YV09XCJidXR0b25Db250ZW50XCI+e3tidXR0b25Db250ZW50Py5sYWJlbH19PC9idXR0b24+IC0tPlxyXG4gICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI25hdmJhckxpbmtzVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm5hdmJhci1jb2xsYXBzZSBmcy02IHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4OyBtYXJnaW4tbGVmdDogMjVweDtcIlxyXG4gICAgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiICpuZ0lmPVwic2NyZWVuV2lkdGggPiA3NjhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0TmF2YmFyQnV0dG9uXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnNob3dIZWFkZXJcIj5cclxuICAgICAgICA8c2ltcG8tbmF2YmFyLWJ1dHRvbi1lbGVtZW50IFtidXR0b25EYXRhXT1cIml0ZW1cIiBbc2VsZWN0ZWRTdHlsZV09XCJzdHlsZT8ubmF2aWdhdGlvblN0eWxlXCJcclxuICAgICAgICAgIFtidXR0b25TdHlsZV09XCJzdHlsZT8ubmF2YmFyQnV0dG9uU3R5bGVcIiBbYmdDb2xvcl09XCJzaW1wb0NvbG9yXCJcclxuICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIj48L3NpbXBvLW5hdmJhci1idXR0b24tZWxlbWVudD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGdldERyb3Bkb3duTGlua3M7IGxldCBpZHggPSBpbmRleFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uZWNvbWxpbmtzPy5bbGlua10/Lmxlbmd0aCBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwibWF0LWJ0biBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiIGlkPVwibGlua1wiXHJcbiAgICAgICAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICB7e2xpbmsgfCB1cHBlcmNhc2V9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImxpbmtcIj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IG1lbnUgb2YgZ2V0VmFsdWVzKGNvbnRlbnQ/LmVjb21saW5rcz8uW2xpbmtdKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RmlsdGVyKG1lbnUsIGxpbmspXCI+e3ttZW51fX08L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJvZmZjYW52YXNcIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJvZmZjYW52YXNSaWdodFwiIGFyaWEtbGFiZWxsZWRieT1cIm9mZmNhbnZhc1JpZ2h0TGFiZWxcIlxyXG4gIFtuZ0NsYXNzXT1cInsnb2ZmY2FudmFzLWVuZCcgOiAoc3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIxJyB8fCBzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjMnKSAmJiAhaXNFY29tbWVyY2VXZWJzaXRlLCAnb2ZmY2FudmFzLXN0YXJ0Jzogc3R5bGU/LnN0eWxpbmcgPT09ICdIZWFkZXIyJyB8fCBzdHlsZT8uc3R5bGluZyA9PT0gJ0hlYWRlcjQnIHx8IGlzRWNvbW1lcmNlV2Vic2l0ZX1cIj5cclxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWhlYWRlclwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGU/LmJhY2tncm91bmRcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGVMb2dvU2VjdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPiAtLT5cclxuICAgIDxtYXQtaWNvbiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm9mZmNhbnZhcy1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZXNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VMaW5rc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhbnZhcy1idXR0b25cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNlY29tUHJvZmlsZVRlbXBsYXRlPlxyXG4gIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGJyLTUwIGZzLTIyIHB4LTMgcHktMVwiXHJcbiAgICAoY2xpY2spPVwic2hvd1NlYXJjaEJhck1vYmlsZSA9ICFzaG93U2VhcmNoQmFyTW9iaWxlXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCcgOiBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50QmFja2dyb3VuZFR5cGUgPT0gJ1NvbGlkJyA/ICAgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yIDogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwnICsgYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yICsgJyAwJScgKyAnLCcgKyBiYWNrZ3JvdW5kSW5mbz8uc2Vjb25kYXJ5QWNjZW50Q29sb3IgKycgMTAwJScgKyAnKSd9XCJcclxuICAgIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kSW5mbz8uY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPiAtLT5cclxuXHJcblxyXG4gIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbW9iLWZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFByb2R1Y3RcIiBhcmlhLWxhYmVsPVwiU2VhcmNoIFByb2R1Y3RcIlxyXG4gICAgKm5nSWY9XCJzaG93U2VhcmNoQmFyTW9iaWxlXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwid2FpdEJlZm9yZVNlYXJjaCgpXCJcclxuICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJyA6ICcxcHggc29saWQgJyArIGJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvcn1cIj4gLS0+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDhweDsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJnb1RvQWNjb3VudCgnUFJPRklMRScpXCJcclxuICAgICpuZ0lmPVwibG9nZ2VkSW5cIj5cclxuICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cInVzZXJHZW5kZXIgfCBnZW5kZXJJY29uXCIgc3R5bGU9XCJoZWlnaHQ6IDI3cHg7XCI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI21vYmlsZUxvZ29TZWN0aW9uVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgaC0xMDBcIlxyXG4gICAgKm5nSWY9XCIhY29udGVudD8ubG9nbz8uaXNJbWFnZSB8fCAhY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIChjbGljayk9XCIhZWRpdCA/IGdvVG9Ib21lKCkgOiAnJ1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvbiAmJiBjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LnVybFwiIGFsdD1cImxvZ29cIiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLXNtYWxsXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy50ZXh0Py5pc1RleHRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+XHJcbiAgICAgIDxiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtbGctY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIiAoY2xpY2spPVwiZ29Ub0hvbWUoKVwiPiAtLT5cclxuICA8aW1nIFtzcmNdPVwiY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIGFsdD1cImxvZ29cIiBjbGFzcz1cImgtMTAwXCIgbG9hZGluZz1cImxhenlcIlxyXG4gICAgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIiAoY2xpY2spPVwiIWVkaXQgPyBnb1RvSG9tZSgpIDogJydcIj5cclxuICA8IS0tIDwvZGl2PiAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc0hlYWRlcj5cclxuICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcy13cmFwcGVyXCJcclxuICAgICpuZ0lmPVwiKGNhdGVnb3J5TGlzdD8ubGVuZ3RoID4gMCB8fCBjb2xsZWN0aW9uTGlzdD8uY29sbGVjdGlvbnM/Lmxlbmd0aCA+IDApICYmICFpc01vYmlsZVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJzaG93TGlzdCA9IGZhbHNlOyBzaG93Q29sbGVjdGlvbnMgPSBmYWxzZVwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJibHVyLW92ZXJsYXlcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dMaXN0IHx8IHNob3dDb2xsZWN0aW9uc1wiPjwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWhlYWRlciBkLWZsZXggZ2FwLTMgcHktMiBwb3NpdGlvbi1yZWxhdGl2ZVwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvclwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IGN1cnNvci1wb2ludGVyXCIgKm5nRm9yPVwibGV0IGVsZSBvZiBtZWdhTWVudTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgW3N0eWxlLi0tYm9yZGVyLWNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbc2ltcG9Db2xvcl09XCJkYXRhPy5zdHlsZXM/LmhlYWRsaW5lPy5jb2xvclwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0Q2hpbGRNZW51KGVsZSlcIiAoY2xpY2spPVwicmVkaXJlY3Rpb25zT2ZNZW51KGVsZSlcIj5cclxuICAgICAgICB7e2VsZT8ubGFiZWwgfCB0aXRsZWNhc2V9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gW2NsYXNzLmhpZGUtZHJvcGRvd25dPVwiIXNob3dMaXN0XCIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1jYXRlZ29yeVwiIFtjbGFzcy5zaG93LWRyb3Bkb3duXT1cInNob3dMaXN0XCIgW2NsYXNzLmhpZGUtZHJvcGRvd25dPVwiIXNob3dMaXN0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgaC0xMDAgbWVnYS1tZW51LXNjcm9sbC1yb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2Ygc2VsZWN0ZWRDYXRlZ29yeTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZ2EtbWVudS1zY3JvbGwtY29sXCIgW25nQ2xhc3NdPVwiZWxlPy5jaGlsZHJlbj8ubGVuZ3RoID09IDAgJiYgKGVsZS50eXBlPT0nQ09MTEVDVElPTlMnIHx8IGVsZS50eXBlPT0nQ0FURUdPUlknKSA/ICdjb2wtMycgOiAnY29sLTInXCI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlPy5jaGlsZHJlbj8ubGVuZ3RoID09IDAgJiYgKGVsZS50eXBlPT0nQ09MTEVDVElPTlMnIHx8IGVsZS50eXBlPT0nQ0FURUdPUlknIClcIj5cclxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZWxlLmltYWdlVXJsXCIgW2FsdF09XCJlbGU/LmxhYmVsXCIgY2xhc3M9XCJ3LTEwMCBtYi0yIGJyLTEyIGN1cnNvci1wb2ludGVyIGNvbGxlY3Rpb25JbWFnZVwiICpuZ0lmPVwiZWxlLmltYWdlVXJsXCIgKGNsaWNrKT1cInJlZGlyZWN0aW9uc09mTWVudShlbGUpXCIgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1oZWFkZXIgbWItMyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdGlvbnNPZk1lbnUoZWxlKVwiPlxyXG4gICAgICAgICAgICAgIHt7ZWxlPy5sYWJlbCB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlPy5jaGlsZHJlbiAmJiBlbGU/LmNoaWxkcmVuLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zIGxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgZWxlPy5jaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJyZWRpcmVjdGlvbnNPZk1lbnUoY2hpbGQpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Y2hpbGQ/LmxhYmVsIHwgdGl0bGVjYXNlfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbW9iaWxlQ2F0ZWdvcnlIZWFkZXI+XHJcbiAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMtaGVhZGVyIGQtZmxleCBnYXAtMyAgcHktMiBvdmVyZmxvdy1hdXRvXCIgKm5nSWY9XCJjYXRlZ29yeUxpc3Q/Lmxlbmd0aCA+IDAgJiYgaXNNb2JpbGVcIlxyXG4gICAgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtjbGFzcy5tYXJnaW4tdG9wLW1vYl09XCJpc0hlYWRlclN0aWNreVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5IGN1cnNvci1wb2ludGVyIGQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiICpuZ0Zvcj1cImxldCBlbGUgb2YgY2F0ZWdvcnlMaXN0O2xldCBpID0gaW5kZXhcIlxyXG4gICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJzZWxlY3RlZENhdGVnb3J5ID0gZWxlOyBmaWx0ZXJCeUNhdGVnb3J5KClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhdC1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImVsZT8uaW1hZ2VVcmxzWzBdXCIgYWx0PVwiXCIgY2xhc3M9XCJoLTEwIGJyLTEyXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgZi0xNFwiPnt7ZWxlPy5jYXRlZ29yeU5hbWUgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Vjb21tZXJjZV9oZWFkZXI+XHJcbiAgPGhlYWRlciBjbGFzcz1cInNpdGUtaGVhZGVyXCI+XHJcbiAgICA8IS0tIFRvcCBCYXI6IExvZ28sIFNlYXJjaCwgVXNlciBBY3Rpb25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cclxuXHJcbiAgICAgIDwhLS0gTW9iaWxlIE1lbnUgVG9nZ2xlIChDaGVja2JveCBIYWNrKSAtLT5cclxuICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J21vYmlsZS1oZWFkZXItbGVmdC1zaWRlJzogc2NyZWVuV2lkdGggPD0gNDc1fVwiPlxyXG4gICAgICAgIDxsYWJlbCBmb3I9XCJtb2JpbGUtbWVudS1jaGVja2JveFwiIGNsYXNzPVwibW9iaWxlLW1lbnUtYnRuXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIlxyXG4gICAgICAgICAgZGF0YS1icy10YXJnZXQ9XCIjb2ZmY2FudmFzUmlnaHRcIiBhcmlhLWNvbnRyb2xzPVwib2ZmY2FudmFzUmlnaHRcIj5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgIDxsaW5lIHgxPVwiNFwiIHkxPVwiMTJcIiB4Mj1cIjIwXCIgeTI9XCIxMlwiPjwvbGluZT5cclxuICAgICAgICAgICAgPGxpbmUgeDE9XCI0XCIgeTE9XCI2XCIgeDI9XCIyMFwiIHkyPVwiNlwiPjwvbGluZT5cclxuICAgICAgICAgICAgPGxpbmUgeDE9XCI0XCIgeTE9XCIxOFwiIHgyPVwiMjBcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgPCEtLSBMb2dvIFNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJsb2dvXCIgKGNsaWNrKT1cIiFlZGl0ID8gZ29Ub0hvbWUoKSA6ICcnXCIgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgYWx0PVwiTG9nb1wiIGNsYXNzPVwibG9nby1pbWdcIiBbd2lkdGhdPVwiY29udGVudD8ubG9nbz8uc2l6ZSAgKyAxNVwiXHJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiY29udGVudD8ubG9nbz8uc2l6ZVwiPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0UGx1c2xvZ29cIiAoY2xpY2spPVwiIWVkaXQgPyBnb1RvSG9tZSgpIDogJydcIiAqbmdJZj1cIiFjb250ZW50Py5sb2dvPy5pc0ltYWdlIFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8uaXNUZXh0IFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8uaXNJY29uIFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8udXJsXCI+XHJcblxyXG4gICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiY29udGVudD8ubG9nbz8udGV4dD8udXJsXCIgYWx0PVwiSWNvblwiIGNsYXNzPVwibG9nby1pY29uXCJcclxuICAgICAgICAgICAgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemUgKyAxNVwiIFtoZWlnaHRdPVwiY29udGVudD8ubG9nbz8uc2l6ZVwiPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9nby10ZXh0XCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiICpuZ0lmPVwic2NyZWVuV2lkdGggPiA0NzVcIj5cclxuICAgICAgICAgICAge3sgY29udGVudD8uc2l0ZU5hbWU/LnZhbHVlIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImxvZ29cIiAoY2xpY2spPVwiIWVkaXQgPyBnb1RvSG9tZSgpIDogJydcIiAqbmdJZj1cIiFjb250ZW50Py5sb2dvPy5pc0ltYWdlIFxyXG4gICAgICAgICAgJiYgY29udGVudD8ubG9nbz8udGV4dD8uaXNUZXh0IFxyXG4gICAgICAgICAgJiYgIWNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvblwiPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9nby1tYWluXCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiPlxyXG4gICAgICAgICAgICB7eyBjb250ZW50Py5zaXRlTmFtZT8udmFsdWUgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTZWFyY2ggQmFyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNDc1ICYmIGNvbnRlbnQ/LnNob3dTZWFyY2hCYXIgJiYgZGF0YT8uc3R5bGVzPy5tZW51VHlwZSAhPT0gJ0RST1BET1dOX01FTlUnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1iYXJcIj5cclxuICAgICAgICAgIDwhLS0gU2VhcmNoIEljb24gU1ZHIC0tPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwic2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB5MT1cIjIxXCIgeDI9XCIxNi42NVwiIHkyPVwiMTYuNjVcIj48L2xpbmU+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGZvciBpdGVtXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwid2FpdEJlZm9yZVNlYXJjaCgpXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gRHJvcGRvd24gbWVudSBzdHlsZSAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duX21lbnVcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNDc1ICYmIGRhdGE/LnN0eWxlcz8ubWVudVR5cGUgPT09ICdEUk9QRE9XTl9NRU5VJ1wiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwic2hvd0xpc3QgPSBmYWxzZTsgc2VsZWN0ZWRDYXRlZ29yeSA9IG51bGxcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGQtbmF2XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGQtdGFiLXdyYXBcIiAqbmdGb3I9XCJsZXQgZWxlIG9mIG1lZ2FNZW51XCIgKG1vdXNlZW50ZXIpPVwic2V0Q2hpbGRNZW51KGVsZSlcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkZC10YWJcIiBbY2xhc3MuZGQtdGFiLWFjdGl2ZV09XCJzaG93TGlzdCAmJiBzZWxlY3RlZENhdGVnb3J5ID09PSBlbGU/LmNoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVkaXJlY3Rpb25zT2ZNZW51KGVsZSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tlbGU/LmxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjIwcHg7IGhlaWdodDoyMHB4XCIgY2xhc3M9XCJ0YWItYXJyb3dcIiAqbmdJZj1cImVsZT8uY2hpbGRyZW4/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzMzNDk1MmMxNzc2ODY2NDMxODIxZHJvcGRvd24tYXJyb3ctc3ZncmVwby1jb20uc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cImRyb3Bkb3duIGFycm93XCI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkLXBhbmVsXCIgKm5nSWY9XCJzaG93TGlzdCAmJiBzZWxlY3RlZENhdGVnb3J5ID09PSBlbGU/LmNoaWxkcmVuICYmIGVsZT8uY2hpbGRyZW4/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZC1pdGVtXCIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGVsZT8uY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjaGlsZD8uY2hpbGRyZW4/Lmxlbmd0aCA/IHJlZGlyZWN0aW9uc09mTWVudShjaGlsZCkgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7Y2hpbGQ/LmxhYmVsIHwgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRkLWl0ZW0tYXJyb3dcIiAqbmdJZj1cImNoaWxkPy5jaGlsZHJlbj8ubGVuZ3RoXCI+JiM4MjUwOzwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGQtc3VibWVudVwiICpuZ0lmPVwiY2hpbGQ/LmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRkLXN1Yi1pdGVtXCIgKm5nRm9yPVwibGV0IHN1YiBvZiBjaGlsZD8uY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdGlvbnNPZk1lbnUoc3ViKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7c3ViPy5sYWJlbCB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICA8IS0tIFJpZ2h0IEFjdGlvbnMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWFjdGlvbnNcIj5cclxuICAgICAgICBcclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uc3R5bGVzPy5tZW51VHlwZSA9PT0gJ0RST1BET1dOX01FTlUnICYmIHNjcmVlbldpZHRoID4gNDc1ICYmIGNvbnRlbnQ/LnNob3dTZWFyY2hCYXJcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmsgaWNvbi1vbmx5IGRyb3Bkb3duLXNlYXJjaC10b2dnbGVcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duRGVza3RvcFNlYXJjaCA9ICFzaG93RHJvcGRvd25EZXNrdG9wU2VhcmNoXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRvZ2dsZSBzZWFyY2hcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI4XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIyMVwiIHkxPVwiMjFcIiB4Mj1cIjE2LjY1XCIgeTI9XCIxNi42NVwiPjwvbGluZT5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZUF2YWlhYmxlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1saW5rIHN0b3JlLWxpbmtcIiAobW91c2VlbnRlcik9XCJzaG93UGluY29kZUlucHV0ID0gdHJ1ZTtzaG93TG9naW4gPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWdldFBpbmNvZGVcIj5cclxuICAgICAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiB2ZXJzaW9uPVwiMS4xXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cIm5vbmVcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNOC41IDAuNWMtMy4wMzIgMC01LjUgMi40NjctNS41IDUuNSAwIDQuMzczIDQuOTEzIDEwLjA4NiA1LjEyMiAxMC4zMjhsMC4zNzggMC40MzUgMC4zNzgtMC40MzZjMC4yMDktMC4yNDEgNS4xMjItNS45NTQgNS4xMjItMTAuMzI3IDAtMy4wMzMtMi40NjgtNS41LTUuNS01LjV6TTguNSAxNS4yMTVjLTEuMTQ2LTEuNDI0LTQuNS01Ljg3OS00LjUtOS4yMTUgMC0yLjQ4MSAyLjAxOS00LjUgNC41LTQuNXM0LjUgMi4wMTkgNC41IDQuNWMwIDMuMzMzLTMuMzU0IDcuNzkxLTQuNSA5LjIxNXpNOC41IDMuMTM5Yy0xLjY1NCAwLTMgMS4zNDYtMyAzczEuMzQ2IDMgMyAzIDMtMS4zNDYgMy0zLTEuMzQ2LTMtMy0zek04LjUgOC4xMzljLTEuMTAzIDAtMi0wLjg5Ny0yLTJzMC44OTctMiAyLTIgMiAwLjg5NyAyIDItMC44OTcgMi0yIDJ6XCJcclxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAwMDAwXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+IC0tPlxyXG5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCJcclxuICAgICAgICAgICAgICBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgZD1cIk0zNDEuNDc2IDMzOC4yODVjNTQuNDgzLTg1LjQ5MyA0Ny42MzQtNzQuODI3IDQ5LjIwNC03Ny4wNTZDNDEwLjUxNiAyMzMuMjUxIDQyMSAyMDAuMzIyIDQyMSAxNjYgNDIxIDc0Ljk4IDM0Ny4xMzkgMCAyNTYgMCAxNjUuMTU4IDAgOTEgNzQuODMyIDkxIDE2NmMwIDM0LjMgMTAuNzA0IDY4LjA5MSAzMS4xOSA5Ni40NDZsNDguMzMyIDc1Ljg0QzExOC44NDcgMzQ2LjIyNyAzMSAzNjkuODkyIDMxIDQyMmMwIDE4Ljk5NSAxMi4zOTggNDYuMDY1IDcxLjQ2MiA2Ny4xNTlDMTQzLjcwNCA1MDMuODg4IDE5OC4yMzEgNTEyIDI1NiA1MTJjMTA4LjAyNSAwIDIyNS0zMC40NzIgMjI1LTkwIDAtNTIuMTE3LTg3Ljc0NC03NS43NTctMTM5LjUyNC04My43MTV6bS0xOTQuMjI3LTkyLjM0YTE1LjU3IDE1LjU3IDAgMCAwLS41MTctLjc1OEMxMjkuNjg1IDIyMS43MzUgMTIxIDE5My45NDEgMTIxIDE2NmMwLTc1LjAxOCA2MC40MDYtMTM2IDEzNS0xMzYgNzQuNDM5IDAgMTM1IDYxLjAwOSAxMzUgMTM2IDAgMjcuOTg2LTguNTIxIDU0LjgzNy0yNC42NDYgNzcuNjcxLTEuNDQ1IDEuOTA2IDYuMDk0LTkuODA2LTExMC4zNTQgMTcyLjkxOEwxNDcuMjQ5IDI0NS45NDV6TTI1NiA0ODJjLTExNy45OTQgMC0xOTUtMzQuNjgzLTE5NS02MCAwLTE3LjAxNiAzOS41NjgtNDQuOTk1IDEyNy4yNDgtNTUuOTAxbDU1LjEwMiA4Ni40NjNhMTQuOTk4IDE0Ljk5OCAwIDAgMCAyNS4yOTggMGw1NS4xMDEtODYuNDYzQzQxMS40MzEgMzc3LjAwNSA0NTEgNDA0Ljk4NCA0NTEgNDIyYzAgMjUuMTAyLTc2LjMxMyA2MC0xOTUgNjB6XCI+XHJcbiAgICAgICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTI1NiA5MWMtNDEuMzU1IDAtNzUgMzMuNjQ1LTc1IDc1czMzLjY0NSA3NSA3NSA3NSA3NS0zMy42NDUgNzUtNzUtMzMuNjQ1LTc1LTc1LTc1em0wIDEyMGMtMjQuODEzIDAtNDUtMjAuMTg3LTQ1LTQ1czIwLjE4Ny00NSA0NS00NSA0NSAyMC4xODcgNDUgNDUtMjAuMTg3IDQ1LTQ1IDQ1elwiPlxyXG4gICAgICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0b3JlLXRleHRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCI+RW50ZXIgUGluY29kZTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGluayBzdG9yZS1saW5rXCIgKG1vdXNlZW50ZXIpPVwic2hvd1BpbmNvZGVJbnB1dCA9IHRydWU7O3Nob3dMb2dpbiA9IGZhbHNlXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiZ2V0UGluY29kZSAmJiBnZXRQaW5jb2RlLmxlbmd0aCA9PSA2XCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBbc2ltcG9Db2xvcl09XCJzaW1wb0NvbG9yXCJcclxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBkPVwibTIgNyA0LjQxLTQuNDFBMiAyIDAgMCAxIDcuODMgMmg4LjM0YTIgMiAwIDAgMSAxLjQyLjU5TDIyIDdcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk00IDEydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi04XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgMjJ2LTRhMiAyIDAgMCAwLTItMmgtMmEyIDIgMCAwIDAtMiAydjRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDdoMjBcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjIgN3YzYTIgMiAwIDAgMS0yIDJ2MGEyLjcgMi43IDAgMCAxLTEuNTktLjYzLjcuNyAwIDAgMC0uODIgMEEyLjcgMi43IDAgMCAxIDE2IDEyYTIuNyAyLjcgMCAwIDEtMS41OS0uNjMuNy43IDAgMCAwLS44MiAwQTIuNyAyLjcgMCAwIDEgMTIgMTJhMi43IDIuNyAwIDAgMS0xLjU5LS42My43LjcgMCAwIDAtLjgyIDBBMi43IDIuNyAwIDAgMSA4IDEyYTIuNyAyLjcgMCAwIDEtMS41OS0uNjMuNy43IDAgMCAwLS44MiAwQTIuNyAyLjcgMCAwIDEgNCAxMnYwYTIgMiAwIDAgMS0yLTJWN1wiPlxyXG4gICAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcmUtdGV4dFwiIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIj57e1wiRGVsaXZlcmluZyB0bzogXCIgK1xyXG4gICAgICAgICAgICAgIGdldFBpbmNvZGV9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBpbmNvZGUtY29udGFpbmVyIHAtM1wiICpuZ0lmPVwic2hvd1BpbmNvZGVJbnB1dFwiIChtb3VzZWxlYXZlKT1cInNob3dQaW5jb2RlSW5wdXQgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB0ZXh0LWNlbnRlciBtYi0yIGYtMTggZnctYm9sZFwiPlxyXG4gICAgICAgICAgICAgIFlvdXIgUElOIENvZGUgdW5sb2Nrc1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHRleHQtY2VudGVyIGYtMTQgcGluY29kZS10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgRmFzdGVzdCBkZWxpdmVyeSBkYXRlLCBUcnktYXQtSG9tZSBhdmFpbGFiaWxpdHksXHJcbiAgICAgICAgICAgICAgTmVhcmVzdCBzdG9yZSBhbmQgSW4tc3RvcmUgZGVzaWduIVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG10LTIgYnItNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHB4LTNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwicGluRXJyb3JcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiUGluY29kZVwiIGFyaWEtbGFiZWw9XCJQaW5jb2RlXCIgWyhuZ01vZGVsKV09XCJwaW5jb2RlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy03NSBwLTBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtc3ViLXRleHQgZi0xMSB3LTI1IHRleHQtZW5kIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNldFBpbmNvZGUoKVwiPlNVQk1JVDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgbXQtMiBmLTExXCIgKm5nSWY9XCJwaW5FcnJvclwiPlxyXG4gICAgICAgICAgICAgIFBsZWFzZSBlbnRlciBhIHZhbGlkIHBpbmNvZGVcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGEgY2xhc3M9XCJhY3Rpb24tbGluayBpY29uLW9ubHkgbG9naW4tYnRuXCIgKm5nSWY9XCIhbG9nZ2VkSW5cIlxyXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd0xvZ2luID0gdHJ1ZTtzaG93UGluY29kZUlucHV0ID0gZmFsc2VcIiAoY2xpY2spPVwic2hvd0xvZ2luID0gIXNob3dMb2dpblwiPlxyXG4gICAgICAgICAgPCEtLSBVc2VyIEljb24gU1ZHIC0tPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjdcIiByPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1saW5rIGljb24tb25seVwiIChjbGljayk9XCJnb1RvQWNjb3VudCgnUFJPRklMRScpXCIgKm5nSWY9XCJsb2dnZWRJblwiPlxyXG4gICAgICAgICAgPCEtLSBVc2VyIEljb24gU1ZHIC0tPlxyXG4gICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIFtzaW1wb0NvbG9yXT1cInNpbXBvQ29sb3JcIlxyXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xOSAyMXYtMmE0IDQgMCAwIDAtNC00SDlhNCA0IDAgMCAwLTQgNHYyXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjdcIiByPVwiNFwiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1jb250YWluZXIgcC0zXCIgKm5nSWY9XCJzaG93TG9naW5cIiAobW91c2VsZWF2ZSk9XCJzaG93TG9naW4gPSBmYWxzZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgdGV4dC1jZW50ZXIgbWItMiBmLTE4IGZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgWW91ciBBY2NvdW50XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dCB0ZXh0LWNlbnRlciBmLTE0XCI+XHJcbiAgICAgICAgICAgIEFjY2VzcyBhY2NvdW50ICYgbWFuYWdlIHlvdXIgb3JkZXJzLlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWNvbnRhaW5lciB3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBnYXAtM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnb1RvQWNjb3VudCgnU0lHTlVQJylcIiBjbGFzcz1cInctNTAgdGV4dC1jZW50ZXIgc2lnbi1idG4gYm9yZGVyLTBcIlxyXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZCcgOiBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50QmFja2dyb3VuZFR5cGUgPT0gJ1NvbGlkJyA/ICAgYWNjZW50Q29sb3IgOiAnbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCcgKyBiYWNrZ3JvdW5kSW5mbz8uYWNjZW50Q29sb3IgKyAnIDAlJyArICcsJyArIGJhY2tncm91bmRJbmZvPy5zZWNvbmRhcnlBY2NlbnRDb2xvciArJyAxMDAlJyArICcpJ31cIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIj5TaWduIFVwPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdvVG9BY2NvdW50KCdMT0dJTicpXCIgY2xhc3M9XCJ3LTUwIHRleHQtY2VudGVyIHNpZ24tYnRuXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiYmFja2dyb3VuZEluZm8/LmFjY2VudENvbG9yXCIgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRJbmZvPy5hY2NlbnRDb2xvclwiPkxvZyBJbjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxhIGNsYXNzPVwiYWN0aW9uLWxpbmsgaWNvbi1vbmx5IGljb24tY29udGFpbmVyIHdpc2hsaXN0LWljb25cIiAoY2xpY2spPVwiZ29Ub1dpc2hsaXN0KClcIj5cclxuICAgICAgICAgIDwhLS0gSGVhcnQgSWNvbiBTVkcgLS0+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTkgMTRjMS40OS0xLjQ2IDMtMy4yMSAzLTUuNUE1LjUgNS41IDAgMCAwIDE2LjUgM2MtMS43NiAwLTMgLjUtNC41IDItMS41LTEuNS0yLjc0LTItNC41LTJBNS41IDUuNSAwIDAgMCAyIDguNWMwIDIuMyAxLjUgNC4wNSAzIDUuNWw3IDdaXCI+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50LWJhZGdlXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJhY2NlbnRDb2xvclwiIFtzaW1wb0NvbG9yXT1cImFjY2VudENvbG9yXCI+Mjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImFjdGlvbi1saW5rIGljb24tb25seSBpY29uLWNvbnRhaW5lciBjYXJ0LWljb25cIiAoY2xpY2spPVwiZ29Ub0NhcnQoKVwiPlxyXG4gICAgICAgICAgPCEtLSBTaG9wcGluZyBCYWcgSWNvbiBTVkcgLS0+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgW3NpbXBvQ29sb3JdPVwic2ltcG9Db2xvclwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTYgMiAzIDZ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjZsLTMtNFpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyA2aDE4XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDEwYTQgNCAwIDAgMS04IDBcIj48L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnQtYmFkZ2VcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImFjY2VudENvbG9yXCIgW3NpbXBvQ29sb3JdPVwiYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImdldENhcnRJdGVtc0NvdW50XCI+e3tnZXRDYXJ0SXRlbXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXNlYXJjaC1leHBhbmRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJkYXRhPy5zdHlsZXM/Lm1lbnVUeXBlID09PSAnRFJPUERPV05fTUVOVScgJiYgc2NyZWVuV2lkdGggPiA0NzUgJiYgY29udGVudD8uc2hvd1NlYXJjaEJhciAmJiBzaG93RHJvcGRvd25EZXNrdG9wU2VhcmNoXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tc2VhcmNoLWJveFwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VhcmNoLWljb25cIj5cclxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjhcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjIxXCIgeTE9XCIyMVwiIHgyPVwiMTYuNjVcIiB5Mj1cIjE2LjY1XCI+PC9saW5lPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZm9yLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgKG5nTW9kZWxDaGFuZ2UpPVwid2FpdEJlZm9yZVNlYXJjaCgpXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1zZWFyY2gtY2xvc2VcIiAoY2xpY2spPVwic2hvd0Ryb3Bkb3duRGVza3RvcFNlYXJjaCA9IGZhbHNlXCIgYXJpYS1sYWJlbD1cIkNsb3NlIHNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMThcIiB5MT1cIjZcIiB4Mj1cIjZcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiNlwiIHkxPVwiNlwiIHgyPVwiMThcIiB5Mj1cIjE4XCI+PC9saW5lPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiICpuZ0lmPVwic2NyZWVuV2lkdGggPD0gNDc1ICYmIGNvbnRlbnQ/LnNob3dTZWFyY2hCYXIgJiYgZGF0YT8uc3R5bGVzPy5tZW51VHlwZSAhPT0gJ0RST1BET1dOX01FTlUnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyXCI+XHJcbiAgICAgICAgPCEtLSBTZWFyY2ggSWNvbiBTVkcgLS0+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XHJcbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjhcIj48L2NpcmNsZT5cclxuICAgICAgICAgIDxsaW5lIHgxPVwiMjFcIiB5MT1cIjIxXCIgeDI9XCIxNi42NVwiIHkyPVwiMTYuNjVcIj48L2xpbmU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZm9yIGl0ZW1cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJ3YWl0QmVmb3JlU2VhcmNoKClcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaFwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2hlYWRlcj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|