buildingproduct-library 0.2.74 → 0.2.76
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/assets/images/newtab.svg +11 -0
- package/{buildingproduct-library-0.2.74.tgz → buildingproduct-library-0.2.76.tgz} +0 -0
- package/bundles/buildingproduct-library.umd.js +527 -411
- package/bundles/buildingproduct-library.umd.js.map +1 -1
- package/esm2015/lib/account-dropdown/account-dropdown.component.js +16 -16
- package/esm2015/lib/account-dropdown/account-dropdown.module.js +6 -2
- package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +2 -2
- package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +1 -1
- package/esm2015/lib/checkout/order-review/order-review.component.js +1 -1
- package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +1 -1
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +57 -13
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +1 -1
- package/esm2015/lib/custom-navigation/custom-navigation.module.js +1 -11
- package/esm2015/lib/custom-order-details/custom-order-details.component.js +8 -6
- package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +2 -2
- package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +2 -2
- package/esm2015/lib/custom-order-history/custom-order-history.component.js +20 -19
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +28 -17
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +2 -2
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +2 -2
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +28 -10
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +4 -4
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +3 -3
- package/esm2015/lib/custom-search/custom-search.component.js +1 -1
- package/esm2015/lib/custom-user-account/custom-user-account.component.js +2 -2
- package/esm2015/lib/find-store/find-store.component.js +1 -1
- package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +6 -7
- package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +26 -25
- package/esm2015/lib/my-account/my-account.component.js +11 -1
- package/esm2015/lib/my-team/my-team.component.js +29 -10
- package/esm2015/lib/my-team/team-member.service.js +8 -36
- package/esm2015/lib/services/order.review.js +1 -1
- package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +6 -4
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +48 -22
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +66 -37
- package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +2 -4
- package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +2 -2
- package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +9 -9
- package/fesm2015/buildingproduct-library.js +405 -288
- package/fesm2015/buildingproduct-library.js.map +1 -1
- package/lib/account-dropdown/account-dropdown.component.d.ts +2 -0
- package/lib/account-dropdown/account-dropdown.module.d.ts +2 -1
- package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +13 -4
- package/lib/custom-order-history/custom-order-history.component.d.ts +1 -1
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +1 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +5 -1
- package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +1 -1
- package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +2 -4
- package/lib/my-team/my-team.component.d.ts +6 -1
- package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +9 -10
- package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +9 -18
- package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +1 -2
- package/lib/shared/shared-download-order/shared-download-order.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -531,7 +531,7 @@ export class CustomProductQuantityFormComponent {
|
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
533
|
CustomProductQuantityFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomProductQuantityFormComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i2.CartService }, { token: i3.ActiveCartService }, { token: i4.CurrentProductService }], target: i0.ɵɵFactoryTarget.Component });
|
|
534
|
-
CustomProductQuantityFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomProductQuantityFormComponent, selector: "app-custom-product-quantity-form", inputs: { hasBundle: "hasBundle", productCode: "productCode", productDetails: "productDetails", unitType: "unitType", accessoriesPrice: "accessoriesPrice", selectedColour: "selectedColour", cuttingValidation: "cuttingValidation", finishedVariantDetails: "finishedVariantDetails", finishedAvailableColours: "finishedAvailableColours", isFinishedProduct: "isFinishedProduct", isFlashingProduct: "isFlashingProduct", listView: "listView" }, outputs: { updateCartEntires: "updateCartEntires" }, viewQueries: [{ propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }, { propertyName: "closebutton", first: true, predicate: ["closebutton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"productDetails\" [formGroup]=\"productForm\">\r\n <div class=\"row\">\r\n <ng-container>\r\n <div\r\n class=\"col p-0 bundling\"\r\n *ngIf=\"!isFinishedProduct && !isFlashingProduct\"\r\n >\r\n <span class=\"pr-2 font-weight-bold text\">Bundling </span>\r\n <span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n formControlName=\"bundling\"\r\n (change)=\"updateBundling($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <div class=\"quantity border p-3 mt-4\">\r\n <ng-container formArrayName=\"productQuantity\">\r\n <datalist id=\"bundleList\">\r\n <option *ngFor=\"let bundle of bundleList\">\r\n {{ bundle }}\r\n </option>\r\n </datalist>\r\n <table\r\n class=\"no-border\"\r\n [ngClass]=\"{\r\n 'has-bundle': hasBundle,\r\n accessories: isFinishedProduct\r\n }\"\r\n >\r\n <thead>\r\n <th>Quantity</th>\r\n <th *ngIf=\"!isFinishedProduct\">Length (LM)</th>\r\n <th *ngIf=\"hasBundle\">\r\n Bundle\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Bundle Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n <th\r\n *ngIf=\"hasBundle\"\r\n class=\"d-none\"\r\n [ngClass]=\"{ 'd-lg-block': listView }\"\r\n >\r\n Reference\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Reference Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n <th></th>\r\n </thead>\r\n <tbody>\r\n <ng-container\r\n *ngFor=\"\r\n let val of productForm.get('productQuantity')['controls'];\r\n let i = index\r\n \"\r\n [formGroupName]=\"i\"\r\n >\r\n <tr>\r\n <td>\r\n <input\r\n class=\"form-control prod-qty\"\r\n formControlName=\"prodQty\"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n OnlyNumber=\"true\"\r\n (blur)=\"updateTotal()\"\r\n />\r\n </td>\r\n <td *ngIf=\"!isFinishedProduct\">\r\n <input\r\n class=\"form-control prod-len\"\r\n formControlName=\"prodLen\"\r\n #prodLen\r\n minlength=\"1\"\r\n maxlength=\"7\"\r\n OnlyNumber=\"true\"\r\n (blur)=\"updateTotal(); updateLenthValue(prodLen)\"\r\n />\r\n </td>\r\n <td *ngIf=\"hasBundle && !isFinishedProduct\">\r\n <div class=\"d-none\" [ngClass]=\"{ 'd-lg-block': listView }\">\r\n <input\r\n class=\"form-control prod-bundle\"\r\n formControlName=\"prodBundle\"\r\n #prodBundle\r\n (input)=\"\r\n prodBundle.value = prodBundle.value.toUpperCase()\r\n \"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n (blur)=\"\r\n updateTotal(); populateSameBundleReference(null, i)\r\n \"\r\n (focus)=\"updateBundleList()\"\r\n list=\"bundleList\"\r\n />\r\n </div>\r\n <div [ngClass]=\"{ 'd-lg-none d-xl-none': listView }\">\r\n <p class=\"p-0 m-0\" *ngFor=\"let value of getBundleValues(i)\">\r\n {{ value }}\r\n </p>\r\n </div>\r\n <div class=\"side-menu-button\" *ngIf=\"!listView\">\r\n <div class=\"btn-group dropleft\" *ngIf=\"hasBundle\">\r\n <a\r\n type=\"button\"\r\n class=\"dropdown-toggle\"\r\n href=\"#\"\r\n role=\"button\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </a>\r\n <div class=\"dropdown-menu\">\r\n <a\r\n class=\"dropdown-item m-0\"\r\n data-toggle=\"modal\"\r\n data-target=\"#bundleModal\"\r\n (click)=\"editBundleValue(i)\"\r\n >\r\n Edit Bundle Value\r\n </a>\r\n <a\r\n class=\"dropdown-item m-0\"\r\n *ngIf=\"i > 0 || productQuantityForm.length > 1\"\r\n (click)=\"removeProductQuantityForm(i, $event)\"\r\n >\r\n Remove\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"hasBundle && !isFinishedProduct && listView\">\r\n <div class=\"d-none\" [ngClass]=\"{ 'd-lg-block': listView }\">\r\n <input\r\n class=\"form-control prod-reference\"\r\n minlength=\"1\"\r\n maxlength=\"15\"\r\n (focus)=\"populateSameBundleReference($event, i)\"\r\n formControlName=\"prodRef\"\r\n (blur)=\"\r\n updateTotal();\r\n updateSameBundleReference($event, i, true)\r\n \"\r\n />\r\n </div>\r\n </td>\r\n <td *ngIf=\"listView\">\r\n <button\r\n *ngIf=\"\r\n i > 0 || (productQuantityForm.length > 1 && listView)\r\n \"\r\n class=\"simple close d-sm-none d-md-none d-lg-block d-xl-block\"\r\n (click)=\"removeProductQuantityForm(i, $event)\"\r\n >\r\n <i class=\"fas fa-times-circle custom-arrow remove-icon\"></i>\r\n </button>\r\n\r\n <div [ngClass]=\"{ 'd-lg-none d-xl-none': listView }\">\r\n <div class=\"btn-group dropleft\" *ngIf=\"hasBundle\">\r\n <a\r\n type=\"button\"\r\n class=\"dropdown-toggle\"\r\n href=\"#\"\r\n role=\"button\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </a>\r\n <div class=\"dropdown-menu\">\r\n <a\r\n class=\"dropdown-item m-0\"\r\n data-toggle=\"modal\"\r\n data-target=\"#bundleModal\"\r\n (click)=\"editBundleValue(i)\"\r\n >\r\n Edit Bundle Value\r\n </a>\r\n <a\r\n class=\"dropdown-item m-0\"\r\n *ngIf=\"i > 0 || productQuantityForm.length > 1\"\r\n (click)=\"removeProductQuantityForm(i, $event)\"\r\n >\r\n Remove\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"hasErrors(i)\">\r\n <td colspan=\"4\" class=\"text-danger\">\r\n <div class=\"mt-0\" *ngIf=\"prodQtyErrors(i)\">\r\n Please enter valid Quantity\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"prodLenErrors(i)\">\r\n Please enter valid Length\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"minLenErrors(i)\">\r\n Minimum length should be at least\r\n {{ cuttingValidation?.minLength }}\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"prodBundleErrors(i)\">\r\n Please enter valid Bundle Name\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"prodRefErrors(i)\">\r\n Please enter valid Reference\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"hasErrorIndex(i)\">\r\n <td colspan=\"4\" class=\"text-danger\">\r\n Should not exceed maximum bundle size\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"hasProdRefErrorIndex(i)\">\r\n <td colspan=\"4\" class=\"text-danger\">\r\n This Reference value is already used. Please use other value\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n <button\r\n class=\"simple pl-2\"\r\n *ngIf=\"!isFinishedProduct && !disableAddMore\"\r\n (click)=\"addProductQuantityFormGroup($event)\"\r\n >\r\n <span class=\"mr-1 add-more\"> </span>\r\n Add more\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div\r\n class=\"row mt-4 col-sm-12 alert alert-danger justify-content-start\"\r\n role=\"alert\"\r\n *ngIf=\"addToCartError | async\"\r\n>\r\n <img\r\n class=\"mr-3\"\r\n src=\"../../../../../assets/images/erroricon.svg\"\r\n alt=\"alert\"\r\n />\r\n {{ addToCartError }}\r\n</div>\r\n\r\n<div\r\n class=\"modal fade edit-bundle-form\"\r\n id=\"bundleModal\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n>\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">Bundle Value</h4>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body m-0 pl-2 pr-2\">\r\n <table class=\"table no-border\" *ngIf=\"!isFinishedProduct\">\r\n <thead>\r\n <th>\r\n Bundle\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Bundle Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n <th>\r\n Reference\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Reference Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n </thead>\r\n <tbody [formGroup]=\"modalBundleForm\">\r\n <tr>\r\n <td>\r\n <datalist id=\"modBundleList\">\r\n <option *ngFor=\"let bundle of bundleList\">\r\n {{ bundle }}\r\n </option>\r\n </datalist>\r\n <input\r\n class=\"form-control\"\r\n maxlength=\"2\"\r\n formControlName=\"modBundle\"\r\n #modBundle\r\n (focus)=\"updateBundleList()\"\r\n (input)=\"modBundle.value = modBundle.value.toUpperCase()\"\r\n list=\"modBundleList\"\r\n (blur)=\"populateSameBundleReference(null, selectedIndex)\"\r\n />\r\n </td>\r\n <td>\r\n <input\r\n class=\"form-control\"\r\n maxlength=\"15\"\r\n (focus)=\"populateSameBundleReference($event, selectedIndex)\"\r\n formControlName=\"modRef\"\r\n />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n #closebutton\r\n class=\"btn btn-light\"\r\n >\r\n Cancel\r\n </button>\r\n <button type=\"submit\" (click)=\"saveBundleDetails($event)\" class=\"btn\">\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.product-code{color:#6f6f6f}.category-image{width:250px;height:180px}.display_color{text-align:center;position:relative;top:4px;font-family:\"Arial Bold\",sans-serif}.colours .colour{padding:0 15px;position:relative}.colours .colour .checkbox{display:none}.colours .colour .colour-title{position:absolute;bottom:-48px;width:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:var(--fontsize14);text-align:center;cursor:grabbing}.colours .colour.selected{border:1px solid #000000}.colours .colour.selected .checkbox{position:absolute;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2217.186%22 height%3D%2217.186%22 viewBox%3D%220 0 17.186 17.186%22%3E%0D %3Cg id%3D%22Group_12857%22 data-name%3D%22Group 12857%22 transform%3D%22translate(0.25 0.25)%22%3E%0D %3Ccircle id%3D%22Ellipse_14%22 data-name%3D%22Ellipse 14%22 cx%3D%228.316%22 cy%3D%228.316%22 r%3D%228.316%22 transform%3D%22translate(0 0.039)%22%2F%3E%0D %3Cpath id%3D%22Icon_ionic-md-checkmark-circle%22 data-name%3D%22Icon ionic-md-checkmark-circle%22 d%3D%22M11.718%2C3.375a8.343%2C8.343%2C0%2C1%2C0%2C8.343%2C8.343A8.367%2C8.367%2C0%2C0%2C0%2C11.718%2C3.375ZM10.005%2C16.166%2C5.729%2C11.89l1.2-1.2%2C3.08%2C3.08%2C6.5-6.5%2C1.2%2C1.2Z%22 transform%3D%22translate(-3.375 -3.375)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Icon_ionic-md-checkmark-circle_-_Outline%22 data-name%3D%22Icon ionic-md-checkmark-circle - Outline%22 d%3D%22M11.718%2C3.125a8.583%2C8.583%2C0%2C0%2C1%2C6.069%2C14.662A8.583%2C8.583%2C0%2C1%2C1%2C5.649%2C5.649%2C8.532%2C8.532%2C0%2C0%2C1%2C11.718%2C3.125Zm0%2C16.686A8.117%2C8.117%2C0%2C1%2C0%2C6%2C17.433%2C8.035%2C8.035%2C0%2C0%2C0%2C11.718%2C19.811ZM16.511%2C6.916l1.553%2C1.553-8.059%2C8.05L5.376%2C11.89l1.553-1.553%2C3.08%2C3.08Zm.846%2C1.553-.846-.846-6.5%2C6.5-3.08-3.08-.846.846%2C3.922%2C3.922Z%22 transform%3D%22translate(-3.375 -3.375)%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:20px;height:20px;display:inline-block;top:10px;left:10px}.colours .colour.main{box-sizing:border-box;width:40px;height:40px;display:inline-block;padding:0;border:1px solid #C6C6C6}.bundling{text-align:right;top:30px}.bundling span.text{display:inline-block;position:relative;top:-18px}.switch{position:relative;display:inline-block;width:60px;margin-top:-4px;height:30px}.switch input{opacity:0;width:0;height:0}.switch input:not(:checked)+.slider:after{content:\"NO\";right:10px;position:absolute;color:#fff;top:5px;font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.switch input:checked+.slider{background-color:#b61828}.switch input:checked+.slider:before{transform:translate(26px);left:8px}.switch input:checked+.slider:after{content:\"YES\";left:8px;position:absolute;color:#fff;top:6px;font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.switch input:focus+.slider{box-shadow:0 0 1px #2196f3}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#a6a6a5;transition:.4s}.slider:before{position:absolute;content:\"\";height:21px;width:22px;top:4px;left:5px;bottom:4px;background-color:#fff;transition:.4s}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}::ng-deep .info-icon{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E%0D %3Cpath id%3D%22Icon_metro-info%22 data-name%3D%22Icon metro-info%22 d%3D%22M9.571%2C6.678a.752.752%2C0%2C0%2C1%2C.75-.75h.5a.752.752%2C0%2C0%2C1%2C.75.75v.5a.752.752%2C0%2C0%2C1-.75.75h-.5a.752.752%2C0%2C0%2C1-.75-.75Zm3%2C7.25h-4v-1h1v-3h-1v-1h3v4h1Zm-2-12a8%2C8%2C0%2C1%2C0%2C8%2C8%2C8%2C8%2C0%2C0%2C0-8-8Zm0%2C14.5a6.5%2C6.5%2C0%2C1%2C1%2C6.5-6.5A6.5%2C6.5%2C0%2C0%2C1%2C10.571%2C16.428Z%22 transform%3D%22translate(-2.571 -1.928)%22 fill%3D%22%23c6c6c6%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:16px;height:16px;display:inline-block;top:3px}::ng-deep .edit-bundle-form .modal-dialog{padding:10px;transform:translateY(-50%);top:30%;margin:0 auto}::ng-deep .edit-bundle-form .modal-header{border-bottom:0}::ng-deep .edit-bundle-form .modal-body{padding-top:0;padding-bottom:0}::ng-deep .edit-bundle-form .modal-footer{border-top:none}::ng-deep .edit-bundle-form .modal-footer button{background-color:#1d1d1b;text-transform:uppercase;text-decoration:none;height:44px;font-family:\"Arial Bold\",sans-serif;min-width:86px;color:#fff;font-size:var(--fontsize14)}::ng-deep .edit-bundle-form .modal-footer button.btn-light{border:none;background-color:#fff;color:#1d1d1b;text-decoration:underline;text-transform:capitalize;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep .edit-bundle-form .table th{text-transform:capitalize}::ng-deep .edit-bundle-form .table tr,::ng-deep .edit-bundle-form .table td,::ng-deep .edit-bundle-form .table th{border:none;text-align:left;padding-bottom:0;padding-top:10px}::ng-deep .edit-bundle-form .table td:nth-child(1){width:100px;max-width:100px;min-width:100px;padding-right:15px}::ng-deep .edit-bundle-form .table td:nth-child(2){width:150px}::ng-deep main{overflow-x:hidden}::ng-deep main .no-border{border:none!important}::ng-deep main .full-width{max-width:100%!important}::ng-deep main .add-more{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2219%22 height%3D%2219%22 viewBox%3D%220 0 19 19%22%3E%0D %3Cpath id%3D%22Icon_awesome-plus-circle%22 data-name%3D%22Icon awesome-plus-circle%22 d%3D%22M10.063.563a9.5%2C9.5%2C0%2C1%2C0%2C9.5%2C9.5A9.5%2C9.5%2C0%2C0%2C0%2C10.063.563Zm5.516%2C10.573a.461.461%2C0%2C0%2C1-.46.46H11.595v3.524a.461.461%2C0%2C0%2C1-.46.46H8.99a.461.461%2C0%2C0%2C1-.46-.46V11.595H5.006a.461.461%2C0%2C0%2C1-.46-.46V8.99a.461.461%2C0%2C0%2C1%2C.46-.46H8.53V5.006a.461.461%2C0%2C0%2C1%2C.46-.46h2.145a.461.461%2C0%2C0%2C1%2C.46.46V8.53h3.524a.461.461%2C0%2C0%2C1%2C.46.46Z%22 transform%3D%22translate(-0.563 -0.563)%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:20px;height:20px;display:inline-block;top:4px}::ng-deep main .remove-icon{position:relative;top:-4px}::ng-deep main .bg-white{background:#ffffff;border-radius:5px}::ng-deep main sub{bottom:0em;font-size:var(--fontsize12)}::ng-deep main hr{border-top:2px solid #C6C6C6}::ng-deep main .product-name{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}::ng-deep main .colours-link{color:#000;text-decoration:underline;font-size:var(--fontsize14);cursor:pointer}::ng-deep main .colours-link:hover{color:#fa4d56}::ng-deep main .quantity{width:100%}::ng-deep main .quantity .simple{background:none;border:none}::ng-deep main .quantity table{min-width:80%}::ng-deep main .quantity table th{padding:0 10px}::ng-deep main .quantity table th:nth-child(3){min-width:92px}::ng-deep main .quantity table td{padding:10px;box-sizing:border-box}::ng-deep main .quantity table td:nth-child(1){width:80px;min-width:80px}::ng-deep main .quantity table td:nth-child(2){width:110px;min-width:110px}::ng-deep main .quantity table td:nth-child(3){width:100%;text-align:left;position:relative}::ng-deep main .quantity table td:nth-child(3) button{position:absolute;top:23%}::ng-deep main .quantity table td input{width:100%}::ng-deep main .quantity table td .dropleft .dropdown-menu{top:35px!important}::ng-deep main .quantity table td .dropleft .dropdown-menu .dropdown-item{cursor:pointer}::ng-deep main .quantity table td .dropleft .dropdown-toggle:before{display:none}::ng-deep main .quantity table td .side-menu-button{position:absolute;right:10px;top:16px}::ng-deep main .quantity table.accessories .prod-qty{max-width:65px}::ng-deep main .quantity table.has-bundle td:nth-child(3){width:95px}::ng-deep main .quantity table.has-bundle td:nth-child(4){width:170px}@media screen and (max-width: 767px){::ng-deep main .quantity table.has-bundle td:nth-child(4){display:none}}::ng-deep main .table.attributes-table{border:none}::ng-deep main .table.attributes-table th{background-color:#646363;font-family:\"Arial Bold\",sans-serif;color:#fff;height:35px;vertical-align:middle}::ng-deep main .table.attributes-table td{vertical-align:top}::ng-deep main .add-to-cart{background:#1D1D1B;width:100%;height:44px;font-family:\"Arial Bold\",sans-serif;text-align:center;color:#fff;font-size:var(--fontsize14)}::ng-deep main .add-to-cart:disabled{cursor:not-allowed;border:1px solid #A6A6A5;background:#A6A6A5}::ng-deep main .disable{cursor:not-allowed!important}::ng-deep main .tabs{display:flex;align-items:center;padding:15px;width:100%}::ng-deep main .tabs .tab-link{display:flex;width:31.7%;box-sizing:border-box;margin-right:2%;border:1px solid #1D1D1B;padding:0;background-color:#fff;align-items:center;cursor:pointer}::ng-deep main .tabs .tab-link:last-child{margin-right:0}::ng-deep main .tabs .tab-link .icon{width:44px;min-width:44px;height:44px;border-right:1px solid #1D1D1B}::ng-deep main .tabs .tab-link .icon.product-overiew{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2226%22 height%3D%2222%22 viewBox%3D%220 0 26 22%22%3E%0D %3Cg id%3D%22Group_14012%22 data-name%3D%22Group 14012%22 transform%3D%22translate(-316 -1291)%22%3E%0D %3Cpath id%3D%22Rectangle_1493%22 data-name%3D%22Rectangle 1493%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1291)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1494%22 data-name%3D%22Rectangle 1494%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1299)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1495%22 data-name%3D%22Rectangle 1495%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1307)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_464%22 data-name%3D%22Line 464%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1294)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_465%22 data-name%3D%22Line 465%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1302)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_466%22 data-name%3D%22Line 466%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1310)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link .icon.downloads{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2221%22 height%3D%2221%22 viewBox%3D%220 0 21 21%22%3E%0D %3Cg id%3D%22Group_14014%22 data-name%3D%22Group 14014%22 transform%3D%22translate(0.5 0.5)%22%3E%0D %3Cpath id%3D%22Path_11231%22 data-name%3D%22Path 11231%22 d%3D%22M23.848%2C18.9%2C15.99%2C11.175h4.558V1.282h6.6v9.893h4.558Zm-5.414-6.724L23.848%2C17.5l5.414-5.322H26.147V2.282h-4.6v9.893Z%22 transform%3D%22translate(-13.85 -1.782)%22%2F%3E%0D %3Cpath id%3D%22Path_11232%22 data-name%3D%22Path 11232%22 d%3D%22M22.282%2C69.593h-21V62.275h1v6.318h19V62.275h1Z%22 transform%3D%22translate(-1.781 -49.093)%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link .icon.related-products{position:relative;background:url(\"data:image/svg+xml,%3Csvg id%3D%22Group_14016%22 data-name%3D%22Group 14016%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22%3E%0D %3Cpath id%3D%22Rectangle_1364%22 data-name%3D%22Rectangle 1364%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(0 11)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1366%22 data-name%3D%22Rectangle 1366%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(11 11)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1365%22 data-name%3D%22Rectangle 1365%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cg id%3D%22Group_13038%22 data-name%3D%22Group 13038%22 transform%3D%22translate(11)%22%3E%0D %3Cpath id%3D%22Line_321%22 data-name%3D%22Line 321%22 d%3D%22M.5%2C9h-1V0h1Z%22 transform%3D%22translate(4.5)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_322%22 data-name%3D%22Line 322%22 d%3D%22M9%2C.5H0v-1H9Z%22 transform%3D%22translate(0 4.5)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link .label{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-transform:uppercase;text-align:center;width:100%;padding:8px}::ng-deep main .tabs .tab-link:hover,::ng-deep main .tabs .tab-link.active{color:#fff;background:#1D1D1B}::ng-deep main .tabs .tab-link:hover .icon,::ng-deep main .tabs .tab-link.active .icon{border-right:1px solid #ffffff}::ng-deep main .tabs .tab-link:hover .icon.product-overiew,::ng-deep main .tabs .tab-link.active .icon.product-overiew{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2226%22 height%3D%2222%22 viewBox%3D%220 0 26 22%22%3E%0D %3Cg id%3D%22Group_14011%22 data-name%3D%22Group 14011%22 transform%3D%22translate(-316 -1291)%22%3E%0D %3Cpath id%3D%22Rectangle_1493%22 data-name%3D%22Rectangle 1493%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1291)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1494%22 data-name%3D%22Rectangle 1494%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1299)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1495%22 data-name%3D%22Rectangle 1495%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1307)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_464%22 data-name%3D%22Line 464%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1294)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_465%22 data-name%3D%22Line 465%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1302)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_466%22 data-name%3D%22Line 466%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1310)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link:hover .icon.downloads,::ng-deep main .tabs .tab-link.active .icon.downloads{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2221%22 height%3D%2221%22 viewBox%3D%220 0 21 21%22%3E%0D %3Cg id%3D%22Group_14017%22 data-name%3D%22Group 14017%22 transform%3D%22translate(0.5 0.5)%22%3E%0D %3Cpath id%3D%22Path_11231%22 data-name%3D%22Path 11231%22 d%3D%22M23.848%2C18.9%2C15.99%2C11.175h4.558V1.282h6.6v9.893h4.558Zm-5.414-6.724L23.848%2C17.5l5.414-5.322H26.147V2.282h-4.6v9.893Z%22 transform%3D%22translate(-13.85 -1.782)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Path_11232%22 data-name%3D%22Path 11232%22 d%3D%22M22.282%2C69.593h-21V62.275h1v6.318h19V62.275h1Z%22 transform%3D%22translate(-1.781 -49.093)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link:hover .icon.related-products,::ng-deep main .tabs .tab-link.active .icon.related-products{background:url(\"data:image/svg+xml,%3Csvg id%3D%22Group_14015%22 data-name%3D%22Group 14015%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22%3E%0D %3Cpath id%3D%22Rectangle_1364%22 data-name%3D%22Rectangle 1364%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(0 11)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1366%22 data-name%3D%22Rectangle 1366%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(11 11)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1365%22 data-name%3D%22Rectangle 1365%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 fill%3D%22%23fff%22%2F%3E%0D %3Cg id%3D%22Group_13038%22 data-name%3D%22Group 13038%22 transform%3D%22translate(11)%22%3E%0D %3Cpath id%3D%22Line_321%22 data-name%3D%22Line 321%22 d%3D%22M.5%2C9h-1V0h1Z%22 transform%3D%22translate(4.5)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_322%22 data-name%3D%22Line 322%22 d%3D%22M9%2C.5H0v-1H9Z%22 transform%3D%22translate(0 4.5)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}.modal-title{font-family:\"Arial Bold\",sans-serif}.invite-pop-close{cursor:pointer}.more-content{display:flex;border:1px solid #548AF7;padding:8px;background-color:#edf5ff}.more-content img{position:relative;top:-12px}@media screen and (max-width: 767px){::ng-deep main .category-image{max-width:320px;width:100%!important}::ng-deep main .tabs{flex-direction:row;align-items:stretch}::ng-deep main .tabs .tab-link{align-items:center;flex-direction:column}::ng-deep main .tabs .tab-link .icon{border-right:none}}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i5.AsyncPipe } });
|
|
534
|
+
CustomProductQuantityFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomProductQuantityFormComponent, selector: "app-custom-product-quantity-form", inputs: { hasBundle: "hasBundle", productCode: "productCode", productDetails: "productDetails", unitType: "unitType", accessoriesPrice: "accessoriesPrice", selectedColour: "selectedColour", cuttingValidation: "cuttingValidation", finishedAvailableColours: "finishedAvailableColours", isFinishedProduct: "isFinishedProduct", isFlashingProduct: "isFlashingProduct", listView: "listView" }, outputs: { updateCartEntires: "updateCartEntires" }, viewQueries: [{ propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }, { propertyName: "closebutton", first: true, predicate: ["closebutton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"productDetails\" [formGroup]=\"productForm\">\r\n <div class=\"row\">\r\n <ng-container>\r\n <div\r\n class=\"col p-0 bundling\"\r\n *ngIf=\"!isFinishedProduct && !isFlashingProduct\"\r\n >\r\n <span class=\"pr-2 font-weight-bold text\">Bundling </span>\r\n <span>\r\n <label class=\"switch\">\r\n <input\r\n type=\"checkbox\"\r\n formControlName=\"bundling\"\r\n (change)=\"updateBundling($event)\"\r\n />\r\n <span class=\"slider round\"></span>\r\n </label>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <div class=\"quantity border p-3 mt-4\">\r\n <ng-container formArrayName=\"productQuantity\">\r\n <datalist id=\"bundleList\">\r\n <option *ngFor=\"let bundle of bundleList\">\r\n {{ bundle }}\r\n </option>\r\n </datalist>\r\n <table\r\n class=\"no-border\"\r\n [ngClass]=\"{\r\n 'has-bundle': hasBundle,\r\n accessories: isFinishedProduct\r\n }\"\r\n >\r\n <thead>\r\n <th>Quantity</th>\r\n <th *ngIf=\"!isFinishedProduct\">Length (LM)</th>\r\n <th *ngIf=\"hasBundle\">\r\n Bundle\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Bundle Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n <th\r\n *ngIf=\"hasBundle\"\r\n class=\"d-none\"\r\n [ngClass]=\"{ 'd-lg-block': listView }\"\r\n >\r\n Reference\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Reference Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n <th></th>\r\n </thead>\r\n <tbody>\r\n <ng-container\r\n *ngFor=\"\r\n let val of productForm.get('productQuantity')['controls'];\r\n let i = index\r\n \"\r\n [formGroupName]=\"i\"\r\n >\r\n <tr>\r\n <td>\r\n <input\r\n class=\"form-control prod-qty\"\r\n formControlName=\"prodQty\"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n OnlyNumber=\"true\"\r\n (blur)=\"updateTotal()\"\r\n />\r\n </td>\r\n <td *ngIf=\"!isFinishedProduct\">\r\n <input\r\n class=\"form-control prod-len\"\r\n formControlName=\"prodLen\"\r\n #prodLen\r\n minlength=\"1\"\r\n maxlength=\"7\"\r\n OnlyNumber=\"true\"\r\n (blur)=\"updateTotal(); updateLenthValue(prodLen)\"\r\n />\r\n </td>\r\n <td *ngIf=\"hasBundle && !isFinishedProduct\">\r\n <div class=\"d-none\" [ngClass]=\"{ 'd-lg-block': listView }\">\r\n <input\r\n class=\"form-control prod-bundle\"\r\n formControlName=\"prodBundle\"\r\n #prodBundle\r\n (input)=\"\r\n prodBundle.value = prodBundle.value.toUpperCase()\r\n \"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n (blur)=\"\r\n updateTotal(); populateSameBundleReference(null, i)\r\n \"\r\n (focus)=\"updateBundleList()\"\r\n list=\"bundleList\"\r\n />\r\n </div>\r\n <div [ngClass]=\"{ 'd-lg-none d-xl-none': listView }\">\r\n <p class=\"p-0 m-0\" *ngFor=\"let value of getBundleValues(i)\">\r\n {{ value }}\r\n </p>\r\n </div>\r\n <div class=\"side-menu-button\" *ngIf=\"!listView\">\r\n <div class=\"btn-group dropleft\" *ngIf=\"hasBundle\">\r\n <a\r\n type=\"button\"\r\n class=\"dropdown-toggle\"\r\n href=\"#\"\r\n role=\"button\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </a>\r\n <div class=\"dropdown-menu\">\r\n <a\r\n class=\"dropdown-item m-0\"\r\n data-toggle=\"modal\"\r\n data-target=\"#bundleModal\"\r\n (click)=\"editBundleValue(i)\"\r\n >\r\n Edit Bundle Value\r\n </a>\r\n <a\r\n class=\"dropdown-item m-0\"\r\n *ngIf=\"i > 0 || productQuantityForm.length > 1\"\r\n (click)=\"removeProductQuantityForm(i, $event)\"\r\n >\r\n Remove\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td *ngIf=\"hasBundle && !isFinishedProduct && listView\">\r\n <div class=\"d-none\" [ngClass]=\"{ 'd-lg-block': listView }\">\r\n <input\r\n class=\"form-control prod-reference\"\r\n minlength=\"1\"\r\n maxlength=\"15\"\r\n (focus)=\"populateSameBundleReference($event, i)\"\r\n formControlName=\"prodRef\"\r\n (blur)=\"\r\n updateTotal();\r\n updateSameBundleReference($event, i, true)\r\n \"\r\n />\r\n </div>\r\n </td>\r\n <td *ngIf=\"listView\">\r\n <button\r\n *ngIf=\"\r\n i > 0 || (productQuantityForm.length > 1 && listView)\r\n \"\r\n class=\"simple close d-sm-none d-md-none d-lg-block d-xl-block\"\r\n (click)=\"removeProductQuantityForm(i, $event)\"\r\n >\r\n <i class=\"fas fa-times-circle custom-arrow remove-icon\"></i>\r\n </button>\r\n\r\n <div [ngClass]=\"{ 'd-lg-none d-xl-none': listView }\">\r\n <div class=\"btn-group dropleft\" *ngIf=\"hasBundle\">\r\n <a\r\n type=\"button\"\r\n class=\"dropdown-toggle\"\r\n href=\"#\"\r\n role=\"button\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n >\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </a>\r\n <div class=\"dropdown-menu\">\r\n <a\r\n class=\"dropdown-item m-0\"\r\n data-toggle=\"modal\"\r\n data-target=\"#bundleModal\"\r\n (click)=\"editBundleValue(i)\"\r\n >\r\n Edit Bundle Value\r\n </a>\r\n <a\r\n class=\"dropdown-item m-0\"\r\n *ngIf=\"i > 0 || productQuantityForm.length > 1\"\r\n (click)=\"removeProductQuantityForm(i, $event)\"\r\n >\r\n Remove\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"hasErrors(i)\">\r\n <td colspan=\"4\" class=\"text-danger\">\r\n <div class=\"mt-0\" *ngIf=\"prodQtyErrors(i)\">\r\n Please enter valid Quantity\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"prodLenErrors(i)\">\r\n Please enter valid Length\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"minLenErrors(i)\">\r\n Minimum length should be at least\r\n {{ cuttingValidation?.minLength }}\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"prodBundleErrors(i)\">\r\n Please enter valid Bundle Name\r\n </div>\r\n <div class=\"mt-2\" *ngIf=\"prodRefErrors(i)\">\r\n Please enter valid Reference\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"hasErrorIndex(i)\">\r\n <td colspan=\"4\" class=\"text-danger\">\r\n Should not exceed maximum bundle size\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"hasProdRefErrorIndex(i)\">\r\n <td colspan=\"4\" class=\"text-danger\">\r\n This Reference value is already used. Please use other value\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n <button\r\n class=\"simple pl-2\"\r\n *ngIf=\"!isFinishedProduct && !disableAddMore\"\r\n (click)=\"addProductQuantityFormGroup($event)\"\r\n >\r\n <span class=\"mr-1 add-more\"> </span>\r\n Add more\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<div\r\n class=\"row mt-4 col-sm-12 alert alert-danger justify-content-start\"\r\n role=\"alert\"\r\n *ngIf=\"addToCartError | async\"\r\n>\r\n <img\r\n class=\"mr-3\"\r\n src=\"../../../../../assets/images/erroricon.svg\"\r\n alt=\"alert\"\r\n />\r\n {{ addToCartError }}\r\n</div>\r\n\r\n<div\r\n class=\"modal fade edit-bundle-form\"\r\n id=\"bundleModal\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n>\r\n <div class=\"modal-dialog modal-lg\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">Bundle Value</h4>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body m-0 pl-2 pr-2\">\r\n <table class=\"table no-border\" *ngIf=\"!isFinishedProduct\">\r\n <thead>\r\n <th>\r\n Bundle\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Bundle Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n <th>\r\n Reference\r\n <span\r\n class=\"info-icon\"\r\n ngbTooltip=\"Reference Information goes here....\"\r\n placement=\"bottom\"\r\n >\r\n </span>\r\n </th>\r\n </thead>\r\n <tbody [formGroup]=\"modalBundleForm\">\r\n <tr>\r\n <td>\r\n <datalist id=\"modBundleList\">\r\n <option *ngFor=\"let bundle of bundleList\">\r\n {{ bundle }}\r\n </option>\r\n </datalist>\r\n <input\r\n class=\"form-control\"\r\n maxlength=\"2\"\r\n formControlName=\"modBundle\"\r\n #modBundle\r\n (focus)=\"updateBundleList()\"\r\n (input)=\"modBundle.value = modBundle.value.toUpperCase()\"\r\n list=\"modBundleList\"\r\n (blur)=\"populateSameBundleReference(null, selectedIndex)\"\r\n />\r\n </td>\r\n <td>\r\n <input\r\n class=\"form-control\"\r\n maxlength=\"15\"\r\n (focus)=\"populateSameBundleReference($event, selectedIndex)\"\r\n formControlName=\"modRef\"\r\n />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button\r\n type=\"submit\"\r\n data-dismiss=\"modal\"\r\n #closebutton\r\n class=\"btn btn-light\"\r\n >\r\n Cancel\r\n </button>\r\n <button type=\"submit\" (click)=\"saveBundleDetails($event)\" class=\"btn\">\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}.product-code{color:#6f6f6f}.category-image{width:250px;height:180px}.display_color{text-align:center;position:relative;top:4px;font-family:\"Arial Bold\",sans-serif}.colours .colour{padding:0 15px;position:relative}.colours .colour .checkbox{display:none}.colours .colour .colour-title{position:absolute;bottom:-48px;width:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:var(--fontsize14);text-align:center;cursor:grabbing}.colours .colour.selected{border:1px solid #000000}.colours .colour.selected .checkbox{position:absolute;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2217.186%22 height%3D%2217.186%22 viewBox%3D%220 0 17.186 17.186%22%3E%0D %3Cg id%3D%22Group_12857%22 data-name%3D%22Group 12857%22 transform%3D%22translate(0.25 0.25)%22%3E%0D %3Ccircle id%3D%22Ellipse_14%22 data-name%3D%22Ellipse 14%22 cx%3D%228.316%22 cy%3D%228.316%22 r%3D%228.316%22 transform%3D%22translate(0 0.039)%22%2F%3E%0D %3Cpath id%3D%22Icon_ionic-md-checkmark-circle%22 data-name%3D%22Icon ionic-md-checkmark-circle%22 d%3D%22M11.718%2C3.375a8.343%2C8.343%2C0%2C1%2C0%2C8.343%2C8.343A8.367%2C8.367%2C0%2C0%2C0%2C11.718%2C3.375ZM10.005%2C16.166%2C5.729%2C11.89l1.2-1.2%2C3.08%2C3.08%2C6.5-6.5%2C1.2%2C1.2Z%22 transform%3D%22translate(-3.375 -3.375)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Icon_ionic-md-checkmark-circle_-_Outline%22 data-name%3D%22Icon ionic-md-checkmark-circle - Outline%22 d%3D%22M11.718%2C3.125a8.583%2C8.583%2C0%2C0%2C1%2C6.069%2C14.662A8.583%2C8.583%2C0%2C1%2C1%2C5.649%2C5.649%2C8.532%2C8.532%2C0%2C0%2C1%2C11.718%2C3.125Zm0%2C16.686A8.117%2C8.117%2C0%2C1%2C0%2C6%2C17.433%2C8.035%2C8.035%2C0%2C0%2C0%2C11.718%2C19.811ZM16.511%2C6.916l1.553%2C1.553-8.059%2C8.05L5.376%2C11.89l1.553-1.553%2C3.08%2C3.08Zm.846%2C1.553-.846-.846-6.5%2C6.5-3.08-3.08-.846.846%2C3.922%2C3.922Z%22 transform%3D%22translate(-3.375 -3.375)%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:20px;height:20px;display:inline-block;top:10px;left:10px}.colours .colour.main{box-sizing:border-box;width:40px;height:40px;display:inline-block;padding:0;border:1px solid #C6C6C6}.bundling{text-align:right;top:30px}.bundling span.text{display:inline-block;position:relative;top:-18px}.switch{position:relative;display:inline-block;width:60px;margin-top:-4px;height:30px}.switch input{opacity:0;width:0;height:0}.switch input:not(:checked)+.slider:after{content:\"NO\";right:10px;position:absolute;color:#fff;top:5px;font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.switch input:checked+.slider{background-color:#b61828}.switch input:checked+.slider:before{transform:translate(26px);left:8px}.switch input:checked+.slider:after{content:\"YES\";left:8px;position:absolute;color:#fff;top:6px;font-size:var(--fontsize12);font-family:\"Arial Bold\",sans-serif}.switch input:focus+.slider{box-shadow:0 0 1px #2196f3}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#a6a6a5;transition:.4s}.slider:before{position:absolute;content:\"\";height:21px;width:22px;top:4px;left:5px;bottom:4px;background-color:#fff;transition:.4s}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}::ng-deep .info-icon{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E%0D %3Cpath id%3D%22Icon_metro-info%22 data-name%3D%22Icon metro-info%22 d%3D%22M9.571%2C6.678a.752.752%2C0%2C0%2C1%2C.75-.75h.5a.752.752%2C0%2C0%2C1%2C.75.75v.5a.752.752%2C0%2C0%2C1-.75.75h-.5a.752.752%2C0%2C0%2C1-.75-.75Zm3%2C7.25h-4v-1h1v-3h-1v-1h3v4h1Zm-2-12a8%2C8%2C0%2C1%2C0%2C8%2C8%2C8%2C8%2C0%2C0%2C0-8-8Zm0%2C14.5a6.5%2C6.5%2C0%2C1%2C1%2C6.5-6.5A6.5%2C6.5%2C0%2C0%2C1%2C10.571%2C16.428Z%22 transform%3D%22translate(-2.571 -1.928)%22 fill%3D%22%23c6c6c6%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:16px;height:16px;display:inline-block;top:3px}::ng-deep .edit-bundle-form .modal-dialog{padding:10px;transform:translateY(-50%);top:30%;margin:0 auto}::ng-deep .edit-bundle-form .modal-header{border-bottom:0}::ng-deep .edit-bundle-form .modal-body{padding-top:0;padding-bottom:0}::ng-deep .edit-bundle-form .modal-footer{border-top:none}::ng-deep .edit-bundle-form .modal-footer button{background-color:#1d1d1b;text-transform:uppercase;text-decoration:none;height:44px;font-family:\"Arial Bold\",sans-serif;min-width:86px;color:#fff;font-size:var(--fontsize14)}::ng-deep .edit-bundle-form .modal-footer button.btn-light{border:none;background-color:#fff;color:#1d1d1b;text-decoration:underline;text-transform:capitalize;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}::ng-deep .edit-bundle-form .table th{text-transform:capitalize}::ng-deep .edit-bundle-form .table tr,::ng-deep .edit-bundle-form .table td,::ng-deep .edit-bundle-form .table th{border:none;text-align:left;padding-bottom:0;padding-top:10px}::ng-deep .edit-bundle-form .table td:nth-child(1){width:100px;max-width:100px;min-width:100px;padding-right:15px}::ng-deep .edit-bundle-form .table td:nth-child(2){width:150px}::ng-deep main{overflow-x:hidden}::ng-deep main .no-border{border:none!important}::ng-deep main .full-width{max-width:100%!important}::ng-deep main .add-more{position:relative;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2219%22 height%3D%2219%22 viewBox%3D%220 0 19 19%22%3E%0D %3Cpath id%3D%22Icon_awesome-plus-circle%22 data-name%3D%22Icon awesome-plus-circle%22 d%3D%22M10.063.563a9.5%2C9.5%2C0%2C1%2C0%2C9.5%2C9.5A9.5%2C9.5%2C0%2C0%2C0%2C10.063.563Zm5.516%2C10.573a.461.461%2C0%2C0%2C1-.46.46H11.595v3.524a.461.461%2C0%2C0%2C1-.46.46H8.99a.461.461%2C0%2C0%2C1-.46-.46V11.595H5.006a.461.461%2C0%2C0%2C1-.46-.46V8.99a.461.461%2C0%2C0%2C1%2C.46-.46H8.53V5.006a.461.461%2C0%2C0%2C1%2C.46-.46h2.145a.461.461%2C0%2C0%2C1%2C.46.46V8.53h3.524a.461.461%2C0%2C0%2C1%2C.46.46Z%22 transform%3D%22translate(-0.563 -0.563)%22%2F%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center;width:20px;height:20px;display:inline-block;top:4px}::ng-deep main .remove-icon{position:relative;top:-4px}::ng-deep main .bg-white{background:#ffffff;border-radius:5px}::ng-deep main sub{bottom:0em;font-size:var(--fontsize12)}::ng-deep main hr{border-top:2px solid #C6C6C6}::ng-deep main .product-name{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}::ng-deep main .colours-link{color:#000;text-decoration:underline;font-size:var(--fontsize14);cursor:pointer}::ng-deep main .colours-link:hover{color:#fa4d56}::ng-deep main .quantity{width:100%}::ng-deep main .quantity .simple{background:none;border:none}::ng-deep main .quantity table{min-width:80%}::ng-deep main .quantity table th{padding:0 10px}::ng-deep main .quantity table th:nth-child(3){min-width:92px}::ng-deep main .quantity table td{padding:10px;box-sizing:border-box}::ng-deep main .quantity table td:nth-child(1){width:80px;min-width:80px}::ng-deep main .quantity table td:nth-child(2){width:110px;min-width:110px}::ng-deep main .quantity table td:nth-child(3){width:100%;text-align:left;position:relative}::ng-deep main .quantity table td:nth-child(3) button{position:absolute;top:23%}::ng-deep main .quantity table td input{width:100%}::ng-deep main .quantity table td .dropleft .dropdown-menu{top:35px!important}::ng-deep main .quantity table td .dropleft .dropdown-menu .dropdown-item{cursor:pointer}::ng-deep main .quantity table td .dropleft .dropdown-toggle:before{display:none}::ng-deep main .quantity table td .side-menu-button{position:absolute;right:10px;top:16px}::ng-deep main .quantity table.accessories .prod-qty{max-width:65px}::ng-deep main .quantity table.has-bundle td:nth-child(3){width:95px}::ng-deep main .quantity table.has-bundle td:nth-child(4){width:170px}@media screen and (max-width: 767px){::ng-deep main .quantity table.has-bundle td:nth-child(4){display:none}}::ng-deep main .table.attributes-table{border:none}::ng-deep main .table.attributes-table th{background-color:#646363;font-family:\"Arial Bold\",sans-serif;color:#fff;height:35px;vertical-align:middle}::ng-deep main .table.attributes-table td{vertical-align:top}::ng-deep main .add-to-cart{background:#1D1D1B;width:100%;height:44px;font-family:\"Arial Bold\",sans-serif;text-align:center;color:#fff;font-size:var(--fontsize14)}::ng-deep main .add-to-cart:disabled{cursor:not-allowed;border:1px solid #A6A6A5;background:#A6A6A5}::ng-deep main .disable{cursor:not-allowed!important}::ng-deep main .tabs{display:flex;align-items:center;padding:15px;width:100%}::ng-deep main .tabs .tab-link{display:flex;width:31.7%;box-sizing:border-box;margin-right:2%;border:1px solid #1D1D1B;padding:0;background-color:#fff;align-items:center;cursor:pointer}::ng-deep main .tabs .tab-link:last-child{margin-right:0}::ng-deep main .tabs .tab-link .icon{width:44px;min-width:44px;height:44px;border-right:1px solid #1D1D1B}::ng-deep main .tabs .tab-link .icon.product-overiew{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2226%22 height%3D%2222%22 viewBox%3D%220 0 26 22%22%3E%0D %3Cg id%3D%22Group_14012%22 data-name%3D%22Group 14012%22 transform%3D%22translate(-316 -1291)%22%3E%0D %3Cpath id%3D%22Rectangle_1493%22 data-name%3D%22Rectangle 1493%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1291)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1494%22 data-name%3D%22Rectangle 1494%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1299)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1495%22 data-name%3D%22Rectangle 1495%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1307)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_464%22 data-name%3D%22Line 464%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1294)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_465%22 data-name%3D%22Line 465%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1302)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_466%22 data-name%3D%22Line 466%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1310)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link .icon.downloads{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2221%22 height%3D%2221%22 viewBox%3D%220 0 21 21%22%3E%0D %3Cg id%3D%22Group_14014%22 data-name%3D%22Group 14014%22 transform%3D%22translate(0.5 0.5)%22%3E%0D %3Cpath id%3D%22Path_11231%22 data-name%3D%22Path 11231%22 d%3D%22M23.848%2C18.9%2C15.99%2C11.175h4.558V1.282h6.6v9.893h4.558Zm-5.414-6.724L23.848%2C17.5l5.414-5.322H26.147V2.282h-4.6v9.893Z%22 transform%3D%22translate(-13.85 -1.782)%22%2F%3E%0D %3Cpath id%3D%22Path_11232%22 data-name%3D%22Path 11232%22 d%3D%22M22.282%2C69.593h-21V62.275h1v6.318h19V62.275h1Z%22 transform%3D%22translate(-1.781 -49.093)%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link .icon.related-products{position:relative;background:url(\"data:image/svg+xml,%3Csvg id%3D%22Group_14016%22 data-name%3D%22Group 14016%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22%3E%0D %3Cpath id%3D%22Rectangle_1364%22 data-name%3D%22Rectangle 1364%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(0 11)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1366%22 data-name%3D%22Rectangle 1366%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(11 11)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1365%22 data-name%3D%22Rectangle 1365%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cg id%3D%22Group_13038%22 data-name%3D%22Group 13038%22 transform%3D%22translate(11)%22%3E%0D %3Cpath id%3D%22Line_321%22 data-name%3D%22Line 321%22 d%3D%22M.5%2C9h-1V0h1Z%22 transform%3D%22translate(4.5)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3Cpath id%3D%22Line_322%22 data-name%3D%22Line 322%22 d%3D%22M9%2C.5H0v-1H9Z%22 transform%3D%22translate(0 4.5)%22 fill%3D%22%231d1d1b%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link .label{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif;text-transform:uppercase;text-align:center;width:100%;padding:8px}::ng-deep main .tabs .tab-link:hover,::ng-deep main .tabs .tab-link.active{color:#fff;background:#1D1D1B}::ng-deep main .tabs .tab-link:hover .icon,::ng-deep main .tabs .tab-link.active .icon{border-right:1px solid #ffffff}::ng-deep main .tabs .tab-link:hover .icon.product-overiew,::ng-deep main .tabs .tab-link.active .icon.product-overiew{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2226%22 height%3D%2222%22 viewBox%3D%220 0 26 22%22%3E%0D %3Cg id%3D%22Group_14011%22 data-name%3D%22Group 14011%22 transform%3D%22translate(-316 -1291)%22%3E%0D %3Cpath id%3D%22Rectangle_1493%22 data-name%3D%22Rectangle 1493%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1291)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1494%22 data-name%3D%22Rectangle 1494%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1299)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1495%22 data-name%3D%22Rectangle 1495%22 d%3D%22M1%2C1V5H5V1H1M0%2C0H6V6H0Z%22 transform%3D%22translate(316 1307)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_464%22 data-name%3D%22Line 464%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1294)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_465%22 data-name%3D%22Line 465%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1302)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_466%22 data-name%3D%22Line 466%22 d%3D%22M18%2C.5H0v-1H18Z%22 transform%3D%22translate(324 1310)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link:hover .icon.downloads,::ng-deep main .tabs .tab-link.active .icon.downloads{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2221%22 height%3D%2221%22 viewBox%3D%220 0 21 21%22%3E%0D %3Cg id%3D%22Group_14017%22 data-name%3D%22Group 14017%22 transform%3D%22translate(0.5 0.5)%22%3E%0D %3Cpath id%3D%22Path_11231%22 data-name%3D%22Path 11231%22 d%3D%22M23.848%2C18.9%2C15.99%2C11.175h4.558V1.282h6.6v9.893h4.558Zm-5.414-6.724L23.848%2C17.5l5.414-5.322H26.147V2.282h-4.6v9.893Z%22 transform%3D%22translate(-13.85 -1.782)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Path_11232%22 data-name%3D%22Path 11232%22 d%3D%22M22.282%2C69.593h-21V62.275h1v6.318h19V62.275h1Z%22 transform%3D%22translate(-1.781 -49.093)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}::ng-deep main .tabs .tab-link:hover .icon.related-products,::ng-deep main .tabs .tab-link.active .icon.related-products{background:url(\"data:image/svg+xml,%3Csvg id%3D%22Group_14015%22 data-name%3D%22Group 14015%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22%3E%0D %3Cpath id%3D%22Rectangle_1364%22 data-name%3D%22Rectangle 1364%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(0 11)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1366%22 data-name%3D%22Rectangle 1366%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 transform%3D%22translate(11 11)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Rectangle_1365%22 data-name%3D%22Rectangle 1365%22 d%3D%22M1%2C1V8H8V1H1M0%2C0H9V9H0Z%22 fill%3D%22%23fff%22%2F%3E%0D %3Cg id%3D%22Group_13038%22 data-name%3D%22Group 13038%22 transform%3D%22translate(11)%22%3E%0D %3Cpath id%3D%22Line_321%22 data-name%3D%22Line 321%22 d%3D%22M.5%2C9h-1V0h1Z%22 transform%3D%22translate(4.5)%22 fill%3D%22%23fff%22%2F%3E%0D %3Cpath id%3D%22Line_322%22 data-name%3D%22Line 322%22 d%3D%22M9%2C.5H0v-1H9Z%22 transform%3D%22translate(0 4.5)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}.modal-title{font-family:\"Arial Bold\",sans-serif}.invite-pop-close{cursor:pointer}.more-content{display:flex;border:1px solid #548AF7;padding:8px;background-color:#edf5ff}.more-content img{position:relative;top:-12px}@media screen and (max-width: 767px){::ng-deep main .category-image{max-width:320px;width:100%!important}::ng-deep main .tabs{flex-direction:row;align-items:stretch}::ng-deep main .tabs .tab-link{align-items:center;flex-direction:column}::ng-deep main .tabs .tab-link .icon{border-right:none}}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i5.AsyncPipe } });
|
|
535
535
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomProductQuantityFormComponent, decorators: [{
|
|
536
536
|
type: Component,
|
|
537
537
|
args: [{
|
|
@@ -553,8 +553,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
553
553
|
type: Input
|
|
554
554
|
}], cuttingValidation: [{
|
|
555
555
|
type: Input
|
|
556
|
-
}], finishedVariantDetails: [{
|
|
557
|
-
type: Input
|
|
558
556
|
}], finishedAvailableColours: [{
|
|
559
557
|
type: Input
|
|
560
558
|
}], isFinishedProduct: [{
|
|
@@ -572,4 +570,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
572
570
|
}], updateCartEntires: [{
|
|
573
571
|
type: Output
|
|
574
572
|
}] } });
|
|
575
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL3NoYXJlZC9jdXN0b20tY2FydC1kZXRhaWwvY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybS9jdXN0b20tcHJvZHVjdC1xdWFudGl0eS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvc2hhcmVkL2N1c3RvbS1jYXJ0LWRldGFpbC9jdXN0b20tcHJvZHVjdC1xdWFudGl0eS1mb3JtL2N1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBSVQsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUEwQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFPdkUsTUFBTSxPQUFPLGtDQUFrQztJQXdEN0MsWUFDVSxXQUF3QixFQUN4QixHQUFzQixFQUN0QixXQUF3QixFQUN4QixpQkFBb0MsRUFDcEMscUJBQTRDO1FBSjVDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQTVEdEQsUUFBRyxHQUFRLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsZ0JBQVcsR0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixlQUFVLEdBQVEsS0FBSyxDQUFDO1FBRWYsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUczQixhQUFRLEdBQVEsUUFBUSxDQUFDO1FBQ3pCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixtQkFBYyxHQUFRLElBQUksQ0FBQztRQUkzQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFbEMsZ0JBQVcsR0FBUSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVyQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQyxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBRXJCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFDMUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFDNUIsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUdiLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFcEQsbUJBQWMsR0FBUSxJQUFJLENBQUM7UUFDM0Isb0JBQWUsR0FBUSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFRLElBQUksQ0FBQztRQUUxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCLGFBQVEsR0FDTixJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFLaEMsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFVakUsQ0FBQztJQUVKLFFBQVE7O1FBQ04sTUFBTSxPQUFPLEdBQVEsWUFBWSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQywwQ0FBRSxNQUFNLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCOztRQUNoQyxJQUFJLENBQUMsQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLDBDQUFFLFdBQVcsQ0FBQSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLGlCQUFpQjs7UUFDZixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN4QyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDZCxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRTVCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ25DLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsMENBQUUsVUFBVSxDQUFDO2dCQUNoRCxPQUFPLEVBQUUsTUFBQSxJQUFJLENBQUMsY0FBYywwQ0FBRSxRQUFRO2FBQ3ZDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUM1QyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzthQUM3RCxDQUFDLENBQUM7WUFDSCxNQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsa0JBQWtCLDBDQUFFLE9BQU8sQ0FDOUMsQ0FBQyxHQUFRLEVBQUUsS0FBVSxFQUFFLEVBQUU7O2dCQUN2QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLFVBQVUsQ0FBQyxFQUFFO29CQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDdEIsTUFBQSxNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsMENBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuRDtnQkFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDbEQsVUFBVSxFQUFFLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxVQUFVO29CQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxDQUFDO29CQUNyQyxPQUFPLEVBQUUsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLFFBQVE7b0JBQ3RCLE9BQU8sRUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsU0FBUztpQkFDeEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUNGLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixjQUFjLENBQUMsS0FBVTs7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLGFBQWEsMENBQUUsT0FBTyxNQUFLLElBQUksQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSwwQ0FBRSxPQUFPLENBQ3pDLENBQUMsT0FBWSxFQUFFLEtBQVUsRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FDRixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxhQUFhLENBQUMsS0FBVTtRQUN0QixPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsYUFBYSxDQUFDLEtBQVU7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLG9CQUFvQixDQUFDLEtBQVU7UUFDN0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLGFBQWEsQ0FBQyxLQUFVLEVBQUUsR0FBUTtRQUNoQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQ2pCLENBQUMsTUFBVyxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsaUNBQ3ZCLE1BQU0sS0FDVCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFDakQsRUFDRixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCwwR0FBMEc7SUFDMUcsc0JBQXNCLENBQUMsVUFBZTs7UUFDcEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxPQUFPLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEQsVUFBVSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxXQUFXLEtBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxVQUFVLEdBQUcsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxhQUFhLEtBQUksSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxrQkFBa0IsQ0FBQyxVQUFlOztRQUNoQyxJQUFJLFVBQVUsR0FBUSxJQUFJLENBQUM7UUFDM0IsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQ3BCLFdBQVcsRUFBRSwwQ0FDYixPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsS0FBVSxFQUFFLEVBQUU7O1lBQ3JDLElBQUksQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxVQUFVLDBDQUFFLFdBQVcsRUFBRSxNQUFJLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxXQUFXLEVBQUUsQ0FBQSxFQUFFO2dCQUNuRSxVQUFVLEdBQUcsS0FBSyxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELDJCQUEyQixDQUFDLEtBQVU7O1FBQ3BDLE1BQU0sVUFBVSxHQUNkLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSTtZQUN4QixDQUFDLENBQUMsTUFBQSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQ3JDLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQ2pCLEtBQUssMENBQUUsV0FBVyxFQUFFO1lBQzFCLENBQUMsQ0FBQyxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsZUFBZSwwQ0FBRSxHQUFHLENBQUMsV0FBVyxDQUFDLDBDQUFFLEtBQUssMENBQUUsV0FBVyxFQUFFLENBQUM7UUFDbkUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEdBQVEsRUFBRSxFQUFFOztZQUNwRSxNQUFNLGFBQWEsR0FDakIsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsR0FBRyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsS0FBSyxDQUFDO1lBQ2pFLElBQ0UsQ0FBQSxNQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsVUFBVSwwQ0FBRSxXQUFXLEVBQUU7aUJBQ3ZDLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxXQUFXLEVBQUUsQ0FBQTtnQkFDM0IsQ0FBQyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO2dCQUM1QyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQ2xDO2dCQUNBLFFBQVEsR0FBRyxhQUFhLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLHFCQUFxQixDQUNuQixLQUFVLEVBQ1YsZ0JBQXFCLEVBQ3JCLFVBQWU7O1FBRWYsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sYUFBYSxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsMENBQUUsTUFBTSxDQUM5RCxDQUFDLE9BQVksRUFBRSxFQUFFOztZQUNmLE9BQU8sQ0FDTCxDQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsT0FBTyxLQUFJLGdCQUFnQjtnQkFDM0MsQ0FBQSxNQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsVUFBVSwwQ0FBRSxXQUFXLEVBQUU7cUJBQ3ZDLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxXQUFXLEVBQUUsQ0FBQTtnQkFDM0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQ3RDLENBQUM7UUFDSixDQUFDLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNuQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLHlCQUF5QixDQUN2QixLQUFVLEVBQ1YsS0FBVSxFQUNWLGNBQXVCLEtBQUs7O1FBRTVCLE1BQU0sVUFBVSxHQUNkLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQUUsS0FBSzthQUNuRSxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQywwQ0FBRSxLQUFLLENBQUEsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FDZixLQUFLLElBQUksSUFBSTtZQUNYLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDM0IsQ0FBQyxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsS0FBSztpQkFDaEUsTUFBQSxJQUFJLENBQUMsZUFBZSwwQ0FBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQSxDQUFDO1FBQ2hELFdBQVcsR0FBRyxXQUFXO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7WUFDNUQsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNWLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsR0FBUSxFQUFFLEVBQUU7O2dCQUNuRSxJQUNFLENBQUEsTUFBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLFVBQVUsMENBQUUsV0FBVyxFQUFFO3FCQUN2QyxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsV0FBVyxFQUFFLENBQUE7b0JBQzNCLEdBQUcsSUFBSSxLQUFLO29CQUNaLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7b0JBQ2hDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFDL0I7b0JBQ0EsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsR0FBRyxDQUFDLDBDQUNuQyxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUNkLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLDJCQUEyQixDQUFDLEtBQVUsRUFBRSxLQUFVOztRQUNoRCxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDckMsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssRUFDckMsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FDYixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMzRDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEUsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUNyQyxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7YUFDN0Q7U0FDRjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxnQkFBZ0I7O1FBQ2QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDbkMsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFdBQVcsRUFBRSxFQUN2QyxZQUFZLENBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQSxNQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLGVBQWUsQ0FBQyxLQUFVOztRQUN4QixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDeEIsWUFBWSxDQUFDLElBQUksQ0FDZixNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQywwQ0FBRSxLQUFLLENBQ3BFLENBQUM7UUFDRixZQUFZLENBQUMsSUFBSSxDQUNmLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLEtBQUssQ0FDakUsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsZUFBZSxDQUFDLEtBQVU7O1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLE1BQUEsSUFBSSxDQUFDLGVBQWUsMENBQ2hCLEdBQUcsQ0FBQyxXQUFXLEVBQ2hCLFFBQVEsQ0FDUCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQ3JDLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQ2pCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FDeEIsQ0FBQztRQUNKLE1BQUEsTUFBQSxJQUFJLENBQUMsZUFBZSwwQ0FDaEIsR0FBRyxDQUFDLFFBQVEsQ0FBQywwQ0FDYixRQUFRLENBQ1IsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsS0FBSyxDQUNqRSxDQUFDO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLGlCQUFpQixDQUFDLEtBQVU7O1FBQzFCLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsMENBQ2xELEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQ2pCLFFBQVEsQ0FBQyxNQUFBLE1BQUEsSUFBSSxDQUFDLGVBQWUsMENBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQywwQ0FBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLDBDQUNsRCxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUNkLFFBQVEsQ0FBQyxNQUFBLE1BQUEsSUFBSSxDQUFDLGVBQWUsMENBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQywwQ0FBRSxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsaUJBQWlCOztRQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLElBQUksT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUV0QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsT0FBTyxHQUFHO29CQUNSLFFBQVEsRUFBRSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsS0FBSztvQkFDckUsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxNQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsT0FBTywwQ0FBRSxJQUFJO3FCQUN6QztvQkFDRCxZQUFZLEVBQUUsTUFBQSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLE9BQU8sMENBQUUsWUFBWTtpQkFDekQsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLE9BQU8sR0FBRztvQkFDUixRQUFRLEVBQUUsQ0FBQztvQkFDWCxrQkFBa0IsRUFBRSxDQUFDLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsWUFBWSxDQUFDO29CQUN2RCxrQkFBa0IsRUFBRSxFQUFFO29CQUN0QixZQUFZLEVBQUUsTUFBQSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLE9BQU8sMENBQUUsWUFBWTtpQkFDekQsQ0FBQztnQkFDRixNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLDBDQUFFLE9BQU8sQ0FDekMsQ0FBQyxPQUFZLEVBQUUsS0FBVSxFQUFFLEVBQUU7O29CQUMzQixNQUFNLFdBQVcsR0FBUTt3QkFDdkIsZ0JBQWdCLEVBQUUsU0FBUzt3QkFDM0IsUUFBUSxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsT0FBTzt3QkFDakMsTUFBTSxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsT0FBTztxQkFDaEMsQ0FBQztvQkFDRixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUksTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSywwQ0FBRSxVQUFVLENBQUEsRUFBRTt3QkFDaEQsV0FBVyxDQUFDLFVBQVUsR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLFVBQVUsQ0FBQzt3QkFDcEQsV0FBVyxDQUFDLFNBQVMsR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLE9BQU8sQ0FBQztxQkFDakQ7b0JBQ0QsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUNGLENBQUM7Z0JBQ0YsSUFDRSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxrQkFBa0I7b0JBQzNCLENBQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsa0JBQWtCLDBDQUFFLE1BQU0sSUFBRyxDQUFDO29CQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNsRDtvQkFDTyxPQUFPLGFBQVAsT0FBTyw0QkFBUCxPQUFPLENBQUUsa0JBQWtCLENBQUM7aUJBQ3BDO2FBQ0Y7WUFFRCxJQUFJLENBQUMsV0FBVztpQkFDYixlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLFdBQVcsRUFBRSxPQUFPLENBQUM7aUJBQ3ZFLFNBQVMsQ0FDUixDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNoQixJQUFJLFFBQVEsRUFBRTtvQkFDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbkM7WUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFVLEVBQUUsRUFBRTs7Z0JBQ2IsSUFBSSxDQUFDLGNBQWM7b0JBQ2pCLENBQUEsTUFBQSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsMENBQUUsT0FBTzt5QkFDaEMsTUFBQSxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsMENBQUUsWUFBWSxDQUFBLENBQUM7WUFDMUMsQ0FBQyxDQUNGLENBQUM7U0FDTDtJQUNILENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsV0FBVzs7UUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ25DLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxXQUFXLEVBQUUsRUFDdkMsWUFBWSxDQUNiLENBQUM7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxLQUFVLEVBQUUsRUFBRTs7Z0JBQ3JFLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSywwQ0FBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxpQkFBaUIsR0FBRyxNQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsVUFBVSwwQ0FBRSxXQUFXLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQ0UsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztvQkFDeEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztvQkFDeEIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUNYLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNYO29CQUNBLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO29CQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7NEJBQ3BCLEtBQUssR0FBRyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLFdBQVcsS0FBSSxDQUFDLENBQUM7Z0NBQ2xELENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsYUFBYSxLQUFJLElBQUksQ0FBQztnQ0FDN0MsQ0FBQyxDQUFDLElBQUk7Z0NBQ04sQ0FBQyxDQUFDLEtBQUssQ0FBQztxQkFDYjt5QkFBTSxJQUNMLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUMxRDt3QkFDQSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQUU7NEJBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO3lCQUN0QztxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDaEM7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFVBQVU7d0JBQ2IsSUFBSSxDQUFDLFdBQVcsSUFBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUUsS0FBSywwQ0FBRSxLQUFLLENBQUEsQ0FBQztpQkFDeEQ7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixNQUFNLEdBQUcsR0FBRyxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsMENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxLQUFLLENBQUM7WUFDekUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDZixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDL0M7U0FDRjtRQUNELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxxQ0FBcUM7SUFDckMsWUFBWSxDQUFDLE1BQVcsRUFBRSxNQUFXO1FBQ25DLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQzlCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBa0MsS0FBQSxNQUFNLEVBQWhDLEtBQUMsR0FBSSxFQUFFLEtBQUssU0FBQSxFQUFLLElBQUksY0FBdkIsdUNBQXlCLENBQVMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsR0FBRyxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2hFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUMzRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQWMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELDJCQUEyQixDQUFDLEtBQVc7O1FBQ3JDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxjQUFjLEVBQUUsQ0FBQztRQUN4QixNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDaEMsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFdBQVcsRUFBRSxFQUN2QyxZQUFZLENBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsTUFBTSxJQUFHLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELHlCQUF5QixDQUFDLEtBQVUsRUFBRSxLQUFVOztRQUM5QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxNQUFNLElBQUcsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0Isa0JBQWtCOztRQUNoQixPQUFPLE1BQUEsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxHQUFHLENBQUMsY0FBYyxDQUFDLDBDQUFFLE1BQU0sQ0FBQztJQUN2RCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLGFBQWEsQ0FBQyxLQUFVOztRQUN0QixPQUFPLENBQ0wsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLE1BQU07YUFDaEUsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUM7WUFDckUsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLEtBQUs7aUJBQy9ELE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLE9BQU8sQ0FBQSxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLGFBQWEsQ0FBQyxLQUFVOztRQUN0QixPQUFPLENBQ0wsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLE1BQU07YUFDaEUsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUM7WUFDckUsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLEtBQUs7aUJBQy9ELE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLE9BQU8sQ0FBQSxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFlBQVksQ0FBQyxLQUFVOztRQUNyQixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBSyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLGdCQUFnQixDQUFDLEtBQVU7O1FBQ3pCLE9BQU8sQ0FDTCxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQUUsTUFBTTthQUNuRSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQywwQ0FDeEQsT0FBTyxDQUFBLENBQUM7WUFDZCxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQUUsS0FBSztpQkFDbEUsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsYUFBYSxDQUFDLEtBQVU7O1FBQ3RCLE9BQU8sQ0FDTCxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsTUFBTTthQUNoRSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxPQUFPLENBQUEsQ0FBQztZQUNyRSxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsS0FBSztpQkFDL0QsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FDdEUsQ0FBQztJQUNKLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsV0FBVzs7UUFDVCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU8sTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxLQUFLLENBQUM7U0FDaEM7YUFBTTtZQUNMLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsMENBQUUsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7O2dCQUMzRCxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtvQkFDNUIsQ0FBQyxDQUFDLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsS0FBSztvQkFDaEMsQ0FBQyxDQUFDLENBQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxLQUFLLE1BQUksTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxLQUFLLENBQUEsQ0FBQztZQUN2RSxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFNBQVMsQ0FBQyxLQUFVOztRQUNsQixPQUFPLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsTUFBTTthQUN0RSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsbUJBQW1CLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxNQUFNLENBQUE7YUFDakUsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsMENBQUUsTUFBTSxDQUFBO2FBQ3BFLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLE1BQU0sQ0FBQTtZQUNqRSxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDWixDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELG9CQUFvQjs7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixNQUFBLE1BQUEsSUFBSSxDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxHQUFRLEVBQUUsRUFBRTs7WUFDckUsSUFDRSxDQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsT0FBTyxLQUFHLE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxTQUFTLENBQUE7Z0JBQzNELENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLE9BQU8sQ0FBQyxFQUM1QztnQkFDQSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTs7UUFDbkIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sTUFBQSxNQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsMENBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUMsMENBQ1YsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxnQkFBZ0IsQ0FBQyxPQUFZO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQzs7Z0lBem5CVSxrQ0FBa0M7b0hBQWxDLGtDQUFrQywyeEJDekIvQywrdGFBZ1dBOzRGRHZVYSxrQ0FBa0M7a0JBTDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsV0FBVyxFQUFFLCtDQUErQztvQkFDNUQsU0FBUyxFQUFFLENBQUMsK0NBQStDLENBQUM7aUJBQzdEO2dPQVdVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQTRCeUIsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFDSCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBRWQsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3VycmVudFByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9zdG9yZWZyb250JztcclxuaW1wb3J0IHsgQWN0aXZlQ2FydFNlcnZpY2UsIFByb2R1Y3QgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY2Vzc29yaWVzUXVhbnRpdHksIFByb2R1Y3RRdWFudGl0eSB9IGZyb20gJy4uLy4uL0N1c3RvbVByb2R1Y3QnO1xyXG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciwgUmVnZXhDb25zdGFudHMgfSBmcm9tICcuLi8uLi9yZWdFeC52YWxpZGF0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbVByb2R1Y3RRdWFudGl0eUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgZW52OiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbnYnKTtcclxuICBlbnZpcm9ubWVudCA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnYpO1xyXG4gIGlzRGVza3RvcDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1RhYmxldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB0b3RhbExlbmd0aDogYW55O1xyXG4gIHRvdGFsUHJpY2U6IGFueSA9ICcwLjAnO1xyXG5cclxuICBASW5wdXQoKSBoYXNCdW5kbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9kdWN0Q29kZTogYW55O1xyXG4gIEBJbnB1dCgpIHByb2R1Y3REZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgdW5pdFR5cGU6IGFueSA9ICdwZXIgTE0nO1xyXG4gIEBJbnB1dCgpIGFjY2Vzc29yaWVzUHJpY2UgPSAwO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ29sb3VyOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGN1dHRpbmdWYWxpZGF0aW9uOiBhbnk7XHJcbiAgQElucHV0KCkgZmluaXNoZWRWYXJpYW50RGV0YWlsczogYW55O1xyXG4gIEBJbnB1dCgpIGZpbmlzaGVkQXZhaWxhYmxlQ29sb3VyczogYW55O1xyXG4gIEBJbnB1dCgpIGlzRmluaXNoZWRQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNGbGFzaGluZ1Byb2R1Y3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsaXN0VmlldzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByb2R1Y3RGb3JtOiBhbnkgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgZGlzYWJsZUFkZE1vcmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYnVuZGxlTGlzdDogYW55ID0gW107XHJcblxyXG4gIGVycm9ySW5kZXg6IGFueSA9IFtdO1xyXG4gIGhhc1Byb2RSZWZJbmRleDogYW55ID0gW107XHJcbiAgaGFzUHJvZFJlZjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhc01pbmxlbmd0aEVycm9yOiBhbnkgPSBbXTtcclxuICByb3dJbmRleCA9IDA7XHJcbiAgY2FydElkOiBhbnk7XHJcblxyXG4gIHNob3dXYWl0Q3Vyc29yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgYWRkVG9DYXJ0RXJyb3I6IGFueSA9IG51bGw7XHJcbiAgbW9kYWxCdW5kbGVGb3JtOiBhbnkgPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBlZGl0UHJvZEJ1bmRsZTogYW55ID0gJyc7XHJcbiAgZWRpdFByb2RSZWY6IGFueSA9ICcnO1xyXG4gIHNlbGVjdGVkSW5kZXg6IGFueSA9IG51bGw7XHJcblxyXG4gIGhhc0RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJvZHVjdCQ6IE9ic2VydmFibGU8UHJvZHVjdCB8IG51bGw+ID1cclxuICAgIHRoaXMuY3VycmVudFByb2R1Y3RTZXJ2aWNlLmdldFByb2R1Y3QoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2xvc2VJbnZpdGVNb2RhbCcpIGNsb3NlSW52aXRlTW9kYWw6IGFueTtcclxuICBAVmlld0NoaWxkKCdjbG9zZWJ1dHRvbicpIGNsb3NlYnV0dG9uOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKSB1cGRhdGVDYXJ0RW50aXJlczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNjcmVlbldpZHRoOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZlQ2FydFNlcnZpY2U6IEFjdGl2ZUNhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjdXJyZW50UHJvZHVjdFNlcnZpY2U6IEN1cnJlbnRQcm9kdWN0U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjYXJ0T2JqOiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3BhcnRhY3Vz4pq/ZGltb25kLXNwYeKav2NhcnQnKTtcclxuICAgIHRoaXMuY2FydElkID0gSlNPTi5wYXJzZShjYXJ0T2JqKT8uYWN0aXZlO1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoICsgJ3B4JztcclxuICAgIGlmICh0aGlzLnByb2R1Y3REZXRhaWxzKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlUHJvZHVjdEZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICghY2hhbmdlcz8ucHJvZHVjdERldGFpbHM/LmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENyZWF0ZSBhIFByb2R1Y3QgUXVhbnRpdHkgRm9ybVxyXG4gIGNyZWF0ZVByb2R1Y3RGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY2Nlc3Nvcmllc1ByaWNlID0gMDtcclxuICAgIHRoaXMudG90YWxMZW5ndGggPSBudWxsO1xyXG4gICAgdGhpcy50b3RhbFByaWNlID0gJzAuMCc7XHJcbiAgICB0aGlzLmhhc0J1bmRsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlQWRkTW9yZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5idW5kbGVMaXN0ID0gW107XHJcbiAgICB0aGlzLmVycm9ySW5kZXggPSBbXTtcclxuICAgIHRoaXMuaGFzUHJvZFJlZkluZGV4ID0gW107XHJcbiAgICB0aGlzLnJvd0luZGV4ID0gMDtcclxuICAgIHRoaXMucHJvZHVjdEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIHRoaXMuYWRkVG9DYXJ0RXJyb3IgPSBudWxsO1xyXG4gICAgdGhpcy5wcm9kdWN0Rm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBidW5kbGluZzogWycnXSxcclxuICAgICAgcHJvZHVjdFF1YW50aXR5OiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKSxcclxuICAgICAgam9iUmVmZXJlbmNlOiBbJycsIFtSZWdleFZhbGlkYXRvcihSZWdleENvbnN0YW50cy5KT0JfUkVGRVJFTkNFKV1dLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lZGl0UHJvZEJ1bmRsZSA9ICcnO1xyXG4gICAgdGhpcy5lZGl0UHJvZFJlZiA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuaGFzUHJvZFJlZiA9IGZhbHNlO1xyXG4gICAgdGhpcy5oYXNNaW5sZW5ndGhFcnJvciA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRmluaXNoZWRQcm9kdWN0KSB7XHJcbiAgICAgIHRoaXMuYWRkUHJvZHVjdFF1YW50aXR5Rm9ybUdyb3VwKCk7XHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbMF0/LnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIHByb2RRdHk6IHRoaXMucHJvZHVjdERldGFpbHM/LnF1YW50aXR5LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9kYWxCdW5kbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgbW9kQnVuZGxlOiBbJycsIFtSZWdleFZhbGlkYXRvcihSZWdleENvbnN0YW50cy5CVU5ETEVfTkFNRSldXSxcclxuICAgICAgICBtb2RSZWY6IFsnJywgW1JlZ2V4VmFsaWRhdG9yKFJlZ2V4Q29uc3RhbnRzLkpPQl9SRUZFUkVOQ0UpXV0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb2R1Y3REZXRhaWxzPy5zdWJMaW5lQ29uZmlnSW5mb3M/LmZvckVhY2goXHJcbiAgICAgICAgKHZhbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFkZFByb2R1Y3RRdWFudGl0eUZvcm1Hcm91cCgpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkodmFsPy5idW5kbGVOYW1lKSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhc0J1bmRsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdEZvcm0/LmdldCgnYnVuZGxpbmcnKT8uc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0uY29udHJvbHNbaW5kZXhdLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBwcm9kQnVuZGxlOiB2YWw/LmJ1bmRsZU5hbWUsXHJcbiAgICAgICAgICAgIHByb2RMZW46IHRoaXMucGFkM0RpZ2l0cyh2YWw/Lmxlbmd0aCksXHJcbiAgICAgICAgICAgIHByb2RRdHk6IHZhbD8ucXVhbnRpdHksXHJcbiAgICAgICAgICAgIHByb2RSZWY6IHZhbD8ucmVmZXJlbmNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRpbmcgdGhlIEJ1bmRsZVxyXG4gIHVwZGF0ZUJ1bmRsaW5nKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFzQnVuZGxlID0gZXZlbnQuY3VycmVudFRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmhhc0J1bmRsZSkge1xyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzPy5mb3JFYWNoKFxyXG4gICAgICAgIChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlU2FtZUJ1bmRsZVJlZmVyZW5jZShudWxsLCBpbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVUb3RhbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgYW55IHZhbHVlIGlzIGVtcHR5IG9yIHVuZGVmaW5lZFxyXG4gIGlzTnVsbE9yRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09ICcnO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgZm9yIGFueSBlcnJvcnMgd2hpbGUgdXBkYXRpbmcgdGhlIHF1YW50aXR5XHJcbiAgaGFzRXJyb3JJbmRleChpbmRleDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lcnJvckluZGV4W2luZGV4XSA9PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgYW55IFNhbWUgUmVmZXJlbmNlIEVycm9yXHJcbiAgaGFzUHJvZFJlZkVycm9ySW5kZXgoaW5kZXg6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFzUHJvZFJlZkluZGV4W2luZGV4XSA9PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gR3JvdXAgdGhlIFF1YW50aXR5IHZhbHVlcyBiYXNlZCBvbiBidW5kbGVcclxuICBncm91cEJ5QnVuZGxlKGl0ZW1zOiBhbnksIGtleTogYW55KTogYW55IHtcclxuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoXHJcbiAgICAgIChyZXN1bHQ6IGFueSwgaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgIC4uLnJlc3VsdCxcclxuICAgICAgICBbaXRlbVtrZXldXTogWy4uLihyZXN1bHRbaXRlbVtrZXldXSB8fCBbXSksIGl0ZW1dLFxyXG4gICAgICB9KSxcclxuICAgICAge31cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayB0aGUgdG90YWwgYnVuZGxlIHdlaWdodCBhbmQgdXBkYXRlIHRoZSBlcnJvciBpZiBpdCByZWFjaGVzIHRvIG1heGltdW0gYnVuZGxlIHNpemUgZm9yIGVhY2ggYnVuZGxlXHJcbiAgY2hlY2tUb3RhbEJ1bmRsZVdlaWdodChmb3JtVmFsdWVzOiBhbnkpOiBhbnkge1xyXG4gICAgbGV0IGdyb3VwVG90YWwgPSAwO1xyXG4gICAgZm9ybVZhbHVlcz8uZm9yRWFjaCgoY3VycmVudFZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgcXR5ID0gcGFyc2VGbG9hdChjdXJyZW50VmFsdWU/LnByb2RRdHkpO1xyXG4gICAgICBjb25zdCBsZW4gPSBwYXJzZUZsb2F0KGN1cnJlbnRWYWx1ZT8ucHJvZExlbik7XHJcbiAgICAgIGlmICghdGhpcy5pc051bGxPckVtcHR5KHF0eSkgJiYgIXRoaXMuaXNOdWxsT3JFbXB0eShsZW4pKSB7XHJcbiAgICAgICAgZ3JvdXBUb3RhbCArPSBxdHkgKiBsZW47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgZ3JvdXBUb3RhbCA9IGdyb3VwVG90YWwgKiAodGhpcy5jdXR0aW5nVmFsaWRhdGlvbj8ud2VpZ2h0UGVyTE0gfHwgMSk7XHJcbiAgICByZXR1cm4gZ3JvdXBUb3RhbCA+ICh0aGlzLmN1dHRpbmdWYWxpZGF0aW9uPy5tYXhCdW5kbGVMb2FkIHx8IDEwMDApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBsYXN0IHJvdyBvZiBhIGJ1bmRsZSBiYXNlZCBvbiBidW5kbGUgbmFtZVxyXG4gIGdldExhc3RCdW5kbGVJbmRleChidW5kbGVOYW1lOiBhbnkpOiBhbnkge1xyXG4gICAgbGV0IGluZGV4VmFsdWU6IGFueSA9IG51bGw7XHJcbiAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm1cclxuICAgICAgPy5nZXRSYXdWYWx1ZSgpXHJcbiAgICAgID8uZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQ/LnByb2RCdW5kbGU/LnRvVXBwZXJDYXNlKCkgPT0gYnVuZGxlTmFtZT8udG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgaW5kZXhWYWx1ZSA9IGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gaW5kZXhWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vIEdldCB0aGUgUmVmZXJlbmNlIHZhbHVlIG9mIHRoZSBzYW1lIGJ1bmRsZSBhbmQgdXBkYXRlXHJcbiAgZ2V0UHJldkJ1bmRsZVJlZmVyZW5jZVZhbHVlKGluZGV4OiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgYnVuZGxlTmFtZSA9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9PSBudWxsXHJcbiAgICAgICAgPyB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XVxyXG4gICAgICAgICAgICA/LmdldCgncHJvZEJ1bmRsZScpXHJcbiAgICAgICAgICAgID8udmFsdWU/LnRvVXBwZXJDYXNlKClcclxuICAgICAgICA6IHRoaXMubW9kYWxCdW5kbGVGb3JtPy5nZXQoJ21vZEJ1bmRsZScpPy52YWx1ZT8udG9VcHBlckNhc2UoKTtcclxuICAgIGxldCByZWZWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9scy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG90aGVyUmVmVmFsdWUgPVxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kXT8uZ2V0KCdwcm9kUmVmJyk/LnZhbHVlO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWxlbWVudD8udmFsdWU/LnByb2RCdW5kbGU/LnRvVXBwZXJDYXNlKCkgPT1cclxuICAgICAgICAgIGJ1bmRsZU5hbWU/LnRvVXBwZXJDYXNlKCkgJiZcclxuICAgICAgICAoaW5kICE9IGluZGV4IHx8IHRoaXMuc2VsZWN0ZWRJbmRleCAhPSBudWxsKSAmJlxyXG4gICAgICAgICF0aGlzLmlzTnVsbE9yRW1wdHkob3RoZXJSZWZWYWx1ZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmVmVmFsdWUgPSBvdGhlclJlZlZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZWZWYWx1ZSB8fCAnJztcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIFNhbWUgUmVmcmVuY2UgaXMgYWxyZWFkeSB1c2VkXHJcbiAgY2hlY2tIYXNTYW1lUmVmZXJlbmNlKFxyXG4gICAgaW5kZXg6IGFueSxcclxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IGFueSxcclxuICAgIGJ1bmRsZU5hbWU6IGFueVxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGhhc1JlZiA9IGZhbHNlO1xyXG4gICAgY29uc3QgcHJvZFJlZlZhbHVlcyA9IHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHM/LmZpbHRlcihcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICBlbGVtZW50Py52YWx1ZT8ucHJvZFJlZiA9PSBjdXJyZW50UmVmZXJlbmNlICYmXHJcbiAgICAgICAgICBlbGVtZW50Py52YWx1ZT8ucHJvZEJ1bmRsZT8udG9VcHBlckNhc2UoKSAhPVxyXG4gICAgICAgICAgICBidW5kbGVOYW1lPy50b1VwcGVyQ2FzZSgpICYmXHJcbiAgICAgICAgICAhdGhpcy5pc051bGxPckVtcHR5KGN1cnJlbnRSZWZlcmVuY2UpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGlmIChwcm9kUmVmVmFsdWVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFzUHJvZFJlZkluZGV4W2luZGV4XSA9IHRydWU7XHJcbiAgICAgIGhhc1JlZiA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhc1Byb2RSZWZJbmRleFtpbmRleF0gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiBoYXNSZWY7XHJcbiAgfVxyXG5cclxuICAvLyBVcGRhdGUgdGhlIFJlZmVyZW5jZSBWYWx1ZSBpZiBhbHJlYWR5IHRoZSBzYW1lIGJ1bmRsZSBpcyBwcmVzZW50XHJcbiAgdXBkYXRlU2FtZUJ1bmRsZVJlZmVyZW5jZShcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBpbmRleDogYW55LFxyXG4gICAgaXNSZWZlcmVuY2U6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgYnVuZGxlTmFtZSA9XHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RCdW5kbGUnKT8udmFsdWUgfHxcclxuICAgICAgdGhpcy5tb2RhbEJ1bmRsZUZvcm0uZ2V0KCdtb2RCdW5kbGUnKT8udmFsdWU7XHJcbiAgICBjb25zdCBuZXdSZWZWYWx1ZSA9XHJcbiAgICAgIGV2ZW50ICE9IG51bGxcclxuICAgICAgICA/IGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWVcclxuICAgICAgICA6IHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RSZWYnKT8udmFsdWUgfHxcclxuICAgICAgICAgIHRoaXMubW9kYWxCdW5kbGVGb3JtPy5nZXQoJ21vZFJlZicpLnZhbHVlO1xyXG4gICAgaXNSZWZlcmVuY2UgPSBpc1JlZmVyZW5jZVxyXG4gICAgICA/IHRoaXMuY2hlY2tIYXNTYW1lUmVmZXJlbmNlKGluZGV4LCBuZXdSZWZWYWx1ZSwgYnVuZGxlTmFtZSlcclxuICAgICAgOiBmYWxzZTtcclxuICAgIGlmICghaXNSZWZlcmVuY2UpIHtcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtLmNvbnRyb2xzLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbGVtZW50Py52YWx1ZT8ucHJvZEJ1bmRsZT8udG9VcHBlckNhc2UoKSA9PVxyXG4gICAgICAgICAgICBidW5kbGVOYW1lPy50b1VwcGVyQ2FzZSgpICYmXHJcbiAgICAgICAgICBpbmQgIT0gaW5kZXggJiZcclxuICAgICAgICAgICF0aGlzLmlzTnVsbE9yRW1wdHkobmV3UmVmVmFsdWUpICYmXHJcbiAgICAgICAgICAhdGhpcy5pc051bGxPckVtcHR5KGJ1bmRsZU5hbWUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZF1cclxuICAgICAgICAgICAgPy5nZXQoJ3Byb2RSZWYnKVxyXG4gICAgICAgICAgICA/LnNldFZhbHVlKG5ld1JlZlZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIHRoZSBzYW1lIEJ1bmRsZSBSZWZyZW5jZSBWYWx1ZSB0byBhbGwgb3RoZXIgQnVuZGxlcyBpZiBhbnkgY2hhbmdlcyBpbiBSZWZlcmVuY2UgVmFsdWVcclxuICBwb3B1bGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGNvbnN0IHByZXZSZWZWYWx1ZSA9IHRoaXMuZ2V0UHJldkJ1bmRsZVJlZmVyZW5jZVZhbHVlKGluZGV4KTtcclxuICAgICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkocHJldlJlZlZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdXHJcbiAgICAgICAgICAuZ2V0KCdwcm9kUmVmJylcclxuICAgICAgICAgID8uc2V0VmFsdWUocHJldlJlZlZhbHVlKTtcclxuICAgICAgICB0aGlzLm1vZGFsQnVuZGxlRm9ybS5nZXQoJ21vZFJlZicpLnNldFZhbHVlKHByZXZSZWZWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pc051bGxPckVtcHR5KHRoaXMuZ2V0UHJldkJ1bmRsZVJlZmVyZW5jZVZhbHVlKGluZGV4KSkpIHtcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XVxyXG4gICAgICAgICAgPy5nZXQoJ3Byb2RSZWYnKVxyXG4gICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLmdldFByZXZCdW5kbGVSZWZlcmVuY2VWYWx1ZShpbmRleCkgfHwgJycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVcGRhdGUgdGhlIEJ1bmRsZSBMaXN0IGlmIG1vcmUgdGhhbiBvbmUgYnVuZGxlL3Jvd3NcclxuICB1cGRhdGVCdW5kbGVMaXN0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZ3JvdXBCeUJ1bmRsZShcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAncHJvZEJ1bmRsZSdcclxuICAgICk7XHJcbiAgICBpZiAoT2JqZWN0LmtleXMoZm9ybVZhbHVlcyk/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5idW5kbGVMaXN0ID0gT2JqZWN0LmtleXMoZm9ybVZhbHVlcyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgQnVuZGxlIHZhbHVlcyBvbmx5IGZvciBtb2JpbGUgdmlld1xyXG4gIGdldEJ1bmRsZVZhbHVlcyhpbmRleDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGJ1bmRsZVZhbHVlcyA9IFtdO1xyXG4gICAgYnVuZGxlVmFsdWVzLnB1c2goXHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RCdW5kbGUnKT8udmFsdWVcclxuICAgICk7XHJcbiAgICBidW5kbGVWYWx1ZXMucHVzaChcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFJlZicpPy52YWx1ZVxyXG4gICAgKTtcclxuICAgIHJldHVybiBidW5kbGVWYWx1ZXM7XHJcbiAgfVxyXG5cclxuICAvLyBFZGl0IEJ1bmRsZSBWYWx1ZXNcclxuICBlZGl0QnVuZGxlVmFsdWUoaW5kZXg6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLm1vZGFsQnVuZGxlRm9ybVxyXG4gICAgICA/LmdldCgnbW9kQnVuZGxlJylcclxuICAgICAgLnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdXHJcbiAgICAgICAgICA/LmdldCgncHJvZEJ1bmRsZScpXHJcbiAgICAgICAgICA/LnZhbHVlLnRvVXBwZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgIHRoaXMubW9kYWxCdW5kbGVGb3JtXHJcbiAgICAgID8uZ2V0KCdtb2RSZWYnKVxyXG4gICAgICA/LnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RSZWYnKT8udmFsdWVcclxuICAgICAgKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZS9TYXZlIEJ1bmRsZSB2YWx1ZXNcclxuICBzYXZlQnVuZGxlRGV0YWlscyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW3RoaXMuc2VsZWN0ZWRJbmRleF1cclxuICAgICAgPy5nZXQoJ3Byb2RCdW5kbGUnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMubW9kYWxCdW5kbGVGb3JtPy5nZXQoJ21vZEJ1bmRsZScpPy52YWx1ZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbdGhpcy5zZWxlY3RlZEluZGV4XVxyXG4gICAgICA/LmdldCgncHJvZFJlZicpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5tb2RhbEJ1bmRsZUZvcm0/LmdldCgnbW9kUmVmJyk/LnZhbHVlKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UobnVsbCwgdGhpcy5zZWxlY3RlZEluZGV4LCB0cnVlKTtcclxuICAgIHRoaXMudXBkYXRlVG90YWwoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5jbG9zZWJ1dHRvbi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVcGRhdGUgQ2FydCBEZWF0aWxzXHJcbiAgdXBkYXRlQ2FydERldGFpbHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1ZhbGlkRm9ybSgpKSB7XHJcbiAgICAgIGxldCBwYXlMb2FkOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzRmluaXNoZWRQcm9kdWN0KSB7XHJcbiAgICAgICAgcGF5TG9hZCA9IHtcclxuICAgICAgICAgIHF1YW50aXR5OiB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzWzBdLmdldCgncHJvZFF0eScpPy52YWx1ZSxcclxuICAgICAgICAgIHByb2R1Y3Q6IHtcclxuICAgICAgICAgICAgY29kZTogdGhpcy5wcm9kdWN0RGV0YWlscz8ucHJvZHVjdD8uY29kZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBqb2JSZWZlcmVuY2U6IHRoaXMucHJvZHVjdERldGFpbHM/LnByb2R1Y3Q/LmpvYlJlZmVyZW5jZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBheUxvYWQgPSB7XHJcbiAgICAgICAgICBxdWFudGl0eTogMSxcclxuICAgICAgICAgIGNvbmZpZ3VyYXRpb25JbmZvczogW3RoaXMucHJvZHVjdERldGFpbHM/LmNvbmZpZ1ZhbHVlc10sXHJcbiAgICAgICAgICBzdWJMaW5lQ29uZmlnSW5mb3M6IFtdLFxyXG4gICAgICAgICAgam9iUmVmZXJlbmNlOiB0aGlzLnByb2R1Y3REZXRhaWxzPy5wcm9kdWN0Py5qb2JSZWZlcmVuY2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzPy5mb3JFYWNoKFxyXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb25maWdJbmZvczogYW55ID0ge1xyXG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRvclR5cGU6ICdDVVRUSU5HJyxcclxuICAgICAgICAgICAgICBxdWFudGl0eTogZWxlbWVudD8udmFsdWU/LnByb2RRdHksXHJcbiAgICAgICAgICAgICAgbGVuZ3RoOiBlbGVtZW50Py52YWx1ZT8ucHJvZExlbixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQnVuZGxlICYmIGVsZW1lbnQ/LnZhbHVlPy5wcm9kQnVuZGxlKSB7XHJcbiAgICAgICAgICAgICAgY29uZmlnSW5mb3MuYnVuZGxlTmFtZSA9IGVsZW1lbnQ/LnZhbHVlPy5wcm9kQnVuZGxlO1xyXG4gICAgICAgICAgICAgIGNvbmZpZ0luZm9zLnJlZmVyZW5jZSA9IGVsZW1lbnQ/LnZhbHVlPy5wcm9kUmVmO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBheUxvYWQuc3ViTGluZUNvbmZpZ0luZm9zLnB1c2goY29uZmlnSW5mb3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcGF5TG9hZD8uY29uZmlndXJhdGlvbkluZm9zICYmXHJcbiAgICAgICAgICBwYXlMb2FkPy5jb25maWd1cmF0aW9uSW5mb3M/Lmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMuaXNOdWxsT3JFbXB0eShwYXlMb2FkPy5jb25maWd1cmF0aW9uSW5mb3NbMF0pXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBkZWxldGUgcGF5TG9hZD8uY29uZmlndXJhdGlvbkluZm9zO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jYXJ0U2VydmljZVxyXG4gICAgICAgIC51cGRhdGVDYXJ0RW50cnkodGhpcy5jYXJ0SWQsIHRoaXMucHJvZHVjdERldGFpbHM/LmVudHJ5TnVtYmVyLCBwYXlMb2FkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUNhcnRTZXJ2aWNlLnJlbG9hZEFjdGl2ZUNhcnQoKTtcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcnRFbnRpcmVzLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFRvQ2FydEVycm9yID1cclxuICAgICAgICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yc1swXT8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIGVycm9yPy5lcnJvcj8uZXJyb3JzWzBdPy5lcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSBUb3RhbCBQcmljZSBhbmQgVG90YWwgbGVuZ3RoIGJhc2VkIG9uIHVzZXIgaW5wdXRzIG9uIGVhY2ggcm93XHJcbiAgdXBkYXRlVG90YWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdGFsTGVuZ3RoID0gMDtcclxuICAgIHRoaXMudG90YWxQcmljZSA9IDA7XHJcbiAgICBpZiAoIXRoaXMuaXNGaW5pc2hlZFByb2R1Y3QpIHtcclxuICAgICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuZ3JvdXBCeUJ1bmRsZShcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmdldFJhd1ZhbHVlKCksXHJcbiAgICAgICAgJ3Byb2RCdW5kbGUnXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybS5jb250cm9scy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBxdHkgPSBwYXJzZUZsb2F0KGVsZW1lbnQ/LnZhbHVlPy5wcm9kUXR5KTtcclxuICAgICAgICBjb25zdCBsZW4gPSBwYXJzZUZsb2F0KGVsZW1lbnQ/LnZhbHVlPy5wcm9kTGVuKTtcclxuICAgICAgICBjb25zdCBjdXJyZW50QnVuZGxlTmFtZSA9IGVsZW1lbnQ/LnZhbHVlPy5wcm9kQnVuZGxlPy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIXRoaXMuaXNOdWxsT3JFbXB0eShxdHkpICYmXHJcbiAgICAgICAgICAhdGhpcy5pc051bGxPckVtcHR5KGxlbikgJiZcclxuICAgICAgICAgICFpc05hTihxdHkpICYmXHJcbiAgICAgICAgICAhaXNOYU4obGVuKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdG90YWwgPSBxdHkgKiBsZW47XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzQnVuZGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJbmRleFtpbmRleF0gPVxyXG4gICAgICAgICAgICAgIHRvdGFsICogKHRoaXMuY3V0dGluZ1ZhbGlkYXRpb24/LndlaWdodFBlckxNIHx8IDEpID5cclxuICAgICAgICAgICAgICAodGhpcy5jdXR0aW5nVmFsaWRhdGlvbj8ubWF4QnVuZGxlTG9hZCB8fCAxMDAwKVxyXG4gICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgdGhpcy5jaGVja1RvdGFsQnVuZGxlV2VpZ2h0KGZvcm1WYWx1ZXNbY3VycmVudEJ1bmRsZU5hbWVdKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9ySW5kZXhObyA9IHRoaXMuZ2V0TGFzdEJ1bmRsZUluZGV4KGN1cnJlbnRCdW5kbGVOYW1lKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkoZXJyb3JJbmRleE5vKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JJbmRleFtlcnJvckluZGV4Tm9dID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckluZGV4W2luZGV4XSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzTmFOKHF0eSkgJiYgIWlzTmFOKGxlbikpIHtcclxuICAgICAgICAgIHRoaXMudG90YWxMZW5ndGggPSB0aGlzLnRvdGFsTGVuZ3RoICsgdG90YWw7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUHJpY2UgPVxyXG4gICAgICAgICAgICB0aGlzLnRvdGFsTGVuZ3RoICogdGhpcy5wcm9kdWN0RGV0YWlscz8ucHJpY2U/LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvdGFsTGVuZ3RoID0gbnVsbDtcclxuICAgICAgY29uc3QgcXR5ID0gdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1swXT8uZ2V0KCdwcm9kUXR5Jyk/LnZhbHVlO1xyXG4gICAgICBpZiAoIWlzTmFOKHF0eSkpIHtcclxuICAgICAgICB0aGlzLnRvdGFsUHJpY2UgPSBxdHkgKiB0aGlzLmFjY2Vzc29yaWVzUHJpY2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQ2FydERldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIC8vIFV0aWxpdHkgRnVuY3Rpb24gdG8gZ2V0IEtleSBWYWx1ZXNcclxuICBnZXRLZXlWYWx1ZXMoc291cmNlOiBhbnksIHNlYXJjaDogYW55KTogYW55IHtcclxuICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgW2tleSwgbmV4dF0gPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xyXG4gICAgY29uc3QgeyBba2V5XTogdmFsdWUsIC4uLnJlc3QgfSA9IHNvdXJjZTtcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAuLi4oa2V5ID09PSBzZWFyY2ggPyBbdmFsdWVdIDogdGhpcy5nZXRLZXlWYWx1ZXModmFsdWUsIHNlYXJjaCkpLFxyXG4gICAgICAuLi4obmV4dCA/IHRoaXMuZ2V0S2V5VmFsdWVzKHJlc3QsIHNlYXJjaCkgOiBbXSksXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSB2YWx1ZXMgb2YgUXVhbnRpdHkgRm9ybVxyXG4gIGdldFByb2R1Y3RRdWFudGl0eUZvcm1Hcm91cCgpOiBGb3JtR3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgIHRoaXMuaXNGaW5pc2hlZFByb2R1Y3QgPyBuZXcgQWNjZXNzb3JpZXNRdWFudGl0eSgpIDogbmV3IFByb2R1Y3RRdWFudGl0eSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByb2R1Y3RRdWFudGl0eUZvcm0oKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RGb3JtLmdldCgncHJvZHVjdFF1YW50aXR5JykgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgLy8gQWRkIHRoZSBRdWFuaXR5IEZvcm0gd2hlbiB1c2VyIGNsaWNrcyBvbiBBZGQgTW9yZSBidXR0b25cclxuICBhZGRQcm9kdWN0UXVhbnRpdHlGb3JtR3JvdXAoZXZlbnQ/OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5wdXNoKHRoaXMuZ2V0UHJvZHVjdFF1YW50aXR5Rm9ybUdyb3VwKCkpO1xyXG4gICAgY29uc3QgYnVuZGxlcyA9IHRoaXMuZ3JvdXBCeUJ1bmRsZShcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAncHJvZEJ1bmRsZSdcclxuICAgICk7XHJcbiAgICB0aGlzLmRpc2FibGVBZGRNb3JlID0gdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5sZW5ndGggPiA5OTtcclxuICAgIHRoaXMuZXJyb3JJbmRleFt0aGlzLnJvd0luZGV4XSA9IGZhbHNlO1xyXG4gICAgdGhpcy5oYXNQcm9kUmVmSW5kZXhbdGhpcy5yb3dJbmRleCsrXSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIHRoZSBRdWFudGl0eSBmb3JtIGlmIHVzZXIgY2xpY2tzIG9uIHJlbW92ZSBidXR0b25cclxuICByZW1vdmVQcm9kdWN0UXVhbnRpdHlGb3JtKGluZGV4OiBhbnksIGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xyXG4gICAgdGhpcy5yb3dJbmRleC0tO1xyXG4gICAgdGhpcy5kaXNhYmxlQWRkTW9yZSA9IHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8ubGVuZ3RoID4gOTk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZVRvdGFsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgSm9iIFJlZmVyZW5jZSBFcnJvcnNcclxuICBqb2JSZWZlcmVuY2VFcnJvcnMoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RGb3JtPy5nZXQoJ2pvYlJlZmVyZW5jZScpPy5lcnJvcnM7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgUHJvZHVjdCBRdWFudGl0eSBFcnJvcnNcclxuICBwcm9kUXR5RXJyb3JzKGluZGV4OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RRdHknKT8uZXJyb3JzIHx8XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFF0eScpPy5pbnZhbGlkKSAmJlxyXG4gICAgICAodGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFF0eScpPy5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RRdHknKT8udG91Y2hlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgUHJvZHVjdCBMZW5ndGggRXJyb3JzXHJcbiAgcHJvZExlbkVycm9ycyhpbmRleDogYW55KTogYW55IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kTGVuJyk/LmVycm9ycyB8fFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RMZW4nKT8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RMZW4nKT8uZGlydHkgfHxcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kTGVuJyk/LnRvdWNoZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgTGVuZ3RoIEVycm9yc1xyXG4gIG1pbkxlbkVycm9ycyhpbmRleDogYW55KTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmhhc01pbmxlbmd0aEVycm9yPy5pbmRleE9mKGluZGV4KSAhPT0gLTE7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgUHJvZHVjdCBCdW5kbGUgRXJyb3JzXHJcbiAgcHJvZEJ1bmRsZUVycm9ycyhpbmRleDogYW55KTogYW55IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kQnVuZGxlJyk/LmVycm9ycyB8fFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RCdW5kbGUnKVxyXG4gICAgICAgICAgPy5pbnZhbGlkKSAmJlxyXG4gICAgICAodGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZEJ1bmRsZScpPy5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RCdW5kbGUnKT8udG91Y2hlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgUHJvZHVjdCBCdW5sZGUgUmVmZXJlbmNlIEVycm9yc1xyXG4gIHByb2RSZWZFcnJvcnMoaW5kZXg6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFJlZicpPy5lcnJvcnMgfHxcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUmVmJyk/LmludmFsaWQpICYmXHJcbiAgICAgICh0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUmVmJyk/LmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFJlZicpPy50b3VjaGVkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIGZvcm0gaXMgVmFsaWQgb3Igbm90XHJcbiAgaXNWYWxpZEZvcm0oKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuaGFzQnVuZGxlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RGb3JtPy52YWxpZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHZhbGlkID0gdGhpcy5pc0ZpbmlzaGVkUHJvZHVjdFxyXG4gICAgICAgICAgPyBlbGVtZW50Py5nZXQoJ3Byb2RRdHknKT8udmFsaWRcclxuICAgICAgICAgIDogZWxlbWVudD8uZ2V0KCdwcm9kTGVuJyk/LnZhbGlkICYmIGVsZW1lbnQ/LmdldCgncHJvZFF0eScpPy52YWxpZDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsaWQ7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiBhbnkgZXJyb3JzIHByZXNlbnQgb24gYW55IHJvdyBhbmQgZGlwbGF5IGl0IG9uIFVJXHJcbiAgaGFzRXJyb3JzKGluZGV4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUXR5Jyk/LmVycm9ycyB8fFxyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kTGVuJyk/LmVycm9ycyB8fFxyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kQnVuZGxlJyk/LmVycm9ycyB8fFxyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUmVmJyk/LmVycm9yc1xyXG4gICAgICA/IHRydWVcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIEFueSBFbnRyeSBoYXMgbGVzcyB0aGFuIE1pbmltdW0gbGVuZ3RoXHJcbiAgY2hlY2tIYXNNaW5MZW5ndGhRdHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhhc01pbmxlbmd0aEVycm9yID0gW107XHJcbiAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzPy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBlbGVtZW50Py52YWx1ZT8ucHJvZExlbiA8IHRoaXMuY3V0dGluZ1ZhbGlkYXRpb24/Lm1pbkxlbmd0aCAmJlxyXG4gICAgICAgICF0aGlzLmlzTnVsbE9yRW1wdHkoZWxlbWVudD8udmFsdWU/LnByb2RMZW4pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuaGFzTWlubGVuZ3RoRXJyb3IucHVzaChpbmQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHBhZDNEaWdpdHModmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBxdHkgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5pc051bGxPckVtcHR5KHF0eSkgJiYgIWlzTmFOKHF0eSkpIHtcclxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQocXR5KVxyXG4gICAgICAgID8udG9GaXhlZCgzKVxyXG4gICAgICAgID8ucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KStcXGIpL2csICckMSwnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvbnZlcnQgTGVuZ3RoIHRvIGRlbWlhbCBmb3JtYXQgYWZ0ZXIgYmx1clxyXG4gIHVwZGF0ZUxlbnRoVmFsdWUoZWxlbWVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNOdWxsT3JFbXB0eShlbGVtZW50Py52YWx1ZSkpIHtcclxuICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMucGFkM0RpZ2l0cyhlbGVtZW50LnZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tIYXNNaW5MZW5ndGhRdHkoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2R1Y3REZXRhaWxzXCIgW2Zvcm1Hcm91cF09XCJwcm9kdWN0Rm9ybVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbCBwLTAgYnVuZGxpbmdcIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzRmluaXNoZWRQcm9kdWN0ICYmICFpc0ZsYXNoaW5nUHJvZHVjdFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInByLTIgZm9udC13ZWlnaHQtYm9sZCB0ZXh0XCI+QnVuZGxpbmcgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYnVuZGxpbmdcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlQnVuZGxpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyIHJvdW5kXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicXVhbnRpdHkgYm9yZGVyIHAtMyBtdC00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInByb2R1Y3RRdWFudGl0eVwiPlxyXG4gICAgICAgIDxkYXRhbGlzdCBpZD1cImJ1bmRsZUxpc3RcIj5cclxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGJ1bmRsZSBvZiBidW5kbGVMaXN0XCI+XHJcbiAgICAgICAgICAgIHt7IGJ1bmRsZSB9fVxyXG4gICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgPC9kYXRhbGlzdD5cclxuICAgICAgICA8dGFibGVcclxuICAgICAgICAgIGNsYXNzPVwibm8tYm9yZGVyXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ2hhcy1idW5kbGUnOiBoYXNCdW5kbGUsXHJcbiAgICAgICAgICAgIGFjY2Vzc29yaWVzOiBpc0ZpbmlzaGVkUHJvZHVjdFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dGg+UXVhbnRpdHk8L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNGaW5pc2hlZFByb2R1Y3RcIj5MZW5ndGggKExNKTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCAqbmdJZj1cImhhc0J1bmRsZVwiPlxyXG4gICAgICAgICAgICAgIEJ1bmRsZVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiQnVuZGxlIEluZm9ybWF0aW9uIGdvZXMgaGVyZS4uLi5cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAqbmdJZj1cImhhc0J1bmRsZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLW5vbmVcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2QtbGctYmxvY2snOiBsaXN0VmlldyB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFJlZmVyZW5jZVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiUmVmZXJlbmNlIEluZm9ybWF0aW9uIGdvZXMgaGVyZS4uLi5cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgb2YgcHJvZHVjdEZvcm0uZ2V0KCdwcm9kdWN0UXVhbnRpdHknKVsnY29udHJvbHMnXTtcclxuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBwcm9kLXF0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZFF0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgT25seU51bWJlcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cInVwZGF0ZVRvdGFsKClcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFpc0ZpbmlzaGVkUHJvZHVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBwcm9kLWxlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZExlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgI3Byb2RMZW5cclxuICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI3XCJcclxuICAgICAgICAgICAgICAgICAgICBPbmx5TnVtYmVyPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwidXBkYXRlVG90YWwoKTsgdXBkYXRlTGVudGhWYWx1ZShwcm9kTGVuKVwiXHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiaGFzQnVuZGxlICYmICFpc0ZpbmlzaGVkUHJvZHVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lXCIgW25nQ2xhc3NdPVwieyAnZC1sZy1ibG9jayc6IGxpc3RWaWV3IH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHByb2QtYnVuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2RCdW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgI3Byb2RCdW5kbGVcclxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZEJ1bmRsZS52YWx1ZSA9IHByb2RCdW5kbGUudmFsdWUudG9VcHBlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlVG90YWwoKTsgcG9wdWxhdGVTYW1lQnVuZGxlUmVmZXJlbmNlKG51bGwsIGkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cInVwZGF0ZUJ1bmRsZUxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBsaXN0PVwiYnVuZGxlTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnZC1sZy1ub25lIGQteGwtbm9uZSc6IGxpc3RWaWV3IH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMCBtLTBcIiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZ2V0QnVuZGxlVmFsdWVzKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnUtYnV0dG9uXCIgKm5nSWY9XCIhbGlzdFZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGRyb3BsZWZ0XCIgKm5nSWY9XCJoYXNCdW5kbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtdlwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIG0tMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjYnVuZGxlTW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0QnVuZGxlVmFsdWUoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdCBCdW5kbGUgVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA+IDAgfHwgcHJvZHVjdFF1YW50aXR5Rm9ybS5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvZHVjdFF1YW50aXR5Rm9ybShpLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiaGFzQnVuZGxlICYmICFpc0ZpbmlzaGVkUHJvZHVjdCAmJiBsaXN0Vmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lXCIgW25nQ2xhc3NdPVwieyAnZC1sZy1ibG9jayc6IGxpc3RWaWV3IH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHByb2QtcmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cInBvcHVsYXRlU2FtZUJ1bmRsZVJlZmVyZW5jZSgkZXZlbnQsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2RSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRvdGFsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UoJGV2ZW50LCBpLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJsaXN0Vmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGkgPiAwIHx8IChwcm9kdWN0UXVhbnRpdHlGb3JtLmxlbmd0aCA+IDEgJiYgbGlzdFZpZXcpXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpbXBsZSBjbG9zZSBkLXNtLW5vbmUgZC1tZC1ub25lIGQtbGctYmxvY2sgZC14bC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVByb2R1Y3RRdWFudGl0eUZvcm0oaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lcy1jaXJjbGUgY3VzdG9tLWFycm93IHJlbW92ZS1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnZC1sZy1ub25lIGQteGwtbm9uZSc6IGxpc3RWaWV3IH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGRyb3BsZWZ0XCIgKm5nSWY9XCJoYXNCdW5kbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtdlwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIG0tMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10YXJnZXQ9XCIjYnVuZGxlTW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0QnVuZGxlVmFsdWUoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdCBCdW5kbGUgVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA+IDAgfHwgcHJvZHVjdFF1YW50aXR5Rm9ybS5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvZHVjdFF1YW50aXR5Rm9ybShpLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiaGFzRXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0wXCIgKm5nSWY9XCJwcm9kUXR5RXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIGVudGVyIHZhbGlkIFF1YW50aXR5XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwicHJvZExlbkVycm9ycyhpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFBsZWFzZSBlbnRlciB2YWxpZCBMZW5ndGhcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nSWY9XCJtaW5MZW5FcnJvcnMoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICBNaW5pbXVtIGxlbmd0aCBzaG91bGQgYmUgYXQgbGVhc3RcclxuICAgICAgICAgICAgICAgICAgICB7eyBjdXR0aW5nVmFsaWRhdGlvbj8ubWluTGVuZ3RoIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwicHJvZEJ1bmRsZUVycm9ycyhpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFBsZWFzZSBlbnRlciB2YWxpZCBCdW5kbGUgTmFtZVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cInByb2RSZWZFcnJvcnMoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgdmFsaWQgUmVmZXJlbmNlXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImhhc0Vycm9ySW5kZXgoaSlcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAgU2hvdWxkIG5vdCBleGNlZWQgbWF4aW11bSBidW5kbGUgc2l6ZVxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImhhc1Byb2RSZWZFcnJvckluZGV4KGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgIFRoaXMgUmVmZXJlbmNlIHZhbHVlIGlzIGFscmVhZHkgdXNlZC4gUGxlYXNlIHVzZSBvdGhlciB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cInNpbXBsZSBwbC0yXCJcclxuICAgICAgICAgICpuZ0lmPVwiIWlzRmluaXNoZWRQcm9kdWN0ICYmICFkaXNhYmxlQWRkTW9yZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkUHJvZHVjdFF1YW50aXR5Rm9ybUdyb3VwKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItMSBhZGQtbW9yZVwiPiA8L3NwYW4+XHJcbiAgICAgICAgICBBZGQgbW9yZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cInJvdyBtdC00IGNvbC1zbS0xMiBhbGVydCBhbGVydC1kYW5nZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCJcclxuICByb2xlPVwiYWxlcnRcIlxyXG4gICpuZ0lmPVwiYWRkVG9DYXJ0RXJyb3IgfCBhc3luY1wiXHJcbj5cclxuICA8aW1nXHJcbiAgICBjbGFzcz1cIm1yLTNcIlxyXG4gICAgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9lcnJvcmljb24uc3ZnXCJcclxuICAgIGFsdD1cImFsZXJ0XCJcclxuICAvPlxyXG4gIHt7IGFkZFRvQ2FydEVycm9yIH19XHJcbjwvZGl2PlxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwibW9kYWwgZmFkZSBlZGl0LWJ1bmRsZS1mb3JtXCJcclxuICBpZD1cImJ1bmRsZU1vZGFsXCJcclxuICByb2xlPVwiZGlhbG9nXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIHJvbGU9XCJkb2N1bWVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+QnVuZGxlIFZhbHVlPC9oND5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgICAgICA+PC9pPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbS0wIHBsLTIgcHItMlwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG5vLWJvcmRlclwiICpuZ0lmPVwiIWlzRmluaXNoZWRQcm9kdWN0XCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICBCdW5kbGVcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkJ1bmRsZSBJbmZvcm1hdGlvbiBnb2VzIGhlcmUuLi4uXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgIFJlZmVyZW5jZVxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImluZm8taWNvblwiXHJcbiAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiUmVmZXJlbmNlIEluZm9ybWF0aW9uIGdvZXMgaGVyZS4uLi5cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBbZm9ybUdyb3VwXT1cIm1vZGFsQnVuZGxlRm9ybVwiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRhdGFsaXN0IGlkPVwibW9kQnVuZGxlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBidW5kbGUgb2YgYnVuZGxlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGJ1bmRsZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvZGF0YWxpc3Q+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibW9kQnVuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgI21vZEJ1bmRsZVxyXG4gICAgICAgICAgICAgICAgICAoZm9jdXMpPVwidXBkYXRlQnVuZGxlTGlzdCgpXCJcclxuICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm1vZEJ1bmRsZS52YWx1ZSA9IG1vZEJ1bmRsZS52YWx1ZS50b1VwcGVyQ2FzZSgpXCJcclxuICAgICAgICAgICAgICAgICAgbGlzdD1cIm1vZEJ1bmRsZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAoYmx1cik9XCJwb3B1bGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UobnVsbCwgc2VsZWN0ZWRJbmRleClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cInBvcHVsYXRlU2FtZUJ1bmRsZVJlZmVyZW5jZSgkZXZlbnQsIHNlbGVjdGVkSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibW9kUmVmXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAjY2xvc2VidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInNhdmVCdW5kbGVEZXRhaWxzKCRldmVudClcIiBjbGFzcz1cImJ0blwiPlxyXG4gICAgICAgICAgU2F2ZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
573
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL3NoYXJlZC9jdXN0b20tY2FydC1kZXRhaWwvY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybS9jdXN0b20tcHJvZHVjdC1xdWFudGl0eS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvc2hhcmVkL2N1c3RvbS1jYXJ0LWRldGFpbC9jdXN0b20tcHJvZHVjdC1xdWFudGl0eS1mb3JtL2N1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBSVQsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUEwQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFPdkUsTUFBTSxPQUFPLGtDQUFrQztJQXVEN0MsWUFDVSxXQUF3QixFQUN4QixHQUFzQixFQUN0QixXQUF3QixFQUN4QixpQkFBb0MsRUFDcEMscUJBQTRDO1FBSjVDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNC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QUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQzs7Z0lBeG5CVSxrQ0FBa0M7b0hBQWxDLGtDQUFrQyx5dUJDekIvQywrdGFBZ1dBOzRGRHZVYSxrQ0FBa0M7a0JBTDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsV0FBVyxFQUFFLCtDQUErQztvQkFDNUQsU0FBUyxFQUFFLENBQUMsK0NBQStDLENBQUM7aUJBQzdEO2dPQVdVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBNEJ5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNILFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZCxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJyZW50UHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAc3BhcnRhY3VzL3N0b3JlZnJvbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmVDYXJ0U2VydmljZSwgUHJvZHVjdCB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjZXNzb3JpZXNRdWFudGl0eSwgUHJvZHVjdFF1YW50aXR5IH0gZnJvbSAnLi4vLi4vQ3VzdG9tUHJvZHVjdCc7XHJcbmltcG9ydCB7IFJlZ2V4VmFsaWRhdG9yLCBSZWdleENvbnN0YW50cyB9IGZyb20gJy4uLy4uL3JlZ0V4LnZhbGlkYXRvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tcHJvZHVjdC1xdWFudGl0eS1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXByb2R1Y3QtcXVhbnRpdHktZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tUHJvZHVjdFF1YW50aXR5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBlbnY6IGFueSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VudicpO1xyXG4gIGVudmlyb25tZW50IDogYW55ID0gSlNPTi5wYXJzZSh0aGlzLmVudik7XHJcbiAgaXNEZXNrdG9wOiBib29sZWFuID0gdHJ1ZTtcclxuICBpc01vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGFibGV0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHRvdGFsTGVuZ3RoOiBhbnk7XHJcbiAgdG90YWxQcmljZTogYW55ID0gJzAuMCc7XHJcblxyXG4gIEBJbnB1dCgpIGhhc0J1bmRsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByb2R1Y3RDb2RlOiBhbnk7XHJcbiAgQElucHV0KCkgcHJvZHVjdERldGFpbHM6IGFueTtcclxuICBASW5wdXQoKSB1bml0VHlwZTogYW55ID0gJ3BlciBMTSc7XHJcbiAgQElucHV0KCkgYWNjZXNzb3JpZXNQcmljZSA9IDA7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDb2xvdXI6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgY3V0dGluZ1ZhbGlkYXRpb246IGFueTtcclxuICBASW5wdXQoKSBmaW5pc2hlZEF2YWlsYWJsZUNvbG91cnM6IGFueTtcclxuICBASW5wdXQoKSBpc0ZpbmlzaGVkUHJvZHVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRmxhc2hpbmdQcm9kdWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGlzdFZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwcm9kdWN0Rm9ybTogYW55ID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gIGRpc2FibGVBZGRNb3JlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGJ1bmRsZUxpc3Q6IGFueSA9IFtdO1xyXG5cclxuICBlcnJvckluZGV4OiBhbnkgPSBbXTtcclxuICBoYXNQcm9kUmVmSW5kZXg6IGFueSA9IFtdO1xyXG4gIGhhc1Byb2RSZWY6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNNaW5sZW5ndGhFcnJvcjogYW55ID0gW107XHJcbiAgcm93SW5kZXggPSAwO1xyXG4gIGNhcnRJZDogYW55O1xyXG5cclxuICBzaG93V2FpdEN1cnNvciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gIGFkZFRvQ2FydEVycm9yOiBhbnkgPSBudWxsO1xyXG4gIG1vZGFsQnVuZGxlRm9ybTogYW55ID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdFByb2RCdW5kbGU6IGFueSA9ICcnO1xyXG4gIGVkaXRQcm9kUmVmOiBhbnkgPSAnJztcclxuICBzZWxlY3RlZEluZGV4OiBhbnkgPSBudWxsO1xyXG5cclxuICBoYXNEYXRhOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByb2R1Y3QkOiBPYnNlcnZhYmxlPFByb2R1Y3QgfCBudWxsPiA9XHJcbiAgICB0aGlzLmN1cnJlbnRQcm9kdWN0U2VydmljZS5nZXRQcm9kdWN0KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlSW52aXRlTW9kYWwnKSBjbG9zZUludml0ZU1vZGFsOiBhbnk7XHJcbiAgQFZpZXdDaGlsZCgnY2xvc2VidXR0b24nKSBjbG9zZWJ1dHRvbjogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgdXBkYXRlQ2FydEVudGlyZXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzY3JlZW5XaWR0aDogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2ZUNhcnRTZXJ2aWNlOiBBY3RpdmVDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgY3VycmVudFByb2R1Y3RTZXJ2aWNlOiBDdXJyZW50UHJvZHVjdFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2FydE9iajogYW55ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NwYXJ0YWN1c+Kav2RpbW9uZC1zcGHimr9jYXJ0Jyk7XHJcbiAgICB0aGlzLmNhcnRJZCA9IEpTT04ucGFyc2UoY2FydE9iaik/LmFjdGl2ZTtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCArICdweCc7XHJcbiAgICBpZiAodGhpcy5wcm9kdWN0RGV0YWlscykge1xyXG4gICAgICB0aGlzLmNyZWF0ZVByb2R1Y3RGb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoIWNoYW5nZXM/LnByb2R1Y3REZXRhaWxzPy5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDcmVhdGUgYSBQcm9kdWN0IFF1YW50aXR5IEZvcm1cclxuICBjcmVhdGVQcm9kdWN0Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWNjZXNzb3JpZXNQcmljZSA9IDA7XHJcbiAgICB0aGlzLnRvdGFsTGVuZ3RoID0gbnVsbDtcclxuICAgIHRoaXMudG90YWxQcmljZSA9ICcwLjAnO1xyXG4gICAgdGhpcy5oYXNCdW5kbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZUFkZE1vcmUgPSBmYWxzZTtcclxuICAgIHRoaXMuYnVuZGxlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lcnJvckluZGV4ID0gW107XHJcbiAgICB0aGlzLmhhc1Byb2RSZWZJbmRleCA9IFtdO1xyXG4gICAgdGhpcy5yb3dJbmRleCA9IDA7XHJcbiAgICB0aGlzLnByb2R1Y3RGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmFkZFRvQ2FydEVycm9yID0gbnVsbDtcclxuICAgIHRoaXMucHJvZHVjdEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgYnVuZGxpbmc6IFsnJ10sXHJcbiAgICAgIHByb2R1Y3RRdWFudGl0eTogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSksXHJcbiAgICAgIGpvYlJlZmVyZW5jZTogWycnLCBbUmVnZXhWYWxpZGF0b3IoUmVnZXhDb25zdGFudHMuSk9CX1JFRkVSRU5DRSldXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZWRpdFByb2RCdW5kbGUgPSAnJztcclxuICAgIHRoaXMuZWRpdFByb2RSZWYgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcbiAgICB0aGlzLmhhc1Byb2RSZWYgPSBmYWxzZTtcclxuICAgIHRoaXMuaGFzTWlubGVuZ3RoRXJyb3IgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0ZpbmlzaGVkUHJvZHVjdCkge1xyXG4gICAgICB0aGlzLmFkZFByb2R1Y3RRdWFudGl0eUZvcm1Hcm91cCgpO1xyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzWzBdPy5wYXRjaFZhbHVlKHtcclxuICAgICAgICBwcm9kUXR5OiB0aGlzLnByb2R1Y3REZXRhaWxzPy5xdWFudGl0eSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vZGFsQnVuZGxlRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIG1vZEJ1bmRsZTogWycnLCBbUmVnZXhWYWxpZGF0b3IoUmVnZXhDb25zdGFudHMuQlVORExFX05BTUUpXV0sXHJcbiAgICAgICAgbW9kUmVmOiBbJycsIFtSZWdleFZhbGlkYXRvcihSZWdleENvbnN0YW50cy5KT0JfUkVGRVJFTkNFKV1dLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm9kdWN0RGV0YWlscz8uc3ViTGluZUNvbmZpZ0luZm9zPy5mb3JFYWNoKFxyXG4gICAgICAgICh2YWw6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hZGRQcm9kdWN0UXVhbnRpdHlGb3JtR3JvdXAoKTtcclxuICAgICAgICAgIGlmICghdGhpcy5pc051bGxPckVtcHR5KHZhbD8uYnVuZGxlTmFtZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNCdW5kbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RGb3JtPy5nZXQoJ2J1bmRsaW5nJyk/LnNldFZhbHVlKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtLmNvbnRyb2xzW2luZGV4XS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgcHJvZEJ1bmRsZTogdmFsPy5idW5kbGVOYW1lLFxyXG4gICAgICAgICAgICBwcm9kTGVuOiB0aGlzLnBhZDNEaWdpdHModmFsPy5sZW5ndGgpLFxyXG4gICAgICAgICAgICBwcm9kUXR5OiB2YWw/LnF1YW50aXR5LFxyXG4gICAgICAgICAgICBwcm9kUmVmOiB2YWw/LnJlZmVyZW5jZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0aW5nIHRoZSBCdW5kbGVcclxuICB1cGRhdGVCdW5kbGluZyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmhhc0J1bmRsZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ/LmNoZWNrZWQgPT09IHRydWU7XHJcbiAgICBpZiAodGhpcy5oYXNCdW5kbGUpIHtcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9scz8uZm9yRWFjaChcclxuICAgICAgICAoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UobnVsbCwgaW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlVG90YWwoKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIGFueSB2YWx1ZSBpcyBlbXB0eSBvciB1bmRlZmluZWRcclxuICBpc051bGxPckVtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PSAnJztcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGZvciBhbnkgZXJyb3JzIHdoaWxlIHVwZGF0aW5nIHRoZSBxdWFudGl0eVxyXG4gIGhhc0Vycm9ySW5kZXgoaW5kZXg6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXJyb3JJbmRleFtpbmRleF0gPT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIGFueSBTYW1lIFJlZmVyZW5jZSBFcnJvclxyXG4gIGhhc1Byb2RSZWZFcnJvckluZGV4KGluZGV4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmhhc1Byb2RSZWZJbmRleFtpbmRleF0gPT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIEdyb3VwIHRoZSBRdWFudGl0eSB2YWx1ZXMgYmFzZWQgb24gYnVuZGxlXHJcbiAgZ3JvdXBCeUJ1bmRsZShpdGVtczogYW55LCBrZXk6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKFxyXG4gICAgICAocmVzdWx0OiBhbnksIGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgW2l0ZW1ba2V5XV06IFsuLi4ocmVzdWx0W2l0ZW1ba2V5XV0gfHwgW10pLCBpdGVtXSxcclxuICAgICAgfSksXHJcbiAgICAgIHt9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgdGhlIHRvdGFsIGJ1bmRsZSB3ZWlnaHQgYW5kIHVwZGF0ZSB0aGUgZXJyb3IgaWYgaXQgcmVhY2hlcyB0byBtYXhpbXVtIGJ1bmRsZSBzaXplIGZvciBlYWNoIGJ1bmRsZVxyXG4gIGNoZWNrVG90YWxCdW5kbGVXZWlnaHQoZm9ybVZhbHVlczogYW55KTogYW55IHtcclxuICAgIGxldCBncm91cFRvdGFsID0gMDtcclxuICAgIGZvcm1WYWx1ZXM/LmZvckVhY2goKGN1cnJlbnRWYWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHF0eSA9IHBhcnNlRmxvYXQoY3VycmVudFZhbHVlPy5wcm9kUXR5KTtcclxuICAgICAgY29uc3QgbGVuID0gcGFyc2VGbG9hdChjdXJyZW50VmFsdWU/LnByb2RMZW4pO1xyXG4gICAgICBpZiAoIXRoaXMuaXNOdWxsT3JFbXB0eShxdHkpICYmICF0aGlzLmlzTnVsbE9yRW1wdHkobGVuKSkge1xyXG4gICAgICAgIGdyb3VwVG90YWwgKz0gcXR5ICogbGVuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGdyb3VwVG90YWwgPSBncm91cFRvdGFsICogKHRoaXMuY3V0dGluZ1ZhbGlkYXRpb24/LndlaWdodFBlckxNIHx8IDEpO1xyXG4gICAgcmV0dXJuIGdyb3VwVG90YWwgPiAodGhpcy5jdXR0aW5nVmFsaWRhdGlvbj8ubWF4QnVuZGxlTG9hZCB8fCAxMDAwKTtcclxuICB9XHJcblxyXG4gIC8vIEdldCB0aGUgbGFzdCByb3cgb2YgYSBidW5kbGUgYmFzZWQgb24gYnVuZGxlIG5hbWVcclxuICBnZXRMYXN0QnVuZGxlSW5kZXgoYnVuZGxlTmFtZTogYW55KTogYW55IHtcclxuICAgIGxldCBpbmRleFZhbHVlOiBhbnkgPSBudWxsO1xyXG4gICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtXHJcbiAgICAgID8uZ2V0UmF3VmFsdWUoKVxyXG4gICAgICA/LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50Py5wcm9kQnVuZGxlPy50b1VwcGVyQ2FzZSgpID09IGJ1bmRsZU5hbWU/LnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICAgIGluZGV4VmFsdWUgPSBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIGluZGV4VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIFJlZmVyZW5jZSB2YWx1ZSBvZiB0aGUgc2FtZSBidW5kbGUgYW5kIHVwZGF0ZVxyXG4gIGdldFByZXZCdW5kbGVSZWZlcmVuY2VWYWx1ZShpbmRleDogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGJ1bmRsZU5hbWUgPVxyXG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPT0gbnVsbFxyXG4gICAgICAgID8gdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF1cclxuICAgICAgICAgICAgPy5nZXQoJ3Byb2RCdW5kbGUnKVxyXG4gICAgICAgICAgICA/LnZhbHVlPy50b1VwcGVyQ2FzZSgpXHJcbiAgICAgICAgOiB0aGlzLm1vZGFsQnVuZGxlRm9ybT8uZ2V0KCdtb2RCdW5kbGUnKT8udmFsdWU/LnRvVXBwZXJDYXNlKCk7XHJcbiAgICBsZXQgcmVmVmFsdWUgPSAnJztcclxuICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHMuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBvdGhlclJlZlZhbHVlID1cclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZF0/LmdldCgncHJvZFJlZicpPy52YWx1ZTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGVsZW1lbnQ/LnZhbHVlPy5wcm9kQnVuZGxlPy50b1VwcGVyQ2FzZSgpID09XHJcbiAgICAgICAgICBidW5kbGVOYW1lPy50b1VwcGVyQ2FzZSgpICYmXHJcbiAgICAgICAgKGluZCAhPSBpbmRleCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggIT0gbnVsbCkgJiZcclxuICAgICAgICAhdGhpcy5pc051bGxPckVtcHR5KG90aGVyUmVmVmFsdWUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJlZlZhbHVlID0gb3RoZXJSZWZWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVmVmFsdWUgfHwgJyc7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiBTYW1lIFJlZnJlbmNlIGlzIGFscmVhZHkgdXNlZFxyXG4gIGNoZWNrSGFzU2FtZVJlZmVyZW5jZShcclxuICAgIGluZGV4OiBhbnksXHJcbiAgICBjdXJyZW50UmVmZXJlbmNlOiBhbnksXHJcbiAgICBidW5kbGVOYW1lOiBhbnlcclxuICApOiBib29sZWFuIHtcclxuICAgIGxldCBoYXNSZWYgPSBmYWxzZTtcclxuICAgIGNvbnN0IHByb2RSZWZWYWx1ZXMgPSB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzPy5maWx0ZXIoXHJcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgZWxlbWVudD8udmFsdWU/LnByb2RSZWYgPT0gY3VycmVudFJlZmVyZW5jZSAmJlxyXG4gICAgICAgICAgZWxlbWVudD8udmFsdWU/LnByb2RCdW5kbGU/LnRvVXBwZXJDYXNlKCkgIT1cclxuICAgICAgICAgICAgYnVuZGxlTmFtZT8udG9VcHBlckNhc2UoKSAmJlxyXG4gICAgICAgICAgIXRoaXMuaXNOdWxsT3JFbXB0eShjdXJyZW50UmVmZXJlbmNlKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICBpZiAocHJvZFJlZlZhbHVlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmhhc1Byb2RSZWZJbmRleFtpbmRleF0gPSB0cnVlO1xyXG4gICAgICBoYXNSZWYgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYXNQcm9kUmVmSW5kZXhbaW5kZXhdID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gaGFzUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIHRoZSBSZWZlcmVuY2UgVmFsdWUgaWYgYWxyZWFkeSB0aGUgc2FtZSBidW5kbGUgaXMgcHJlc2VudFxyXG4gIHVwZGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UoXHJcbiAgICBldmVudDogYW55LFxyXG4gICAgaW5kZXg6IGFueSxcclxuICAgIGlzUmVmZXJlbmNlOiBib29sZWFuID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGJ1bmRsZU5hbWUgPVxyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kQnVuZGxlJyk/LnZhbHVlIHx8XHJcbiAgICAgIHRoaXMubW9kYWxCdW5kbGVGb3JtLmdldCgnbW9kQnVuZGxlJyk/LnZhbHVlO1xyXG4gICAgY29uc3QgbmV3UmVmVmFsdWUgPVxyXG4gICAgICBldmVudCAhPSBudWxsXHJcbiAgICAgICAgPyBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgOiB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUmVmJyk/LnZhbHVlIHx8XHJcbiAgICAgICAgICB0aGlzLm1vZGFsQnVuZGxlRm9ybT8uZ2V0KCdtb2RSZWYnKS52YWx1ZTtcclxuICAgIGlzUmVmZXJlbmNlID0gaXNSZWZlcmVuY2VcclxuICAgICAgPyB0aGlzLmNoZWNrSGFzU2FtZVJlZmVyZW5jZShpbmRleCwgbmV3UmVmVmFsdWUsIGJ1bmRsZU5hbWUpXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgICBpZiAoIWlzUmVmZXJlbmNlKSB7XHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybS5jb250cm9scy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZWxlbWVudD8udmFsdWU/LnByb2RCdW5kbGU/LnRvVXBwZXJDYXNlKCkgPT1cclxuICAgICAgICAgICAgYnVuZGxlTmFtZT8udG9VcHBlckNhc2UoKSAmJlxyXG4gICAgICAgICAgaW5kICE9IGluZGV4ICYmXHJcbiAgICAgICAgICAhdGhpcy5pc051bGxPckVtcHR5KG5ld1JlZlZhbHVlKSAmJlxyXG4gICAgICAgICAgIXRoaXMuaXNOdWxsT3JFbXB0eShidW5kbGVOYW1lKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRdXHJcbiAgICAgICAgICAgID8uZ2V0KCdwcm9kUmVmJylcclxuICAgICAgICAgICAgPy5zZXRWYWx1ZShuZXdSZWZWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSB0aGUgc2FtZSBCdW5kbGUgUmVmcmVuY2UgVmFsdWUgdG8gYWxsIG90aGVyIEJ1bmRsZXMgaWYgYW55IGNoYW5nZXMgaW4gUmVmZXJlbmNlIFZhbHVlXHJcbiAgcG9wdWxhdGVTYW1lQnVuZGxlUmVmZXJlbmNlKGV2ZW50OiBhbnksIGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICBjb25zdCBwcmV2UmVmVmFsdWUgPSB0aGlzLmdldFByZXZCdW5kbGVSZWZlcmVuY2VWYWx1ZShpbmRleCk7XHJcbiAgICAgIGlmICghdGhpcy5pc051bGxPckVtcHR5KHByZXZSZWZWYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XVxyXG4gICAgICAgICAgLmdldCgncHJvZFJlZicpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHByZXZSZWZWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5tb2RhbEJ1bmRsZUZvcm0uZ2V0KCdtb2RSZWYnKS5zZXRWYWx1ZShwcmV2UmVmVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaXNOdWxsT3JFbXB0eSh0aGlzLmdldFByZXZCdW5kbGVSZWZlcmVuY2VWYWx1ZShpbmRleCkpKSB7XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF1cclxuICAgICAgICAgID8uZ2V0KCdwcm9kUmVmJylcclxuICAgICAgICAgID8uc2V0VmFsdWUodGhpcy5nZXRQcmV2QnVuZGxlUmVmZXJlbmNlVmFsdWUoaW5kZXgpIHx8ICcnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIHRoZSBCdW5kbGUgTGlzdCBpZiBtb3JlIHRoYW4gb25lIGJ1bmRsZS9yb3dzXHJcbiAgdXBkYXRlQnVuZGxlTGlzdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdyb3VwQnlCdW5kbGUoXHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgJ3Byb2RCdW5kbGUnXHJcbiAgICApO1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKGZvcm1WYWx1ZXMpPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuYnVuZGxlTGlzdCA9IE9iamVjdC5rZXlzKGZvcm1WYWx1ZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEJ1bmRsZSB2YWx1ZXMgb25seSBmb3IgbW9iaWxlIHZpZXdcclxuICBnZXRCdW5kbGVWYWx1ZXMoaW5kZXg6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBidW5kbGVWYWx1ZXMgPSBbXTtcclxuICAgIGJ1bmRsZVZhbHVlcy5wdXNoKFxyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kQnVuZGxlJyk/LnZhbHVlXHJcbiAgICApO1xyXG4gICAgYnVuZGxlVmFsdWVzLnB1c2goXHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RSZWYnKT8udmFsdWVcclxuICAgICk7XHJcbiAgICByZXR1cm4gYnVuZGxlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgLy8gRWRpdCBCdW5kbGUgVmFsdWVzXHJcbiAgZWRpdEJ1bmRsZVZhbHVlKGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5tb2RhbEJ1bmRsZUZvcm1cclxuICAgICAgPy5nZXQoJ21vZEJ1bmRsZScpXHJcbiAgICAgIC5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XVxyXG4gICAgICAgICAgPy5nZXQoJ3Byb2RCdW5kbGUnKVxyXG4gICAgICAgICAgPy52YWx1ZS50b1VwcGVyQ2FzZSgpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLm1vZGFsQnVuZGxlRm9ybVxyXG4gICAgICA/LmdldCgnbW9kUmVmJylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUmVmJyk/LnZhbHVlXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVcGRhdGUvU2F2ZSBCdW5kbGUgdmFsdWVzXHJcbiAgc2F2ZUJ1bmRsZURldGFpbHMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1t0aGlzLnNlbGVjdGVkSW5kZXhdXHJcbiAgICAgID8uZ2V0KCdwcm9kQnVuZGxlJylcclxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLm1vZGFsQnVuZGxlRm9ybT8uZ2V0KCdtb2RCdW5kbGUnKT8udmFsdWUudG9VcHBlckNhc2UoKSk7XHJcbiAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW3RoaXMuc2VsZWN0ZWRJbmRleF1cclxuICAgICAgPy5nZXQoJ3Byb2RSZWYnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMubW9kYWxCdW5kbGVGb3JtPy5nZXQoJ21vZFJlZicpPy52YWx1ZSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVTYW1lQnVuZGxlUmVmZXJlbmNlKG51bGwsIHRoaXMuc2VsZWN0ZWRJbmRleCwgdHJ1ZSk7XHJcbiAgICB0aGlzLnVwZGF0ZVRvdGFsKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cclxuICAgIHRoaXMuY2xvc2VidXR0b24ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIENhcnQgRGVhdGlsc1xyXG4gIHVwZGF0ZUNhcnREZXRhaWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNWYWxpZEZvcm0oKSkge1xyXG4gICAgICBsZXQgcGF5TG9hZDogYW55ID0ge307XHJcblxyXG4gICAgICBpZiAodGhpcy5pc0ZpbmlzaGVkUHJvZHVjdCkge1xyXG4gICAgICAgIHBheUxvYWQgPSB7XHJcbiAgICAgICAgICBxdWFudGl0eTogdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1swXS5nZXQoJ3Byb2RRdHknKT8udmFsdWUsXHJcbiAgICAgICAgICBwcm9kdWN0OiB7XHJcbiAgICAgICAgICAgIGNvZGU6IHRoaXMucHJvZHVjdERldGFpbHM/LnByb2R1Y3Q/LmNvZGUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgam9iUmVmZXJlbmNlOiB0aGlzLnByb2R1Y3REZXRhaWxzPy5wcm9kdWN0Py5qb2JSZWZlcmVuY2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXlMb2FkID0ge1xyXG4gICAgICAgICAgcXVhbnRpdHk6IDEsXHJcbiAgICAgICAgICBjb25maWd1cmF0aW9uSW5mb3M6IFt0aGlzLnByb2R1Y3REZXRhaWxzPy5jb25maWdWYWx1ZXNdLFxyXG4gICAgICAgICAgc3ViTGluZUNvbmZpZ0luZm9zOiBbXSxcclxuICAgICAgICAgIGpvYlJlZmVyZW5jZTogdGhpcy5wcm9kdWN0RGV0YWlscz8ucHJvZHVjdD8uam9iUmVmZXJlbmNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9scz8uZm9yRWFjaChcclxuICAgICAgICAgIChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnSW5mb3M6IGFueSA9IHtcclxuICAgICAgICAgICAgICBjb25maWd1cmF0b3JUeXBlOiAnQ1VUVElORycsXHJcbiAgICAgICAgICAgICAgcXVhbnRpdHk6IGVsZW1lbnQ/LnZhbHVlPy5wcm9kUXR5LFxyXG4gICAgICAgICAgICAgIGxlbmd0aDogZWxlbWVudD8udmFsdWU/LnByb2RMZW4sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0J1bmRsZSAmJiBlbGVtZW50Py52YWx1ZT8ucHJvZEJ1bmRsZSkge1xyXG4gICAgICAgICAgICAgIGNvbmZpZ0luZm9zLmJ1bmRsZU5hbWUgPSBlbGVtZW50Py52YWx1ZT8ucHJvZEJ1bmRsZTtcclxuICAgICAgICAgICAgICBjb25maWdJbmZvcy5yZWZlcmVuY2UgPSBlbGVtZW50Py52YWx1ZT8ucHJvZFJlZjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXlMb2FkLnN1YkxpbmVDb25maWdJbmZvcy5wdXNoKGNvbmZpZ0luZm9zKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHBheUxvYWQ/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgICAgcGF5TG9hZD8uY29uZmlndXJhdGlvbkluZm9zPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICB0aGlzLmlzTnVsbE9yRW1wdHkocGF5TG9hZD8uY29uZmlndXJhdGlvbkluZm9zWzBdKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZGVsZXRlIHBheUxvYWQ/LmNvbmZpZ3VyYXRpb25JbmZvcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2VcclxuICAgICAgICAudXBkYXRlQ2FydEVudHJ5KHRoaXMuY2FydElkLCB0aGlzLnByb2R1Y3REZXRhaWxzPy5lbnRyeU51bWJlciwgcGF5TG9hZClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVDYXJ0U2VydmljZS5yZWxvYWRBY3RpdmVDYXJ0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJ0RW50aXJlcy5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRUb0NhcnRFcnJvciA9XHJcbiAgICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcnNbMF0/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yc1swXT8uZXJyb3JNZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBVcGRhdGUgVG90YWwgUHJpY2UgYW5kIFRvdGFsIGxlbmd0aCBiYXNlZCBvbiB1c2VyIGlucHV0cyBvbiBlYWNoIHJvd1xyXG4gIHVwZGF0ZVRvdGFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy50b3RhbExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLnRvdGFsUHJpY2UgPSAwO1xyXG4gICAgaWYgKCF0aGlzLmlzRmluaXNoZWRQcm9kdWN0KSB7XHJcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmdyb3VwQnlCdW5kbGUoXHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICdwcm9kQnVuZGxlJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0uY29udHJvbHMuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcXR5ID0gcGFyc2VGbG9hdChlbGVtZW50Py52YWx1ZT8ucHJvZFF0eSk7XHJcbiAgICAgICAgY29uc3QgbGVuID0gcGFyc2VGbG9hdChlbGVtZW50Py52YWx1ZT8ucHJvZExlbik7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEJ1bmRsZU5hbWUgPSBlbGVtZW50Py52YWx1ZT8ucHJvZEJ1bmRsZT8udG9VcHBlckNhc2UoKTtcclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICF0aGlzLmlzTnVsbE9yRW1wdHkocXR5KSAmJlxyXG4gICAgICAgICAgIXRoaXMuaXNOdWxsT3JFbXB0eShsZW4pICYmXHJcbiAgICAgICAgICAhaXNOYU4ocXR5KSAmJlxyXG4gICAgICAgICAgIWlzTmFOKGxlbilcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRvdGFsID0gcXR5ICogbGVuO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0J1bmRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmVycm9ySW5kZXhbaW5kZXhdID1cclxuICAgICAgICAgICAgICB0b3RhbCAqICh0aGlzLmN1dHRpbmdWYWxpZGF0aW9uPy53ZWlnaHRQZXJMTSB8fCAxKSA+XHJcbiAgICAgICAgICAgICAgKHRoaXMuY3V0dGluZ1ZhbGlkYXRpb24/Lm1heEJ1bmRsZUxvYWQgfHwgMTAwMClcclxuICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tUb3RhbEJ1bmRsZVdlaWdodChmb3JtVmFsdWVzW2N1cnJlbnRCdW5kbGVOYW1lXSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvckluZGV4Tm8gPSB0aGlzLmdldExhc3RCdW5kbGVJbmRleChjdXJyZW50QnVuZGxlTmFtZSk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc051bGxPckVtcHR5KGVycm9ySW5kZXhObykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmVycm9ySW5kZXhbZXJyb3JJbmRleE5vXSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JJbmRleFtpbmRleF0gPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpc05hTihxdHkpICYmICFpc05hTihsZW4pKSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsTGVuZ3RoID0gdGhpcy50b3RhbExlbmd0aCArIHRvdGFsO1xyXG4gICAgICAgICAgdGhpcy50b3RhbFByaWNlID1cclxuICAgICAgICAgICAgdGhpcy50b3RhbExlbmd0aCAqIHRoaXMucHJvZHVjdERldGFpbHM/LnByaWNlPy52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b3RhbExlbmd0aCA9IG51bGw7XHJcbiAgICAgIGNvbnN0IHF0eSA9IHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbMF0/LmdldCgncHJvZFF0eScpPy52YWx1ZTtcclxuICAgICAgaWYgKCFpc05hTihxdHkpKSB7XHJcbiAgICAgICAgdGhpcy50b3RhbFByaWNlID0gcXR5ICogdGhpcy5hY2Nlc3Nvcmllc1ByaWNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICAvLyBVdGlsaXR5IEZ1bmN0aW9uIHRvIGdldCBLZXkgVmFsdWVzXHJcbiAgZ2V0S2V5VmFsdWVzKHNvdXJjZTogYW55LCBzZWFyY2g6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtrZXksIG5leHRdID0gT2JqZWN0LmtleXMoc291cmNlKTtcclxuICAgIGNvbnN0IHsgW2tleV06IHZhbHVlLCAuLi5yZXN0IH0gPSBzb3VyY2U7XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgLi4uKGtleSA9PT0gc2VhcmNoID8gW3ZhbHVlXSA6IHRoaXMuZ2V0S2V5VmFsdWVzKHZhbHVlLCBzZWFyY2gpKSxcclxuICAgICAgLi4uKG5leHQgPyB0aGlzLmdldEtleVZhbHVlcyhyZXN0LCBzZWFyY2gpIDogW10pLFxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIC8vIEdldCB0aGUgdmFsdWVzIG9mIFF1YW50aXR5IEZvcm1cclxuICBnZXRQcm9kdWN0UXVhbnRpdHlGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxyXG4gICAgICB0aGlzLmlzRmluaXNoZWRQcm9kdWN0ID8gbmV3IEFjY2Vzc29yaWVzUXVhbnRpdHkoKSA6IG5ldyBQcm9kdWN0UXVhbnRpdHkoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCBwcm9kdWN0UXVhbnRpdHlGb3JtKCk6IEZvcm1BcnJheSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0Rm9ybS5nZXQoJ3Byb2R1Y3RRdWFudGl0eScpIGFzIEZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIC8vIEFkZCB0aGUgUXVhbml0eSBGb3JtIHdoZW4gdXNlciBjbGlja3Mgb24gQWRkIE1vcmUgYnV0dG9uXHJcbiAgYWRkUHJvZHVjdFF1YW50aXR5Rm9ybUdyb3VwKGV2ZW50PzogYW55KTogdm9pZCB7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8ucHVzaCh0aGlzLmdldFByb2R1Y3RRdWFudGl0eUZvcm1Hcm91cCgpKTtcclxuICAgIGNvbnN0IGJ1bmRsZXMgPSB0aGlzLmdyb3VwQnlCdW5kbGUoXHJcbiAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgJ3Byb2RCdW5kbGUnXHJcbiAgICApO1xyXG4gICAgdGhpcy5kaXNhYmxlQWRkTW9yZSA9IHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8ubGVuZ3RoID4gOTk7XHJcbiAgICB0aGlzLmVycm9ySW5kZXhbdGhpcy5yb3dJbmRleF0gPSBmYWxzZTtcclxuICAgIHRoaXMuaGFzUHJvZFJlZkluZGV4W3RoaXMucm93SW5kZXgrK10gPSBmYWxzZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSB0aGUgUXVhbnRpdHkgZm9ybSBpZiB1c2VyIGNsaWNrcyBvbiByZW1vdmUgYnV0dG9uXHJcbiAgcmVtb3ZlUHJvZHVjdFF1YW50aXR5Rm9ybShpbmRleDogYW55LCBldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtLnJlbW92ZUF0KGluZGV4KTtcclxuICAgIHRoaXMucm93SW5kZXgtLTtcclxuICAgIHRoaXMuZGlzYWJsZUFkZE1vcmUgPSB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/Lmxlbmd0aCA+IDk5O1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy51cGRhdGVUb3RhbCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEpvYiBSZWZlcmVuY2UgRXJyb3JzXHJcbiAgam9iUmVmZXJlbmNlRXJyb3JzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0Rm9ybT8uZ2V0KCdqb2JSZWZlcmVuY2UnKT8uZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgUXVhbnRpdHkgRXJyb3JzXHJcbiAgcHJvZFF0eUVycm9ycyhpbmRleDogYW55KTogYW55IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUXR5Jyk/LmVycm9ycyB8fFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RRdHknKT8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RRdHknKT8uZGlydHkgfHxcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kUXR5Jyk/LnRvdWNoZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgTGVuZ3RoIEVycm9yc1xyXG4gIHByb2RMZW5FcnJvcnMoaW5kZXg6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZExlbicpPy5lcnJvcnMgfHxcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kTGVuJyk/LmludmFsaWQpICYmXHJcbiAgICAgICh0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kTGVuJyk/LmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZExlbicpPy50b3VjaGVkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIEdldCBQcm9kdWN0IExlbmd0aCBFcnJvcnNcclxuICBtaW5MZW5FcnJvcnMoaW5kZXg6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYXNNaW5sZW5ndGhFcnJvcj8uaW5kZXhPZihpbmRleCkgIT09IC0xO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgQnVuZGxlIEVycm9yc1xyXG4gIHByb2RCdW5kbGVFcnJvcnMoaW5kZXg6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZEJ1bmRsZScpPy5lcnJvcnMgfHxcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kQnVuZGxlJylcclxuICAgICAgICAgID8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RCdW5kbGUnKT8uZGlydHkgfHxcclxuICAgICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KCdwcm9kQnVuZGxlJyk/LnRvdWNoZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgQnVubGRlIFJlZmVyZW5jZSBFcnJvcnNcclxuICBwcm9kUmVmRXJyb3JzKGluZGV4OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RSZWYnKT8uZXJyb3JzIHx8XHJcbiAgICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFJlZicpPy5pbnZhbGlkKSAmJlxyXG4gICAgICAodGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFJlZicpPy5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMucHJvZHVjdFF1YW50aXR5Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoJ3Byb2RSZWYnKT8udG91Y2hlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiBmb3JtIGlzIFZhbGlkIG9yIG5vdFxyXG4gIGlzVmFsaWRGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmhhc0J1bmRsZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0Rm9ybT8udmFsaWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb2R1Y3RRdWFudGl0eUZvcm0/LmNvbnRyb2xzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICB2YWxpZCA9IHRoaXMuaXNGaW5pc2hlZFByb2R1Y3RcclxuICAgICAgICAgID8gZWxlbWVudD8uZ2V0KCdwcm9kUXR5Jyk/LnZhbGlkXHJcbiAgICAgICAgICA6IGVsZW1lbnQ/LmdldCgncHJvZExlbicpPy52YWxpZCAmJiBlbGVtZW50Py5nZXQoJ3Byb2RRdHknKT8udmFsaWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbGlkO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgYW55IGVycm9ycyBwcmVzZW50IG9uIGFueSByb3cgYW5kIGRpcGxheSBpdCBvbiBVSVxyXG4gIGhhc0Vycm9ycyhpbmRleDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFF0eScpPy5lcnJvcnMgfHxcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZExlbicpPy5lcnJvcnMgfHxcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZEJ1bmRsZScpPy5lcnJvcnMgfHxcclxuICAgICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldCgncHJvZFJlZicpPy5lcnJvcnNcclxuICAgICAgPyB0cnVlXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiBBbnkgRW50cnkgaGFzIGxlc3MgdGhhbiBNaW5pbXVtIGxlbmd0aFxyXG4gIGNoZWNrSGFzTWluTGVuZ3RoUXR5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5oYXNNaW5sZW5ndGhFcnJvciA9IFtdO1xyXG4gICAgdGhpcy5wcm9kdWN0UXVhbnRpdHlGb3JtPy5jb250cm9scz8uZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWxlbWVudD8udmFsdWU/LnByb2RMZW4gPCB0aGlzLmN1dHRpbmdWYWxpZGF0aW9uPy5taW5MZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5pc051bGxPckVtcHR5KGVsZW1lbnQ/LnZhbHVlPy5wcm9kTGVuKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmhhc01pbmxlbmd0aEVycm9yLnB1c2goaW5kKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwYWQzRGlnaXRzKHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgcXR5ID0gdmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuaXNOdWxsT3JFbXB0eShxdHkpICYmICFpc05hTihxdHkpKSB7XHJcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHF0eSlcclxuICAgICAgICA/LnRvRml4ZWQoMylcclxuICAgICAgICA/LnJlcGxhY2UoLyhcXGQpKD89KFxcZHszfSkrXFxiKS9nLCAnJDEsJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDb252ZXJ0IExlbmd0aCB0byBkZW1pYWwgZm9ybWF0IGFmdGVyIGJsdXJcclxuICB1cGRhdGVMZW50aFZhbHVlKGVsZW1lbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkoZWxlbWVudD8udmFsdWUpKSB7XHJcbiAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLnBhZDNEaWdpdHMoZWxlbWVudC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoZWNrSGFzTWluTGVuZ3RoUXR5KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9kdWN0RGV0YWlsc1wiIFtmb3JtR3JvdXBdPVwicHJvZHVjdEZvcm1cIj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjb2wgcC0wIGJ1bmRsaW5nXCJcclxuICAgICAgICAqbmdJZj1cIiFpc0ZpbmlzaGVkUHJvZHVjdCAmJiAhaXNGbGFzaGluZ1Byb2R1Y3RcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwci0yIGZvbnQtd2VpZ2h0LWJvbGQgdGV4dFwiPkJ1bmRsaW5nIDwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImJ1bmRsaW5nXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUJ1bmRsaW5nKCRldmVudClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlciByb3VuZFwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cInF1YW50aXR5IGJvcmRlciBwLTMgbXQtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJwcm9kdWN0UXVhbnRpdHlcIj5cclxuICAgICAgICA8ZGF0YWxpc3QgaWQ9XCJidW5kbGVMaXN0XCI+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBidW5kbGUgb2YgYnVuZGxlTGlzdFwiPlxyXG4gICAgICAgICAgICB7eyBidW5kbGUgfX1cclxuICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgIDwvZGF0YWxpc3Q+XHJcbiAgICAgICAgPHRhYmxlXHJcbiAgICAgICAgICBjbGFzcz1cIm5vLWJvcmRlclwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdoYXMtYnVuZGxlJzogaGFzQnVuZGxlLFxyXG4gICAgICAgICAgICBhY2Nlc3NvcmllczogaXNGaW5pc2hlZFByb2R1Y3RcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRoPlF1YW50aXR5PC90aD5cclxuICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzRmluaXNoZWRQcm9kdWN0XCI+TGVuZ3RoIChMTSk8L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nSWY9XCJoYXNCdW5kbGVcIj5cclxuICAgICAgICAgICAgICBCdW5kbGVcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkJ1bmRsZSBJbmZvcm1hdGlvbiBnb2VzIGhlcmUuLi4uXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNCdW5kbGVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1ub25lXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkLWxnLWJsb2NrJzogbGlzdFZpZXcgfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBSZWZlcmVuY2VcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlJlZmVyZW5jZSBJbmZvcm1hdGlvbiBnb2VzIGhlcmUuLi4uXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsIG9mIHByb2R1Y3RGb3JtLmdldCgncHJvZHVjdFF1YW50aXR5JylbJ2NvbnRyb2xzJ107XHJcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHJvZC1xdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2RRdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgIE9ubHlOdW1iZXI9XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJ1cGRhdGVUb3RhbCgpXCJcclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhaXNGaW5pc2hlZFByb2R1Y3RcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHJvZC1sZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2RMZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICNwcm9kTGVuXHJcbiAgICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiN1wiXHJcbiAgICAgICAgICAgICAgICAgICAgT25seU51bWJlcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cInVwZGF0ZVRvdGFsKCk7IHVwZGF0ZUxlbnRoVmFsdWUocHJvZExlbilcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImhhc0J1bmRsZSAmJiAhaXNGaW5pc2hlZFByb2R1Y3RcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZVwiIFtuZ0NsYXNzXT1cInsgJ2QtbGctYmxvY2snOiBsaXN0VmlldyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBwcm9kLWJ1bmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9kQnVuZGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICNwcm9kQnVuZGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2RCdW5kbGUudmFsdWUgPSBwcm9kQnVuZGxlLnZhbHVlLnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVRvdGFsKCk7IHBvcHVsYXRlU2FtZUJ1bmRsZVJlZmVyZW5jZShudWxsLCBpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJ1cGRhdGVCdW5kbGVMaXN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdD1cImJ1bmRsZUxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2QtbGctbm9uZSBkLXhsLW5vbmUnOiBsaXN0VmlldyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwLTAgbS0wXCIgKm5nRm9yPVwibGV0IHZhbHVlIG9mIGdldEJ1bmRsZVZhbHVlcyhpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1tZW51LWJ1dHRvblwiICpuZ0lmPVwiIWxpc3RWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBkcm9wbGVmdFwiICpuZ0lmPVwiaGFzQnVuZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLXZcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2J1bmRsZU1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEJ1bmRsZVZhbHVlKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgQnVuZGxlIFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gbS0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImkgPiAwIHx8IHByb2R1Y3RRdWFudGl0eUZvcm0ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVByb2R1Y3RRdWFudGl0eUZvcm0oaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImhhc0J1bmRsZSAmJiAhaXNGaW5pc2hlZFByb2R1Y3QgJiYgbGlzdFZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZVwiIFtuZ0NsYXNzXT1cInsgJ2QtbGctYmxvY2snOiBsaXN0VmlldyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBwcm9kLXJlZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjE1XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJwb3B1bGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UoJGV2ZW50LCBpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9kUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVUb3RhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTYW1lQnVuZGxlUmVmZXJlbmNlKCRldmVudCwgaSwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwibGlzdFZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBpID4gMCB8fCAocHJvZHVjdFF1YW50aXR5Rm9ybS5sZW5ndGggPiAxICYmIGxpc3RWaWV3KVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUgY2xvc2UgZC1zbS1ub25lIGQtbWQtbm9uZSBkLWxnLWJsb2NrIGQteGwtYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVQcm9kdWN0UXVhbnRpdHlGb3JtKGksICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIGN1c3RvbS1hcnJvdyByZW1vdmUtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2QtbGctbm9uZSBkLXhsLW5vbmUnOiBsaXN0VmlldyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBkcm9wbGVmdFwiICpuZ0lmPVwiaGFzQnVuZGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLXZcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBtLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGFyZ2V0PVwiI2J1bmRsZU1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEJ1bmRsZVZhbHVlKGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgQnVuZGxlIFZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gbS0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImkgPiAwIHx8IHByb2R1Y3RRdWFudGl0eUZvcm0ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVByb2R1Y3RRdWFudGl0eUZvcm0oaSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImhhc0Vycm9ycyhpKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMFwiICpuZ0lmPVwicHJvZFF0eUVycm9ycyhpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFBsZWFzZSBlbnRlciB2YWxpZCBRdWFudGl0eVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cInByb2RMZW5FcnJvcnMoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgdmFsaWQgTGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwibWluTGVuRXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaW11bSBsZW5ndGggc2hvdWxkIGJlIGF0IGxlYXN0XHJcbiAgICAgICAgICAgICAgICAgICAge3sgY3V0dGluZ1ZhbGlkYXRpb24/Lm1pbkxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cInByb2RCdW5kbGVFcnJvcnMoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICBQbGVhc2UgZW50ZXIgdmFsaWQgQnVuZGxlIE5hbWVcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nSWY9XCJwcm9kUmVmRXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIGVudGVyIHZhbGlkIFJlZmVyZW5jZVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJoYXNFcnJvckluZGV4KGkpXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgIFNob3VsZCBub3QgZXhjZWVkIG1heGltdW0gYnVuZGxlIHNpemVcclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJoYXNQcm9kUmVmRXJyb3JJbmRleChpKVwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICBUaGlzIFJlZmVyZW5jZSB2YWx1ZSBpcyBhbHJlYWR5IHVzZWQuIFBsZWFzZSB1c2Ugb3RoZXIgdmFsdWVcclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJzaW1wbGUgcGwtMlwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0ZpbmlzaGVkUHJvZHVjdCAmJiAhZGlzYWJsZUFkZE1vcmVcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFByb2R1Y3RRdWFudGl0eUZvcm1Hcm91cCgkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTEgYWRkLW1vcmVcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgQWRkIG1vcmVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2XHJcbiAgY2xhc3M9XCJyb3cgbXQtNCBjb2wtc20tMTIgYWxlcnQgYWxlcnQtZGFuZ2VyIGp1c3RpZnktY29udGVudC1zdGFydFwiXHJcbiAgcm9sZT1cImFsZXJ0XCJcclxuICAqbmdJZj1cImFkZFRvQ2FydEVycm9yIHwgYXN5bmNcIlxyXG4+XHJcbiAgPGltZ1xyXG4gICAgY2xhc3M9XCJtci0zXCJcclxuICAgIHNyYz1cIi4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvZXJyb3JpY29uLnN2Z1wiXHJcbiAgICBhbHQ9XCJhbGVydFwiXHJcbiAgLz5cclxuICB7eyBhZGRUb0NhcnRFcnJvciB9fVxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cIm1vZGFsIGZhZGUgZWRpdC1idW5kbGUtZm9ybVwiXHJcbiAgaWQ9XCJidW5kbGVNb2RhbFwiXHJcbiAgcm9sZT1cImRpYWxvZ1wiXHJcbiAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkJ1bmRsZSBWYWx1ZTwvaDQ+XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCJcclxuICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IG0tMCBwbC0yIHByLTJcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBuby1ib3JkZXJcIiAqbmdJZj1cIiFpc0ZpbmlzaGVkUHJvZHVjdFwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgQnVuZGxlXHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5mby1pY29uXCJcclxuICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJCdW5kbGUgSW5mb3JtYXRpb24gZ29lcyBoZXJlLi4uLlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICBSZWZlcmVuY2VcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIlJlZmVyZW5jZSBJbmZvcm1hdGlvbiBnb2VzIGhlcmUuLi4uXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgW2Zvcm1Hcm91cF09XCJtb2RhbEJ1bmRsZUZvcm1cIj5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkYXRhbGlzdCBpZD1cIm1vZEJ1bmRsZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGJ1bmRsZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBidW5kbGUgfX1cclxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1vZEJ1bmRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICNtb2RCdW5kbGVcclxuICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cInVwZGF0ZUJ1bmRsZUxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJtb2RCdW5kbGUudmFsdWUgPSBtb2RCdW5kbGUudmFsdWUudG9VcHBlckNhc2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIGxpc3Q9XCJtb2RCdW5kbGVMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwicG9wdWxhdGVTYW1lQnVuZGxlUmVmZXJlbmNlKG51bGwsIHNlbGVjdGVkSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIxNVwiXHJcbiAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJwb3B1bGF0ZVNhbWVCdW5kbGVSZWZlcmVuY2UoJGV2ZW50LCBzZWxlY3RlZEluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1vZFJlZlwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgI2Nsb3NlYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzYXZlQnVuZGxlRGV0YWlscygkZXZlbnQpXCIgY2xhc3M9XCJidG5cIj5cclxuICAgICAgICAgIFNhdmVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|