buildingproduct-library 0.3.0 → 0.3.2
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/{buildingproduct-library-0.3.0.tgz → buildingproduct-library-0.3.2.tgz} +0 -0
- package/bundles/buildingproduct-library.umd.js +255 -157
- package/bundles/buildingproduct-library.umd.js.map +1 -1
- package/esm2015/lib/account-dropdown/account-dropdown.component.js +1 -1
- package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +1 -1
- package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +1 -1
- package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +1 -1
- package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +1 -1
- package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +4 -4
- package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +1 -1
- package/esm2015/lib/checkout/order-review/order-review.component.js +1 -1
- package/esm2015/lib/contact-us/contact-us.component.js +1 -1
- package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +1 -1
- package/esm2015/lib/custom-cart/custom-cart.component.js +1 -1
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +2 -2
- package/esm2015/lib/custom-navigation/custom-navigation.component.js +1 -1
- package/esm2015/lib/custom-order-details/custom-order-details.component.js +1 -1
- package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +1 -1
- package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +1 -1
- package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +1 -1
- package/esm2015/lib/custom-order-history/custom-order-history.component.js +1 -1
- package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +1 -1
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +1 -1
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +1 -1
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +1 -1
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +1 -1
- package/esm2015/lib/custom-search/custom-search.component.js +1 -1
- package/esm2015/lib/custom-user-account/custom-user-account.component.js +1 -1
- package/esm2015/lib/delivery-details/delivery-details-grid/delivery-details-grid.component.js +1 -1
- package/esm2015/lib/delivery-details/delivery-details-list/delivery-details-list.component.js +1 -1
- package/esm2015/lib/delivery-details/delivery-details.component.js +1 -1
- package/esm2015/lib/find-store/find-store.component.js +1 -1
- package/esm2015/lib/help-support/help-support.component.js +1 -1
- package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +1 -1
- package/esm2015/lib/my-account/account-statements/account-statements.component.js +2 -2
- package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +1 -1
- package/esm2015/lib/my-account/my-account.component.js +1 -1
- package/esm2015/lib/my-deliveries/delivery-grid/delivery-grid.component.js +1 -1
- package/esm2015/lib/my-deliveries/delivery-list/delivery-list.component.js +1 -1
- package/esm2015/lib/my-deliveries/my-deliveries.component.js +1 -1
- package/esm2015/lib/my-reports/my-reports.component.js +36 -0
- package/esm2015/lib/my-reports/my-reports.module.js +70 -0
- package/esm2015/lib/my-team/my-team.component.js +1 -1
- package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +1 -1
- package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +1 -1
- package/esm2015/lib/shared/custom-cart-detail/bundlepopup/bundlepopup.component.js +1 -1
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +1 -1
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +2 -2
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +2 -2
- package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +1 -1
- package/esm2015/lib/shared/custom-flashing-image-details/custom-flashing-image-details.component.js +1 -1
- package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +1 -1
- package/esm2015/lib/shared/pod-download-popup/pod-download-popup.component.js +1 -1
- package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +1 -1
- package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +1 -1
- package/esm2015/public-api.js +2 -1
- package/fesm2015/buildingproduct-library.js +251 -159
- package/fesm2015/buildingproduct-library.js.map +1 -1
- package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +1 -1
- package/lib/my-reports/my-reports.component.d.ts +14 -0
- package/lib/my-reports/my-reports.module.d.ts +13 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js
CHANGED
|
@@ -451,7 +451,7 @@ export class CustomCartListComponent {
|
|
|
451
451
|
}
|
|
452
452
|
}
|
|
453
453
|
CustomCartListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomCartListComponent, deps: [{ token: i1.CartService }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.ActiveCartService }, { token: i3.CmsService }, { token: i4.SavedCartDetailsService }, { token: i5.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
454
|
-
CustomCartListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomCartListComponent, selector: "app-custom-cart-list", inputs: { cartDetails: "cartDetails", isCardData: "isCardData", additionalPara: "additionalPara" }, outputs: { updateCartEntry: "updateCartEntry" }, viewQueries: [{ propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading…</div>\r\n\r\n<div class=\"row list-head\">\r\n <div class=\"col-sm-3\">ITEM</div>\r\n <div class=\"col-sm-3\">JOB REFERENCE</div>\r\n <div class=\"col-sm-2\">TOTAL QTY</div>\r\n <div class=\"col-sm-2\">UNIT PRICE</div>\r\n <div class=\"col-sm-2\">TOTAL PRICE</div>\r\n</div>\r\n<ng-container [formGroup]=\"productForm\">\r\n <ng-container formArrayName=\"cart\" *ngIf=\"hasCartDetails()\">\r\n <ng-container\r\n *ngFor=\"\r\n let cart of cartForm.controls;\r\n let i = index;\r\n let lastIndex = last\r\n \"\r\n [formGroupName]=\"i\"\r\n >\r\n <div\r\n class=\"item-space\"\r\n [ngClass]=\"{ 'item-space-last': i == cartDetails.length - 1 }\"\r\n *ngIf=\"!isNullOrEmpty(cartDetails[i]?.product?.code)\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"d-flex\">\r\n <div class=\"product-img\">\r\n <ng-container\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct;\r\n else normalImage\r\n \"\r\n >\r\n <a\r\n data-toggle=\"modal\"\r\n class=\"flashing-expand\"\r\n (click)=\"viewImage($event, cartDetails[i])\"\r\n [attr.data-target]=\"'#imageModal'\"\r\n *ngIf=\"hasImage(cartDetails[i]); else hasPdf\"\r\n >\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </a>\r\n <ng-template #hasPdf>\r\n <a\r\n class=\"flashing-expand flashing-open\"\r\n [href]=\"getPdfLink(cartDetails[i])\"\r\n target=\"_blank\"\r\n >\r\n <img\r\n class=\"pdf-icon\"\r\n src=\"../../../../../assets/images/pdf-icon.svg\"\r\n alt=\"Click to open PDF\"\r\n title=\"Click to open PDF\"\r\n />\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #normalImage>\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-2\">\r\n <div class=\"product_name\">\r\n {{ cartDetails[i]?.product?.name }}\r\n </div>\r\n <div class=\"sku\">SKU: {{ cartDetails[i]?.product?.code }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <input\r\n class=\"refernce-input\"\r\n type=\"text\"\r\n formControlName=\"jobReference\"\r\n (blur)=\"updateJobReference($event, cartDetails[i], i)\"\r\n />\r\n <div class=\"mt-2 text-danger\" *ngIf=\"jobReferenceErrors(i)\">\r\n Please enter valid Job Reference\r\n </div>\r\n </div>\r\n <div class=\"col-sm-2 totalQty\">\r\n <span\r\n *ngIf=\"\r\n !cartDetails[i]?.product?.finishedProduct;\r\n else nonAccessories\r\n \"\r\n >\r\n {{ cartDetails[i]?.quantityDouble }}\r\n {{ cartDetails[i]?.basePrice?.unitType }}\r\n <input\r\n type=\"hidden\"\r\n formControlName=\"prodQty\"\r\n [value]=\"cartDetails[i]?.quantityDouble\"\r\n />\r\n </span>\r\n <ng-template #nonAccessories>\r\n <span>\r\n <input\r\n class=\"qty_input refernce-input\"\r\n type=\"text\"\r\n formControlName=\"prodQty\"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n (blur)=\"updateCart($event, cartDetails[i], i)\"\r\n />\r\n </span>\r\n </ng-template>\r\n <div class=\"mt-2 text-danger\" *ngIf=\"prodQtyErrors(i)\">\r\n Please enter valid Quantity\r\n </div>\r\n </div>\r\n <div class=\"col-sm-2 totalQty\">\r\n {{ cartDetails[i]?.basePrice?.formattedValue }}/{{\r\n cartDetails[i]?.basePrice?.unitType\r\n }}\r\n </div>\r\n <div class=\"col-sm-2 totalQty\">\r\n {{ cartDetails[i]?.totalPrice?.formattedValue }}\r\n <span\r\n class=\"img-align\"\r\n (click)=\"deleteEntry(cartDetails[i]?.entryNumber)\"\r\n ><img\r\n src=\"../../../../../assets/images/ionic-trash.svg\"\r\n alt=\"delete\"\r\n /></span>\r\n <br />\r\n excl GST\r\n </div>\r\n </div>\r\n\r\n <div class=\"custom-padding\">\r\n <p class=\"mt-3 mb-0\">\r\n <span\r\n *ngIf=\"\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.classifications &&\r\n cartDetails[i]?.product?.classifications[0] &&\r\n cartDetails[i]?.product?.classifications[0]?.features\r\n \"\r\n >\r\n {{ getClassifications(cartDetails[i]?.product?.classifications) }}\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div class=\"custom-padding\">\r\n <div\r\n class=\"d-flex\"\r\n *ngIf=\"\r\n cartDetails[i]?.product?.finishedProduct &&\r\n !isModalSelectedColor[i]\r\n \"\r\n >\r\n <div\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n \"\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background:\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n ?.hexadecimalCode\r\n }\"\r\n ></div>\r\n <a\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n \"\r\n class=\"color_link\"\r\n data-toggle=\"collapse\"\r\n [attr.data-target]=\"'#collapseColours' + i\"\r\n (click)=\"\r\n !cartDetails[i]?.product?.flashingProduct &&\r\n getColours(cart, i, $event)\r\n \"\r\n >\r\n <span\r\n [ngClass]=\"{\r\n flashingProductBorder:\r\n cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n class=\"color_part\"\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n \"\r\n >\r\n {{\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n ?.name\r\n }}</span\r\n >\r\n <i\r\n *ngIf=\"!cartDetails[i]?.product?.flashingProduct\"\r\n class=\"fas fa-chevron-down dropdown-icon\"\r\n ></i\r\n ></a>\r\n </div>\r\n\r\n <div\r\n class=\"d-flex align-center\"\r\n *ngIf=\"cartDetails[i]?.product?.flashingProduct\"\r\n >\r\n <div\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos?.length\r\n \"\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background: getColourDetails(\r\n cartDetails[i]?.configurationInfos,\r\n 'background'\r\n )\r\n }\"\r\n ></div>\r\n <a class=\"ml-2 nolinkForflash\">\r\n <span>{{\r\n getColourDetails(cartDetails[i]?.configurationInfos, \"name\")\r\n }}</span>\r\n </a>\r\n </div>\r\n <div\r\n class=\"d-flex\"\r\n *ngIf=\"\r\n !isModalSelectedColor[i] &&\r\n !cartDetails[i]?.product?.flashingProduct\r\n \"\r\n >\r\n <div\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos[0] &&\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n \"\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background:\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n | split : '|' : 2\r\n }\"\r\n ></div>\r\n <a\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos[0] &&\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n \"\r\n class=\"color_link\"\r\n data-toggle=\"collapse\"\r\n [attr.data-target]=\"'#collapseColours' + i\"\r\n (click)=\"\r\n !cartDetails[i]?.product?.flashingProduct &&\r\n getColours(cart, i, $event)\r\n \"\r\n [ngClass]=\"{\r\n flashingProductColor: cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n >\r\n <span\r\n [ngClass]=\"{\r\n flashingProductBorder:\r\n cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n class=\"color_part\"\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos[0] &&\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n \"\r\n >\r\n {{\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n | split : \"|\" : 1\r\n }}</span\r\n >\r\n <i\r\n *ngIf=\"!cartDetails[i]?.product?.flashingProduct\"\r\n class=\"fas fa-chevron-down dropdown-icon\"\r\n ></i\r\n ></a>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"isModalSelectedColor[i]\">\r\n <div\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background: modalSelectedColour[i]?.hexadecimalCode\r\n }\"\r\n ></div>\r\n <a\r\n class=\"color_link popup_recent\"\r\n data-toggle=\"collapse\"\r\n [attr.data-target]=\"'#collapseColours' + i\"\r\n (click)=\"\r\n !cartDetails[i]?.product?.flashingProduct &&\r\n getColours(cart, i, $event)\r\n \"\r\n >\r\n <span\r\n [ngClass]=\"{\r\n flashingProductBorder:\r\n cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n class=\"color_part\"\r\n >\r\n {{ modalSelectedColour[i]?.name }}</span\r\n >\r\n <i\r\n *ngIf=\"!cartDetails[i]?.product?.flashingProduct\"\r\n class=\"fas fa-chevron-down dropdown-icon\"\r\n ></i\r\n ></a>\r\n </div>\r\n\r\n <!-- avaialable colours popup -->\r\n <div\r\n *ngIf=\"cartDetails[i]?.isExpand\"\r\n class=\"collapse colours_container\"\r\n [attr.id]=\"'collapseColours' + i\"\r\n >\r\n <div class=\"card card-body\">\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.finishedProduct &&\r\n cartDetails[i]?.product?.variantOptions\r\n \"\r\n class=\"colours m-1 pt-3\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let modalcolour of cartDetails[i]?.product?.variantOptions;\r\n let j = index\r\n \"\r\n >\r\n <div\r\n (click)=\"\r\n modalSelectedColor(\r\n $event,\r\n modalcolour.colours[0],\r\n i,\r\n modalcolour?.code\r\n )\r\n \"\r\n class=\"colour m-1 mb-3 main\"\r\n [ngStyle]=\"{\r\n background: modalcolour?.colours[0]?.hexadecimalCode\r\n }\"\r\n [ngClass]=\"{\r\n selected:\r\n modalSelectedColour[i]?.hexadecimalCode ==\r\n modalcolour?.colours[0]?.hexadecimalCode\r\n }\"\r\n >\r\n <div class=\"checkbox\"></div>\r\n <p\r\n class=\"colour-title\"\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{ modalcolour?.colours[0]?.name }}\"\r\n >\r\n {{ modalcolour?.colours[0]?.name }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !cartDetails[i]?.product?.finishedProduct &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours\r\n \"\r\n class=\"colours m-1 pt-3\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let modalcolour of cartDetails[i]?.product\r\n ?.bpAdditionalAttribute?.colours;\r\n let j = index\r\n \"\r\n >\r\n <div\r\n (click)=\"modalSelectedColor($event, modalcolour, i)\"\r\n class=\"colour m-1 mb-3 main\"\r\n [ngStyle]=\"{\r\n background: modalcolour?.hexadecimalCode\r\n }\"\r\n [ngClass]=\"{\r\n selected:\r\n modalSelectedColour[i]?.hexadecimalCode ==\r\n modalcolour?.hexadecimalCode\r\n }\"\r\n >\r\n <div class=\"checkbox\"></div>\r\n <p\r\n class=\"colour-title\"\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{ modalcolour?.name }}\"\r\n >\r\n {{ modalcolour?.name }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.bpAdditionalAttribute\r\n ?.additionalColours?.length > 0\r\n \"\r\n >\r\n <a\r\n data-toggle=\"modal\"\r\n [attr.data-target]=\"'#additionalColorsModal' + i\"\r\n >\r\n <u> Additional colors may be avialable </u></a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Additional colours popup-->\r\n <div\r\n class=\"modal fade\"\r\n id=\"additionalColorsModal{{ i }}\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\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\">Additional Colours</h4>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"more-content\">\r\n <img\r\n class=\"mr-3\"\r\n src=\"../../../../assets/images/warningicon.svg\"\r\n alt=\"alert\"\r\n />\r\n <div>{{ additionalPara?.content }}.</div>\r\n </div>\r\n\r\n <div class=\"colours m-1 pt-3\">\r\n <ng-container\r\n *ngFor=\"\r\n let modalcolour of cartDetails[i]?.product\r\n ?.bpAdditionalAttribute?.additionalColours;\r\n let j = index\r\n \"\r\n >\r\n <div\r\n (click)=\"\r\n addtionalModalSelectedColor($event, modalcolour, i)\r\n \"\r\n class=\"colour m-1 mb-3 main\"\r\n [ngStyle]=\"{ background: modalcolour?.hexadecimalCode }\"\r\n [ngClass]=\"{\r\n selected:\r\n additinalselectedColour[i]?.hexadecimalCode ==\r\n modalcolour?.hexadecimalCode\r\n }\"\r\n >\r\n <div class=\"checkbox\"></div>\r\n <p\r\n class=\"colour-title\"\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{ modalcolour?.name }}\"\r\n >\r\n {{ modalcolour?.name }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"m-1 pt-3\" *ngIf=\"additinalselectedColour[i]\">\r\n <h6 class=\"font-weight-bold\">Colour Selection</h6>\r\n <div class=\"selected_color_section\">\r\n <div\r\n class=\"selected_color mr-1\"\r\n [ngStyle]=\"{\r\n background:\r\n additinalselectedColour[i]?.hexadecimalCode\r\n }\"\r\n ></div>\r\n <div>{{ additinalselectedColour[i]?.name }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-sm-flex justify-content-end d-block\">\r\n <button\r\n type=\"button\"\r\n (click)=\"cancel()\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n (click)=\"proceedWithSubmit(additinalselectedColour[i], i)\"\r\n type=\"submit\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n data-dismiss=\"modal\"\r\n >\r\n Proceed\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <a\r\n *ngIf=\"!cartDetails[i]?.product?.finishedProduct\"\r\n class=\"see-more-link\"\r\n (click)=\"showHide(i)\"\r\n [ngClass]=\"{ block: cartDetails[i]?.product?.flashingProduct }\"\r\n >\r\n {{ showDetails[i] == true ? \"Hide\" : \"See\" }} more details\r\n </a>\r\n <div\r\n class=\"col-sm-6\"\r\n *ngIf=\"showDetails[i]\"\r\n [ngClass]=\"{\r\n 'quantity-form-details': !cartDetails[i]?.product?.finishedProduct\r\n }\"\r\n >\r\n <div id=\"cartMoreDetails{{ i }}\">\r\n <app-custom-product-quantity-form\r\n [productCode]=\"cartDetails[i]?.product?.code\"\r\n [productDetails]=\"cartDetails[i]\"\r\n [listView]=\"true\"\r\n [accessoriesPrice]=\"cartDetails[i]?.basePrice?.value\"\r\n [selectedColour]=\"selectedColour\"\r\n [isFinishedProduct]=\"cartDetails[i]?.product?.finishedProduct\"\r\n [isFlashingProduct]=\"cartDetails[i]?.product?.flashingProduct\"\r\n (updateCartEntires)=\"reoladCartEntires($event)\"\r\n [saveCardId]=\"saveCardOrderId\"\r\n ></app-custom-product-quantity-form>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct &&\r\n cartDetails[i]?.productConfiguredInfos &&\r\n cartDetails[i]?.productConfiguredInfos?.length > 0\r\n \"\r\n >\r\n <ng-container *ngFor=\"let data of cartDetails[i]?.productConfiguredInfos\">\r\n <div\r\n class=\"flashing-block\"\r\n *ngIf=\"data?.product?.name?.toLowerCase() == 'flashguard'\"\r\n >\r\n <div class=\"row\" >\r\n <div class=\"col-sm-3\">\r\n <h3 class=\"flash-title\">{{ data?.product?.name }}</h3>\r\n <h6 class=\"skuId\">SKU: {{ data?.product?.code }}</h6>\r\n <span *ngIf=\"data?.girth\">Girth: +{{ data?.girth }}mm </span>\r\n </div>\r\n <div class=\"offset-sm-3 col-sm-2\">\r\n {{ data?.quantityDouble }}{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.basePrice?.formattedValue }}/{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.totalPrice?.formattedValue }}\r\n <span class=\"gst-text\">excl GST</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n<!-- colours popup -->\r\n\r\n<div\r\n class=\"modal fade\"\r\n id=\"imageModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"imageModal\"\r\n aria-hidden=\"true\"\r\n #imageModal\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 <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <img [src]=\"imageModalSrc\" alt=\"alert\" />\r\n <div *ngIf=\"isFlashingModal\" class=\"flashing-details\">\r\n <app-custom-flashing-image-details [cartDetails]=\"flashingImageDetails\"></app-custom-flashing-image-details>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ngb-toast *ngIf=\"showToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img src=\"../../../../assets/images/Invited.svg\" /> Cart updated successfully!\r\n <i\r\n class=\"icon-close toast-close\"\r\n aria-label=\"Close\"\r\n (click)=\"closeToast()\"\r\n ></i>\r\n</ngb-toast>\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}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;position:relative}cx-storefront header.is-expanded .PreHeader{position:absolute;right:-5px;top:5px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;bottom:110px;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{bottom:160px;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}}.list-head{background-color:#646363;padding:8px;color:#fff;font-family:\"Arial Bold\",sans-serif;margin:0}.selected_color_section{display:flex;align-items:center}.align-center{align-items:center}.item-space{padding:20px 10px;color:#161616;background-color:#fff;border-bottom:1px solid #E0E0E0}.item-space.item-space-last{margin-bottom:13rem}.item-space .product_name{font-size:15px;font-family:\"Arial Bold\",sans-serif}.item-space .totalQty{padding-left:36px}.item-space .totalQty .qty_input{width:50px}.item-space .sku{color:#6f6f6f;font-size:14px;font-family:\"Arial Bold\",sans-serif}.item-space .refernce-input{border:1px solid #C6C6C6;padding:0 8px;height:40px;top:8px;position:relative}.item-space .selected_color{width:20px;height:20px;border:1px solid #C6C6C6}.item-space .img-align{padding:0 12px;cursor:pointer;position:relative;left:30px}.item-space .flashingProductColor{cursor:auto!important}.item-space .flashingProductColor span{border-bottom:none!important}.item-space .color_link{color:#b61828;margin:0 8px;cursor:pointer}.item-space .color_link .dropdown-icon{padding-left:3px}.item-space .color_link .color_part{position:relative;top:-4px}.item-space .color_link:hover{text-decoration:none}.item-space .color_link span{border-bottom:2px dashed #B61828}.item-space .color_link .flashingProductBorder{border:none}.item-space .fas fa-chevron-down dropdown-icon{border:none}.item-space .see_more{text-decoration:underline}.item-space .custom-padding{padding:4px 8px}.product-img{border:1px solid #E0E0E0;width:70px;min-width:70px;height:70px;top:12px;position:relative;text-align:center}.product-img .pdf-icon{max-width:43px;max-height:43px}.more-content{display:flex;border:1px solid #548AF7;padding:8px;background-color:#edf5ff}.more-content img{position:relative;top:-12px}.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}.colours_container{width:320px;height:auto;position:absolute;z-index:10}.cart-details-table th{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.see-more-link{z-index:2;position:relative;top:10px;cursor:pointer;text-decoration:underline}.see-more-link:hover{color:#d51317}.see-more-link.block{display:inline-block;margin-bottom:15px;padding-bottom:15px}.quantity-form-details{margin-top:-40px;z-index:0}#imageModal.show{display:flex!important;vertical-align:middle!important;align-items:center!important}#imageModal.show .modal-header{justify-content:right;border:none}#imageModal.show .modal-content{padding:0}#imageModal.show .modal-body{vertical-align:middle;margin:0 1rem;overflow:auto;max-height:80vh}#imageModal.show .modal-body img{max-width:100%;max-height:80vh}::ng-deep .toast{top:20%;left:50%;position:fixed;min-width:500px;max-width:500px;transform:translate(-50%);z-index:9999;background-color:#1d1d1b}::ng-deep .toast .toast-body{color:#fff}::ng-deep .toast .toast-body img{margin-right:10px}::ng-deep .toast .toast-body .toast-close{top:50%;right:5%;position:absolute;transform:translate(-50%,-50%);cursor:pointer}::ng-deep .toast .toast-header{background-color:#1d1d1b;color:#fff;padding:15px;border-radius:0}::ng-deep .toast .toast-header .close{color:#fff;opacity:1;text-shadow:none}::ng-deep .flashing-expand{cursor:pointer}::ng-deep .flashing-expand:after{background:url(../../../../../assets/images/expand-icon.svg) no-repeat center;z-index:2;width:24px;content:\"\";height:24px;position:absolute;top:0;right:0}::ng-deep .flashing-expand img{max-height:55px;max-width:60px;background:#ffffff}::ng-deep .flashing-expand.flashing-open:after{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22%3E%0D %3Cg id%3D%22Group_14477%22 data-name%3D%22Group 14477%22 transform%3D%22translate(-5533.5 11452.992)%22%3E%0D %3Cg id%3D%22Group_14476%22 data-name%3D%22Group 14476%22%3E%0D %3Cg id%3D%22Group_14475%22 data-name%3D%22Group 14475%22 transform%3D%22translate(5164.5 -12321.992)%22%3E%0D %3Crect id%3D%22Rectangle_1116%22 data-name%3D%22Rectangle 1116%22 width%3D%2224%22 height%3D%2224%22 transform%3D%22translate(369 869)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D %3Cpath id%3D%22Path_11366%22 data-name%3D%22Path 11366%22 d%3D%22M142.587%2C65.954v4.569a1.963%2C1.963%2C0%2C0%2C1-1.839%2C2.068H127.833a1.965%2C1.965%2C0%2C0%2C1-1.839-2.068V58.066A1.963%2C1.963%2C0%2C0%2C1%2C127.833%2C56h4.8a.83.83%2C0%2C1%2C1%2C0%2C1.659h-4.505a.516.516%2C0%2C0%2C0-.472.553V70.378a.521.521%2C0%2C0%2C0%2C.472.553h12.33a.516.516%2C0%2C0%2C0%2C.472-.553V65.954a.83.83%2C0%2C1%2C1%2C1.659%2C0Z%22 transform%3D%22translate(5411.209 -11505.287)%22 fill-rule%3D%22evenodd%22%2F%3E%0D %3C%2Fg%3E%0D %3Cpath id%3D%22Path_11367%22 data-name%3D%22Path 11367%22 d%3D%22M26.413%2C4.5H21.5a.607.607%2C0%2C0%2C0-.608.608v.009a.607.607%2C0%2C0%2C0%2C.608.608h3.4l-5.091%2C5.126a.608.608%2C0%2C0%2C0%2C.858.862l5.126-5.1v3.4a.607.607%2C0%2C0%2C0%2C.608.608h.009a.607.607%2C0%2C0%2C0%2C.608-.608V5.108A.607.607%2C0%2C0%2C0%2C26.413%2C4.5Z%22 transform%3D%22translate(5526.775 -11453.789)%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}.flashing-block{background-color:#e8e8e8;padding:12px;border-bottom:1px solid #C6C6C6}.flashing-block .flash-title{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.flashing-block .skuId{color:#707070;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.flashing-block .gst-text{display:block;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}\n"], components: [{ type: i6.MediaComponent, selector: "cx-media", inputs: ["container", "format", "alt", "role", "loading"], outputs: ["loaded"] }, { type: i7.CustomProductQuantityFormComponent, selector: "app-custom-product-quantity-form", inputs: ["hasBundle", "productCode", "productDetails", "unitType", "accessoriesPrice", "selectedColour", "cuttingValidation", "finishedAvailableColours", "isFinishedProduct", "isFlashingProduct", "listView", "saveCardId"], outputs: ["updateCartEntires", "addMoreClicked"] }, { type: i8.CustomFlashingImageDetailsComponent, selector: "app-custom-flashing-image-details", inputs: ["cartDetails", "forPdf", "appendixNo"] }, { type: i9.NgbToast, selector: "ngb-toast", inputs: ["delay", "autohide", "animation", "header"], outputs: ["shown", "hidden"], exportAs: ["ngbToast"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "async": i10.AsyncPipe, "split": i11.SplitPipe } });
|
|
454
|
+
CustomCartListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CustomCartListComponent, selector: "app-custom-cart-list", inputs: { cartDetails: "cartDetails", isCardData: "isCardData", additionalPara: "additionalPara" }, outputs: { updateCartEntry: "updateCartEntry" }, viewQueries: [{ propertyName: "closeInviteModal", first: true, predicate: ["closeInviteModal"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"loading\" *ngIf=\"showWaitCursor | async\">Loading…</div>\r\n\r\n<div class=\"row list-head\">\r\n <div class=\"col-sm-3\">ITEM</div>\r\n <div class=\"col-sm-3\">JOB REFERENCE</div>\r\n <div class=\"col-sm-2\">TOTAL QTY</div>\r\n <div class=\"col-sm-2\">UNIT PRICE</div>\r\n <div class=\"col-sm-2\">TOTAL PRICE</div>\r\n</div>\r\n<ng-container [formGroup]=\"productForm\">\r\n <ng-container formArrayName=\"cart\" *ngIf=\"hasCartDetails()\">\r\n <ng-container\r\n *ngFor=\"\r\n let cart of cartForm.controls;\r\n let i = index;\r\n let lastIndex = last\r\n \"\r\n [formGroupName]=\"i\"\r\n >\r\n <div\r\n class=\"item-space\"\r\n [ngClass]=\"{ 'item-space-last': i == cartDetails.length - 1 }\"\r\n *ngIf=\"!isNullOrEmpty(cartDetails[i]?.product?.code)\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"d-flex\">\r\n <div class=\"product-img\">\r\n <ng-container\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct;\r\n else normalImage\r\n \"\r\n >\r\n <a\r\n data-toggle=\"modal\"\r\n class=\"flashing-expand\"\r\n (click)=\"viewImage($event, cartDetails[i])\"\r\n [attr.data-target]=\"'#imageModal'\"\r\n *ngIf=\"hasImage(cartDetails[i]); else hasPdf\"\r\n >\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </a>\r\n <ng-template #hasPdf>\r\n <a\r\n class=\"flashing-expand flashing-open\"\r\n [href]=\"getPdfLink(cartDetails[i])\"\r\n target=\"_blank\"\r\n >\r\n <img\r\n class=\"pdf-icon\"\r\n src=\"../../../../../assets/images/pdf-icon.svg\"\r\n alt=\"Click to open PDF\"\r\n title=\"Click to open PDF\"\r\n />\r\n </a>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #normalImage>\r\n <cx-media\r\n [container]=\"getImageDetails(cartDetails[i])\"\r\n format=\"cartIcon\"\r\n role=\"presentation\"\r\n ></cx-media>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-2\">\r\n <div class=\"product_name\">\r\n {{ cartDetails[i]?.product?.name }}\r\n </div>\r\n <div class=\"sku\">SKU: {{ cartDetails[i]?.product?.code }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <input\r\n class=\"refernce-input\"\r\n type=\"text\"\r\n formControlName=\"jobReference\"\r\n (blur)=\"updateJobReference($event, cartDetails[i], i)\"\r\n />\r\n <div class=\"mt-2 text-danger\" *ngIf=\"jobReferenceErrors(i)\">\r\n Please enter valid Job Reference\r\n </div>\r\n </div>\r\n <div class=\"col-sm-2 totalQty\">\r\n <span\r\n *ngIf=\"\r\n !cartDetails[i]?.product?.finishedProduct;\r\n else nonAccessories\r\n \"\r\n >\r\n {{ cartDetails[i]?.quantityDouble }}\r\n {{ cartDetails[i]?.basePrice?.unitType }}\r\n <input\r\n type=\"hidden\"\r\n formControlName=\"prodQty\"\r\n [value]=\"cartDetails[i]?.quantityDouble\"\r\n />\r\n </span>\r\n <ng-template #nonAccessories>\r\n <span>\r\n <input\r\n class=\"qty_input refernce-input\"\r\n type=\"text\"\r\n formControlName=\"prodQty\"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n (blur)=\"updateCart($event, cartDetails[i], i)\"\r\n />\r\n </span>\r\n </ng-template>\r\n <div class=\"mt-2 text-danger\" *ngIf=\"prodQtyErrors(i)\">\r\n Please enter valid Quantity\r\n </div>\r\n </div>\r\n <div class=\"col-sm-2 totalQty\">\r\n {{ cartDetails[i]?.discountedBasePrice?.formattedValue? cartDetails[i]?.discountedBasePrice?.formattedValue : cartDetails[i]?.basePrice?.formattedValue }}/{{\r\n cartDetails[i]?.discountedBasePrice?.unitType ? cartDetails[i]?.discountedBasePrice?.unitType : cartDetails[i]?.basePrice?.unitType\r\n }}\r\n </div>\r\n <div class=\"col-sm-2 totalQty\">\r\n {{ cartDetails[i]?.totalPrice?.formattedValue }}\r\n <span\r\n class=\"img-align\"\r\n (click)=\"deleteEntry(cartDetails[i]?.entryNumber)\"\r\n ><img\r\n src=\"../../../../../assets/images/ionic-trash.svg\"\r\n alt=\"delete\"\r\n /></span>\r\n <br />\r\n excl GST\r\n </div>\r\n </div>\r\n\r\n <div class=\"custom-padding\">\r\n <p class=\"mt-3 mb-0\">\r\n <span\r\n *ngIf=\"\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.classifications &&\r\n cartDetails[i]?.product?.classifications[0] &&\r\n cartDetails[i]?.product?.classifications[0]?.features\r\n \"\r\n >\r\n {{ getClassifications(cartDetails[i]?.product?.classifications) }}\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div class=\"custom-padding\">\r\n <div\r\n class=\"d-flex\"\r\n *ngIf=\"\r\n cartDetails[i]?.product?.finishedProduct &&\r\n !isModalSelectedColor[i]\r\n \"\r\n >\r\n <div\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n \"\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background:\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n ?.hexadecimalCode\r\n }\"\r\n ></div>\r\n <a\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n \"\r\n class=\"color_link\"\r\n data-toggle=\"collapse\"\r\n [attr.data-target]=\"'#collapseColours' + i\"\r\n (click)=\"\r\n !cartDetails[i]?.product?.flashingProduct &&\r\n getColours(cart, i, $event)\r\n \"\r\n >\r\n <span\r\n [ngClass]=\"{\r\n flashingProductBorder:\r\n cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n class=\"color_part\"\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n \"\r\n >\r\n {{\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours[0]\r\n ?.name\r\n }}</span\r\n >\r\n <i\r\n *ngIf=\"!cartDetails[i]?.product?.flashingProduct\"\r\n class=\"fas fa-chevron-down dropdown-icon\"\r\n ></i\r\n ></a>\r\n </div>\r\n\r\n <div\r\n class=\"d-flex align-center\"\r\n *ngIf=\"cartDetails[i]?.product?.flashingProduct\"\r\n >\r\n <div\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.product &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos?.length\r\n \"\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background: getColourDetails(\r\n cartDetails[i]?.configurationInfos,\r\n 'background'\r\n )\r\n }\"\r\n ></div>\r\n <a class=\"ml-2 nolinkForflash\">\r\n <span>{{\r\n getColourDetails(cartDetails[i]?.configurationInfos, \"name\")\r\n }}</span>\r\n </a>\r\n </div>\r\n <div\r\n class=\"d-flex\"\r\n *ngIf=\"\r\n !isModalSelectedColor[i] &&\r\n !cartDetails[i]?.product?.flashingProduct\r\n \"\r\n >\r\n <div\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos[0] &&\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n \"\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background:\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n | split : '|' : 2\r\n }\"\r\n ></div>\r\n <a\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos[0] &&\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n \"\r\n class=\"color_link\"\r\n data-toggle=\"collapse\"\r\n [attr.data-target]=\"'#collapseColours' + i\"\r\n (click)=\"\r\n !cartDetails[i]?.product?.flashingProduct &&\r\n getColours(cart, i, $event)\r\n \"\r\n [ngClass]=\"{\r\n flashingProductColor: cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n >\r\n <span\r\n [ngClass]=\"{\r\n flashingProductBorder:\r\n cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n class=\"color_part\"\r\n *ngIf=\"\r\n cartDetails[i] &&\r\n cartDetails[i]?.configurationInfos &&\r\n cartDetails[i]?.configurationInfos[0] &&\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n \"\r\n >\r\n {{\r\n cartDetails[i]?.configurationInfos[0]?.configurationValue\r\n | split : \"|\" : 1\r\n }}</span\r\n >\r\n <i\r\n *ngIf=\"!cartDetails[i]?.product?.flashingProduct\"\r\n class=\"fas fa-chevron-down dropdown-icon\"\r\n ></i\r\n ></a>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"isModalSelectedColor[i]\">\r\n <div\r\n class=\"selected_color\"\r\n [ngStyle]=\"{\r\n background: modalSelectedColour[i]?.hexadecimalCode\r\n }\"\r\n ></div>\r\n <a\r\n class=\"color_link popup_recent\"\r\n data-toggle=\"collapse\"\r\n [attr.data-target]=\"'#collapseColours' + i\"\r\n (click)=\"\r\n !cartDetails[i]?.product?.flashingProduct &&\r\n getColours(cart, i, $event)\r\n \"\r\n >\r\n <span\r\n [ngClass]=\"{\r\n flashingProductBorder:\r\n cartDetails[i]?.product?.flashingProduct\r\n }\"\r\n class=\"color_part\"\r\n >\r\n {{ modalSelectedColour[i]?.name }}</span\r\n >\r\n <i\r\n *ngIf=\"!cartDetails[i]?.product?.flashingProduct\"\r\n class=\"fas fa-chevron-down dropdown-icon\"\r\n ></i\r\n ></a>\r\n </div>\r\n\r\n <!-- avaialable colours popup -->\r\n <div\r\n *ngIf=\"cartDetails[i]?.isExpand\"\r\n class=\"collapse colours_container\"\r\n [attr.id]=\"'collapseColours' + i\"\r\n >\r\n <div class=\"card card-body\">\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.finishedProduct &&\r\n cartDetails[i]?.product?.variantOptions\r\n \"\r\n class=\"colours m-1 pt-3\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let modalcolour of cartDetails[i]?.product?.variantOptions;\r\n let j = index\r\n \"\r\n >\r\n <div\r\n (click)=\"\r\n modalSelectedColor(\r\n $event,\r\n modalcolour.colours[0],\r\n i,\r\n modalcolour?.code\r\n )\r\n \"\r\n class=\"colour m-1 mb-3 main\"\r\n [ngStyle]=\"{\r\n background: modalcolour?.colours[0]?.hexadecimalCode\r\n }\"\r\n [ngClass]=\"{\r\n selected:\r\n modalSelectedColour[i]?.hexadecimalCode ==\r\n modalcolour?.colours[0]?.hexadecimalCode\r\n }\"\r\n >\r\n <div class=\"checkbox\"></div>\r\n <p\r\n class=\"colour-title\"\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{ modalcolour?.colours[0]?.name }}\"\r\n >\r\n {{ modalcolour?.colours[0]?.name }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !cartDetails[i]?.product?.finishedProduct &&\r\n cartDetails[i]?.product?.bpAdditionalAttribute?.colours\r\n \"\r\n class=\"colours m-1 pt-3\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let modalcolour of cartDetails[i]?.product\r\n ?.bpAdditionalAttribute?.colours;\r\n let j = index\r\n \"\r\n >\r\n <div\r\n (click)=\"modalSelectedColor($event, modalcolour, i)\"\r\n class=\"colour m-1 mb-3 main\"\r\n [ngStyle]=\"{\r\n background: modalcolour?.hexadecimalCode\r\n }\"\r\n [ngClass]=\"{\r\n selected:\r\n modalSelectedColour[i]?.hexadecimalCode ==\r\n modalcolour?.hexadecimalCode\r\n }\"\r\n >\r\n <div class=\"checkbox\"></div>\r\n <p\r\n class=\"colour-title\"\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{ modalcolour?.name }}\"\r\n >\r\n {{ modalcolour?.name }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.bpAdditionalAttribute\r\n ?.additionalColours?.length > 0\r\n \"\r\n >\r\n <a\r\n data-toggle=\"modal\"\r\n [attr.data-target]=\"'#additionalColorsModal' + i\"\r\n >\r\n <u> Additional colors may be avialable </u></a\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Additional colours popup-->\r\n <div\r\n class=\"modal fade\"\r\n id=\"additionalColorsModal{{ i }}\"\r\n role=\"dialog\"\r\n aria-labelledby=\"inviteMemberLabel\"\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\">Additional Colours</h4>\r\n <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"more-content\">\r\n <img\r\n class=\"mr-3\"\r\n src=\"../../../../assets/images/warningicon.svg\"\r\n alt=\"alert\"\r\n />\r\n <div>{{ additionalPara?.content }}.</div>\r\n </div>\r\n\r\n <div class=\"colours m-1 pt-3\">\r\n <ng-container\r\n *ngFor=\"\r\n let modalcolour of cartDetails[i]?.product\r\n ?.bpAdditionalAttribute?.additionalColours;\r\n let j = index\r\n \"\r\n >\r\n <div\r\n (click)=\"\r\n addtionalModalSelectedColor($event, modalcolour, i)\r\n \"\r\n class=\"colour m-1 mb-3 main\"\r\n [ngStyle]=\"{ background: modalcolour?.hexadecimalCode }\"\r\n [ngClass]=\"{\r\n selected:\r\n additinalselectedColour[i]?.hexadecimalCode ==\r\n modalcolour?.hexadecimalCode\r\n }\"\r\n >\r\n <div class=\"checkbox\"></div>\r\n <p\r\n class=\"colour-title\"\r\n placement=\"bottom\"\r\n ngbTooltip=\"{{ modalcolour?.name }}\"\r\n >\r\n {{ modalcolour?.name }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"m-1 pt-3\" *ngIf=\"additinalselectedColour[i]\">\r\n <h6 class=\"font-weight-bold\">Colour Selection</h6>\r\n <div class=\"selected_color_section\">\r\n <div\r\n class=\"selected_color mr-1\"\r\n [ngStyle]=\"{\r\n background:\r\n additinalselectedColour[i]?.hexadecimalCode\r\n }\"\r\n ></div>\r\n <div>{{ additinalselectedColour[i]?.name }}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-sm-flex justify-content-end d-block\">\r\n <button\r\n type=\"button\"\r\n (click)=\"cancel()\"\r\n data-dismiss=\"modal\"\r\n class=\"btn mobile-cancel-btn dimond-secondary-btn mr-lg-5\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n (click)=\"proceedWithSubmit(additinalselectedColour[i], i)\"\r\n type=\"submit\"\r\n class=\"btn mobile-save-btn dimond-primary-btn float-right\"\r\n data-dismiss=\"modal\"\r\n >\r\n Proceed\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <a\r\n *ngIf=\"!cartDetails[i]?.product?.finishedProduct\"\r\n class=\"see-more-link\"\r\n (click)=\"showHide(i)\"\r\n [ngClass]=\"{ block: cartDetails[i]?.product?.flashingProduct }\"\r\n >\r\n {{ showDetails[i] == true ? \"Hide\" : \"See\" }} more details\r\n </a>\r\n <div\r\n class=\"col-sm-6\"\r\n *ngIf=\"showDetails[i]\"\r\n [ngClass]=\"{\r\n 'quantity-form-details': !cartDetails[i]?.product?.finishedProduct\r\n }\"\r\n >\r\n <div id=\"cartMoreDetails{{ i }}\">\r\n <app-custom-product-quantity-form\r\n [productCode]=\"cartDetails[i]?.product?.code\"\r\n [productDetails]=\"cartDetails[i]\"\r\n [listView]=\"true\"\r\n [accessoriesPrice]=\"cartDetails[i]?.basePrice?.value\"\r\n [selectedColour]=\"selectedColour\"\r\n [isFinishedProduct]=\"cartDetails[i]?.product?.finishedProduct\"\r\n [isFlashingProduct]=\"cartDetails[i]?.product?.flashingProduct\"\r\n (updateCartEntires)=\"reoladCartEntires($event)\"\r\n [saveCardId]=\"saveCardOrderId\"\r\n ></app-custom-product-quantity-form>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n cartDetails[i]?.product?.flashingProduct &&\r\n cartDetails[i]?.productConfiguredInfos &&\r\n cartDetails[i]?.productConfiguredInfos?.length > 0\r\n \"\r\n >\r\n <ng-container *ngFor=\"let data of cartDetails[i]?.productConfiguredInfos\">\r\n <div\r\n class=\"flashing-block\"\r\n *ngIf=\"data?.product?.name?.toLowerCase() == 'flashguard'\"\r\n >\r\n <div class=\"row\" >\r\n <div class=\"col-sm-3\">\r\n <h3 class=\"flash-title\">{{ data?.product?.name }}</h3>\r\n <h6 class=\"skuId\">SKU: {{ data?.product?.code }}</h6>\r\n <span *ngIf=\"data?.girth\">Girth: +{{ data?.girth }}mm </span>\r\n </div>\r\n <div class=\"offset-sm-3 col-sm-2\">\r\n {{ data?.quantityDouble }}{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.basePrice?.formattedValue }}/{{ data?.unitType }}\r\n </div>\r\n <div class=\"col-sm-2\">\r\n {{ data?.totalPrice?.formattedValue }}\r\n <span class=\"gst-text\">excl GST</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n<!-- colours popup -->\r\n\r\n<div\r\n class=\"modal fade\"\r\n id=\"imageModal\"\r\n role=\"dialog\"\r\n aria-labelledby=\"imageModal\"\r\n aria-hidden=\"true\"\r\n #imageModal\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 <i\r\n class=\"icon-close invite-pop-close\"\r\n #closeInviteModal\r\n data-dismiss=\"modal\"\r\n aria-label=\"Close\"\r\n ></i>\r\n </div>\r\n <div class=\"modal-body\">\r\n <img [src]=\"imageModalSrc\" alt=\"alert\" />\r\n <div *ngIf=\"isFlashingModal\" class=\"flashing-details\">\r\n <app-custom-flashing-image-details [cartDetails]=\"flashingImageDetails\"></app-custom-flashing-image-details>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ngb-toast *ngIf=\"showToast\" [autohide]=\"true\" [delay]=\"4000\">\r\n <img src=\"../../../../assets/images/Invited.svg\" /> Cart updated successfully!\r\n <i\r\n class=\"icon-close toast-close\"\r\n aria-label=\"Close\"\r\n (click)=\"closeToast()\"\r\n ></i>\r\n</ngb-toast>\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}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)}[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;position:relative}cx-storefront header.is-expanded .PreHeader{position:absolute;right:-5px;top:5px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;bottom:110px;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{bottom:160px;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}}.list-head{background-color:#646363;padding:8px;color:#fff;font-family:\"Arial Bold\",sans-serif;margin:0}.selected_color_section{display:flex;align-items:center}.align-center{align-items:center}.item-space{padding:20px 10px;color:#161616;background-color:#fff;border-bottom:1px solid #E0E0E0}.item-space.item-space-last{margin-bottom:13rem}.item-space .product_name{font-size:15px;font-family:\"Arial Bold\",sans-serif}.item-space .totalQty{padding-left:36px}.item-space .totalQty .qty_input{width:50px}.item-space .sku{color:#6f6f6f;font-size:14px;font-family:\"Arial Bold\",sans-serif}.item-space .refernce-input{border:1px solid #C6C6C6;padding:0 8px;height:40px;top:8px;position:relative}.item-space .selected_color{width:20px;height:20px;border:1px solid #C6C6C6}.item-space .img-align{padding:0 12px;cursor:pointer;position:relative;left:30px}.item-space .flashingProductColor{cursor:auto!important}.item-space .flashingProductColor span{border-bottom:none!important}.item-space .color_link{color:#b61828;margin:0 8px;cursor:pointer}.item-space .color_link .dropdown-icon{padding-left:3px}.item-space .color_link .color_part{position:relative;top:-4px}.item-space .color_link:hover{text-decoration:none}.item-space .color_link span{border-bottom:2px dashed #B61828}.item-space .color_link .flashingProductBorder{border:none}.item-space .fas fa-chevron-down dropdown-icon{border:none}.item-space .see_more{text-decoration:underline}.item-space .custom-padding{padding:4px 8px}.product-img{border:1px solid #E0E0E0;width:70px;min-width:70px;height:70px;top:12px;position:relative;text-align:center}.product-img .pdf-icon{max-width:43px;max-height:43px}.more-content{display:flex;border:1px solid #548AF7;padding:8px;background-color:#edf5ff}.more-content img{position:relative;top:-12px}.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}.colours_container{width:320px;height:auto;position:absolute;z-index:10}.cart-details-table th{font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.see-more-link{z-index:2;position:relative;top:10px;cursor:pointer;text-decoration:underline}.see-more-link:hover{color:#d51317}.see-more-link.block{display:inline-block;margin-bottom:15px;padding-bottom:15px}.quantity-form-details{margin-top:-40px;z-index:0}#imageModal.show{display:flex!important;vertical-align:middle!important;align-items:center!important}#imageModal.show .modal-header{justify-content:right;border:none}#imageModal.show .modal-content{padding:0}#imageModal.show .modal-body{vertical-align:middle;margin:0 1rem;overflow:auto;max-height:80vh}#imageModal.show .modal-body img{max-width:100%;max-height:80vh}::ng-deep .toast{top:20%;left:50%;position:fixed;min-width:500px;max-width:500px;transform:translate(-50%);z-index:9999;background-color:#1d1d1b}::ng-deep .toast .toast-body{color:#fff}::ng-deep .toast .toast-body img{margin-right:10px}::ng-deep .toast .toast-body .toast-close{top:50%;right:5%;position:absolute;transform:translate(-50%,-50%);cursor:pointer}::ng-deep .toast .toast-header{background-color:#1d1d1b;color:#fff;padding:15px;border-radius:0}::ng-deep .toast .toast-header .close{color:#fff;opacity:1;text-shadow:none}::ng-deep .flashing-expand{cursor:pointer}::ng-deep .flashing-expand:after{background:url(../../../../../assets/images/expand-icon.svg) no-repeat center;z-index:2;width:24px;content:\"\";height:24px;position:absolute;top:0;right:0}::ng-deep .flashing-expand img{max-height:55px;max-width:60px;background:#ffffff}::ng-deep .flashing-expand.flashing-open:after{background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22%3E%0D %3Cg id%3D%22Group_14477%22 data-name%3D%22Group 14477%22 transform%3D%22translate(-5533.5 11452.992)%22%3E%0D %3Cg id%3D%22Group_14476%22 data-name%3D%22Group 14476%22%3E%0D %3Cg id%3D%22Group_14475%22 data-name%3D%22Group 14475%22 transform%3D%22translate(5164.5 -12321.992)%22%3E%0D %3Crect id%3D%22Rectangle_1116%22 data-name%3D%22Rectangle 1116%22 width%3D%2224%22 height%3D%2224%22 transform%3D%22translate(369 869)%22 fill%3D%22%23fff%22%2F%3E%0D %3C%2Fg%3E%0D %3Cpath id%3D%22Path_11366%22 data-name%3D%22Path 11366%22 d%3D%22M142.587%2C65.954v4.569a1.963%2C1.963%2C0%2C0%2C1-1.839%2C2.068H127.833a1.965%2C1.965%2C0%2C0%2C1-1.839-2.068V58.066A1.963%2C1.963%2C0%2C0%2C1%2C127.833%2C56h4.8a.83.83%2C0%2C1%2C1%2C0%2C1.659h-4.505a.516.516%2C0%2C0%2C0-.472.553V70.378a.521.521%2C0%2C0%2C0%2C.472.553h12.33a.516.516%2C0%2C0%2C0%2C.472-.553V65.954a.83.83%2C0%2C1%2C1%2C1.659%2C0Z%22 transform%3D%22translate(5411.209 -11505.287)%22 fill-rule%3D%22evenodd%22%2F%3E%0D %3C%2Fg%3E%0D %3Cpath id%3D%22Path_11367%22 data-name%3D%22Path 11367%22 d%3D%22M26.413%2C4.5H21.5a.607.607%2C0%2C0%2C0-.608.608v.009a.607.607%2C0%2C0%2C0%2C.608.608h3.4l-5.091%2C5.126a.608.608%2C0%2C0%2C0%2C.858.862l5.126-5.1v3.4a.607.607%2C0%2C0%2C0%2C.608.608h.009a.607.607%2C0%2C0%2C0%2C.608-.608V5.108A.607.607%2C0%2C0%2C0%2C26.413%2C4.5Z%22 transform%3D%22translate(5526.775 -11453.789)%22%2F%3E%0D %3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\") no-repeat center}.flashing-block{background-color:#e8e8e8;padding:12px;border-bottom:1px solid #C6C6C6}.flashing-block .flash-title{font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}.flashing-block .skuId{color:#707070;font-size:var(--fontsize14);font-family:\"Arial Bold\",sans-serif}.flashing-block .gst-text{display:block;font-size:var(--fontsize16);font-family:\"Arial Regular\",sans-serif}\n"], components: [{ type: i6.MediaComponent, selector: "cx-media", inputs: ["container", "format", "alt", "role", "loading"], outputs: ["loaded"] }, { type: i7.CustomProductQuantityFormComponent, selector: "app-custom-product-quantity-form", inputs: ["hasBundle", "productCode", "productDetails", "unitType", "accessoriesPrice", "selectedColour", "cuttingValidation", "finishedAvailableColours", "isFinishedProduct", "isFlashingProduct", "listView", "saveCardId"], outputs: ["updateCartEntires", "addMoreClicked"] }, { type: i8.CustomFlashingImageDetailsComponent, selector: "app-custom-flashing-image-details", inputs: ["cartDetails", "forPdf", "appendixNo"] }, { type: i9.NgbToast, selector: "ngb-toast", inputs: ["delay", "autohide", "animation", "header"], outputs: ["shown", "hidden"], exportAs: ["ngbToast"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "async": i10.AsyncPipe, "split": i11.SplitPipe } });
|
|
455
455
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomCartListComponent, decorators: [{
|
|
456
456
|
type: Component,
|
|
457
457
|
args: [{
|
|
@@ -471,4 +471,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
471
471
|
type: ViewChild,
|
|
472
472
|
args: ["closeInviteModal"]
|
|
473
473
|
}] } });
|
|
474
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhcnQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL3NoYXJlZC9jdXN0b20tY2FydC1kZXRhaWwvY3VzdG9tLWNhcnQtbGlzdC9jdXN0b20tY2FydC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvc2hhcmVkL2N1c3RvbS1jYXJ0LWRldGFpbC9jdXN0b20tY2FydC1saXN0L2N1c3RvbS1jYXJ0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQTBCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLHVCQUF1QjtJQThCbEMsWUFDVSxXQUF3QixFQUN4QixXQUF3QixFQUN4QixHQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsVUFBc0IsRUFDdEIsZ0JBQXlDLEVBQ3pDLEtBQXFCO1FBTnJCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0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TUFBTTthQUNyRCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUM7WUFDMUQsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxLQUFLO2lCQUNwRCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCwyQkFBMkI7SUFDM0Isa0JBQWtCLENBQUMsS0FBVTs7UUFDM0IsT0FBTyxDQUNMLENBQUMsQ0FBQSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsMENBQUUsTUFBTTthQUMxRCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUM7WUFDL0QsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQywwQ0FBRSxLQUFLO2lCQUN6RCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsV0FBVyxDQUFDLEtBQVUsRUFBRSxJQUFT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QUFjO3NCQUF0QixLQUFLO2dCQUN5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmVDYXJ0U2VydmljZSwgQ21zU2VydmljZSB9IGZyb20gXCJAc3BhcnRhY3VzL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBDYXJ0Rm9ybSB9IGZyb20gXCIuLi8uLi9DdXN0b21Qcm9kdWN0XCI7XHJcblxyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU2F2ZWRDYXJ0RGV0YWlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY3VzdG9tLXNhdmVkLWNhcnQvY3VzdG9tLXNhdmVkLWNhcnQtZGV0YWlscy9zYXZlZC1jYXJ0LWRldGFpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tb25VdGlscyB9IGZyb20gXCIuLi8uLi8uLi91dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWN1c3RvbS1jYXJ0LWxpc3RcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2N1c3RvbS1jYXJ0LWxpc3QuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vY3VzdG9tLWNhcnQtbGlzdC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbUNhcnRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGNhcnREZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgaXNDYXJkRGF0YTogYW55O1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVDYXJ0RW50cnkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSBhZGRpdGlvbmFsUGFyYTogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJjbG9zZUludml0ZU1vZGFsXCIpIGNsb3NlSW52aXRlTW9kYWw6IGFueTtcclxuICBhZGRpdGluYWxzZWxlY3RlZENvbG91cjogYW55ID0gW107XHJcbiAgbW9kYWxTZWxlY3RlZENvbG91cjogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRDb2xvdXI6IGFueTtcclxuICBjYXJ0SWQ6IGFueTtcclxuICBzaG93RGV0YWlsczogYW55ID0gW107XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBlcnJvck1lc3NhZ2UgPSBcIlNvbWUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyBkYXRhXCI7XHJcbiAgc2VsZWN0ZWRJbmRleDogYW55O1xyXG4gIGRlZmF1bHRDb25maWdJbmZvOiBhbnkgPSB7XHJcbiAgICBjb25maWd1cmF0b3JUeXBlOiBcIlRFWFRGSUVMRFwiLFxyXG4gICAgY29uZmlndXJhdGlvbkxhYmVsOiBcIkNPTE9SXCIsXHJcbiAgICBjb25maWd1cmF0aW9uVmFsdWU6IFwiXCIsXHJcbiAgfTtcclxuICBpc01vZGFsU2VsZWN0ZWRDb2xvcjogYW55ID0gW107XHJcbiAgcHJvZHVjdEZvcm06IGFueSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZFRvQ2FydEVycm9yOiBhbnkgPSBudWxsO1xyXG4gIGltYWdlTW9kYWxTcmM6IGFueTtcclxuICBzaG93VG9hc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjYXJ0UGFnZURhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNhdmVDYXJkT3JkZXJJZDogYW55O1xyXG4gIGlzRmxhc2hpbmdNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZsYXNoaW5nSW1hZ2VEZXRhaWxzOiBhbnk7XHJcbiAgZW52OiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbnYnKTtcclxuICBlbnZpcm9ubWVudCA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnYpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgYWN0aXZlQ2FydFNlcnZpY2U6IEFjdGl2ZUNhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYXZlZENhcnRTZXJ2aWNlOiBTYXZlZENhcnREZXRhaWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjYXJ0T2JqOiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNwYXJ0YWN1c+Kav2RpbW9uZC1zcGHimr9jYXJ0XCIpO1xyXG4gICAgdGhpcy5zYXZlQ2FyZE9yZGVySWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tcInNhdmVkQ2FydElkXCJdO1xyXG4gICAgdGhpcy5wcm9kdWN0Rm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBjYXJ0OiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRGVmYXVsdENhcnREZXRhaWxzKCk7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmV4cGFuZEFsbC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FydERldGFpbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnNob3dEZXRhaWxzW2ldID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNhcnREZXRhaWxzW2ldLmlzRXhwYW5kID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlLmdldEN1cnJlbnRQYWdlKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhLnRlbXBsYXRlID09IFwiU2F2ZWRDYXJ0RGV0YWlsc1BhZ2VUZW1wbGF0ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0UGFnZURhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhcnRJZCA9IHRoaXMuc2F2ZUNhcmRPcmRlcklkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2FydFBhZ2VEYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhcnRJZCA9IEpTT04ucGFyc2UoY2FydE9iaik/LmFjdGl2ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FydEZvcm0oKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RGb3JtLmdldChcImNhcnRcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgaGFzQ2FydERldGFpbHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJ0Rm9ybSAmJiBPYmplY3Qua2V5cyh0aGlzLmNhcnRGb3JtKT8ubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURlZmF1bHRDYXJ0RGV0YWlscygpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYXJ0RGV0YWlscz8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jYXJ0Rm9ybT8ucHVzaCh0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKG5ldyBDYXJ0Rm9ybSgpKSk7XHJcbiAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2ldXHJcbiAgICAgICAgLmdldChcImpvYlJlZmVyZW5jZVwiKVxyXG4gICAgICAgID8uc2V0VmFsdWUodGhpcy5jYXJ0RGV0YWlsc1tpXT8uam9iUmVmZXJlbmNlKTtcclxuICAgICAgY29uc3QgcXR5ID0gdGhpcy5jYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0XHJcbiAgICAgICAgPyBwYXJzZUludCh0aGlzLmNhcnREZXRhaWxzW2ldPy5xdWFudGl0eSlcclxuICAgICAgICA6IHRoaXMuY2FydERldGFpbHNbaV0/LnF1YW50aXR5RG91YmxlO1xyXG4gICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpXS5nZXQoXCJwcm9kUXR5XCIpPy5zZXRWYWx1ZShxdHkpO1xyXG4gICAgICB0aGlzLmlzTW9kYWxTZWxlY3RlZENvbG9yLnB1c2goZmFsc2UpO1xyXG4gICAgICB0aGlzLnNob3dEZXRhaWxzLnB1c2goZmFsc2UpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zICYmXHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zPy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcykge1xyXG4gICAgICAgICAgaWYgKGNvbmZpZz8uY29uZmlndXJhdGlvbkxhYmVsID09IFwiQ09MT1JcIikge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCAmJiB0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgPy5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnMgJiYgIXRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSA9IHt9O1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXS5oZXhhZGVjaW1hbENvZGUgPSBjb25maWc/LmNvbmZpZ3VyYXRpb25WYWx1ZT8uc3BsaXQoXCJ8XCIpPy5wb3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb25maWdJbmZvLmNvbmZpZ3VyYXRpb25WYWx1ZSA9XHJcbiAgICAgICAgICAgICAgY29uZmlnPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFwifFwiKVswXSB8fCBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmNhcnREZXRhaWxzW2ldPy5jb25maWdWYWx1ZXMgJiZcclxuICAgICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ1ZhbHVlcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMuY2FydERldGFpbHNbaV1bXCJjb25maWdWYWx1ZXNcIl0gPSB0aGlzLmRlZmF1bHRDb25maWdJbmZvO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0LmJwQWRkaXRpb25hbEF0dHJpYnV0ZSAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LnByb2R1Y3QuYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzICYmXHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdC5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNbMF0gJiYgIXRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSA9IHt9O1xyXG4gICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXS5oZXhhZGVjaW1hbENvZGUgPSB0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNbMF1cclxuICAgICAgICAgID8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5maW5pc2hlZFByb2R1Y3QgJiYgIXRoaXMuY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXSAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlICYmICF0aGlzLm1vZGFsU2VsZWN0ZWRDb2xvdXJbaV0pIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSA9IHt9O1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlbGVjdGVkQ29sb3VyW2ldLmhleGFkZWNpbWFsQ29kZSA9IHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlPy5zcGxpdCgnfCcpWzJdXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoIWNoYW5nZXM/LmNhcnREZXRhaWxzPy5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURlZmF1bHRDYXJ0RGV0YWlscygpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93SGlkZShpbmQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5zaG93RGV0YWlsc1tpbmRdID0gIXRoaXMuc2hvd0RldGFpbHNbaW5kXTtcclxuICB9XHJcblxyXG4gIGdldENvbG91ckRldGFpbHMoY29uZmlnSW5mbzogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGxldCBuYW1lOiBhbnk7XHJcbiAgICBsZXQgYmFja2dyb3VuZDogYW55O1xyXG4gICAgaWYgKGNvbmZpZ0luZm8gJiYgY29uZmlnSW5mbz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjb2xvdXIgPSBjb25maWdJbmZvPy5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbD8uY29uZmlndXJhdGlvbkxhYmVsPy50b0xvd2VyQ2FzZSgpID09IFwiY29sb3JcIjtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChjb2xvdXIgJiYgY29sb3VyPy5sZW5ndGgpIHtcclxuICAgICAgICBuYW1lID0gY29sb3VyWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFwifFwiKVsxXTtcclxuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3VyWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFwifFwiKVsyXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHR5cGUgPT0gXCJiYWNrZ3JvdW5kXCIgPyBiYWNrZ3JvdW5kIDogbmFtZTtcclxuICB9XHJcblxyXG4gIGdldENvbG91cnMoY2FydERldGFpbHM6IGFueSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIHRoaXMuc2VsZWN0ZWRDb2xvdXIgPVxyXG4gICAgLy8gICBjYXJ0RGV0YWlscz8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWUuc3BsaXQoJ3wnKVsyXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhcnREZXRhaWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpICE9IGluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXS5pc0V4cGFuZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaW5kZXhdLmlzRXhwYW5kID0gIXRoaXMuY2FydERldGFpbHNbaW5kZXhdLmlzRXhwYW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZENvbG91ckNvZGUoY29kZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2FydERldGFpbHNbdGhpcy5zZWxlY3RlZEluZGV4XSAmJlxyXG4gICAgICB0aGlzLmNhcnREZXRhaWxzW3RoaXMuc2VsZWN0ZWRJbmRleF0/LmNvbmZpZ1ZhbHVlc1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2FydERldGFpbHNbdGhpcy5zZWxlY3RlZEluZGV4XS5jb25maWdWYWx1ZXMuY29uZmlndXJhdGlvblZhbHVlID1cclxuICAgICAgICBjb2RlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9kYWxTZWxlY3RlZENvbG9yKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIGNvbG91cjogYW55LFxyXG4gICAgaW5kOiBudW1iZXIsXHJcbiAgICBza3VDb2RlPzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuY2FydERldGFpbHNbaW5kXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpbmRdID0gY29sb3VyO1xyXG4gICAgICB0aGlzLmlzTW9kYWxTZWxlY3RlZENvbG9yW2luZF0gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RhbFNlbGVjdGVkQ29sb3VyW2luZF0gPSBjb2xvdXI7XHJcbiAgICAgIHRoaXMuaXNNb2RhbFNlbGVjdGVkQ29sb3JbaW5kXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sb3VyQ29kZShjb2xvdXI/LmNvZGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy51cGRhdGVQcm9kdWN0Q29sb3IodGhpcy5jYXJ0RGV0YWlsc1tpbmRdLCBjb2xvdXIsIGluZCwgc2t1Q29kZSk7XHJcbiAgfVxyXG5cclxuICBhZGR0aW9uYWxNb2RhbFNlbGVjdGVkQ29sb3IoZXZlbnQ6IGFueSwgY29sb3VyOiBhbnksIGluZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuY2FydERldGFpbHNbaW5kXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaW5kXSA9IGNvbG91cjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaW5kXSA9IGNvbG91cjtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb2xvdXJDb2RlKGNvbG91cj8uY29kZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkV2l0aFN1Ym1pdChjb2xvcjogYW55LCBpbmQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5pc01vZGFsU2VsZWN0ZWRDb2xvcltpbmRdID0gdHJ1ZTtcclxuICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpbmRdID0gY29sb3I7XHJcbiAgICB0aGlzLmNsb3NlSW52aXRlTW9kYWw/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XHJcbiAgICB0aGlzLmdldENvbG91cnMoY29sb3IsIGluZCwgZXZlbnQpO1xyXG4gICAgdGhpcy51cGRhdGVQcm9kdWN0Q29sb3IodGhpcy5jYXJ0RGV0YWlsc1tpbmRdLCBjb2xvciwgaW5kKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXIgPSBbXTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUVudHJ5KGVudE51bWJlcjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5jYXJ0UGFnZURhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmRlbGV0ZUNhcnRFbnRyeSh0aGlzLmNhcnRJZCwgZW50TnVtYmVyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYodGhpcy5jYXJ0UGFnZURhdGEpe1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUNhcnRTZXJ2aWNlLnJlbG9hZEFjdGl2ZUNhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2hvd1RvYXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlb2xhZENhcnRFbnRpcmVzKCk7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNhcnREZXRhaWxzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENhcnRTZXJ2aWNlXHJcbiAgICAgICAgICAuZGVsZXRlU2F2ZENhcnQodGhpcy5zYXZlQ2FyZE9yZGVySWQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93VG9hc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwibXktYWNjb3VudC9zYXZlZC1jYXJ0c1wiO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnJlb2xhZENhcnRFbnRpcmVzKCk7XHJcbiAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zYXZlZENhcnRTZXJ2aWNlXHJcbiAgICAgICAgLmRlbGV0ZVNhdmVDYXJ0RW50cnkodGhpcy5zYXZlQ2FyZE9yZGVySWQsIGVudE51bWJlcilcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dUb2FzdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVvbGFkQ2FydEVudGlyZXMoKTtcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVvbGFkQ2FydEVudGlyZXMoZXZlbnQ/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlQ2FydEVudHJ5LmVtaXQoKTtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLnVwZGF0ZURlZmF1bHRDYXJ0RGV0YWlscygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93VG9hc3QgPSBmYWxzZTtcclxuICAgIH0sIDQwMDApO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgYW55IHZhbHVlIGlzIGVtcHR5IG9yIHVuZGVmaW5lZFxyXG4gIGlzTnVsbE9yRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IFwiXCI7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9kdWN0Q29sb3IoY2FydDogYW55LCBjb2xvcjogYW55LCBpbmRleDogYW55LCBza3VDb2RlPzogYW55KTogdm9pZCB7XHJcbiAgICAvL2V2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBvYmogPSBbXTtcclxuICAgIG9iai5wdXNoKHtcclxuICAgICAgY29uZmlndXJhdG9yVHlwZTogXCJURVhURklFTERcIixcclxuICAgICAgY29uZmlndXJhdGlvbkxhYmVsOiBcIkNPTE9SXCIsXHJcbiAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZTogY29sb3I/LmNvZGUsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKGNhcnQsIGluZGV4LCBvYmosIHNrdUNvZGUpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIENhcnQgRGV0YWlscyBpZiBRdWFudGl0eSBDaGFuZ2VkIGZvciBBY2Nlc3NvcmllcyBvbmx5XHJcbiAgdXBkYXRlQ2FydERldGFpbHMoY2FydDogYW55LCBpbmRleDogYW55LCBjb2xvcj86IGFueSwgc2t1Q29kZT86IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IHBheUxvYWQ6IGFueSA9IHt9O1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZW50cnlOdW1iZXIgPSBjYXJ0Py5wcm9kdWN0Py5lbnRyeU51bWJlciB8fCBjYXJ0Py5lbnRyeU51bWJlcjtcclxuICAgIGlmIChjb2xvcikge1xyXG4gICAgICBwYXlMb2FkID0ge1xyXG4gICAgICAgIHF1YW50aXR5OiBwYXJzZUludChcclxuICAgICAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwicHJvZFF0eVwiKT8udmFsdWVcclxuICAgICAgICApLFxyXG4gICAgICAgIHByb2R1Y3Q6IHtcclxuICAgICAgICAgIGNvZGU6IHNrdUNvZGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWd1cmF0aW9uSW5mb3M6IGNvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmIChjYXJ0Py5wcm9kdWN0Py5maW5pc2hlZFByb2R1Y3QpIHtcclxuICAgICAgcGF5TG9hZCA9IHtcclxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQoXHJcbiAgICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcInByb2RRdHlcIik/LnZhbHVlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBqb2JSZWZlcmVuY2U6XHJcbiAgICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcImpvYlJlZmVyZW5jZVwiKT8udmFsdWUsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXlMb2FkID0ge1xyXG4gICAgICAgIHF1YW50aXR5OiAxLFxyXG4gICAgICAgIHByb2R1Y3Q6IHtcclxuICAgICAgICAgIGNvZGU6IGNhcnQ/LnByb2R1Y3Q/LmNvZGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBqb2JSZWZlcmVuY2U6XHJcbiAgICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcImpvYlJlZmVyZW5jZVwiKT8udmFsdWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVDYXJ0RW50cnkodGhpcy5jYXJ0SWQsIGVudHJ5TnVtYmVyLCBwYXlMb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1c0NvZGU/LnRvTG93ZXJDYXNlKCkgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5jYXJ0UGFnZURhdGEpe1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2FydFNlcnZpY2UucmVsb2FkQWN0aXZlQ2FydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1RvYXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZW9sYWRDYXJ0RW50aXJlcygpO1xyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkVG9DYXJ0RXJyb3IgPVxyXG4gICAgICAgICAgICAgIHJlc3BvbnNlPy5lcnJvcnNbMF0/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICByZXNwb25zZT8uZXJyb3JzWzBdPy5lcnJvck1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFkZFRvQ2FydEVycm9yID1cclxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcnNbMF0/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcnNbMF0/LmVycm9yTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgUXVhbnRpdHkgRXJyb3JzXHJcbiAgcHJvZFF0eUVycm9ycyhpbmRleDogYW55KTogYW55IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcInByb2RRdHlcIik/LmVycm9ycyB8fFxyXG4gICAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwicHJvZFF0eVwiKT8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwicHJvZFF0eVwiKT8uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcInByb2RRdHlcIik/LnRvdWNoZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEpvYiBSZWZlcmVuY2UgRXJyb3JzXHJcbiAgam9iUmVmZXJlbmNlRXJyb3JzKGluZGV4OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy5lcnJvcnMgfHxcclxuICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcImpvYlJlZmVyZW5jZVwiKT8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy50b3VjaGVkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlzIEZvcm0gVmFsaWRcclxuICBpc0Zvcm1WYWxpZChpbmRleDogYW55LCBjYXJ0OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jYXJ0Rm9ybT8uY29udHJvbHNbaW5kZXhdICYmXHJcbiAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy52YWxpZCAmJlxyXG4gICAgICAodGhpcy5jYXJ0Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoXCJwcm9kUXR5XCIpPy52YWxpZCB8fFxyXG4gICAgICAgICFjYXJ0Py5wcm9kdWN0Py5maW5pc2hlZFByb2R1Y3QpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIENhcnQgRGV0YWlscyBvbiBjaGFuZ2Ugb2YgSm9iIFJlZmVyZW5jZSBvciBRdWFudGl0eVxyXG4gIHVwZGF0ZUNhcnQoZXZlbnQ6IGFueSwgY2FydDogYW55LCBpbmRleDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgcXR5ID0gZXZlbnQ/LmN1cnJlbnRUYXJnZXQ/LnZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkocXR5KSAmJiB0aGlzLmlzRm9ybVZhbGlkKGluZGV4LCBjYXJ0KSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKGNhcnQsIGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUpvYlJlZmVyZW5jZShldmVudDogYW55LCBjYXJ0OiBhbnksIGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKGNhcnQsIGluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vIEdldCB0aGUgSW1hZ2UgRGV0YWlscyBiYXNlZCBvbiBQcm9kdWN0c1xyXG4gIGdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsczogYW55LCB0aHVtYm5haWw6IGFueSA9IHRydWUpOiBhbnkge1xyXG4gICAgbGV0IGltYWdlVXJsOiBhbnkgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzO1xyXG4gICAgaWYgKHRoaXMuaXNDYXJkRGF0YSkge1xyXG4gICAgICBjb25zdCBjb2xvckNvZGUgPVxyXG4gICAgICAgIGNhcnREZXRhaWxzPy5jb25maWd1cmF0aW9uSW5mb3MgfHwgY2FydERldGFpbHM/LmNvbmZpZ3VyYXRpb25JbmZvc1swXVxyXG4gICAgICAgICAgPyBjYXJ0RGV0YWlscz8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFxyXG4gICAgICAgICAgICBcInxcIlxyXG4gICAgICAgICAgKVswXVxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICBpbWFnZVVybCA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/LmZpbHRlcihcclxuICAgICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgICAoaW1nPy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiICYmIGltZz8uY29sb3JDb2RlID09IGNvbG9yQ29kZSkgfHxcclxuICAgICAgICAgIChpbWc/LmZvcm1hdCA9PSBcImNhcnRJY29uXCIgJiZcclxuICAgICAgICAgICAgdGhpcy5pc051bGxPckVtcHR5KGNvbG9yQ29kZSkgJiZcclxuICAgICAgICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmltYWdlcz8ubGVuZ3RoIDw9IDQpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpbWFnZVVybCA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/LkdBTExFUlk/LmNhcnRJY29uO1xyXG4gICAgfVxyXG4gICAgbGV0IHNyY1VybDogYW55O1xyXG4gICAgaWYgKFxyXG4gICAgICBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHMgJiZcclxuICAgICAgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggJiZcclxuICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICAgKSB7XHJcbiAgICAgIHNyY1VybCA9XHJcbiAgICAgICAgdGh1bWJuYWlsICYmIGNhcnREZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgPyBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHNbMV0/LmRvd25sb2FkVVJMXHJcbiAgICAgICAgICA6IENvbW1vblV0aWxzLmlzTW9iaWxlKCkgJiYgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPiAyXHJcbiAgICAgICAgICAgID8gY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzJdPy5kb3dubG9hZFVSTFxyXG4gICAgICAgICAgICA6IGNhcnREZXRhaWxzPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkw7XHJcbiAgICAgIGltYWdlVXJsID0ge1xyXG4gICAgICAgIHVybDogKFxyXG4gICAgICAgICAgdGhpcy5lbnZpcm9ubWVudC5vY2NCYXNlVXJsLnNsaWNlKDAsIHRoaXMuZW52aXJvbm1lbnQub2NjQmFzZVVybC5sZW5ndGggLSAxKSArXHJcbiAgICAgICAgICBzcmNVcmxcclxuICAgICAgICApPy5yZXBsYWNlKFwiJmF0dGFjaG1lbnQ9dHJ1ZVwiLCBcIlwiKSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBpbWFnZVVybDtcclxuICB9XHJcblxyXG4gIHZpZXdJbWFnZShldmVudDogYW55LCBjYXJ0RGV0YWlsczogYW55KTogdm9pZCB7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNGbGFzaGluZ01vZGFsID1cclxuICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdCAmJlxyXG4gICAgICBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uYnVuZGxlRW5hYmxlZDtcclxuICAgIHRoaXMuZmxhc2hpbmdJbWFnZURldGFpbHMgPSBjYXJ0RGV0YWlscztcclxuICAgIHRoaXMuaW1hZ2VNb2RhbFNyYyA9IHRoaXMuZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzLCBmYWxzZSk/LnVybDtcclxuICB9XHJcblxyXG4gIGdldFBkZkxpbmsoY2FydERldGFpbHM6IGFueSk6IHZvaWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzLCBmYWxzZSk/LnVybDtcclxuICB9XHJcblxyXG4gIC8vIEdldCBTdW1tYXJ5IEhlYWRpbmdcclxuICBnZXRDbGFzc2lmaWNhdGlvbnMoZGF0YTogYW55KTogYW55IHtcclxuICAgIGxldCB3aWR0aEFycmF5OiBhbnkgPSBbXTtcclxuICAgIGxldCBmZWF0dXJlQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQ/LmZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmU6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCB1bml0ID0gZmVhdHVyZT8uZmVhdHVyZVVuaXQgPyBmZWF0dXJlPy5mZWF0dXJlVW5pdD8uc3ltYm9sIDogJyAnO1xyXG4gICAgICAgIGlmIChmZWF0dXJlICYmIGZlYXR1cmU/LmNvZGUgJiYgdHlwZW9mIGZlYXR1cmU/LmNvZGUgPT09IFwic3RyaW5nXCIgJiYgZmVhdHVyZT8uY29kZT8uc3BsaXQoJy4nKS5wb3AoKSA9PSAnd2lkdGhmcm9tJykge1xyXG4gICAgICAgICAgd2lkdGhBcnJheS5wdXNoKGZlYXR1cmU/Lm5hbWUgICsgJzogJyArIGZlYXR1cmU/LmZlYXR1cmVWYWx1ZXNbMF0/LnZhbHVlKTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmVhdHVyZSAmJiBmZWF0dXJlPy5jb2RlICYmIHR5cGVvZiBmZWF0dXJlPy5jb2RlID09PSBcInN0cmluZ1wiICYmIGZlYXR1cmU/LmNvZGU/LnNwbGl0KCcuJykucG9wKCkgPT0gJ3dpZHRodG8nKSB7XHJcbiAgICAgICAgICB3aWR0aEFycmF5LnB1c2goZmVhdHVyZT8uZmVhdHVyZVZhbHVlc1swXT8udmFsdWUgKyB1bml0KTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlQXJyYXkucHVzaChmZWF0dXJlPy5uYW1lICsgJzogJyArIGZlYXR1cmU/LmZlYXR1cmVWYWx1ZXNbMF0/LnZhbHVlICsgdW5pdCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgaWYgKCB3aWR0aEFycmF5Lmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIGZlYXR1cmVBcnJheS5wdXNoKHdpZHRoQXJyYXlbMV0gKyAgJyAtICcgICsgd2lkdGhBcnJheVswXSApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZlYXR1cmVBcnJheT8uam9pbihcIiB8IFwiKTtcclxuICB9XHJcblxyXG4gIGhhc0ltYWdlKGNhcnREZXRhaWxzOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG1pbWVUeXBlID0gY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzBdPy5taW1lO1xyXG4gICAgY29uc3QgbWltZUFycmF5ID0gW1wiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiXTtcclxuICAgIHJldHVybiBtaW1lQXJyYXkuaW5jbHVkZXMobWltZVR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VUb2FzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgbGlzdC1oZWFkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+SVRFTTwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPkpPQiBSRUZFUkVOQ0U8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5UT1RBTCBRVFk8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5VTklUIFBSSUNFPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+VE9UQUwgUFJJQ0U8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJwcm9kdWN0Rm9ybVwiPlxyXG4gIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImNhcnRcIiAqbmdJZj1cImhhc0NhcnREZXRhaWxzKClcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgbGV0IGNhcnQgb2YgY2FydEZvcm0uY29udHJvbHM7XHJcbiAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICBsZXQgbGFzdEluZGV4ID0gbGFzdFxyXG4gICAgICBcIlxyXG4gICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiaXRlbS1zcGFjZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXRlbS1zcGFjZS1sYXN0JzogaSA9PSBjYXJ0RGV0YWlscy5sZW5ndGggLSAxIH1cIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzTnVsbE9yRW1wdHkoY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmNvZGUpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdDtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIG5vcm1hbEltYWdlXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGFzaGluZy1leHBhbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3SW1hZ2UoJGV2ZW50LCBjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjaW1hZ2VNb2RhbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzSW1hZ2UoY2FydERldGFpbHNbaV0pOyBlbHNlIGhhc1BkZlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8Y3gtbWVkaWFcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9XCJjYXJ0SWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9jeC1tZWRpYT5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hhc1BkZj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGFzaGluZy1leHBhbmQgZmxhc2hpbmctb3BlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJnZXRQZGZMaW5rKGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZGYtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvcGRmLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQ2xpY2sgdG8gb3BlbiBQREZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkNsaWNrIHRvIG9wZW4gUERGXCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbEltYWdlPlxyXG4gICAgICAgICAgICAgICAgICA8Y3gtbWVkaWFcclxuICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdD1cImNhcnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY3gtbWVkaWE+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0X25hbWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrdVwiPlNLVToge3sgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmNvZGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInJlZmVybmNlLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiam9iUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJ1cGRhdGVKb2JSZWZlcmVuY2UoJGV2ZW50LCBjYXJ0RGV0YWlsc1tpXSwgaSlcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiam9iUmVmZXJlbmNlRXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgUGxlYXNlIGVudGVyIHZhbGlkIEpvYiBSZWZlcmVuY2VcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiB0b3RhbFF0eVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAhY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdDtcclxuICAgICAgICAgICAgICAgIGVsc2Ugbm9uQWNjZXNzb3JpZXNcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LnF1YW50aXR5RG91YmxlIH19XHJcbiAgICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LmJhc2VQcmljZT8udW5pdFR5cGUgfX1cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZFF0eVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2FydERldGFpbHNbaV0/LnF1YW50aXR5RG91YmxlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uQWNjZXNzb3JpZXM+XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJxdHlfaW5wdXQgcmVmZXJuY2UtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2RRdHlcIlxyXG4gICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cInVwZGF0ZUNhcnQoJGV2ZW50LCBjYXJ0RGV0YWlsc1tpXSwgaSlcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQtZGFuZ2VyXCIgKm5nSWY9XCJwcm9kUXR5RXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgUGxlYXNlIGVudGVyIHZhbGlkIFF1YW50aXR5XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgdG90YWxRdHlcIj5cclxuICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWUgfX0ve3tcclxuICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8uYmFzZVByaWNlPy51bml0VHlwZVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgdG90YWxRdHlcIj5cclxuICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlIH19XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbWctYWxpZ25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVFbnRyeShjYXJ0RGV0YWlsc1tpXT8uZW50cnlOdW1iZXIpXCJcclxuICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pb25pYy10cmFzaC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICBleGNsIEdTVFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC0zIG1iLTBcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnMgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0gJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0/LmZlYXR1cmVzXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGdldENsYXNzaWZpY2F0aW9ucyhjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zKSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCAmJlxyXG4gICAgICAgICAgICAgICFpc01vZGFsU2VsZWN0ZWRDb2xvcltpXVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdCAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3VycyAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3Vyc1swXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZF9jb2xvclwiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDpcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3Vyc1swXVxyXG4gICAgICAgICAgICAgICAgICAgID8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0gJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzWzBdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX2xpbmtcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGdldENvbG91cnMoY2FydCwgaSwgJGV2ZW50KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBmbGFzaGluZ1Byb2R1Y3RCb3JkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX3BhcnRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0gJiZcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNbMF1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3Vyc1swXVxyXG4gICAgICAgICAgICAgICAgICAgID8ubmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGRyb3Bkb3duLWljb25cIlxyXG4gICAgICAgICAgICAgID48L2lcclxuICAgICAgICAgICAgPjwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3MgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3M/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZF9jb2xvclwiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZ2V0Q29sb3VyRGV0YWlscyhcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyxcclxuICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJtbC0yIG5vbGlua0ZvcmZsYXNoXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgIGdldENvbG91ckRldGFpbHMoY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcywgXCJuYW1lXCIpXHJcbiAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgIWlzTW9kYWxTZWxlY3RlZENvbG9yW2ldICYmXHJcbiAgICAgICAgICAgICAgIWNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkX2NvbG9yXCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfCBzcGxpdCA6ICd8JyA6IDJcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX2xpbmtcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGdldENvbG91cnMoY2FydCwgaSwgJGV2ZW50KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgZmxhc2hpbmdQcm9kdWN0Q29sb3I6IGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGZsYXNoaW5nUHJvZHVjdEJvcmRlcjpcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3JfcGFydFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3NbMF0gJiZcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3NbMF0/LmNvbmZpZ3VyYXRpb25WYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHwgc3BsaXQgOiBcInxcIiA6IDFcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBkcm9wZG93bi1pY29uXCJcclxuICAgICAgICAgICAgICA+PC9pXHJcbiAgICAgICAgICAgID48L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cImlzTW9kYWxTZWxlY3RlZENvbG9yW2ldXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkX2NvbG9yXCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBtb2RhbFNlbGVjdGVkQ29sb3VyW2ldPy5oZXhhZGVjaW1hbENvZGVcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sb3JfbGluayBwb3B1cF9yZWNlbnRcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGdldENvbG91cnMoY2FydCwgaSwgJGV2ZW50KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBmbGFzaGluZ1Byb2R1Y3RCb3JkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX3BhcnRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG1vZGFsU2VsZWN0ZWRDb2xvdXJbaV0/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGRyb3Bkb3duLWljb25cIlxyXG4gICAgICAgICAgICAgID48L2lcclxuICAgICAgICAgICAgPjwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gYXZhaWFsYWJsZSBjb2xvdXJzIHBvcHVwIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImNhcnREZXRhaWxzW2ldPy5pc0V4cGFuZFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2UgY29sb3Vyc19jb250YWluZXJcIlxyXG4gICAgICAgICAgICBbYXR0ci5pZF09XCInY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py52YXJpYW50T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VycyBtLTEgcHQtM1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kYWxjb2xvdXIgb2YgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LnZhcmlhbnRPcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1vZGFsU2VsZWN0ZWRDb2xvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbGNvbG91ci5jb2xvdXJzWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbGNvbG91cj8uY29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvdXIgbS0xIG1iLTMgbWFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbW9kYWxjb2xvdXI/LmNvbG91cnNbMF0/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFNlbGVjdGVkQ29sb3VyW2ldPy5oZXhhZGVjaW1hbENvZGUgPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxjb2xvdXI/LmNvbG91cnNbMF0/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VyLXRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgbW9kYWxjb2xvdXI/LmNvbG91cnNbMF0/Lm5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IG1vZGFsY29sb3VyPy5jb2xvdXJzWzBdPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG91cnMgbS0xIHB0LTNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGFsY29sb3VyIG9mIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICA/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3VycztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kYWxTZWxlY3RlZENvbG9yKCRldmVudCwgbW9kYWxjb2xvdXIsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG91ciBtLTEgbWItMyBtYWluXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBtb2RhbGNvbG91cj8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsU2VsZWN0ZWRDb2xvdXJbaV0/LmhleGFkZWNpbWFsQ29kZSA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbGNvbG91cj8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvdXItdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBtb2RhbGNvbG91cj8ubmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHt7IG1vZGFsY29sb3VyPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgICA/LmFkZGl0aW9uYWxDb2xvdXJzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRhcmdldF09XCInI2FkZGl0aW9uYWxDb2xvcnNNb2RhbCcgKyBpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHU+IEFkZGl0aW9uYWwgY29sb3JzIG1heSBiZSBhdmlhbGFibGUgPC91PjwvYVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQWRkaXRpb25hbCBjb2xvdXJzIHBvcHVwLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwibW9kYWwgZmFkZVwiXHJcbiAgICAgICAgICAgIGlkPVwiYWRkaXRpb25hbENvbG9yc01vZGFse3sgaSB9fVwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiXHJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkFkZGl0aW9uYWwgQ29sb3VyczwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICNjbG9zZUludml0ZU1vZGFsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy93YXJuaW5naWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiYWxlcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBhZGRpdGlvbmFsUGFyYT8uY29udGVudCB9fS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3VycyBtLTEgcHQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kYWxjb2xvdXIgb2YgY2FydERldGFpbHNbaV0/LnByb2R1Y3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uYWRkaXRpb25hbENvbG91cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkdGlvbmFsTW9kYWxTZWxlY3RlZENvbG9yKCRldmVudCwgbW9kYWxjb2xvdXIsIGkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VyIG0tMSBtYi0zIG1haW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IG1vZGFsY29sb3VyPy5oZXhhZGVjaW1hbENvZGUgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW5hbHNlbGVjdGVkQ29sb3VyW2ldPy5oZXhhZGVjaW1hbENvZGUgPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsY29sb3VyPy5oZXhhZGVjaW1hbENvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VyLXRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBtb2RhbGNvbG91cj8ubmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtb2RhbGNvbG91cj8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0xIHB0LTNcIiAqbmdJZj1cImFkZGl0aW5hbHNlbGVjdGVkQ29sb3VyW2ldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPkNvbG91ciBTZWxlY3Rpb248L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZF9jb2xvcl9zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRfY29sb3IgbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaV0/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaV0/Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1zbS1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG1vYmlsZS1jYW5jZWwtYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIG1yLWxnLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9jZWVkV2l0aFN1Ym1pdChhZGRpdGluYWxzZWxlY3RlZENvbG91cltpXSwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtc2F2ZS1idG4gZGltb25kLXByaW1hcnktYnRuIGZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBQcm9jZWVkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgKm5nSWY9XCIhY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VlLW1vcmUtbGlua1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93SGlkZShpKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYmxvY2s6IGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3QgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHNob3dEZXRhaWxzW2ldID09IHRydWUgPyBcIkhpZGVcIiA6IFwiU2VlXCIgfX0gbW9yZSBkZXRhaWxzXHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEZXRhaWxzW2ldXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdxdWFudGl0eS1mb3JtLWRldGFpbHMnOiAhY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBpZD1cImNhcnRNb3JlRGV0YWlsc3t7IGkgfX1cIj5cclxuICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm1cclxuICAgICAgICAgICAgICAgIFtwcm9kdWN0Q29kZV09XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uY29kZVwiXHJcbiAgICAgICAgICAgICAgICBbcHJvZHVjdERldGFpbHNdPVwiY2FydERldGFpbHNbaV1cIlxyXG4gICAgICAgICAgICAgICAgW2xpc3RWaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FjY2Vzc29yaWVzUHJpY2VdPVwiY2FydERldGFpbHNbaV0/LmJhc2VQcmljZT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkQ29sb3VyXT1cInNlbGVjdGVkQ29sb3VyXCJcclxuICAgICAgICAgICAgICAgIFtpc0ZpbmlzaGVkUHJvZHVjdF09XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgIFtpc0ZsYXNoaW5nUHJvZHVjdF09XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICh1cGRhdGVDYXJ0RW50aXJlcyk9XCJyZW9sYWRDYXJ0RW50aXJlcygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtzYXZlQ2FyZElkXT1cInNhdmVDYXJkT3JkZXJJZFwiXHJcbiAgICAgICAgICAgICAgPjwvYXBwLWN1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdCAmJlxyXG4gICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcyAmJlxyXG4gICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Q29uZmlndXJlZEluZm9zXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImZsYXNoaW5nLWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LnByb2R1Y3Q/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT0gJ2ZsYXNoZ3VhcmQnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiZmxhc2gtdGl0bGVcIj57eyBkYXRhPy5wcm9kdWN0Py5uYW1lIH19PC9oMz5cclxuICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic2t1SWRcIj5TS1U6IHt7IGRhdGE/LnByb2R1Y3Q/LmNvZGUgfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGE/LmdpcnRoXCI+R2lydGg6ICt7eyBkYXRhPy5naXJ0aCB9fW1tIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9mZnNldC1zbS0zIGNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnF1YW50aXR5RG91YmxlIH19e3sgZGF0YT8udW5pdFR5cGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWUgfX0ve3sgZGF0YT8udW5pdFR5cGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPCEtLSBjb2xvdXJzIHBvcHVwIC0tPlxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwibW9kYWwgZmFkZVwiXHJcbiAgaWQ9XCJpbWFnZU1vZGFsXCJcclxuICByb2xlPVwiZGlhbG9nXCJcclxuICBhcmlhLWxhYmVsbGVkYnk9XCJpbWFnZU1vZGFsXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICNpbWFnZU1vZGFsXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCJcclxuICAgICAgICAgICNjbG9zZUludml0ZU1vZGFsXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgID48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJpbWFnZU1vZGFsU3JjXCIgYWx0PVwiYWxlcnRcIiAvPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZsYXNoaW5nTW9kYWxcIiBjbGFzcz1cImZsYXNoaW5nLWRldGFpbHNcIj5cclxuICAgICAgICAgIDxhcHAtY3VzdG9tLWZsYXNoaW5nLWltYWdlLWRldGFpbHMgW2NhcnREZXRhaWxzXT1cImZsYXNoaW5nSW1hZ2VEZXRhaWxzXCI+PC9hcHAtY3VzdG9tLWZsYXNoaW5nLWltYWdlLWRldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nYi10b2FzdCAqbmdJZj1cInNob3dUb2FzdFwiIFthdXRvaGlkZV09XCJ0cnVlXCIgW2RlbGF5XT1cIjQwMDBcIj5cclxuICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvSW52aXRlZC5zdmdcIiAvPiBDYXJ0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IVxyXG4gIDxpXHJcbiAgICBjbGFzcz1cImljb24tY2xvc2UgdG9hc3QtY2xvc2VcIlxyXG4gICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgIChjbGljayk9XCJjbG9zZVRvYXN0KClcIlxyXG4gID48L2k+XHJcbjwvbmdiLXRvYXN0PlxyXG4iXX0=
|
|
474
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhcnQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL3NoYXJlZC9jdXN0b20tY2FydC1kZXRhaWwvY3VzdG9tLWNhcnQtbGlzdC9jdXN0b20tY2FydC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvc2hhcmVkL2N1c3RvbS1jYXJ0LWRldGFpbC9jdXN0b20tY2FydC1saXN0L2N1c3RvbS1jYXJ0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBQTBCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUkvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLHVCQUF1QjtJQThCbEMsWUFDVSxXQUF3QixFQUN4QixXQUF3QixFQUN4QixHQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsVUFBc0IsRUFDdEIsZ0JBQXlDLEVBQ3pDLEtBQXFCO1FBTnJCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0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TUFBTTthQUNyRCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUM7WUFDMUQsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxLQUFLO2lCQUNwRCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FDM0QsQ0FBQztJQUNKLENBQUM7SUFFRCwyQkFBMkI7SUFDM0Isa0JBQWtCLENBQUMsS0FBVTs7UUFDM0IsT0FBTyxDQUNMLENBQUMsQ0FBQSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsMENBQUUsTUFBTTthQUMxRCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUM7WUFDL0QsQ0FBQyxDQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQywwQ0FBRSxLQUFLO2lCQUN6RCxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsV0FBVyxDQUFDLEtBQVUsRUFBRSxJQUFTOztRQUMvQixPQUFPLENBQ0wsQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDOUIsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsY0FBYyxDQUFDLDBDQUFFLEtBQUssQ0FBQTtZQUMxRCxDQUFDLENBQUEsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLDBDQUFFLEtBQUs7Z0JBQ3BELENBQUMsQ0FBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxPQUFPLDBDQUFFLGVBQWUsQ0FBQSxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFVBQVUsQ0FBQyxLQUFVLEVBQUUsSUFBUyxFQUFFLEtBQVU7O1FBQzFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxhQUFhLDBDQUFFLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVUsRUFBRSxJQUFTLEVBQUUsS0FBVTtRQUNsRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLGVBQWUsQ0FBQyxXQUFnQixFQUFFLFlBQWlCLElBQUk7O1FBQ3JELElBQUksUUFBUSxHQUFRLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsTUFBTSxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixNQUFNLFNBQVMsR0FDYixDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxrQkFBa0IsTUFBSSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ25FLENBQUMsQ0FBQyxNQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQywwQ0FBRSxrQkFBa0IsMENBQUUsS0FBSyxDQUM3RCxHQUFHLEVBQ0gsQ0FBQyxDQUFDO2dCQUNKLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDVCxRQUFRLEdBQUcsTUFBQSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUM3QyxDQUFDLEdBQVEsRUFBRSxFQUFFOztnQkFDWCxPQUFBLENBQUMsQ0FBQSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxLQUFJLFVBQVUsSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxTQUFTLEtBQUksU0FBUyxDQUFDO29CQUMxRCxDQUFDLENBQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sS0FBSSxVQUFVO3dCQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQzt3QkFDN0IsQ0FBQSxNQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsTUFBTSwwQ0FBRSxNQUFNLEtBQUksQ0FBQyxDQUFDLENBQUE7YUFBQSxDQUMvQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLFFBQVEsR0FBRyxNQUFBLE1BQUEsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxNQUFNLDBDQUFFLE9BQU8sMENBQUUsUUFBUSxDQUFDO1NBQzVEO1FBQ0QsSUFBSSxNQUFXLENBQUM7UUFDaEIsSUFDRSxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxXQUFXO2FBQ3hCLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsMENBQUUsTUFBTSxDQUFBO2FBQ2hDLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsZUFBZSxDQUFBLEVBQ3JDO1lBQ0EsTUFBTTtnQkFDSixTQUFTLElBQUksQ0FBQSxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxXQUFXLDBDQUFFLE1BQU0sSUFBRyxDQUFDO29CQUMvQyxDQUFDLENBQUMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxXQUFXO29CQUMxQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUEsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsV0FBVywwQ0FBRSxNQUFNLElBQUcsQ0FBQzt3QkFDOUQsQ0FBQyxDQUFDLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsMENBQUUsV0FBVzt3QkFDMUMsQ0FBQyxDQUFDLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsMENBQUUsV0FBVyxDQUFDO1lBQ2pELFFBQVEsR0FBRztnQkFDVCxHQUFHLEVBQUUsTUFBQSxDQUNILElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDNUUsTUFBTSxDQUNQLDBDQUFFLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7YUFDbkMsQ0FBQztTQUNIO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVLEVBQUUsV0FBZ0I7O1FBQ3BDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxjQUFjLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZTtZQUNsQixDQUFBLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sMENBQUUsZUFBZTtpQkFDckMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsT0FBTywwQ0FBRSxhQUFhLENBQUEsQ0FBQztRQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBZ0I7O1FBQ3pCLE9BQU8sTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsMENBQUUsR0FBRyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsa0JBQWtCLENBQUMsSUFBUztRQUMxQixJQUFJLFVBQVUsR0FBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxZQUFZLEdBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUM3QixPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFOztnQkFDekMsSUFBSSxJQUFJLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXLDBDQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNyRSxJQUFJLE9BQU8sS0FBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSxDQUFBLElBQUksT0FBTyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUEsS0FBSyxRQUFRLElBQUksQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLDBDQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUksV0FBVyxFQUFFO29CQUNuSCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksSUFBSSxJQUFJLElBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUEsQ0FBQyxDQUFDO29CQUMxRSxPQUFNO2lCQUNQO2dCQUNELElBQUksT0FBTyxLQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUEsSUFBSSxPQUFPLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksQ0FBQSxLQUFLLFFBQVEsSUFBSSxDQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksMENBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSSxTQUFTLEVBQUU7b0JBQ2pILFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLDBDQUFFLEtBQUssSUFBRyxJQUFJLENBQUMsQ0FBQztvQkFDekQsT0FBTTtpQkFDUDtnQkFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksSUFBRyxJQUFJLElBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUEsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDbEYsSUFBSTtZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFLLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFHO1lBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFJLEtBQUssR0FBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztTQUM3RDtRQUNELE9BQU8sWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUSxDQUFDLFdBQWdCOztRQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLDBDQUFFLElBQUksQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDM0QsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQzs7cUhBeGVVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDRWQzNCcEMsa215QkFvb0JBOzRGRHptQmEsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDt3UkFFVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxjQUFjO3NCQUF0QixLQUFLO2dCQUN5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmVDYXJ0U2VydmljZSwgQ21zU2VydmljZSB9IGZyb20gXCJAc3BhcnRhY3VzL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBDYXJ0Rm9ybSB9IGZyb20gXCIuLi8uLi9DdXN0b21Qcm9kdWN0XCI7XHJcblxyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU2F2ZWRDYXJ0RGV0YWlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY3VzdG9tLXNhdmVkLWNhcnQvY3VzdG9tLXNhdmVkLWNhcnQtZGV0YWlscy9zYXZlZC1jYXJ0LWRldGFpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tb25VdGlscyB9IGZyb20gXCIuLi8uLi8uLi91dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLWN1c3RvbS1jYXJ0LWxpc3RcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2N1c3RvbS1jYXJ0LWxpc3QuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vY3VzdG9tLWNhcnQtbGlzdC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbUNhcnRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGNhcnREZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgaXNDYXJkRGF0YTogYW55O1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVDYXJ0RW50cnkgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBASW5wdXQoKSBhZGRpdGlvbmFsUGFyYTogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJjbG9zZUludml0ZU1vZGFsXCIpIGNsb3NlSW52aXRlTW9kYWw6IGFueTtcclxuICBhZGRpdGluYWxzZWxlY3RlZENvbG91cjogYW55ID0gW107XHJcbiAgbW9kYWxTZWxlY3RlZENvbG91cjogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRDb2xvdXI6IGFueTtcclxuICBjYXJ0SWQ6IGFueTtcclxuICBzaG93RGV0YWlsczogYW55ID0gW107XHJcbiAgc2hvd1dhaXRDdXJzb3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBlcnJvck1lc3NhZ2UgPSBcIlNvbWUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyBkYXRhXCI7XHJcbiAgc2VsZWN0ZWRJbmRleDogYW55O1xyXG4gIGRlZmF1bHRDb25maWdJbmZvOiBhbnkgPSB7XHJcbiAgICBjb25maWd1cmF0b3JUeXBlOiBcIlRFWFRGSUVMRFwiLFxyXG4gICAgY29uZmlndXJhdGlvbkxhYmVsOiBcIkNPTE9SXCIsXHJcbiAgICBjb25maWd1cmF0aW9uVmFsdWU6IFwiXCIsXHJcbiAgfTtcclxuICBpc01vZGFsU2VsZWN0ZWRDb2xvcjogYW55ID0gW107XHJcbiAgcHJvZHVjdEZvcm06IGFueSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZFRvQ2FydEVycm9yOiBhbnkgPSBudWxsO1xyXG4gIGltYWdlTW9kYWxTcmM6IGFueTtcclxuICBzaG93VG9hc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjYXJ0UGFnZURhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNhdmVDYXJkT3JkZXJJZDogYW55O1xyXG4gIGlzRmxhc2hpbmdNb2RhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZsYXNoaW5nSW1hZ2VEZXRhaWxzOiBhbnk7XHJcbiAgZW52OiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbnYnKTtcclxuICBlbnZpcm9ubWVudCA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnYpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgYWN0aXZlQ2FydFNlcnZpY2U6IEFjdGl2ZUNhcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbXNTZXJ2aWNlOiBDbXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYXZlZENhcnRTZXJ2aWNlOiBTYXZlZENhcnREZXRhaWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjYXJ0T2JqOiBhbnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNwYXJ0YWN1c+Kav2RpbW9uZC1zcGHimr9jYXJ0XCIpO1xyXG4gICAgdGhpcy5zYXZlQ2FyZE9yZGVySWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tcInNhdmVkQ2FydElkXCJdO1xyXG4gICAgdGhpcy5wcm9kdWN0Rm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBjYXJ0OiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRGVmYXVsdENhcnREZXRhaWxzKCk7XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlLmV4cGFuZEFsbC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FydERldGFpbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnNob3dEZXRhaWxzW2ldID0gZGF0YTtcclxuICAgICAgICB0aGlzLmNhcnREZXRhaWxzW2ldLmlzRXhwYW5kID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jbXNTZXJ2aWNlLmdldEN1cnJlbnRQYWdlKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIGlmIChkYXRhLnRlbXBsYXRlID09IFwiU2F2ZWRDYXJ0RGV0YWlsc1BhZ2VUZW1wbGF0ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0UGFnZURhdGEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhcnRJZCA9IHRoaXMuc2F2ZUNhcmRPcmRlcklkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2FydFBhZ2VEYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNhcnRJZCA9IEpTT04ucGFyc2UoY2FydE9iaik/LmFjdGl2ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FydEZvcm0oKTogRm9ybUFycmF5IHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RGb3JtLmdldChcImNhcnRcIikgYXMgRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgaGFzQ2FydERldGFpbHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJ0Rm9ybSAmJiBPYmplY3Qua2V5cyh0aGlzLmNhcnRGb3JtKT8ubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURlZmF1bHRDYXJ0RGV0YWlscygpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYXJ0RGV0YWlscz8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jYXJ0Rm9ybT8ucHVzaCh0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKG5ldyBDYXJ0Rm9ybSgpKSk7XHJcbiAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2ldXHJcbiAgICAgICAgLmdldChcImpvYlJlZmVyZW5jZVwiKVxyXG4gICAgICAgID8uc2V0VmFsdWUodGhpcy5jYXJ0RGV0YWlsc1tpXT8uam9iUmVmZXJlbmNlKTtcclxuICAgICAgY29uc3QgcXR5ID0gdGhpcy5jYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0XHJcbiAgICAgICAgPyBwYXJzZUludCh0aGlzLmNhcnREZXRhaWxzW2ldPy5xdWFudGl0eSlcclxuICAgICAgICA6IHRoaXMuY2FydERldGFpbHNbaV0/LnF1YW50aXR5RG91YmxlO1xyXG4gICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpXS5nZXQoXCJwcm9kUXR5XCIpPy5zZXRWYWx1ZShxdHkpO1xyXG4gICAgICB0aGlzLmlzTW9kYWxTZWxlY3RlZENvbG9yLnB1c2goZmFsc2UpO1xyXG4gICAgICB0aGlzLnNob3dEZXRhaWxzLnB1c2goZmFsc2UpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zICYmXHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zPy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcykge1xyXG4gICAgICAgICAgaWYgKGNvbmZpZz8uY29uZmlndXJhdGlvbkxhYmVsID09IFwiQ09MT1JcIikge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCAmJiB0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgPy5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnMgJiYgIXRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSA9IHt9O1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXS5oZXhhZGVjaW1hbENvZGUgPSBjb25maWc/LmNvbmZpZ3VyYXRpb25WYWx1ZT8uc3BsaXQoXCJ8XCIpPy5wb3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb25maWdJbmZvLmNvbmZpZ3VyYXRpb25WYWx1ZSA9XHJcbiAgICAgICAgICAgICAgY29uZmlnPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFwifFwiKVswXSB8fCBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmNhcnREZXRhaWxzW2ldPy5jb25maWdWYWx1ZXMgJiZcclxuICAgICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ1ZhbHVlcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMuY2FydERldGFpbHNbaV1bXCJjb25maWdWYWx1ZXNcIl0gPSB0aGlzLmRlZmF1bHRDb25maWdJbmZvO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0LmJwQWRkaXRpb25hbEF0dHJpYnV0ZSAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LnByb2R1Y3QuYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzICYmXHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdC5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNbMF0gJiYgIXRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSkge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSA9IHt9O1xyXG4gICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXS5oZXhhZGVjaW1hbENvZGUgPSB0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNbMF1cclxuICAgICAgICAgID8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5maW5pc2hlZFByb2R1Y3QgJiYgIXRoaXMuY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXSAmJlxyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlICYmICF0aGlzLm1vZGFsU2VsZWN0ZWRDb2xvdXJbaV0pIHtcclxuICAgICAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpXSA9IHt9O1xyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlbGVjdGVkQ29sb3VyW2ldLmhleGFkZWNpbWFsQ29kZSA9IHRoaXMuY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlPy5zcGxpdCgnfCcpWzJdXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoIWNoYW5nZXM/LmNhcnREZXRhaWxzPy5maXJzdENoYW5nZSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURlZmF1bHRDYXJ0RGV0YWlscygpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93SGlkZShpbmQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5zaG93RGV0YWlsc1tpbmRdID0gIXRoaXMuc2hvd0RldGFpbHNbaW5kXTtcclxuICB9XHJcblxyXG4gIGdldENvbG91ckRldGFpbHMoY29uZmlnSW5mbzogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGxldCBuYW1lOiBhbnk7XHJcbiAgICBsZXQgYmFja2dyb3VuZDogYW55O1xyXG4gICAgaWYgKGNvbmZpZ0luZm8gJiYgY29uZmlnSW5mbz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjb2xvdXIgPSBjb25maWdJbmZvPy5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbD8uY29uZmlndXJhdGlvbkxhYmVsPy50b0xvd2VyQ2FzZSgpID09IFwiY29sb3JcIjtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChjb2xvdXIgJiYgY29sb3VyPy5sZW5ndGgpIHtcclxuICAgICAgICBuYW1lID0gY29sb3VyWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFwifFwiKVsxXTtcclxuICAgICAgICBiYWNrZ3JvdW5kID0gY29sb3VyWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFwifFwiKVsyXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHR5cGUgPT0gXCJiYWNrZ3JvdW5kXCIgPyBiYWNrZ3JvdW5kIDogbmFtZTtcclxuICB9XHJcblxyXG4gIGdldENvbG91cnMoY2FydERldGFpbHM6IGFueSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIHRoaXMuc2VsZWN0ZWRDb2xvdXIgPVxyXG4gICAgLy8gICBjYXJ0RGV0YWlscz8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWUuc3BsaXQoJ3wnKVsyXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhcnREZXRhaWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpICE9IGluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5jYXJ0RGV0YWlsc1tpXS5pc0V4cGFuZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2FydERldGFpbHNbaW5kZXhdLmlzRXhwYW5kID0gIXRoaXMuY2FydERldGFpbHNbaW5kZXhdLmlzRXhwYW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3RlZENvbG91ckNvZGUoY29kZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2FydERldGFpbHNbdGhpcy5zZWxlY3RlZEluZGV4XSAmJlxyXG4gICAgICB0aGlzLmNhcnREZXRhaWxzW3RoaXMuc2VsZWN0ZWRJbmRleF0/LmNvbmZpZ1ZhbHVlc1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY2FydERldGFpbHNbdGhpcy5zZWxlY3RlZEluZGV4XS5jb25maWdWYWx1ZXMuY29uZmlndXJhdGlvblZhbHVlID1cclxuICAgICAgICBjb2RlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9kYWxTZWxlY3RlZENvbG9yKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIGNvbG91cjogYW55LFxyXG4gICAgaW5kOiBudW1iZXIsXHJcbiAgICBza3VDb2RlPzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuY2FydERldGFpbHNbaW5kXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpbmRdID0gY29sb3VyO1xyXG4gICAgICB0aGlzLmlzTW9kYWxTZWxlY3RlZENvbG9yW2luZF0gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RhbFNlbGVjdGVkQ29sb3VyW2luZF0gPSBjb2xvdXI7XHJcbiAgICAgIHRoaXMuaXNNb2RhbFNlbGVjdGVkQ29sb3JbaW5kXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sb3VyQ29kZShjb2xvdXI/LmNvZGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy51cGRhdGVQcm9kdWN0Q29sb3IodGhpcy5jYXJ0RGV0YWlsc1tpbmRdLCBjb2xvdXIsIGluZCwgc2t1Q29kZSk7XHJcbiAgfVxyXG5cclxuICBhZGR0aW9uYWxNb2RhbFNlbGVjdGVkQ29sb3IoZXZlbnQ6IGFueSwgY29sb3VyOiBhbnksIGluZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuY2FydERldGFpbHNbaW5kXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaW5kXSA9IGNvbG91cjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaW5kXSA9IGNvbG91cjtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb2xvdXJDb2RlKGNvbG91cj8uY29kZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkV2l0aFN1Ym1pdChjb2xvcjogYW55LCBpbmQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5pc01vZGFsU2VsZWN0ZWRDb2xvcltpbmRdID0gdHJ1ZTtcclxuICAgIHRoaXMubW9kYWxTZWxlY3RlZENvbG91cltpbmRdID0gY29sb3I7XHJcbiAgICB0aGlzLmNsb3NlSW52aXRlTW9kYWw/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XHJcbiAgICB0aGlzLmdldENvbG91cnMoY29sb3IsIGluZCwgZXZlbnQpO1xyXG4gICAgdGhpcy51cGRhdGVQcm9kdWN0Q29sb3IodGhpcy5jYXJ0RGV0YWlsc1tpbmRdLCBjb2xvciwgaW5kKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMuYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXIgPSBbXTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUVudHJ5KGVudE51bWJlcjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQodHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5jYXJ0UGFnZURhdGEgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmRlbGV0ZUNhcnRFbnRyeSh0aGlzLmNhcnRJZCwgZW50TnVtYmVyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYodGhpcy5jYXJ0UGFnZURhdGEpe1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUNhcnRTZXJ2aWNlLnJlbG9hZEFjdGl2ZUNhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2hvd1RvYXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlb2xhZENhcnRFbnRpcmVzKCk7XHJcbiAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYWl0Q3Vyc29yLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmNhcnREZXRhaWxzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENhcnRTZXJ2aWNlXHJcbiAgICAgICAgICAuZGVsZXRlU2F2ZENhcnQodGhpcy5zYXZlQ2FyZE9yZGVySWQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93VG9hc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwibXktYWNjb3VudC9zYXZlZC1jYXJ0c1wiO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnJlb2xhZENhcnRFbnRpcmVzKCk7XHJcbiAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zYXZlZENhcnRTZXJ2aWNlXHJcbiAgICAgICAgLmRlbGV0ZVNhdmVDYXJ0RW50cnkodGhpcy5zYXZlQ2FyZE9yZGVySWQsIGVudE51bWJlcilcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dUb2FzdCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVvbGFkQ2FydEVudGlyZXMoKTtcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVvbGFkQ2FydEVudGlyZXMoZXZlbnQ/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlQ2FydEVudHJ5LmVtaXQoKTtcclxuICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLnVwZGF0ZURlZmF1bHRDYXJ0RGV0YWlscygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zaG93VG9hc3QgPSBmYWxzZTtcclxuICAgIH0sIDQwMDApO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2hlY2sgaWYgYW55IHZhbHVlIGlzIGVtcHR5IG9yIHVuZGVmaW5lZFxyXG4gIGlzTnVsbE9yRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IFwiXCI7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9kdWN0Q29sb3IoY2FydDogYW55LCBjb2xvcjogYW55LCBpbmRleDogYW55LCBza3VDb2RlPzogYW55KTogdm9pZCB7XHJcbiAgICAvL2V2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBjb25zdCBvYmogPSBbXTtcclxuICAgIG9iai5wdXNoKHtcclxuICAgICAgY29uZmlndXJhdG9yVHlwZTogXCJURVhURklFTERcIixcclxuICAgICAgY29uZmlndXJhdGlvbkxhYmVsOiBcIkNPTE9SXCIsXHJcbiAgICAgIGNvbmZpZ3VyYXRpb25WYWx1ZTogY29sb3I/LmNvZGUsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKGNhcnQsIGluZGV4LCBvYmosIHNrdUNvZGUpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIENhcnQgRGV0YWlscyBpZiBRdWFudGl0eSBDaGFuZ2VkIGZvciBBY2Nlc3NvcmllcyBvbmx5XHJcbiAgdXBkYXRlQ2FydERldGFpbHMoY2FydDogYW55LCBpbmRleDogYW55LCBjb2xvcj86IGFueSwgc2t1Q29kZT86IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IHBheUxvYWQ6IGFueSA9IHt9O1xyXG4gICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KHRydWUpO1xyXG4gICAgY29uc3QgZW50cnlOdW1iZXIgPSBjYXJ0Py5wcm9kdWN0Py5lbnRyeU51bWJlciB8fCBjYXJ0Py5lbnRyeU51bWJlcjtcclxuICAgIGlmIChjb2xvcikge1xyXG4gICAgICBwYXlMb2FkID0ge1xyXG4gICAgICAgIHF1YW50aXR5OiBwYXJzZUludChcclxuICAgICAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwicHJvZFF0eVwiKT8udmFsdWVcclxuICAgICAgICApLFxyXG4gICAgICAgIHByb2R1Y3Q6IHtcclxuICAgICAgICAgIGNvZGU6IHNrdUNvZGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWd1cmF0aW9uSW5mb3M6IGNvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmIChjYXJ0Py5wcm9kdWN0Py5maW5pc2hlZFByb2R1Y3QpIHtcclxuICAgICAgcGF5TG9hZCA9IHtcclxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQoXHJcbiAgICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcInByb2RRdHlcIik/LnZhbHVlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBqb2JSZWZlcmVuY2U6XHJcbiAgICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcImpvYlJlZmVyZW5jZVwiKT8udmFsdWUsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXlMb2FkID0ge1xyXG4gICAgICAgIHF1YW50aXR5OiAxLFxyXG4gICAgICAgIHByb2R1Y3Q6IHtcclxuICAgICAgICAgIGNvZGU6IGNhcnQ/LnByb2R1Y3Q/LmNvZGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBqb2JSZWZlcmVuY2U6XHJcbiAgICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcImpvYlJlZmVyZW5jZVwiKT8udmFsdWUsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhcnRTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVDYXJ0RW50cnkodGhpcy5jYXJ0SWQsIGVudHJ5TnVtYmVyLCBwYXlMb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1c0NvZGU/LnRvTG93ZXJDYXNlKCkgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5jYXJ0UGFnZURhdGEpe1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2FydFNlcnZpY2UucmVsb2FkQWN0aXZlQ2FydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1RvYXN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZW9sYWRDYXJ0RW50aXJlcygpO1xyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkVG9DYXJ0RXJyb3IgPVxyXG4gICAgICAgICAgICAgIHJlc3BvbnNlPy5lcnJvcnNbMF0/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICByZXNwb25zZT8uZXJyb3JzWzBdPy5lcnJvck1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93V2FpdEN1cnNvci5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFkZFRvQ2FydEVycm9yID1cclxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcnNbMF0/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcnNbMF0/LmVycm9yTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1dhaXRDdXJzb3IubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IFByb2R1Y3QgUXVhbnRpdHkgRXJyb3JzXHJcbiAgcHJvZFF0eUVycm9ycyhpbmRleDogYW55KTogYW55IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcInByb2RRdHlcIik/LmVycm9ycyB8fFxyXG4gICAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwicHJvZFF0eVwiKT8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwicHJvZFF0eVwiKT8uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcInByb2RRdHlcIik/LnRvdWNoZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IEpvYiBSZWZlcmVuY2UgRXJyb3JzXHJcbiAgam9iUmVmZXJlbmNlRXJyb3JzKGluZGV4OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgKHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy5lcnJvcnMgfHxcclxuICAgICAgICB0aGlzLmNhcnRGb3JtPy5jb250cm9sc1tpbmRleF0/LmdldChcImpvYlJlZmVyZW5jZVwiKT8uaW52YWxpZCkgJiZcclxuICAgICAgKHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy50b3VjaGVkKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlzIEZvcm0gVmFsaWRcclxuICBpc0Zvcm1WYWxpZChpbmRleDogYW55LCBjYXJ0OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jYXJ0Rm9ybT8uY29udHJvbHNbaW5kZXhdICYmXHJcbiAgICAgIHRoaXMuY2FydEZvcm0/LmNvbnRyb2xzW2luZGV4XT8uZ2V0KFwiam9iUmVmZXJlbmNlXCIpPy52YWxpZCAmJlxyXG4gICAgICAodGhpcy5jYXJ0Rm9ybT8uY29udHJvbHNbaW5kZXhdPy5nZXQoXCJwcm9kUXR5XCIpPy52YWxpZCB8fFxyXG4gICAgICAgICFjYXJ0Py5wcm9kdWN0Py5maW5pc2hlZFByb2R1Y3QpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIENhcnQgRGV0YWlscyBvbiBjaGFuZ2Ugb2YgSm9iIFJlZmVyZW5jZSBvciBRdWFudGl0eVxyXG4gIHVwZGF0ZUNhcnQoZXZlbnQ6IGFueSwgY2FydDogYW55LCBpbmRleDogYW55KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgcXR5ID0gZXZlbnQ/LmN1cnJlbnRUYXJnZXQ/LnZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLmlzTnVsbE9yRW1wdHkocXR5KSAmJiB0aGlzLmlzRm9ybVZhbGlkKGluZGV4LCBjYXJ0KSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKGNhcnQsIGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUpvYlJlZmVyZW5jZShldmVudDogYW55LCBjYXJ0OiBhbnksIGluZGV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNhcnREZXRhaWxzKGNhcnQsIGluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vIEdldCB0aGUgSW1hZ2UgRGV0YWlscyBiYXNlZCBvbiBQcm9kdWN0c1xyXG4gIGdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsczogYW55LCB0aHVtYm5haWw6IGFueSA9IHRydWUpOiBhbnkge1xyXG4gICAgbGV0IGltYWdlVXJsOiBhbnkgPSBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uaW1hZ2VzO1xyXG4gICAgaWYgKHRoaXMuaXNDYXJkRGF0YSkge1xyXG4gICAgICBjb25zdCBjb2xvckNvZGUgPVxyXG4gICAgICAgIGNhcnREZXRhaWxzPy5jb25maWd1cmF0aW9uSW5mb3MgfHwgY2FydERldGFpbHM/LmNvbmZpZ3VyYXRpb25JbmZvc1swXVxyXG4gICAgICAgICAgPyBjYXJ0RGV0YWlscz8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWU/LnNwbGl0KFxyXG4gICAgICAgICAgICBcInxcIlxyXG4gICAgICAgICAgKVswXVxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICBpbWFnZVVybCA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/LmZpbHRlcihcclxuICAgICAgICAoaW1nOiBhbnkpID0+XHJcbiAgICAgICAgICAoaW1nPy5mb3JtYXQgPT0gXCJjYXJ0SWNvblwiICYmIGltZz8uY29sb3JDb2RlID09IGNvbG9yQ29kZSkgfHxcclxuICAgICAgICAgIChpbWc/LmZvcm1hdCA9PSBcImNhcnRJY29uXCIgJiZcclxuICAgICAgICAgICAgdGhpcy5pc051bGxPckVtcHR5KGNvbG9yQ29kZSkgJiZcclxuICAgICAgICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmltYWdlcz8ubGVuZ3RoIDw9IDQpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpbWFnZVVybCA9IGNhcnREZXRhaWxzPy5wcm9kdWN0Py5pbWFnZXM/LkdBTExFUlk/LmNhcnRJY29uO1xyXG4gICAgfVxyXG4gICAgbGV0IHNyY1VybDogYW55O1xyXG4gICAgaWYgKFxyXG4gICAgICBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHMgJiZcclxuICAgICAgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggJiZcclxuICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICAgKSB7XHJcbiAgICAgIHNyY1VybCA9XHJcbiAgICAgICAgdGh1bWJuYWlsICYmIGNhcnREZXRhaWxzPy5hdHRhY2htZW50cz8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgPyBjYXJ0RGV0YWlscz8uYXR0YWNobWVudHNbMV0/LmRvd25sb2FkVVJMXHJcbiAgICAgICAgICA6IENvbW1vblV0aWxzLmlzTW9iaWxlKCkgJiYgY2FydERldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPiAyXHJcbiAgICAgICAgICAgID8gY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzJdPy5kb3dubG9hZFVSTFxyXG4gICAgICAgICAgICA6IGNhcnREZXRhaWxzPy5hdHRhY2htZW50c1swXT8uZG93bmxvYWRVUkw7XHJcbiAgICAgIGltYWdlVXJsID0ge1xyXG4gICAgICAgIHVybDogKFxyXG4gICAgICAgICAgdGhpcy5lbnZpcm9ubWVudC5vY2NCYXNlVXJsLnNsaWNlKDAsIHRoaXMuZW52aXJvbm1lbnQub2NjQmFzZVVybC5sZW5ndGggLSAxKSArXHJcbiAgICAgICAgICBzcmNVcmxcclxuICAgICAgICApPy5yZXBsYWNlKFwiJmF0dGFjaG1lbnQ9dHJ1ZVwiLCBcIlwiKSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBpbWFnZVVybDtcclxuICB9XHJcblxyXG4gIHZpZXdJbWFnZShldmVudDogYW55LCBjYXJ0RGV0YWlsczogYW55KTogdm9pZCB7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNGbGFzaGluZ01vZGFsID1cclxuICAgICAgY2FydERldGFpbHM/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdCAmJlxyXG4gICAgICBjYXJ0RGV0YWlscz8ucHJvZHVjdD8uYnVuZGxlRW5hYmxlZDtcclxuICAgIHRoaXMuZmxhc2hpbmdJbWFnZURldGFpbHMgPSBjYXJ0RGV0YWlscztcclxuICAgIHRoaXMuaW1hZ2VNb2RhbFNyYyA9IHRoaXMuZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzLCBmYWxzZSk/LnVybDtcclxuICB9XHJcblxyXG4gIGdldFBkZkxpbmsoY2FydERldGFpbHM6IGFueSk6IHZvaWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzLCBmYWxzZSk/LnVybDtcclxuICB9XHJcblxyXG4gIC8vIEdldCBTdW1tYXJ5IEhlYWRpbmdcclxuICBnZXRDbGFzc2lmaWNhdGlvbnMoZGF0YTogYW55KTogYW55IHtcclxuICAgIGxldCB3aWR0aEFycmF5OiBhbnkgPSBbXTtcclxuICAgIGxldCBmZWF0dXJlQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQ/LmZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmU6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCB1bml0ID0gZmVhdHVyZT8uZmVhdHVyZVVuaXQgPyBmZWF0dXJlPy5mZWF0dXJlVW5pdD8uc3ltYm9sIDogJyAnO1xyXG4gICAgICAgIGlmIChmZWF0dXJlICYmIGZlYXR1cmU/LmNvZGUgJiYgdHlwZW9mIGZlYXR1cmU/LmNvZGUgPT09IFwic3RyaW5nXCIgJiYgZmVhdHVyZT8uY29kZT8uc3BsaXQoJy4nKS5wb3AoKSA9PSAnd2lkdGhmcm9tJykge1xyXG4gICAgICAgICAgd2lkdGhBcnJheS5wdXNoKGZlYXR1cmU/Lm5hbWUgICsgJzogJyArIGZlYXR1cmU/LmZlYXR1cmVWYWx1ZXNbMF0/LnZhbHVlKTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmVhdHVyZSAmJiBmZWF0dXJlPy5jb2RlICYmIHR5cGVvZiBmZWF0dXJlPy5jb2RlID09PSBcInN0cmluZ1wiICYmIGZlYXR1cmU/LmNvZGU/LnNwbGl0KCcuJykucG9wKCkgPT0gJ3dpZHRodG8nKSB7XHJcbiAgICAgICAgICB3aWR0aEFycmF5LnB1c2goZmVhdHVyZT8uZmVhdHVyZVZhbHVlc1swXT8udmFsdWUgKyB1bml0KTtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlQXJyYXkucHVzaChmZWF0dXJlPy5uYW1lICsgJzogJyArIGZlYXR1cmU/LmZlYXR1cmVWYWx1ZXNbMF0/LnZhbHVlICsgdW5pdCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgaWYgKCB3aWR0aEFycmF5Lmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIGZlYXR1cmVBcnJheS5wdXNoKHdpZHRoQXJyYXlbMV0gKyAgJyAtICcgICsgd2lkdGhBcnJheVswXSApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZlYXR1cmVBcnJheT8uam9pbihcIiB8IFwiKTtcclxuICB9XHJcblxyXG4gIGhhc0ltYWdlKGNhcnREZXRhaWxzOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IG1pbWVUeXBlID0gY2FydERldGFpbHM/LmF0dGFjaG1lbnRzWzBdPy5taW1lO1xyXG4gICAgY29uc3QgbWltZUFycmF5ID0gW1wiaW1hZ2UvcG5nXCIsIFwiaW1hZ2UvanBnXCIsIFwiaW1hZ2UvanBlZ1wiXTtcclxuICAgIHJldHVybiBtaW1lQXJyYXkuaW5jbHVkZXMobWltZVR5cGUpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VUb2FzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1RvYXN0ID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nXCIgKm5nSWY9XCJzaG93V2FpdEN1cnNvciB8IGFzeW5jXCI+TG9hZGluZyYjODIzMDs8L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgbGlzdC1oZWFkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+SVRFTTwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPkpPQiBSRUZFUkVOQ0U8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5UT1RBTCBRVFk8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTJcIj5VTklUIFBSSUNFPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+VE9UQUwgUFJJQ0U8L2Rpdj5cclxuPC9kaXY+XHJcbjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJwcm9kdWN0Rm9ybVwiPlxyXG4gIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImNhcnRcIiAqbmdJZj1cImhhc0NhcnREZXRhaWxzKClcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgbGV0IGNhcnQgb2YgY2FydEZvcm0uY29udHJvbHM7XHJcbiAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICBsZXQgbGFzdEluZGV4ID0gbGFzdFxyXG4gICAgICBcIlxyXG4gICAgICBbZm9ybUdyb3VwTmFtZV09XCJpXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiaXRlbS1zcGFjZVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXRlbS1zcGFjZS1sYXN0JzogaSA9PSBjYXJ0RGV0YWlscy5sZW5ndGggLSAxIH1cIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzTnVsbE9yRW1wdHkoY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmNvZGUpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdDtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIG5vcm1hbEltYWdlXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGFzaGluZy1leHBhbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3SW1hZ2UoJGV2ZW50LCBjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjaW1hZ2VNb2RhbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGFzSW1hZ2UoY2FydERldGFpbHNbaV0pOyBlbHNlIGhhc1BkZlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8Y3gtbWVkaWFcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiZ2V0SW1hZ2VEZXRhaWxzKGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9XCJjYXJ0SWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9jeC1tZWRpYT5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hhc1BkZj5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGFzaGluZy1leHBhbmQgZmxhc2hpbmctb3BlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJnZXRQZGZMaW5rKGNhcnREZXRhaWxzW2ldKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwZGYtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvcGRmLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQ2xpY2sgdG8gb3BlbiBQREZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkNsaWNrIHRvIG9wZW4gUERGXCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vcm1hbEltYWdlPlxyXG4gICAgICAgICAgICAgICAgICA8Y3gtbWVkaWFcclxuICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImdldEltYWdlRGV0YWlscyhjYXJ0RGV0YWlsc1tpXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdD1cImNhcnRJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgPjwvY3gtbWVkaWE+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0X25hbWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrdVwiPlNLVToge3sgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmNvZGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInJlZmVybmNlLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiam9iUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJ1cGRhdGVKb2JSZWZlcmVuY2UoJGV2ZW50LCBjYXJ0RGV0YWlsc1tpXSwgaSlcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiam9iUmVmZXJlbmNlRXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgUGxlYXNlIGVudGVyIHZhbGlkIEpvYiBSZWZlcmVuY2VcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiB0b3RhbFF0eVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAhY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdDtcclxuICAgICAgICAgICAgICAgIGVsc2Ugbm9uQWNjZXNzb3JpZXNcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LnF1YW50aXR5RG91YmxlIH19XHJcbiAgICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LmJhc2VQcmljZT8udW5pdFR5cGUgfX1cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZFF0eVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2FydERldGFpbHNbaV0/LnF1YW50aXR5RG91YmxlXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uQWNjZXNzb3JpZXM+XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJxdHlfaW5wdXQgcmVmZXJuY2UtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb2RRdHlcIlxyXG4gICAgICAgICAgICAgICAgICBtaW5sZW5ndGg9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cInVwZGF0ZUNhcnQoJGV2ZW50LCBjYXJ0RGV0YWlsc1tpXSwgaSlcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQtZGFuZ2VyXCIgKm5nSWY9XCJwcm9kUXR5RXJyb3JzKGkpXCI+XHJcbiAgICAgICAgICAgICAgUGxlYXNlIGVudGVyIHZhbGlkIFF1YW50aXR5XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgdG90YWxRdHlcIj5cclxuICAgICAgICAgICAge3sgIGNhcnREZXRhaWxzW2ldPy5kaXNjb3VudGVkQmFzZVByaWNlPy5mb3JtYXR0ZWRWYWx1ZT8gY2FydERldGFpbHNbaV0/LmRpc2NvdW50ZWRCYXNlUHJpY2U/LmZvcm1hdHRlZFZhbHVlIDogY2FydERldGFpbHNbaV0/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWUgfX0ve3tcclxuICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8uZGlzY291bnRlZEJhc2VQcmljZT8udW5pdFR5cGUgPyBjYXJ0RGV0YWlsc1tpXT8uZGlzY291bnRlZEJhc2VQcmljZT8udW5pdFR5cGUgOiBjYXJ0RGV0YWlsc1tpXT8uYmFzZVByaWNlPy51bml0VHlwZVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgdG90YWxRdHlcIj5cclxuICAgICAgICAgICAge3sgY2FydERldGFpbHNbaV0/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlIH19XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbWctYWxpZ25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVFbnRyeShjYXJ0RGV0YWlsc1tpXT8uZW50cnlOdW1iZXIpXCJcclxuICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9pb25pYy10cmFzaC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiZGVsZXRlXCJcclxuICAgICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICBleGNsIEdTVFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtdC0zIG1iLTBcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnMgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0gJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5jbGFzc2lmaWNhdGlvbnNbMF0/LmZlYXR1cmVzXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IGdldENsYXNzaWZpY2F0aW9ucyhjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uY2xhc3NpZmljYXRpb25zKSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdCAmJlxyXG4gICAgICAgICAgICAgICFpc01vZGFsU2VsZWN0ZWRDb2xvcltpXVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdCAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3VycyAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3Vyc1swXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZF9jb2xvclwiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDpcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3Vyc1swXVxyXG4gICAgICAgICAgICAgICAgICAgID8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0gJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzICYmXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzWzBdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX2xpbmtcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGdldENvbG91cnMoY2FydCwgaSwgJGV2ZW50KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBmbGFzaGluZ1Byb2R1Y3RCb3JkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX3BhcnRcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0gJiZcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uYnBBZGRpdGlvbmFsQXR0cmlidXRlPy5jb2xvdXJzICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNbMF1cclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3Vyc1swXVxyXG4gICAgICAgICAgICAgICAgICAgID8ubmFtZVxyXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGRyb3Bkb3duLWljb25cIlxyXG4gICAgICAgICAgICAgID48L2lcclxuICAgICAgICAgICAgPjwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3QgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3MgJiZcclxuICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3M/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZF9jb2xvclwiXHJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZ2V0Q29sb3VyRGV0YWlscyhcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyxcclxuICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJtbC0yIG5vbGlua0ZvcmZsYXNoXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgIGdldENvbG91ckRldGFpbHMoY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcywgXCJuYW1lXCIpXHJcbiAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgIWlzTW9kYWxTZWxlY3RlZENvbG9yW2ldICYmXHJcbiAgICAgICAgICAgICAgIWNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkX2NvbG9yXCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zWzBdPy5jb25maWd1cmF0aW9uVmFsdWVcclxuICAgICAgICAgICAgICAgICAgfCBzcGxpdCA6ICd8JyA6IDJcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvcyAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXSAmJlxyXG4gICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX2xpbmtcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGdldENvbG91cnMoY2FydCwgaSwgJGV2ZW50KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgZmxhc2hpbmdQcm9kdWN0Q29sb3I6IGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGZsYXNoaW5nUHJvZHVjdEJvcmRlcjpcclxuICAgICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3JfcGFydFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXSAmJlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8uY29uZmlndXJhdGlvbkluZm9zICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3NbMF0gJiZcclxuICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LmNvbmZpZ3VyYXRpb25JbmZvc1swXT8uY29uZmlndXJhdGlvblZhbHVlXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5jb25maWd1cmF0aW9uSW5mb3NbMF0/LmNvbmZpZ3VyYXRpb25WYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHwgc3BsaXQgOiBcInxcIiA6IDFcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBkcm9wZG93bi1pY29uXCJcclxuICAgICAgICAgICAgICA+PC9pXHJcbiAgICAgICAgICAgID48L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cImlzTW9kYWxTZWxlY3RlZENvbG9yW2ldXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkX2NvbG9yXCJcclxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBtb2RhbFNlbGVjdGVkQ29sb3VyW2ldPy5oZXhhZGVjaW1hbENvZGVcclxuICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sb3JfbGluayBwb3B1cF9yZWNlbnRcIlxyXG4gICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGFyZ2V0XT1cIicjY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGdldENvbG91cnMoY2FydCwgaSwgJGV2ZW50KVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICBmbGFzaGluZ1Byb2R1Y3RCb3JkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yX3BhcnRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG1vZGFsU2VsZWN0ZWRDb2xvdXJbaV0/Lm5hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIGRyb3Bkb3duLWljb25cIlxyXG4gICAgICAgICAgICAgID48L2lcclxuICAgICAgICAgICAgPjwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gYXZhaWFsYWJsZSBjb2xvdXJzIHBvcHVwIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cImNhcnREZXRhaWxzW2ldPy5pc0V4cGFuZFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sbGFwc2UgY29sb3Vyc19jb250YWluZXJcIlxyXG4gICAgICAgICAgICBbYXR0ci5pZF09XCInY29sbGFwc2VDb2xvdXJzJyArIGlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py52YXJpYW50T3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VycyBtLTEgcHQtM1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbW9kYWxjb2xvdXIgb2YgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LnZhcmlhbnRPcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1vZGFsU2VsZWN0ZWRDb2xvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbGNvbG91ci5jb2xvdXJzWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbGNvbG91cj8uY29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvdXIgbS0xIG1iLTMgbWFpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbW9kYWxjb2xvdXI/LmNvbG91cnNbMF0/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFNlbGVjdGVkQ29sb3VyW2ldPy5oZXhhZGVjaW1hbENvZGUgPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxjb2xvdXI/LmNvbG91cnNbMF0/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VyLXRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3sgbW9kYWxjb2xvdXI/LmNvbG91cnNbMF0/Lm5hbWUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IG1vZGFsY29sb3VyPy5jb2xvdXJzWzBdPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGU/LmNvbG91cnNcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG91cnMgbS0xIHB0LTNcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGFsY29sb3VyIG9mIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICA/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uY29sb3VycztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kYWxTZWxlY3RlZENvbG9yKCRldmVudCwgbW9kYWxjb2xvdXIsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG91ciBtLTEgbWItMyBtYWluXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBtb2RhbGNvbG91cj8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsU2VsZWN0ZWRDb2xvdXJbaV0/LmhleGFkZWNpbWFsQ29kZSA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbGNvbG91cj8uaGV4YWRlY2ltYWxDb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2xvdXItdGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBtb2RhbGNvbG91cj8ubmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHt7IG1vZGFsY29sb3VyPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5icEFkZGl0aW9uYWxBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgICA/LmFkZGl0aW9uYWxDb2xvdXJzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRhcmdldF09XCInI2FkZGl0aW9uYWxDb2xvcnNNb2RhbCcgKyBpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHU+IEFkZGl0aW9uYWwgY29sb3JzIG1heSBiZSBhdmlhbGFibGUgPC91PjwvYVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQWRkaXRpb25hbCBjb2xvdXJzIHBvcHVwLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwibW9kYWwgZmFkZVwiXHJcbiAgICAgICAgICAgIGlkPVwiYWRkaXRpb25hbENvbG9yc01vZGFse3sgaSB9fVwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxyXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJpbnZpdGVNZW1iZXJMYWJlbFwiXHJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiByb2xlPVwiZG9jdW1lbnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPkFkZGl0aW9uYWwgQ29sb3VyczwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWNsb3NlIGludml0ZS1wb3AtY2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICNjbG9zZUludml0ZU1vZGFsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy93YXJuaW5naWNvbi5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYWx0PVwiYWxlcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBhZGRpdGlvbmFsUGFyYT8uY29udGVudCB9fS48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3VycyBtLTEgcHQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kYWxjb2xvdXIgb2YgY2FydERldGFpbHNbaV0/LnByb2R1Y3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA/LmJwQWRkaXRpb25hbEF0dHJpYnV0ZT8uYWRkaXRpb25hbENvbG91cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkdGlvbmFsTW9kYWxTZWxlY3RlZENvbG9yKCRldmVudCwgbW9kYWxjb2xvdXIsIGkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VyIG0tMSBtYi0zIG1haW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IG1vZGFsY29sb3VyPy5oZXhhZGVjaW1hbENvZGUgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW5hbHNlbGVjdGVkQ29sb3VyW2ldPy5oZXhhZGVjaW1hbENvZGUgPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsY29sb3VyPy5oZXhhZGVjaW1hbENvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3VyLXRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJ7eyBtb2RhbGNvbG91cj8ubmFtZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtb2RhbGNvbG91cj8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0xIHB0LTNcIiAqbmdJZj1cImFkZGl0aW5hbHNlbGVjdGVkQ29sb3VyW2ldXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPkNvbG91ciBTZWxlY3Rpb248L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZF9jb2xvcl9zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRfY29sb3IgbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaV0/LmhleGFkZWNpbWFsQ29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgYWRkaXRpbmFsc2VsZWN0ZWRDb2xvdXJbaV0/Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1zbS1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIG1vYmlsZS1jYW5jZWwtYnRuIGRpbW9uZC1zZWNvbmRhcnktYnRuIG1yLWxnLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9jZWVkV2l0aFN1Ym1pdChhZGRpdGluYWxzZWxlY3RlZENvbG91cltpXSwgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBtb2JpbGUtc2F2ZS1idG4gZGltb25kLXByaW1hcnktYnRuIGZsb2F0LXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICBQcm9jZWVkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgKm5nSWY9XCIhY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic2VlLW1vcmUtbGlua1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93SGlkZShpKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYmxvY2s6IGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Py5mbGFzaGluZ1Byb2R1Y3QgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHNob3dEZXRhaWxzW2ldID09IHRydWUgPyBcIkhpZGVcIiA6IFwiU2VlXCIgfX0gbW9yZSBkZXRhaWxzXHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEZXRhaWxzW2ldXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdxdWFudGl0eS1mb3JtLWRldGFpbHMnOiAhY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZpbmlzaGVkUHJvZHVjdFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBpZD1cImNhcnRNb3JlRGV0YWlsc3t7IGkgfX1cIj5cclxuICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm1cclxuICAgICAgICAgICAgICAgIFtwcm9kdWN0Q29kZV09XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uY29kZVwiXHJcbiAgICAgICAgICAgICAgICBbcHJvZHVjdERldGFpbHNdPVwiY2FydERldGFpbHNbaV1cIlxyXG4gICAgICAgICAgICAgICAgW2xpc3RWaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FjY2Vzc29yaWVzUHJpY2VdPVwiY2FydERldGFpbHNbaV0/LmJhc2VQcmljZT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkQ29sb3VyXT1cInNlbGVjdGVkQ29sb3VyXCJcclxuICAgICAgICAgICAgICAgIFtpc0ZpbmlzaGVkUHJvZHVjdF09XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmluaXNoZWRQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgIFtpc0ZsYXNoaW5nUHJvZHVjdF09XCJjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdD8uZmxhc2hpbmdQcm9kdWN0XCJcclxuICAgICAgICAgICAgICAgICh1cGRhdGVDYXJ0RW50aXJlcyk9XCJyZW9sYWRDYXJ0RW50aXJlcygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtzYXZlQ2FyZElkXT1cInNhdmVDYXJkT3JkZXJJZFwiXHJcbiAgICAgICAgICAgICAgPjwvYXBwLWN1c3RvbS1wcm9kdWN0LXF1YW50aXR5LWZvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgY2FydERldGFpbHNbaV0/LnByb2R1Y3Q/LmZsYXNoaW5nUHJvZHVjdCAmJlxyXG4gICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcyAmJlxyXG4gICAgICAgICAgICBjYXJ0RGV0YWlsc1tpXT8ucHJvZHVjdENvbmZpZ3VyZWRJbmZvcz8ubGVuZ3RoID4gMFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGNhcnREZXRhaWxzW2ldPy5wcm9kdWN0Q29uZmlndXJlZEluZm9zXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImZsYXNoaW5nLWJsb2NrXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LnByb2R1Y3Q/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT0gJ2ZsYXNoZ3VhcmQnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiZmxhc2gtdGl0bGVcIj57eyBkYXRhPy5wcm9kdWN0Py5uYW1lIH19PC9oMz5cclxuICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic2t1SWRcIj5TS1U6IHt7IGRhdGE/LnByb2R1Y3Q/LmNvZGUgfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGE/LmdpcnRoXCI+R2lydGg6ICt7eyBkYXRhPy5naXJ0aCB9fW1tIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9mZnNldC1zbS0zIGNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnF1YW50aXR5RG91YmxlIH19e3sgZGF0YT8udW5pdFR5cGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LmJhc2VQcmljZT8uZm9ybWF0dGVkVmFsdWUgfX0ve3sgZGF0YT8udW5pdFR5cGUgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnRvdGFsUHJpY2U/LmZvcm1hdHRlZFZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3N0LXRleHRcIj5leGNsIEdTVDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPCEtLSBjb2xvdXJzIHBvcHVwIC0tPlxyXG5cclxuPGRpdlxyXG4gIGNsYXNzPVwibW9kYWwgZmFkZVwiXHJcbiAgaWQ9XCJpbWFnZU1vZGFsXCJcclxuICByb2xlPVwiZGlhbG9nXCJcclxuICBhcmlhLWxhYmVsbGVkYnk9XCJpbWFnZU1vZGFsXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICNpbWFnZU1vZGFsXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWxnXCIgcm9sZT1cImRvY3VtZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGlcclxuICAgICAgICAgIGNsYXNzPVwiaWNvbi1jbG9zZSBpbnZpdGUtcG9wLWNsb3NlXCJcclxuICAgICAgICAgICNjbG9zZUludml0ZU1vZGFsXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgID48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJpbWFnZU1vZGFsU3JjXCIgYWx0PVwiYWxlcnRcIiAvPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZsYXNoaW5nTW9kYWxcIiBjbGFzcz1cImZsYXNoaW5nLWRldGFpbHNcIj5cclxuICAgICAgICAgIDxhcHAtY3VzdG9tLWZsYXNoaW5nLWltYWdlLWRldGFpbHMgW2NhcnREZXRhaWxzXT1cImZsYXNoaW5nSW1hZ2VEZXRhaWxzXCI+PC9hcHAtY3VzdG9tLWZsYXNoaW5nLWltYWdlLWRldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nYi10b2FzdCAqbmdJZj1cInNob3dUb2FzdFwiIFthdXRvaGlkZV09XCJ0cnVlXCIgW2RlbGF5XT1cIjQwMDBcIj5cclxuICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvSW52aXRlZC5zdmdcIiAvPiBDYXJ0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IVxyXG4gIDxpXHJcbiAgICBjbGFzcz1cImljb24tY2xvc2UgdG9hc3QtY2xvc2VcIlxyXG4gICAgYXJpYS1sYWJlbD1cIkNsb3NlXCJcclxuICAgIChjbGljayk9XCJjbG9zZVRvYXN0KClcIlxyXG4gID48L2k+XHJcbjwvbmdiLXRvYXN0PlxyXG4iXX0=
|