buildingproduct-library 0.2.73
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/README.md +24 -0
- package/assets/fonts/arial-webfont.woff +0 -0
- package/assets/fonts/arial-webfont.woff2 +0 -0
- package/assets/fonts/arialblack-webfont.woff +0 -0
- package/assets/fonts/arialblack-webfont.woff2 +0 -0
- package/assets/fonts/arialbold-webfont.woff +0 -0
- package/assets/fonts/arialbold-webfont.woff2 +0 -0
- package/assets/fonts/helveticaneue.woff +0 -0
- package/assets/fonts/helveticaneue.woff2 +0 -0
- package/assets/fonts/helveticaneuemedium-webfont.woff +0 -0
- package/assets/fonts/helveticaneuemedium-webfont.woff2 +0 -0
- package/assets/fonts/helveticaneuethin-webfont.woff +0 -0
- package/assets/fonts/helveticaneuethin-webfont.woff2 +0 -0
- package/assets/fonts/icomoon.ttf +0 -0
- package/assets/fonts/icomoon.woff +0 -0
- package/assets/images/ActivateIcon.svg +14 -0
- package/assets/images/AlertIcon.svg +3 -0
- package/assets/images/DisableIcon.svg +3 -0
- package/assets/images/Divider line.svg +3 -0
- package/assets/images/EditIconEnabled.svg +6 -0
- package/assets/images/EditIcondisabled.svg +6 -0
- package/assets/images/Grid-dark.svg +8 -0
- package/assets/images/Grid-light.svg +8 -0
- package/assets/images/Hamburger_icon_white.png +0 -0
- package/assets/images/Icon-awesome-user-alt-white.svg +13 -0
- package/assets/images/Icon-ionic-ios-arrow-down.svg +3 -0
- package/assets/images/Icon-ionic-ios-help-circle.svg +6 -0
- package/assets/images/Icon-ionic-ios-home.svg +6 -0
- package/assets/images/Icon-ionic-ios-settings.svg +6 -0
- package/assets/images/Icon-material-shopping-cart.svg +7 -0
- package/assets/images/Invited.svg +4 -0
- package/assets/images/List-dark.svg +3 -0
- package/assets/images/List-light.svg +3 -0
- package/assets/images/PDP-add-more.svg +3 -0
- package/assets/images/PDP-colour-selected.svg +7 -0
- package/assets/images/PDP-quote-exists.svg +12 -0
- package/assets/images/PDP-remove-icon.svg +3 -0
- package/assets/images/Selected icon.svg +3 -0
- package/assets/images/Selected-icon.svg +3 -0
- package/assets/images/banner-image.png +0 -0
- package/assets/images/br_down.png +0 -0
- package/assets/images/cart-shopping-fast.svg +6 -0
- package/assets/images/check-square.svg +3 -0
- package/assets/images/checkmark-circle-outline.svg +4 -0
- package/assets/images/closegrey.svg +71 -0
- package/assets/images/dashboard.svg +35 -0
- package/assets/images/delivery.svg +11 -0
- package/assets/images/download-icon.svg +7 -0
- package/assets/images/downloads-dark.svg +6 -0
- package/assets/images/downloads-light.svg +6 -0
- package/assets/images/erroricon.svg +3 -0
- package/assets/images/home-icon.svg +6 -0
- package/assets/images/home_banner.png +0 -0
- package/assets/images/ic_calender.svg +15 -0
- package/assets/images/icon-clock-icon.svg +10 -0
- package/assets/images/icon-feather-edit.svg +6 -0
- package/assets/images/icon-flashing-black.svg +3 -0
- package/assets/images/icon-flashing-white.svg +3 -0
- package/assets/images/icon-ionic-ios-search.svg +3 -0
- package/assets/images/icon-logout.svg +6 -0
- package/assets/images/icon-mail-icon.svg +7 -0
- package/assets/images/icon-metro-info.svg +3 -0
- package/assets/images/ionic-arrow-back.svg +3 -0
- package/assets/images/ionic-ios-feather-phone.svg +3 -0
- package/assets/images/ionic-ios-help-circle-outline.svg +6 -0
- package/assets/images/ionic-ios-location-outline.svg +3 -0
- package/assets/images/ionic-ios-my-location.svg +3 -0
- package/assets/images/ionic-ios-users-outline.svg +3 -0
- package/assets/images/ionic-trash.svg +3 -0
- package/assets/images/logo-black.svg +16 -0
- package/assets/images/logo-dark.svg +48 -0
- package/assets/images/logo.svg +16 -0
- package/assets/images/my-account.svg +21 -0
- package/assets/images/my-list.svg +43 -0
- package/assets/images/my-team.svg +17 -0
- package/assets/images/newsfeed-banner.jpg +0 -0
- package/assets/images/no-saved-cart.svg +3 -0
- package/assets/images/open-account-logout.png +0 -0
- package/assets/images/orders.svg +23 -0
- package/assets/images/pdp-noimage.svg +21 -0
- package/assets/images/pickup.svg +8 -0
- package/assets/images/plp-grid-noimage.svg +22 -0
- package/assets/images/plp-list-noimage.svg +16 -0
- package/assets/images/product-banner.png +0 -0
- package/assets/images/product-details-dark.svg +10 -0
- package/assets/images/product-details-light.svg +10 -0
- package/assets/images/products.svg +34 -0
- package/assets/images/quotes.svg +12 -0
- package/assets/images/related-products-dark.svg +9 -0
- package/assets/images/related-products-light.svg +9 -0
- package/assets/images/search-noimage.svg +16 -0
- package/assets/images/see-more-bg-hover.svg +1 -0
- package/assets/images/see-more-bg.svg +1 -0
- package/assets/images/shopping-cart-icon.svg +14 -0
- package/assets/images/slash-small-white.svg +3 -0
- package/assets/images/warningicon.svg +3 -0
- package/assets/images/why-dimond.svg +7 -0
- package/buildingproduct-library-0.2.73.tgz +0 -0
- package/buildingproduct-library.d.ts +5 -0
- package/bundles/buildingproduct-library.umd.js +9907 -0
- package/bundles/buildingproduct-library.umd.js.map +1 -0
- package/esm2015/buildingproduct-library.js +5 -0
- package/esm2015/lib/account-dropdown/account-dropdown.component.js +126 -0
- package/esm2015/lib/account-dropdown/account-dropdown.module.js +55 -0
- package/esm2015/lib/account-dropdown/account-dropdown.service.js +55 -0
- package/esm2015/lib/checkout/add-new-address/add-new-address.component.js +435 -0
- package/esm2015/lib/checkout/checkout.module.js +141 -0
- package/esm2015/lib/checkout/custom-checkout/custom-checkout.component.js +362 -0
- package/esm2015/lib/checkout/order-confirmation/order-confirmation.component.js +41 -0
- package/esm2015/lib/checkout/order-review/delivery-information/delivery-information.component.js +32 -0
- package/esm2015/lib/checkout/order-review/order-review-grid/order-review-grid.component.js +92 -0
- package/esm2015/lib/checkout/order-review/order-review-list/order-review-list.component.js +94 -0
- package/esm2015/lib/checkout/order-review/order-review.component.js +147 -0
- package/esm2015/lib/constants/general.js +57 -0
- package/esm2015/lib/contact-us/contact-us.component.js +38 -0
- package/esm2015/lib/contact-us/contact-us.module.js +41 -0
- package/esm2015/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.js +48 -0
- package/esm2015/lib/custom-cart/custom-cart.component.js +94 -0
- package/esm2015/lib/custom-cart/custom-cart.module.js +91 -0
- package/esm2015/lib/custom-header-logo/custom-header-logo.component.js +26 -0
- package/esm2015/lib/custom-header-logo/custom-header-logo.module.js +54 -0
- package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.component.js +24 -0
- package/esm2015/lib/custom-header-paragraph/custom-header-paragraph.module.js +48 -0
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.component.js +138 -0
- package/esm2015/lib/custom-mini-cart/custom-mini-cart.module.js +68 -0
- package/esm2015/lib/custom-navigation/custom-navigation/custom-navigation.component.js +121 -0
- package/esm2015/lib/custom-navigation/custom-navigation.module.js +89 -0
- package/esm2015/lib/custom-order-details/custom-order-details.component.js +197 -0
- package/esm2015/lib/custom-order-details/custom-order-details.module.js +91 -0
- package/esm2015/lib/custom-order-details/download-popup/download-popup.component.js +34 -0
- package/esm2015/lib/custom-order-details/order-detail-grid/order-detail-grid.component.js +108 -0
- package/esm2015/lib/custom-order-details/order-detail-list/order-detail-list.component.js +103 -0
- package/esm2015/lib/custom-order-history/custom-order-history.component.js +652 -0
- package/esm2015/lib/custom-order-history/custom-order-history.module.js +97 -0
- package/esm2015/lib/custom-order-history/slider-progress/slider-progress.component.js +62 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.js +96 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.js +125 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.js +115 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.js +56 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.js +33 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.component.js +107 -0
- package/esm2015/lib/custom-saved-cart/custom-saved-cart.module.js +89 -0
- package/esm2015/lib/custom-saved-cart/save-cart.service.js +67 -0
- package/esm2015/lib/custom-saved-cart/saved-cart-general.js +49 -0
- package/esm2015/lib/custom-saved-cart/saved-cart.service.js +39 -0
- package/esm2015/lib/custom-search/custom-search.component.js +132 -0
- package/esm2015/lib/custom-search/custom-search.module.js +46 -0
- package/esm2015/lib/custom-user-account/custom-user-account.component.js +92 -0
- package/esm2015/lib/custom-user-account/custom-user-account.module.js +63 -0
- package/esm2015/lib/directives/custom-directives.module.js +22 -0
- package/esm2015/lib/directives/custom-paginatior.directive.js +127 -0
- package/esm2015/lib/environments/environment.js +24 -0
- package/esm2015/lib/find-store/find-store.component.js +94 -0
- package/esm2015/lib/find-store/find-store.module.js +66 -0
- package/esm2015/lib/help-support/help-support.component.js +24 -0
- package/esm2015/lib/help-support/help-support.module.js +38 -0
- package/esm2015/lib/my-account/account-dashboard/account-dashboard.component.js +134 -0
- package/esm2015/lib/my-account/account-statements/account-statements.component.js +57 -0
- package/esm2015/lib/my-account/invoice-credit/invoice-credit.component.js +342 -0
- package/esm2015/lib/my-account/my-account.component.js +85 -0
- package/esm2015/lib/my-account/my-account.module.js +91 -0
- package/esm2015/lib/my-team/my-team.component.js +418 -0
- package/esm2015/lib/my-team/my-team.module.js +96 -0
- package/esm2015/lib/my-team/team-member.service.js +123 -0
- package/esm2015/lib/pipes/custom-date-pipe.pipe.js +26 -0
- package/esm2015/lib/preference/preference.component.js +19 -0
- package/esm2015/lib/preference/preference.module.js +45 -0
- package/esm2015/lib/services/account-dropdown-state.service.js +21 -0
- package/esm2015/lib/services/cart.service.js +70 -0
- package/esm2015/lib/services/checkout.service.js +73 -0
- package/esm2015/lib/services/endPointURL.js +187 -0
- package/esm2015/lib/services/find-store.service.js +61 -0
- package/esm2015/lib/services/logout.service.js +50 -0
- package/esm2015/lib/services/my-account.service.js +68 -0
- package/esm2015/lib/services/order-history.service.js +65 -0
- package/esm2015/lib/services/order.review.js +38 -0
- package/esm2015/lib/services/search.service.js +42 -0
- package/esm2015/lib/services/user-account-detail-service.service.js +44 -0
- package/esm2015/lib/shared/CustomProduct.js +47 -0
- package/esm2015/lib/shared/active-saved-cart/active-saved-cart.component.js +105 -0
- package/esm2015/lib/shared/custom-breadcrum/custom-breadcrum.component.js +92 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-detail.component.js +95 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.js +355 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.js +360 -0
- package/esm2015/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.js +575 -0
- package/esm2015/lib/shared/custom-cart-detail/split.pipe.js +17 -0
- package/esm2015/lib/shared/date-range-picker/date-range-picker.component.js +123 -0
- package/esm2015/lib/shared/regEx.validator.js +15 -0
- package/esm2015/lib/shared/saved-cart-popup/saved-cart-popup.component.js +85 -0
- package/esm2015/lib/shared/shared-components.module.js +108 -0
- package/esm2015/lib/shared/shared-download-order/shared-download-order.component.js +143 -0
- package/esm2015/lib/spa-custom-header.component.js +26 -0
- package/esm2015/lib/spa-custom-header.module.js +145 -0
- package/esm2015/lib/spa-custom-header.service.js +14 -0
- package/esm2015/lib/utils/utils.js +27 -0
- package/esm2015/lib/utils.js +27 -0
- package/esm2015/public-api.js +35 -0
- package/fesm2015/buildingproduct-library.js +9190 -0
- package/fesm2015/buildingproduct-library.js.map +1 -0
- package/lib/account-dropdown/account-dropdown.component.d.ts +22 -0
- package/lib/account-dropdown/account-dropdown.module.d.ts +10 -0
- package/lib/account-dropdown/account-dropdown.service.d.ts +14 -0
- package/lib/checkout/add-new-address/add-new-address.component.d.ts +29 -0
- package/lib/checkout/checkout.module.d.ts +26 -0
- package/lib/checkout/custom-checkout/custom-checkout.component.d.ts +80 -0
- package/lib/checkout/order-confirmation/order-confirmation.component.d.ts +26 -0
- package/lib/checkout/order-review/delivery-information/delivery-information.component.d.ts +13 -0
- package/lib/checkout/order-review/order-review-grid/order-review-grid.component.d.ts +27 -0
- package/lib/checkout/order-review/order-review-list/order-review-list.component.d.ts +28 -0
- package/lib/checkout/order-review/order-review.component.d.ts +44 -0
- package/lib/constants/general.d.ts +50 -0
- package/lib/contact-us/contact-us.component.d.ts +13 -0
- package/lib/contact-us/contact-us.module.d.ts +9 -0
- package/lib/custom-cart/addto-saved-carts/addto-saved-carts.component.d.ts +18 -0
- package/lib/custom-cart/custom-cart.component.d.ts +25 -0
- package/lib/custom-cart/custom-cart.module.d.ts +15 -0
- package/lib/custom-header-logo/custom-header-logo.component.d.ts +11 -0
- package/lib/custom-header-logo/custom-header-logo.module.d.ts +11 -0
- package/lib/custom-header-paragraph/custom-header-paragraph.component.d.ts +11 -0
- package/lib/custom-header-paragraph/custom-header-paragraph.module.d.ts +10 -0
- package/lib/custom-mini-cart/custom-mini-cart.component.d.ts +45 -0
- package/lib/custom-mini-cart/custom-mini-cart.module.d.ts +14 -0
- package/lib/custom-navigation/custom-navigation/custom-navigation.component.d.ts +37 -0
- package/lib/custom-navigation/custom-navigation.module.d.ts +21 -0
- package/lib/custom-order-details/custom-order-details.component.d.ts +60 -0
- package/lib/custom-order-details/custom-order-details.module.d.ts +17 -0
- package/lib/custom-order-details/download-popup/download-popup.component.d.ts +15 -0
- package/lib/custom-order-details/order-detail-grid/order-detail-grid.component.d.ts +30 -0
- package/lib/custom-order-details/order-detail-list/order-detail-list.component.d.ts +28 -0
- package/lib/custom-order-history/custom-order-history.component.d.ts +96 -0
- package/lib/custom-order-history/custom-order-history.module.d.ts +17 -0
- package/lib/custom-order-history/slider-progress/slider-progress.component.d.ts +15 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-save-cart-dtl/custom-save-cart-dtl.component.d.ts +32 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/custom-saved-cart-details.module.d.ts +20 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-action/saved-cart-details-action.component.d.ts +68 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details-overview/saved-cart-details-overview.component.d.ts +31 -0
- package/lib/custom-saved-cart/custom-saved-cart-details/saved-cart-details.service.d.ts +15 -0
- package/lib/custom-saved-cart/custom-saved-cart.component.d.ts +57 -0
- package/lib/custom-saved-cart/custom-saved-cart.module.d.ts +16 -0
- package/lib/custom-saved-cart/save-cart.service.d.ts +17 -0
- package/lib/custom-saved-cart/saved-cart-general.d.ts +88 -0
- package/lib/custom-saved-cart/saved-cart.service.d.ts +11 -0
- package/lib/custom-search/custom-search.component.d.ts +35 -0
- package/lib/custom-search/custom-search.module.d.ts +10 -0
- package/lib/custom-user-account/custom-user-account.component.d.ts +35 -0
- package/lib/custom-user-account/custom-user-account.module.d.ts +12 -0
- package/lib/directives/custom-directives.module.d.ts +8 -0
- package/lib/directives/custom-paginatior.directive.d.ts +24 -0
- package/lib/environments/environment.d.ts +12 -0
- package/lib/find-store/find-store.component.d.ts +34 -0
- package/lib/find-store/find-store.module.d.ts +12 -0
- package/lib/help-support/help-support.component.d.ts +11 -0
- package/lib/help-support/help-support.module.d.ts +9 -0
- package/lib/my-account/account-dashboard/account-dashboard.component.d.ts +34 -0
- package/lib/my-account/account-statements/account-statements.component.d.ts +24 -0
- package/lib/my-account/invoice-credit/invoice-credit.component.d.ts +62 -0
- package/lib/my-account/my-account.component.d.ts +26 -0
- package/lib/my-account/my-account.module.d.ts +18 -0
- package/lib/my-team/my-team.component.d.ts +96 -0
- package/lib/my-team/my-team.module.d.ts +17 -0
- package/lib/my-team/team-member.service.d.ts +17 -0
- package/lib/pipes/custom-date-pipe.pipe.d.ts +11 -0
- package/lib/preference/preference.component.d.ts +8 -0
- package/lib/preference/preference.module.d.ts +10 -0
- package/lib/services/account-dropdown-state.service.d.ts +10 -0
- package/lib/services/cart.service.d.ts +15 -0
- package/lib/services/checkout.service.d.ts +17 -0
- package/lib/services/endPointURL.d.ts +153 -0
- package/lib/services/find-store.service.d.ts +14 -0
- package/lib/services/logout.service.d.ts +11 -0
- package/lib/services/my-account.service.d.ts +16 -0
- package/lib/services/order-history.service.d.ts +14 -0
- package/lib/services/order.review.d.ts +11 -0
- package/lib/services/search.service.d.ts +11 -0
- package/lib/services/user-account-detail-service.service.d.ts +15 -0
- package/lib/shared/CustomProduct.d.ts +27 -0
- package/lib/shared/active-saved-cart/active-saved-cart.component.d.ts +56 -0
- package/lib/shared/custom-breadcrum/custom-breadcrum.component.d.ts +28 -0
- package/lib/shared/custom-cart-detail/custom-cart-detail.component.d.ts +32 -0
- package/lib/shared/custom-cart-detail/custom-cart-grid/custom-cart-grid.component.d.ts +74 -0
- package/lib/shared/custom-cart-detail/custom-cart-list/custom-cart-list.component.d.ts +79 -0
- package/lib/shared/custom-cart-detail/custom-product-quantity-form/custom-product-quantity-form.component.d.ts +93 -0
- package/lib/shared/custom-cart-detail/split.pipe.d.ts +7 -0
- package/lib/shared/date-range-picker/date-range-picker.component.d.ts +31 -0
- package/lib/shared/regEx.validator.d.ts +8 -0
- package/lib/shared/saved-cart-popup/saved-cart-popup.component.d.ts +37 -0
- package/lib/shared/shared-components.module.d.ts +24 -0
- package/lib/shared/shared-download-order/shared-download-order.component.d.ts +37 -0
- package/lib/spa-custom-header.component.d.ts +11 -0
- package/lib/spa-custom-header.module.d.ts +28 -0
- package/lib/spa-custom-header.service.d.ts +6 -0
- package/lib/utils/utils.d.ts +6 -0
- package/lib/utils.d.ts +5 -0
- package/package.json +90 -0
- package/public-api.d.ts +31 -0
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
3
|
+
import { loadModules } from 'esri-loader';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/checkout.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class AddNewAddressComponent {
|
|
9
|
+
constructor(checkoutService) {
|
|
10
|
+
this.checkoutService = checkoutService;
|
|
11
|
+
this.markerUrl = 'assets/images/marker.svg';
|
|
12
|
+
this.location = {};
|
|
13
|
+
this.isConfirmDisabled = new BehaviorSubject(true);
|
|
14
|
+
this.showAddress = new BehaviorSubject(false);
|
|
15
|
+
this.env = sessionStorage.getItem('env');
|
|
16
|
+
this.environment = JSON.parse(this.env);
|
|
17
|
+
this.apigee_url = this.environment.coreLogicApiUrl; // PROD: 'api.corelogic.asia'
|
|
18
|
+
this.client_id = this.environment.coreLogicClientId;
|
|
19
|
+
this.client_secret = this.environment.coreLogicClientSecret;
|
|
20
|
+
this.token_url = `https://${this.apigee_url}/access/oauth/token?client_id=${this.client_id}&client_secret=${this.client_secret}&grant_type=client_credentials`;
|
|
21
|
+
this.updateNewAddress = new EventEmitter();
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
navigator.geolocation.getCurrentPosition(position => {
|
|
25
|
+
if (position && position.coords) {
|
|
26
|
+
this.currentPosition = position.coords;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
if (this.confirmedAddress != '') {
|
|
30
|
+
this.showAddress.next(true);
|
|
31
|
+
}
|
|
32
|
+
this.checkoutService.getToken(this.token_url).subscribe((response) => {
|
|
33
|
+
if (response) {
|
|
34
|
+
const token = 'EbUIm1M13SwtGmdNaEsvMQ8z7l7zU5ZX0aYnWuEEnBG1VYqQqPPx8clgTLcuYSDd2XJpBenrDBPw-LtOSCEfBbYq9JsHudx5og19KowoNzQLsBQggFYYyoK80xi_WCiyvQDLpMigXVfOx8ijqoi_FA..'; // response?.access_token;
|
|
35
|
+
this.loadMap(response.access_token).then(() => {
|
|
36
|
+
// The map has been initialized
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
loadMap(token) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const container = this.mapViewEl.nativeElement;
|
|
44
|
+
const streetmapURL = this.environment.coreLogicStreetMapUrl;
|
|
45
|
+
// // Using NZTM spatial reference - the option to switch to WGS84 (lat/long) is available as an alternate
|
|
46
|
+
const [MapView, Point, WebMap, Search, SearchSource, esriRequest, Graphic, geometryEngine, SpatialReference, TileLayer, Basemap, esriConfig,] = yield loadModules([
|
|
47
|
+
'esri/views/MapView',
|
|
48
|
+
'esri/geometry/Point',
|
|
49
|
+
'esri/WebMap',
|
|
50
|
+
'esri/widgets/Search',
|
|
51
|
+
'esri/widgets/Search/SearchSource',
|
|
52
|
+
'esri/request',
|
|
53
|
+
'esri/Graphic',
|
|
54
|
+
'esri/geometry/geometryEngine',
|
|
55
|
+
'esri/geometry/SpatialReference',
|
|
56
|
+
"esri/layers/TileLayer",
|
|
57
|
+
"esri/Basemap",
|
|
58
|
+
'esri/config',
|
|
59
|
+
]);
|
|
60
|
+
// Create the Map
|
|
61
|
+
const centerPoint = new Point({
|
|
62
|
+
x: 1762074.8319567626,
|
|
63
|
+
y: 5913411.046462182,
|
|
64
|
+
spatialReference: {
|
|
65
|
+
wkid: 2193,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
esriConfig.request.interceptors.push({
|
|
69
|
+
urls: [streetmapURL],
|
|
70
|
+
before: (params) => {
|
|
71
|
+
if (params.url.includes(this.apigee_url)) {
|
|
72
|
+
params.requestOptions.headers = params.requestOptions.headers || {};
|
|
73
|
+
params.requestOptions.headers['authorization'] = `Bearer ${token}`;
|
|
74
|
+
params.requestOptions.headers['Access-Control-Request-Headers'] = 'authorization';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// Default base layer - streetmap
|
|
79
|
+
let streetmap = new TileLayer({
|
|
80
|
+
url: streetmapURL
|
|
81
|
+
});
|
|
82
|
+
// Create basemap layers
|
|
83
|
+
const streetmap_base = new Basemap({
|
|
84
|
+
baseLayers: [streetmap],
|
|
85
|
+
title: "Streetmap"
|
|
86
|
+
});
|
|
87
|
+
// esri map
|
|
88
|
+
const webmap = new WebMap({
|
|
89
|
+
basemap: 'satellite', //hybrid, satellite // which map view we have to use ?
|
|
90
|
+
});
|
|
91
|
+
// Create the map - streetmap as default basemap
|
|
92
|
+
const myMap = new WebMap({
|
|
93
|
+
basemap: streetmap_base
|
|
94
|
+
});
|
|
95
|
+
const view = new MapView({
|
|
96
|
+
container: container,
|
|
97
|
+
map: myMap,
|
|
98
|
+
center: centerPoint,
|
|
99
|
+
zoom: 8,
|
|
100
|
+
constraints: {
|
|
101
|
+
snapToZoom: false,
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
const simpleMarkerSymbol = {
|
|
105
|
+
type: 'picture-marker',
|
|
106
|
+
url: this.markerUrl,
|
|
107
|
+
width: 21,
|
|
108
|
+
height: 30,
|
|
109
|
+
};
|
|
110
|
+
const mapKeys = (data) => {
|
|
111
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
112
|
+
const obj = {
|
|
113
|
+
type: 'Feature',
|
|
114
|
+
geometry: {
|
|
115
|
+
type: 'Point',
|
|
116
|
+
coordinates: [(_a = data === null || data === void 0 ? void 0 : data.location) === null || _a === void 0 ? void 0 : _a.wgs84_lon, (_b = data === null || data === void 0 ? void 0 : data.location) === null || _b === void 0 ? void 0 : _b.wgs84_lat],
|
|
117
|
+
},
|
|
118
|
+
properties: {
|
|
119
|
+
label: ((_c = data === null || data === void 0 ? void 0 : data.formatted_address) === null || _c === void 0 ? void 0 : _c.line1) +
|
|
120
|
+
' ' +
|
|
121
|
+
((_d = data === null || data === void 0 ? void 0 : data.formatted_address) === null || _d === void 0 ? void 0 : _d.line2) +
|
|
122
|
+
' ' +
|
|
123
|
+
((_e = data === null || data === void 0 ? void 0 : data.formatted_address) === null || _e === void 0 ? void 0 : _e.line3) +
|
|
124
|
+
' ' +
|
|
125
|
+
((_f = data === null || data === void 0 ? void 0 : data.formatted_address) === null || _f === void 0 ? void 0 : _f.line4),
|
|
126
|
+
scrore: 0,
|
|
127
|
+
id: (_g = data === null || data === void 0 ? void 0 : data.references) === null || _g === void 0 ? void 0 : _g.id,
|
|
128
|
+
name: (_h = data === null || data === void 0 ? void 0 : data.formatted_address) === null || _h === void 0 ? void 0 : _h.line1,
|
|
129
|
+
postcode: (_j = data === null || data === void 0 ? void 0 : data.structured_address) === null || _j === void 0 ? void 0 : _j.postcode,
|
|
130
|
+
citycode: '',
|
|
131
|
+
x: (_k = data === null || data === void 0 ? void 0 : data.location) === null || _k === void 0 ? void 0 : _k.wgs84_lon,
|
|
132
|
+
y: (_l = data === null || data === void 0 ? void 0 : data.location) === null || _l === void 0 ? void 0 : _l.wgs84_lat,
|
|
133
|
+
city: (_m = data === null || data === void 0 ? void 0 : data.structured_address) === null || _m === void 0 ? void 0 : _m.region,
|
|
134
|
+
context: '',
|
|
135
|
+
type: 'street',
|
|
136
|
+
importance: '',
|
|
137
|
+
street: (_o = data === null || data === void 0 ? void 0 : data.structured_address) === null || _o === void 0 ? void 0 : _o.street_name,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
return obj;
|
|
141
|
+
};
|
|
142
|
+
// const autoSuggestUrl = 'https://uat.addressright.co.nz/autocomplete.json?api_key=292633_xvse2ZwXyJ6gqhMV'; // Custom API used based on Core logic reference documents to get suggestions
|
|
143
|
+
const autoSuggestUrl = this.environment.coreLogicAddressApiUrl + 'autocomplete.json?api_key=' + this.environment.coreLogicAddressApikey;
|
|
144
|
+
const self = this;
|
|
145
|
+
const customSearchSource = new SearchSource({
|
|
146
|
+
placeholder: 'Type Address here ...',
|
|
147
|
+
// Provide a getSuggestions method
|
|
148
|
+
// to provide suggestions to the Search widget
|
|
149
|
+
getSuggestions: (params) => {
|
|
150
|
+
// You can request data from a
|
|
151
|
+
// third-party source to find some
|
|
152
|
+
// suggestions with provided suggestTerm
|
|
153
|
+
// the user types in the Search widget
|
|
154
|
+
return esriRequest(autoSuggestUrl, {
|
|
155
|
+
query: {
|
|
156
|
+
term: params.suggestTerm.replace(/ /g, '+'),
|
|
157
|
+
max: 10,
|
|
158
|
+
lat: view.center.latitude,
|
|
159
|
+
lon: view.center.longitude,
|
|
160
|
+
},
|
|
161
|
+
responseType: 'json',
|
|
162
|
+
}).then((results) => {
|
|
163
|
+
var _a;
|
|
164
|
+
// Return Suggestion results to display
|
|
165
|
+
// in the Search widget
|
|
166
|
+
return (_a = results === null || results === void 0 ? void 0 : results.data) === null || _a === void 0 ? void 0 : _a.map((feature) => {
|
|
167
|
+
return {
|
|
168
|
+
key: 'name',
|
|
169
|
+
text: feature === null || feature === void 0 ? void 0 : feature.label,
|
|
170
|
+
id: feature === null || feature === void 0 ? void 0 : feature.id,
|
|
171
|
+
sourceIndex: params.sourceIndex,
|
|
172
|
+
};
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
},
|
|
176
|
+
// Provide a getResults method to find
|
|
177
|
+
// results from the suggestions
|
|
178
|
+
getResults: (params) => {
|
|
179
|
+
var _a;
|
|
180
|
+
// If the Search widget passes the current location,
|
|
181
|
+
// you can use this in your own custom source
|
|
182
|
+
let query = {};
|
|
183
|
+
// You can perform a different query if a location
|
|
184
|
+
// is provided
|
|
185
|
+
if (params.location) {
|
|
186
|
+
query.lat = params.location.latitude;
|
|
187
|
+
query.lon = params.location.longitude;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
query.q = params.suggestResult.text.replace(/ /g, '+');
|
|
191
|
+
query.limit = 6;
|
|
192
|
+
}
|
|
193
|
+
if (params.suggestResult.text == '') {
|
|
194
|
+
var lat = params.location.y;
|
|
195
|
+
var lon = params.location.x;
|
|
196
|
+
view.goTo({
|
|
197
|
+
center: new Point({
|
|
198
|
+
x: lon,
|
|
199
|
+
y: lat,
|
|
200
|
+
spatialReference: {
|
|
201
|
+
wkid: 2193
|
|
202
|
+
}
|
|
203
|
+
}),
|
|
204
|
+
});
|
|
205
|
+
const location = {
|
|
206
|
+
longitude: lon,
|
|
207
|
+
latitude: lat
|
|
208
|
+
};
|
|
209
|
+
//const url = 'https://uat.addressright.co.nz/reversegeocode.json?api_key=292633_xvse2ZwXyJ6gqhMV&limit=1&formatted=1&srid=2193';
|
|
210
|
+
const url = this.environment.coreLogicAddressApiUrl + 'reversegeocode.json?api_key=' + this.environment.coreLogicAddressApikey + '&limit=1&formatted=1&srid=2193';
|
|
211
|
+
self.checkoutService.getClickGeoLocationAddress(url, location).subscribe((response) => {
|
|
212
|
+
var _a, _b, _c, _d;
|
|
213
|
+
if (response && response != undefined && response.data && response.data.length > 0) {
|
|
214
|
+
this.location.selectedAddress = (_a = response === null || response === void 0 ? void 0 : response.data[0].attributes) === null || _a === void 0 ? void 0 : _a.label;
|
|
215
|
+
//const afterSearchCompleteUrl = 'https://uat.addressright.co.nz/address.json?api_key=292633_xvse2ZwXyJ6gqhMV&id=' + response?.data[0].relationships?.address?.data?.id
|
|
216
|
+
const afterSearchCompleteUrl = this.environment.coreLogicAddressApiUrl + 'address.json?api_key=' + this.environment.coreLogicAddressApikey + '&id=' + ((_d = (_c = (_b = response === null || response === void 0 ? void 0 : response.data[0].relationships) === null || _b === void 0 ? void 0 : _b.address) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.id);
|
|
217
|
+
let query = {};
|
|
218
|
+
query.lat = lat;
|
|
219
|
+
query.lon = lon;
|
|
220
|
+
esriRequest(afterSearchCompleteUrl, { query: query, responseType: 'json' }).then((results) => {
|
|
221
|
+
var _a, _b, _c, _d, _e;
|
|
222
|
+
if (results) {
|
|
223
|
+
const feature = mapKeys(results.data);
|
|
224
|
+
const location = {
|
|
225
|
+
lon: (_a = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _a === void 0 ? void 0 : _a.coordinates[0],
|
|
226
|
+
lat: (_b = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _b === void 0 ? void 0 : _b.coordinates[1]
|
|
227
|
+
};
|
|
228
|
+
this.location = location;
|
|
229
|
+
// Parse the results of your custom search
|
|
230
|
+
this.populateData(results, location);
|
|
231
|
+
// Create a Graphic the Search widget can display
|
|
232
|
+
this.location.selectedAddress = (_c = feature === null || feature === void 0 ? void 0 : feature.properties) === null || _c === void 0 ? void 0 : _c.label;
|
|
233
|
+
view.graphics = [];
|
|
234
|
+
// Get the coordinates of the click on the view
|
|
235
|
+
const point = {
|
|
236
|
+
type: 'point',
|
|
237
|
+
x: (_d = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _d === void 0 ? void 0 : _d.coordinates[0],
|
|
238
|
+
y: (_e = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _e === void 0 ? void 0 : _e.coordinates[1],
|
|
239
|
+
};
|
|
240
|
+
const pointGraphic = new Graphic({
|
|
241
|
+
geometry: point,
|
|
242
|
+
symbol: simpleMarkerSymbol,
|
|
243
|
+
});
|
|
244
|
+
view.graphics.add(pointGraphic);
|
|
245
|
+
this.isConfirmDisabled.next(false);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}, (error) => {
|
|
250
|
+
console.log(error);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
//const afterSearchCompleteUrl = 'https://uat.addressright.co.nz/address.json?api_key=292633_xvse2ZwXyJ6gqhMV&id=' + params?.suggestResult?.id;
|
|
255
|
+
const afterSearchCompleteUrl = this.environment.coreLogicAddressApiUrl + 'address.json?api_key=' + this.environment.coreLogicAddressApikey + '&id=' + ((_a = params === null || params === void 0 ? void 0 : params.suggestResult) === null || _a === void 0 ? void 0 : _a.id);
|
|
256
|
+
return esriRequest(afterSearchCompleteUrl, {
|
|
257
|
+
query: query,
|
|
258
|
+
responseType: 'json',
|
|
259
|
+
}).then((results) => {
|
|
260
|
+
// Parse the results of your custom search
|
|
261
|
+
const data = [results.data];
|
|
262
|
+
this.isConfirmDisabled.next(false);
|
|
263
|
+
let location = {
|
|
264
|
+
lon: data[0].location.wgs84_lon,
|
|
265
|
+
lat: data[0].location.wgs84_lat
|
|
266
|
+
};
|
|
267
|
+
this.populateData(results, location);
|
|
268
|
+
const searchResults = data === null || data === void 0 ? void 0 : data.map((feature) => {
|
|
269
|
+
var _a, _b, _c, _d;
|
|
270
|
+
// Create a Graphic the Search widget can display
|
|
271
|
+
feature = mapKeys(feature);
|
|
272
|
+
this.location.selectedAddress = (_a = feature === null || feature === void 0 ? void 0 : feature.properties) === null || _a === void 0 ? void 0 : _a.label;
|
|
273
|
+
const graphic = new Graphic({
|
|
274
|
+
geometry: new Point({
|
|
275
|
+
x: (_b = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _b === void 0 ? void 0 : _b.coordinates[0],
|
|
276
|
+
y: (_c = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _c === void 0 ? void 0 : _c.coordinates[1],
|
|
277
|
+
//spatialReference: self?.view.spatialReference,
|
|
278
|
+
spatialReference: SpatialReference.WGS84,
|
|
279
|
+
}),
|
|
280
|
+
attributes: feature === null || feature === void 0 ? void 0 : feature.properties,
|
|
281
|
+
});
|
|
282
|
+
// Optionally, you can provide an extent for
|
|
283
|
+
// a point result, so the view can zoom to it
|
|
284
|
+
const buffer = geometryEngine.geodesicBuffer(graphic.geometry, 100, 'meters');
|
|
285
|
+
// Return a Search Result
|
|
286
|
+
const searchResult = {
|
|
287
|
+
extent: buffer === null || buffer === void 0 ? void 0 : buffer.extent,
|
|
288
|
+
feature: graphic,
|
|
289
|
+
name: (_d = feature === null || feature === void 0 ? void 0 : feature.properties) === null || _d === void 0 ? void 0 : _d.label.replace(/null/g, ''),
|
|
290
|
+
};
|
|
291
|
+
return searchResult;
|
|
292
|
+
});
|
|
293
|
+
// Return an array of Search Results
|
|
294
|
+
return searchResults;
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
const searchWidget = new Search({
|
|
300
|
+
view: view,
|
|
301
|
+
sources: [customSearchSource],
|
|
302
|
+
includeDefaultSources: false,
|
|
303
|
+
});
|
|
304
|
+
// Add the widget to the top-right corner of the view
|
|
305
|
+
view.ui.add(searchWidget, {
|
|
306
|
+
position: 'top-right',
|
|
307
|
+
index: 2,
|
|
308
|
+
});
|
|
309
|
+
this.view = view;
|
|
310
|
+
searchWidget.on('search-complete', (event) => {
|
|
311
|
+
});
|
|
312
|
+
searchWidget.on('select-result', (event) => {
|
|
313
|
+
});
|
|
314
|
+
view.on('click', (event) => {
|
|
315
|
+
event.stopPropagation();
|
|
316
|
+
this.isConfirmDisabled.next(false);
|
|
317
|
+
var lat = event.mapPoint.y;
|
|
318
|
+
var lon = event.mapPoint.x;
|
|
319
|
+
view.goTo({
|
|
320
|
+
center: new Point({
|
|
321
|
+
x: lon,
|
|
322
|
+
y: lat,
|
|
323
|
+
spatialReference: {
|
|
324
|
+
wkid: 2193
|
|
325
|
+
}
|
|
326
|
+
}),
|
|
327
|
+
});
|
|
328
|
+
const point = {
|
|
329
|
+
type: 'point',
|
|
330
|
+
x: lon,
|
|
331
|
+
y: lat,
|
|
332
|
+
spatialReference: {
|
|
333
|
+
wkid: 2193
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
const pointGraphic = new Graphic({
|
|
337
|
+
geometry: point,
|
|
338
|
+
symbol: simpleMarkerSymbol,
|
|
339
|
+
});
|
|
340
|
+
view.graphics = [];
|
|
341
|
+
view.graphics.add(pointGraphic);
|
|
342
|
+
const location = {
|
|
343
|
+
longitude: lon,
|
|
344
|
+
latitude: lat
|
|
345
|
+
};
|
|
346
|
+
//const url = 'https://uat.addressright.co.nz/reversegeocode.json?api_key=292633_xvse2ZwXyJ6gqhMV&limit=1&formatted=1&srid=2193';
|
|
347
|
+
const url = this.environment.coreLogicAddressApiUrl + 'reversegeocode.json?api_key=' + this.environment.coreLogicAddressApikey + '&limit=1&formatted=1&srid=2193';
|
|
348
|
+
self.checkoutService
|
|
349
|
+
.getClickGeoLocationAddress(url, location)
|
|
350
|
+
.subscribe((response) => {
|
|
351
|
+
var _a, _b, _c, _d;
|
|
352
|
+
if (response && response != undefined && response.data.length > 0) {
|
|
353
|
+
this.location.selectedAddress = (_a = response === null || response === void 0 ? void 0 : response.data[0].attributes) === null || _a === void 0 ? void 0 : _a.label;
|
|
354
|
+
//const afterSearchCompleteUrl = 'https://uat.addressright.co.nz/address.json?api_key=292633_xvse2ZwXyJ6gqhMV&id=' + response?.data[0].relationships?.address?.data?.id;
|
|
355
|
+
const afterSearchCompleteUrl = this.environment.coreLogicAddressApiUrl + 'address.json?api_key=' + this.environment.coreLogicAddressApikey + '&id=' + ((_d = (_c = (_b = response === null || response === void 0 ? void 0 : response.data[0].relationships) === null || _b === void 0 ? void 0 : _b.address) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.id);
|
|
356
|
+
let query = {};
|
|
357
|
+
query.lat = lat;
|
|
358
|
+
query.lon = lon;
|
|
359
|
+
esriRequest(afterSearchCompleteUrl, {
|
|
360
|
+
query: query,
|
|
361
|
+
responseType: 'json',
|
|
362
|
+
}).then((results) => {
|
|
363
|
+
var _a, _b, _c, _d, _e;
|
|
364
|
+
if (results) {
|
|
365
|
+
const feature = mapKeys(results.data);
|
|
366
|
+
const location = {
|
|
367
|
+
lon: (_a = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _a === void 0 ? void 0 : _a.coordinates[0],
|
|
368
|
+
lat: (_b = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _b === void 0 ? void 0 : _b.coordinates[1]
|
|
369
|
+
};
|
|
370
|
+
this.location = location;
|
|
371
|
+
// Parse the results of your custom search
|
|
372
|
+
this.populateData(results, location);
|
|
373
|
+
// Create a Graphic the Search widget can display
|
|
374
|
+
this.location.selectedAddress = (_c = feature === null || feature === void 0 ? void 0 : feature.properties) === null || _c === void 0 ? void 0 : _c.label;
|
|
375
|
+
// view.graphics = [];
|
|
376
|
+
// Get the coordinates of the click on the view
|
|
377
|
+
const point = {
|
|
378
|
+
type: 'point',
|
|
379
|
+
x: (_d = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _d === void 0 ? void 0 : _d.coordinates[0],
|
|
380
|
+
y: (_e = feature === null || feature === void 0 ? void 0 : feature.geometry) === null || _e === void 0 ? void 0 : _e.coordinates[1],
|
|
381
|
+
};
|
|
382
|
+
const pointGraphic = new Graphic({
|
|
383
|
+
geometry: point,
|
|
384
|
+
symbol: simpleMarkerSymbol,
|
|
385
|
+
});
|
|
386
|
+
// view.graphics.add(pointGraphic);
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
}, (error) => {
|
|
391
|
+
console.log(error);
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
return this.view.when();
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
onConfirmedClick() {
|
|
398
|
+
this.confirmedAddress = this.location.selectedAddress.replace(/null/g, '');
|
|
399
|
+
this.updateNewAddress.emit(this.location);
|
|
400
|
+
this.showAddress.next(true);
|
|
401
|
+
}
|
|
402
|
+
populateData(results, location) {
|
|
403
|
+
var _a, _b, _c, _d, _e;
|
|
404
|
+
const data = results.data;
|
|
405
|
+
const newAddress = {
|
|
406
|
+
line1: (_a = data.formatted_address) === null || _a === void 0 ? void 0 : _a.line1,
|
|
407
|
+
line2: (_b = data.formatted_address) === null || _b === void 0 ? void 0 : _b.line2,
|
|
408
|
+
town: (_c = data.structured_address) === null || _c === void 0 ? void 0 : _c.town,
|
|
409
|
+
district: (_d = data.structured_address) === null || _d === void 0 ? void 0 : _d.suburb,
|
|
410
|
+
postalCode: (_e = data.structured_address) === null || _e === void 0 ? void 0 : _e.postcode,
|
|
411
|
+
longitude: location.lon,
|
|
412
|
+
latitude: location.lat,
|
|
413
|
+
};
|
|
414
|
+
newAddress.selectedAddress = this.location.selectedAddress;
|
|
415
|
+
this.location = newAddress;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
AddNewAddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddNewAddressComponent, deps: [{ token: i1.CustomCheckoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
419
|
+
AddNewAddressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: AddNewAddressComponent, selector: "app-add-new-address", inputs: { confirmedAddress: "confirmedAddress" }, outputs: { updateNewAddress: "updateNewAddress" }, viewQueries: [{ propertyName: "mapViewEl", first: true, predicate: ["mapViewNode"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"corelogic-map\" #mapViewNode></div>\r\n<div class=\"confirm-cls\">\r\n <button type=\"button\" [disabled]=\"isConfirmDisabled | async\" (click)=\"onConfirmedClick()\" class=\"btn primary-button mt-4\">Confirm</button>\r\n <label *ngIf=\"showAddress | async\" class=\"form-label\">Confirmed Delivery Address </label>\r\n <div class=\"map-selected-address\" *ngIf=\"showAddress | async\" id=\"address\">\r\n {{confirmedAddress}}</div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://js.arcgis.com/4.25/@arcgis/core/assets/esri/themes/light/main.css\";@media screen and (min-width: 1366px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: 1.063rem;--fontsize17-5: 1.1rem;--fontsize18: 1.125rem;--fontsize18-4: 1.5rem;--fontsize20: 1.25rem;--fontsize21: 1.313rem;--fontsize22: 1.375rem;--fontsize23: 1.438rem;--fontsize24: 1.5rem;--fontsize26: 1.625rem;--fontsize28: 1.75rem;--fontsize30: 1.625rem;--fontsize32: 2rem;--fontsize34: 2.125rem;--fontsize36: 2rem;--fontsize40: 2.25rem;--fontsize46: 2.875rem;--fontsize80: 5rem}}@media screen and (max-width: 1365px) and (min-width: 768px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2.875rem;--fontsize80: 3.5rem}}@media screen and (max-width: 767px){:root{--fontsize12: .75rem;--fontsize14: .875rem;--fontsize16: 1rem;--fontsize16-5: .77rem;--fontsize17: .9rem;--fontsize17-5: 1rem;--fontsize18: .875rem;--fontsize19: .938rem;--fontsize20: 1rem;--fontsize21: 1.063rem;--fontsize22: 1.125rem;--fontsize23: 1.188rem;--fontsize24: 1rem;--fontsize26: 1.25rem;--fontsize28: 1.5rem;--fontsize30: 1.25rem;--fontsize32: 1.75rem;--fontsize34: 1.875rem;--fontsize36: 1.625rem;--fontsize40: 2.5rem;--fontsize46: 2rem;--fontsize80: 2.5rem}}@font-face{font-family:icomoon;font-weight:400;src:url(../assets/fonts/icomoon.ttf) format(\"ttf\"),url(../assets/fonts/icomoon.woff) format(\"woff\");font-weight:normal;font-style:normal;font-display:swap}@font-face{font-family:\"Arial Regular\";src:url(../assets/fonts/arial-webfont.woff) format(\"woff\"),url(../assets/fonts/arial-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Bold\";src:url(../assets/fonts/arialbold-webfont.woff) format(\"woff\"),url(../assets/fonts/arialbold-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Arial Black\";src:url(../assets/fonts/arialblack-webfont.woff) format(\"woff\"),url(../assets/fonts/arialblack-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Reqular\";src:url(../assets/fonts/helveticaneue.woff) format(\"woff\"),url(../assets/fonts/helveticaneue.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Thin\";src:url(../assets/fonts/helveticaneuethin-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuethin-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}@font-face{font-family:\"Helvetica Neue Medium\";src:url(../assets/fonts/helveticaneuemedium-webfont.woff) format(\"woff\"),url(../assets/fonts/helveticaneuemedium-webfont.woff2) format(\"woff2\");font-weight:normal;font-style:normal}[class*=\" icon-\"],[class^=icon-]{font-family:icomoon!important;font-feature-settings:normal;font-variant:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;text-transform:none;font-display:swap}.icon-right:before{content:\"\\e902\"}.icon-materials:before{content:\"\\e900\"}.icon-natural-lighting:before{content:\"\\e90a\"}.icon-rainwater:before{content:\"\\e901\"}.icon-roofing:before{content:\"\\e90b\"}.icon-flashing{position:relative;display:inline-block;height:32px;text-align:center;width:32px}.icon-flashing:before,.mainnav-link-level-2.show .navTagChild .icon-flashing:before{content:url(../assets/images/icon-flashing-white.svg);height:20px;width:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);line-height:15px}li.megamenuSubChild:hover .icon-flashing:before{content:url(../assets/images/icon-flashing-black.svg)}.icon-structural:before{content:\"\\e90c\"}.icon-accessories-old .path1:before{content:\"\\e903\"}.icon-accessories-old .path2:before{margin-left:-1em;content:\"\\e904\"}.icon-accessories-old .path3:before{margin-left:-1em;content:\"\\e905\"}.icon-cladding-old .path1:before{content:\"\\e90d\"}.icon-cladding-old .path2:before{margin-left:-1em;content:\"\\e90e\"}.icon-close:before{content:\"\\e90f\"}.icon-message:before{content:\"\\e910\"}.icon-search .path1:before{content:\"\\e906\"}.icon-search .path2:before{content:\"\\e907\"}.icon-search .path3:before{margin-left:-1.0156em;content:\"\\e908\"}.icon-summary:before{content:\"\\e911\"}.icon-branch:before{content:\"\\e912\"}.icon-delivery:before{content:\"\\e913\"}.icon-downloads:before{content:\"\\e909\"}.icon-drawings:before{content:\"\\e914\"}.icon-full:before{content:\"\\e915\"}.icon-manual:before{content:\"\\e916\"}.icon-payment:before{content:\"\\e917\"}.icon-empty .path1:before{content:\"\\e918\"}.icon-empty .path2:before{margin-left:-1em;content:\"\\e919\"}.icon-empty .path3:before{margin-left:-1em;content:\"\\e91a\"}.icon-product-overview:before{content:\"\\e91b\"}.icon-arrows:before{content:\"\\e91c\"}.icon-selected:before{content:\"\\e91d\"}.icon-accessories:before{content:\"\\e91b\"}.icon-cladding:before{content:\"\\e91e\"}.icon-Triangle:before{content:\"\\e91f\"}.icon-home:before{content:\"\\e920\"}.icon-faq:before{content:\"\\e921\"}.icon-temperature:before{content:\"\\e922\"}body header{font-family:\"Arial Regular\",sans-serif}header{background-color:#1d1d1b;position:sticky;top:0;background-size:100% 25%!important;background-repeat:no-repeat;z-index:10}header .header{max-width:100%;padding:0}header cx-banner cx-media img{margin-top:.7rem;margin-bottom:0}header label{display:inline-flex}header .SiteLinks{height:52px;display:flex;align-items:center;justify-content:space-between;padding-top:5px;padding-bottom:5px}header .SiteLinks cx-paragraph p{color:#fff;font-size:var(--fontsize16);line-height:var(--fontsize16);margin-bottom:0}header .SiteLinks cx-paragraph{font-size:var(--fontsize16)}header .SiteLinks app-account-dropdown,header .SiteLinks app-find-store{width:calc(25% - 25px);max-width:328px;margin-right:25px}header .SiteLinks app-contact-us{width:calc(20% - 25px);max-width:100px;margin-left:auto}header .SiteLinks app-custom-mini-cart{width:10%}header .SiteLinks .preferenceLink{margin-left:auto}header .SiteLinks .preferenceLink cx-generic-link{margin:0}header .SiteLinks .preferenceLink cx-generic-link cx-media img{height:22px;margin:0}header .SiteLogo .storeLogo{position:absolute;z-index:99;left:40px;bottom:10px}header .SiteLogo .homeLogo{max-width:28px;height:28px;position:absolute;z-index:99;bottom:47px}header .NavigationBar{flex:70%;background-color:#b61828;min-height:40px;display:flex;align-items:center;position:relative;z-index:10}header .logoutMenu{margin-top:0!important}header .logoutMenu li{cursor:pointer;background-color:#4c4c4c;color:#fff}header .logoutMenu li:hover{text-decoration:underline;background-color:#4c4c4c}header .MarketingContext{width:100%;margin:auto}.customer-service-icon{cursor:pointer}.helpSupport{width:20rem;border:0;margin-top:.5rem!important;transform:translate(-42%,36px)!important;padding:1rem 1rem 0;background-color:#393939;color:#fff;top:0}.helpSupport .arrow-up{position:absolute;top:-8px;right:44%;width:0;height:0;border-left:15px solid rgba(0,0,0,0);border-right:15px solid rgba(0,0,0,0);border-bottom:15px solid #393939}.helpSupport .contact-us-info .heading{font-family:\"Arial Bold\",sans-serif}.helpSupport .contact-us-info .detail{font-size:var(--fontsize14);line-height:2rem}.helpSupport .contact-us-info .detail .service-icon{height:20px;width:20px;margin-right:10px}.helpSupport .contact-us-info .contactLink a{font-size:var(--fontsize14);text-decoration:underline;text-transform:uppercase}.helpSupport .contact-us-info a{color:#fff;text-decoration:none}.helpSupport .contact-us-info a:hover{text-decoration:underline}.pageTitle{font-family:\"Helvetica Neue Regular\",sans-serif;font-size:var(--fontsize54)}#visualization-container{text-align:center;margin:0 auto}#cds-viewer-container-3d{width:320px;height:200px}#cds-viewer-container-2d{width:320px;height:200px}[aria-label=Close]{cursor:pointer}cx-media.is-missing{background:url(./assets/images/search-noimage.svg);background-size:cover;background-position:center;background-repeat:no-repeat}cx-global-message{position:fixed;top:9rem;width:100%;z-index:13}@media screen and (max-width: 991px){cx-global-message{top:3.75rem}cx-storefront header{background-color:#b61828}cx-storefront header cx-banner cx-media img{margin:auto}cx-storefront header .SiteLogo{width:100%;max-width:211px;margin:auto;padding-left:30px;box-sizing:border-box}cx-storefront header .SiteLogo .storeLogo{position:unset}cx-storefront header .SearchBox{margin:14px 0 10px;width:30px}cx-storefront header .SiteLinks{background-color:transparent;width:110px;margin:auto 25px auto 0}cx-storefront header .SiteLinks app-account-dropdown,cx-storefront header .SiteLinks app-find-store,cx-storefront header .SiteLinks app-contact-us,cx-storefront header .SiteLinks cx-paragraph,cx-storefront header .SiteLinks .preferenceLink{display:none}cx-storefront header .SiteLinks app-custom-mini-cart,cx-storefront header .SiteLinks app-custom-user-account{width:35px}cx-storefront header.is-expanded{overflow-y:auto;position:fixed;bottom:0;top:0;width:calc(100% - 99px)}cx-storefront header.is-expanded .header{background-color:#b61828;margin-left:0}cx-storefront header.is-expanded .PreHeader{position:absolute;right:15px;top:15px}cx-storefront header.is-expanded .SearchBox{display:none}cx-storefront header.is-expanded .SiteLogo{position:absolute;top:25px;z-index:9}cx-storefront header.is-expanded .SiteLinks{background-color:#1d1d1b;width:100%;margin:15px auto 15px 0;height:unset;padding:15px;max-width:100%;position:relative;z-index:9;top:60px}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-account-dropdown{width:100%;max-width:100%}cx-storefront header.is-expanded .SiteLinks app-find-store{width:50%;max-width:328px;min-width:328px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-right:15px;margin-left:auto;width:115px;max-width:unset}cx-storefront header.is-expanded .navigation{position:relative;top:45px}cx-storefront header.is-expanded:before{background-color:#0000004d;right:0;content:\"\";position:fixed;z-index:2;top:0;bottom:0;height:100vh;width:99px}cx-storefront header.is-expanded:after{background-color:transparent}}@media screen and (max-width: 576px){cx-storefront header .SiteLogo{max-width:80px}cx-storefront header .SiteLogo .storeLogo{display:none}cx-storefront header .searchBox{height:45px}cx-storefront header.is-expanded{width:100%}cx-storefront header.is-expanded .header,cx-storefront header.is-expanded .navigation{width:100%}cx-storefront header.is-expanded .SiteLogo{max-width:211px!important}cx-storefront header.is-expanded .SiteLogo .storeLogo{display:block}cx-storefront header.is-expanded .SiteLinks{max-width:100%;width:100%}cx-storefront header.is-expanded .SiteLinks app-account-dropdown,cx-storefront header.is-expanded .SiteLinks app-find-store,cx-storefront header.is-expanded .SiteLinks app-contact-us,cx-storefront header.is-expanded .SiteLinks cx-paragraph,cx-storefront header.is-expanded .SiteLinks .preferenceLink{display:block}cx-storefront header.is-expanded .SiteLinks app-custom-mini-cart,cx-storefront header.is-expanded .SiteLinks app-custom-user-account{display:none}cx-storefront header.is-expanded .SiteLinks app-find-store{width:100%;max-width:100%;margin-bottom:10px}cx-storefront header.is-expanded .SiteLinks app-contact-us{margin-left:0}cx-storefront header.is-expanded .SiteLinks cx-paragraph{margin-left:auto}cx-storefront header.is-expanded:before{display:none}.pageTitle{font-size:28px}}::ng-deep .OrderCheckoutTemplate .esri-search-result-renderer .esri-search-result-renderer__more-results-item{margin-bottom:0;margin-top:20px}::ng-deep .OrderCheckoutTemplate .confirm-cls{align-items:flex-end;display:flex;flex-direction:column}::ng-deep .OrderCheckoutTemplate .corelogic-map{height:450px;margin-top:1rem}::ng-deep .OrderCheckoutTemplate .form-label{align-self:flex-start;font-size:var(--fontsize16);font-family:\"Arial Bold\",sans-serif}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i2.AsyncPipe } });
|
|
420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddNewAddressComponent, decorators: [{
|
|
421
|
+
type: Component,
|
|
422
|
+
args: [{
|
|
423
|
+
selector: 'app-add-new-address',
|
|
424
|
+
templateUrl: './add-new-address.component.html',
|
|
425
|
+
styleUrls: ['./add-new-address.component.scss'],
|
|
426
|
+
}]
|
|
427
|
+
}], ctorParameters: function () { return [{ type: i1.CustomCheckoutService }]; }, propDecorators: { mapViewEl: [{
|
|
428
|
+
type: ViewChild,
|
|
429
|
+
args: ['mapViewNode', { static: true }]
|
|
430
|
+
}], confirmedAddress: [{
|
|
431
|
+
type: Input
|
|
432
|
+
}], updateNewAddress: [{
|
|
433
|
+
type: Output
|
|
434
|
+
}] } });
|
|
435
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW5ldy1hZGRyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J1aWxkaW5ncHJvZHVjdF9saWJyYXJ5L3NyYy9saWIvY2hlY2tvdXQvYWRkLW5ldy1hZGRyZXNzL2FkZC1uZXctYWRkcmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idWlsZGluZ3Byb2R1Y3RfbGlicmFyeS9zcmMvbGliL2NoZWNrb3V0L2FkZC1uZXctYWRkcmVzcy9hZGQtbmV3LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQU92QyxNQUFNLE9BQU8sc0JBQXNCO0lBZ0JqQyxZQUNTLGVBQXNDO1FBQXRDLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtRQWZ4QyxjQUFTLEdBQVEsMEJBQTBCLENBQUM7UUFHbkQsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN2RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELFFBQUcsR0FBUSxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLGdCQUFXLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUMsNkJBQTZCO1FBQzVFLGNBQVMs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LEtBQUs7Z0JBV0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBsb2FkTW9kdWxlcyB9IGZyb20gJ2VzcmktbG9hZGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEN1c3RvbUNoZWNrb3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoZWNrb3V0LnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtbmV3LWFkZHJlc3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbmV3LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FkZC1uZXctYWRkcmVzcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkTmV3QWRkcmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnbWFwVmlld05vZGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIG1hcFZpZXdFbCE6IEVsZW1lbnRSZWY7XHJcbiAgcHVibGljIG1hcmtlclVybDogYW55ID0gJ2Fzc2V0cy9pbWFnZXMvbWFya2VyLnN2Zyc7XHJcbiAgdmlldzogYW55O1xyXG4gIEBJbnB1dCgpIGNvbmZpcm1lZEFkZHJlc3M6IGFueTtcclxuICBsb2NhdGlvbjogYW55ID0ge307XHJcbiAgaXNDb25maXJtRGlzYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNob3dBZGRyZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgZW52OiBhbnkgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbnYnKTtcclxuICBlbnZpcm9ubWVudCA6IGFueSA9IEpTT04ucGFyc2UodGhpcy5lbnYpO1xyXG4gIGFwaWdlZV91cmwgPSB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0FwaVVybDsgLy8gUFJPRDogJ2FwaS5jb3JlbG9naWMuYXNpYSdcclxuICBjbGllbnRfaWQgPSB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0NsaWVudElkO1xyXG4gIGNsaWVudF9zZWNyZXQgPSB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0NsaWVudFNlY3JldDtcclxuICBjdXJyZW50UG9zaXRpb246IGFueTtcclxuICB0b2tlbl91cmwgPSBgaHR0cHM6Ly8ke3RoaXMuYXBpZ2VlX3VybH0vYWNjZXNzL29hdXRoL3Rva2VuP2NsaWVudF9pZD0ke3RoaXMuY2xpZW50X2lkfSZjbGllbnRfc2VjcmV0PSR7dGhpcy5jbGllbnRfc2VjcmV0fSZncmFudF90eXBlPWNsaWVudF9jcmVkZW50aWFsc2A7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZU5ld0FkZHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjaGVja291dFNlcnZpY2U6IEN1c3RvbUNoZWNrb3V0U2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24gPT4ge1xyXG4gICAgICBpZiAocG9zaXRpb24gJiYgcG9zaXRpb24uY29vcmRzKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbi5jb29yZHM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuY29uZmlybWVkQWRkcmVzcyAhPSAnJykge1xyXG4gICAgICB0aGlzLnNob3dBZGRyZXNzLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRUb2tlbih0aGlzLnRva2VuX3VybCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgIGNvbnN0IHRva2VuID0gJ0ViVUltMU0xM1N3dEdtZE5hRXN2TVE4ejdsN3pVNVpYMGFZbld1RUVuQkcxVllxUXFQUHg4Y2xnVExjdVlTRGQyWEpwQmVuckRCUHctTHRPU0NFZkJiWXE5SnNIdWR4NW9nMTlLb3dvTnpRTHNCUWdnRllZeW9LODB4aV9XQ2l5dlFETHBNaWdYVmZPeDhpanFvaV9GQS4uJyAvLyByZXNwb25zZT8uYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgIHRoaXMubG9hZE1hcChyZXNwb25zZS5hY2Nlc3NfdG9rZW4pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgLy8gVGhlIG1hcCBoYXMgYmVlbiBpbml0aWFsaXplZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRNYXAodG9rZW46IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm1hcFZpZXdFbC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGNvbnN0IHN0cmVldG1hcFVSTCA9IHRoaXMuZW52aXJvbm1lbnQuY29yZUxvZ2ljU3RyZWV0TWFwVXJsO1xyXG4gICAgLy8gICAvLyBVc2luZyBOWlRNIHNwYXRpYWwgcmVmZXJlbmNlIC0gdGhlIG9wdGlvbiB0byBzd2l0Y2ggdG8gV0dTODQgKGxhdC9sb25nKSBpcyBhdmFpbGFibGUgYXMgYW4gYWx0ZXJuYXRlXHJcblxyXG4gICAgY29uc3QgW1xyXG4gICAgICBNYXBWaWV3LFxyXG4gICAgICBQb2ludCxcclxuICAgICAgV2ViTWFwLFxyXG4gICAgICBTZWFyY2gsXHJcbiAgICAgIFNlYXJjaFNvdXJjZSxcclxuICAgICAgZXNyaVJlcXVlc3QsXHJcbiAgICAgIEdyYXBoaWMsXHJcbiAgICAgIGdlb21ldHJ5RW5naW5lLFxyXG4gICAgICBTcGF0aWFsUmVmZXJlbmNlLFxyXG4gICAgICBUaWxlTGF5ZXIsXHJcbiAgICAgIEJhc2VtYXAsXHJcbiAgICAgIGVzcmlDb25maWcsXHJcbiAgICBdID0gYXdhaXQgbG9hZE1vZHVsZXMoW1xyXG4gICAgICAnZXNyaS92aWV3cy9NYXBWaWV3JyxcclxuICAgICAgJ2VzcmkvZ2VvbWV0cnkvUG9pbnQnLFxyXG4gICAgICAnZXNyaS9XZWJNYXAnLFxyXG4gICAgICAnZXNyaS93aWRnZXRzL1NlYXJjaCcsXHJcbiAgICAgICdlc3JpL3dpZGdldHMvU2VhcmNoL1NlYXJjaFNvdXJjZScsXHJcbiAgICAgICdlc3JpL3JlcXVlc3QnLFxyXG4gICAgICAnZXNyaS9HcmFwaGljJyxcclxuICAgICAgJ2VzcmkvZ2VvbWV0cnkvZ2VvbWV0cnlFbmdpbmUnLFxyXG4gICAgICAnZXNyaS9nZW9tZXRyeS9TcGF0aWFsUmVmZXJlbmNlJyxcclxuICAgICAgXCJlc3JpL2xheWVycy9UaWxlTGF5ZXJcIixcclxuICAgICAgXCJlc3JpL0Jhc2VtYXBcIixcclxuICAgICAgJ2VzcmkvY29uZmlnJyxcclxuICAgIF0pO1xyXG4gICAgXHJcbiAgICAvLyBDcmVhdGUgdGhlIE1hcCBcclxuICAgIGNvbnN0IGNlbnRlclBvaW50ID0gbmV3IFBvaW50KHtcclxuICAgICAgeDogMTc2MjA3NC44MzE5NTY3NjI2LFxyXG4gICAgICB5OiA1OTEzNDExLjA0NjQ2MjE4MixcclxuICAgICAgc3BhdGlhbFJlZmVyZW5jZToge1xyXG4gICAgICAgIHdraWQ6IDIxOTMsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGVzcmlDb25maWcucmVxdWVzdC5pbnRlcmNlcHRvcnMucHVzaCh7XHJcbiAgICAgIHVybHM6IFtzdHJlZXRtYXBVUkxdLCAvLyBzZXQgdGhlIGB1cmxzYCBwcm9wZXJ0eSB0byB0aGUgQXBpZ2VlIFVSTHNcclxuICAgICAgYmVmb3JlOiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocGFyYW1zLnVybC5pbmNsdWRlcyh0aGlzLmFwaWdlZV91cmwpKSB7XHJcbiAgICAgICAgICBwYXJhbXMucmVxdWVzdE9wdGlvbnMuaGVhZGVycyA9IHBhcmFtcy5yZXF1ZXN0T3B0aW9ucy5oZWFkZXJzIHx8IHt9O1xyXG4gICAgICAgICAgcGFyYW1zLnJlcXVlc3RPcHRpb25zLmhlYWRlcnNbJ2F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xyXG4gICAgICAgICAgcGFyYW1zLnJlcXVlc3RPcHRpb25zLmhlYWRlcnNbJ0FjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyddID0gJ2F1dGhvcml6YXRpb24nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gRGVmYXVsdCBiYXNlIGxheWVyIC0gc3RyZWV0bWFwXHJcbiAgICBsZXQgc3RyZWV0bWFwID0gbmV3IFRpbGVMYXllcih7XHJcbiAgICAgIHVybDogc3RyZWV0bWFwVVJMXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDcmVhdGUgYmFzZW1hcCBsYXllcnNcclxuICAgIGNvbnN0IHN0cmVldG1hcF9iYXNlID0gbmV3IEJhc2VtYXAoe1xyXG4gICAgICBiYXNlTGF5ZXJzOiBbc3RyZWV0bWFwXSxcclxuICAgICAgdGl0bGU6IFwiU3RyZWV0bWFwXCJcclxuICAgIH0pO1xyXG4gICAgLy8gZXNyaSBtYXAgXHJcbiAgICBjb25zdCB3ZWJtYXAgPSBuZXcgV2ViTWFwKHtcclxuICAgICAgYmFzZW1hcDogJ3NhdGVsbGl0ZScsIC8vaHlicmlkLCBzYXRlbGxpdGUgLy8gd2hpY2ggbWFwIHZpZXcgd2UgaGF2ZSB0byB1c2UgP1xyXG4gICAgfSk7XHJcbiAgICAvLyBDcmVhdGUgdGhlIG1hcCAtIHN0cmVldG1hcCBhcyBkZWZhdWx0IGJhc2VtYXBcclxuICAgIGNvbnN0IG15TWFwID0gbmV3IFdlYk1hcCh7XHJcbiAgICAgIGJhc2VtYXA6IHN0cmVldG1hcF9iYXNlXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB2aWV3ID0gbmV3IE1hcFZpZXcoe1xyXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lcixcclxuICAgICAgbWFwOiBteU1hcCxcclxuICAgICAgY2VudGVyOiBjZW50ZXJQb2ludCxcclxuICAgICAgem9vbTogOCxcclxuICAgICAgY29uc3RyYWludHM6IHtcclxuICAgICAgICBzbmFwVG9ab29tOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHNpbXBsZU1hcmtlclN5bWJvbCA9IHtcclxuICAgICAgdHlwZTogJ3BpY3R1cmUtbWFya2VyJyxcclxuICAgICAgdXJsOiB0aGlzLm1hcmtlclVybCxcclxuICAgICAgd2lkdGg6IDIxLFxyXG4gICAgICBoZWlnaHQ6IDMwLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBtYXBLZXlzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxyXG4gICAgICAgIGdlb21ldHJ5OiB7XHJcbiAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxyXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtkYXRhPy5sb2NhdGlvbj8ud2dzODRfbG9uLCBkYXRhPy5sb2NhdGlvbj8ud2dzODRfbGF0XSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgIGxhYmVsOlxyXG4gICAgICAgICAgICBkYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcz8ubGluZTEgK1xyXG4gICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICBkYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcz8ubGluZTIgK1xyXG4gICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICBkYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcz8ubGluZTMgK1xyXG4gICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICBkYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcz8ubGluZTQsXHJcbiAgICAgICAgICBzY3JvcmU6IDAsXHJcbiAgICAgICAgICBpZDogZGF0YT8ucmVmZXJlbmNlcz8uaWQsXHJcbiAgICAgICAgICBuYW1lOiBkYXRhPy5mb3JtYXR0ZWRfYWRkcmVzcz8ubGluZTEsXHJcbiAgICAgICAgICBwb3N0Y29kZTogZGF0YT8uc3RydWN0dXJlZF9hZGRyZXNzPy5wb3N0Y29kZSxcclxuICAgICAgICAgIGNpdHljb2RlOiAnJyxcclxuICAgICAgICAgIHg6IGRhdGE/LmxvY2F0aW9uPy53Z3M4NF9sb24sXHJcbiAgICAgICAgICB5OiBkYXRhPy5sb2NhdGlvbj8ud2dzODRfbGF0LFxyXG4gICAgICAgICAgY2l0eTogZGF0YT8uc3RydWN0dXJlZF9hZGRyZXNzPy5yZWdpb24sXHJcbiAgICAgICAgICBjb250ZXh0OiAnJyxcclxuICAgICAgICAgIHR5cGU6ICdzdHJlZXQnLFxyXG4gICAgICAgICAgaW1wb3J0YW5jZTogJycsXHJcbiAgICAgICAgICBzdHJlZXQ6IGRhdGE/LnN0cnVjdHVyZWRfYWRkcmVzcz8uc3RyZWV0X25hbWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH07XHJcblxyXG4gICAvLyBjb25zdCBhdXRvU3VnZ2VzdFVybCA9ICdodHRwczovL3VhdC5hZGRyZXNzcmlnaHQuY28ubnovYXV0b2NvbXBsZXRlLmpzb24/YXBpX2tleT0yOTI2MzNfeHZzZTJad1h5SjZncWhNVic7IC8vIEN1c3RvbSBBUEkgdXNlZCBiYXNlZCBvbiBDb3JlIGxvZ2ljIHJlZmVyZW5jZSBkb2N1bWVudHMgdG8gZ2V0IHN1Z2dlc3Rpb25zXHJcbiAgICBjb25zdCBhdXRvU3VnZ2VzdFVybCA9IHRoaXMuZW52aXJvbm1lbnQuY29yZUxvZ2ljQWRkcmVzc0FwaVVybCArICdhdXRvY29tcGxldGUuanNvbj9hcGlfa2V5PScgKyB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0FkZHJlc3NBcGlrZXk7XHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICBjb25zdCBjdXN0b21TZWFyY2hTb3VyY2UgPSBuZXcgU2VhcmNoU291cmNlKHtcclxuICAgICAgcGxhY2Vob2xkZXI6ICdUeXBlIEFkZHJlc3MgaGVyZSAuLi4nLFxyXG4gICAgICAvLyBQcm92aWRlIGEgZ2V0U3VnZ2VzdGlvbnMgbWV0aG9kXHJcbiAgICAgIC8vIHRvIHByb3ZpZGUgc3VnZ2VzdGlvbnMgdG8gdGhlIFNlYXJjaCB3aWRnZXRcclxuICAgICAgZ2V0U3VnZ2VzdGlvbnM6IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIFlvdSBjYW4gcmVxdWVzdCBkYXRhIGZyb20gYVxyXG4gICAgICAgIC8vIHRoaXJkLXBhcnR5IHNvdXJjZSB0byBmaW5kIHNvbWVcclxuICAgICAgICAvLyBzdWdnZXN0aW9ucyB3aXRoIHByb3ZpZGVkIHN1Z2dlc3RUZXJtXHJcbiAgICAgICAgLy8gdGhlIHVzZXIgdHlwZXMgaW4gdGhlIFNlYXJjaCB3aWRnZXRcclxuICAgICAgICByZXR1cm4gZXNyaVJlcXVlc3QoYXV0b1N1Z2dlc3RVcmwsIHtcclxuICAgICAgICAgIHF1ZXJ5OiB7XHJcbiAgICAgICAgICAgIHRlcm06IHBhcmFtcy5zdWdnZXN0VGVybS5yZXBsYWNlKC8gL2csICcrJyksXHJcbiAgICAgICAgICAgIG1heDogMTAsXHJcbiAgICAgICAgICAgIGxhdDogdmlldy5jZW50ZXIubGF0aXR1ZGUsXHJcbiAgICAgICAgICAgIGxvbjogdmlldy5jZW50ZXIubG9uZ2l0dWRlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgIH0pLnRoZW4oKHJlc3VsdHM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gUmV0dXJuIFN1Z2dlc3Rpb24gcmVzdWx0cyB0byBkaXNwbGF5XHJcbiAgICAgICAgICAvLyBpbiB0aGUgU2VhcmNoIHdpZGdldFxyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdHM/LmRhdGE/Lm1hcCgoZmVhdHVyZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAga2V5OiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgdGV4dDogZmVhdHVyZT8ubGFiZWwsXHJcbiAgICAgICAgICAgICAgaWQ6IGZlYXR1cmU/LmlkLFxyXG4gICAgICAgICAgICAgIHNvdXJjZUluZGV4OiBwYXJhbXMuc291cmNlSW5kZXgsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLy8gUHJvdmlkZSBhIGdldFJlc3VsdHMgbWV0aG9kIHRvIGZpbmRcclxuICAgICAgLy8gcmVzdWx0cyBmcm9tIHRoZSBzdWdnZXN0aW9uc1xyXG4gICAgICBnZXRSZXN1bHRzOiAocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBJZiB0aGUgU2VhcmNoIHdpZGdldCBwYXNzZXMgdGhlIGN1cnJlbnQgbG9jYXRpb24sXHJcbiAgICAgICAgLy8geW91IGNhbiB1c2UgdGhpcyBpbiB5b3VyIG93biBjdXN0b20gc291cmNlXHJcbiAgICAgICAgbGV0IHF1ZXJ5OiBhbnkgPSB7fTtcclxuICAgICAgICAvLyBZb3UgY2FuIHBlcmZvcm0gYSBkaWZmZXJlbnQgcXVlcnkgaWYgYSBsb2NhdGlvblxyXG4gICAgICAgIC8vIGlzIHByb3ZpZGVkXHJcbiAgICAgICAgaWYgKHBhcmFtcy5sb2NhdGlvbikge1xyXG4gICAgICAgICAgcXVlcnkubGF0ID0gcGFyYW1zLmxvY2F0aW9uLmxhdGl0dWRlO1xyXG4gICAgICAgICAgcXVlcnkubG9uID0gcGFyYW1zLmxvY2F0aW9uLmxvbmdpdHVkZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcXVlcnkucSA9IHBhcmFtcy5zdWdnZXN0UmVzdWx0LnRleHQucmVwbGFjZSgvIC9nLCAnKycpO1xyXG4gICAgICAgICAgcXVlcnkubGltaXQgPSA2O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyYW1zLnN1Z2dlc3RSZXN1bHQudGV4dCA9PSAnJykge1xyXG4gICAgICAgICAgdmFyIGxhdCA9IHBhcmFtcy5sb2NhdGlvbi55O1xyXG4gICAgICAgICAgdmFyIGxvbiA9IHBhcmFtcy5sb2NhdGlvbi54O1xyXG5cclxuICAgICAgICAgIHZpZXcuZ29Ubyh7XHJcbiAgICAgICAgICAgIGNlbnRlcjogbmV3IFBvaW50KHtcclxuICAgICAgICAgICAgICB4OiBsb24sXHJcbiAgICAgICAgICAgICAgeTogbGF0LFxyXG4gICAgICAgICAgICAgIHNwYXRpYWxSZWZlcmVuY2U6IHtcclxuICAgICAgICAgICAgICAgIHdraWQ6IDIxOTNcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHtcclxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBsb24sXHJcbiAgICAgICAgICAgIGxhdGl0dWRlOiBsYXRcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vY29uc3QgdXJsID0gJ2h0dHBzOi8vdWF0LmFkZHJlc3NyaWdodC5jby5uei9yZXZlcnNlZ2VvY29kZS5qc29uP2FwaV9rZXk9MjkyNjMzX3h2c2UyWndYeUo2Z3FoTVYmbGltaXQ9MSZmb3JtYXR0ZWQ9MSZzcmlkPTIxOTMnO1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5lbnZpcm9ubWVudC5jb3JlTG9naWNBZGRyZXNzQXBpVXJsICsgJ3JldmVyc2VnZW9jb2RlLmpzb24/YXBpX2tleT0nKyB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0FkZHJlc3NBcGlrZXkgKyAnJmxpbWl0PTEmZm9ybWF0dGVkPTEmc3JpZD0yMTkzJzsgICAgICAgICBcclxuICAgICAgICAgICBzZWxmLmNoZWNrb3V0U2VydmljZS5nZXRDbGlja0dlb0xvY2F0aW9uQWRkcmVzcyh1cmwsIGxvY2F0aW9uKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9jYXRpb24uc2VsZWN0ZWRBZGRyZXNzID0gcmVzcG9uc2U/LmRhdGFbMF0uYXR0cmlidXRlcz8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgLy9jb25zdCBhZnRlclNlYXJjaENvbXBsZXRlVXJsID0gJ2h0dHBzOi8vdWF0LmFkZHJlc3NyaWdodC5jby5uei9hZGRyZXNzLmpzb24/YXBpX2tleT0yOTI2MzNfeHZzZTJad1h5SjZncWhNViZpZD0nICsgcmVzcG9uc2U/LmRhdGFbMF0ucmVsYXRpb25zaGlwcz8uYWRkcmVzcz8uZGF0YT8uaWRcclxuICAgICAgICAgICAgICBjb25zdCBhZnRlclNlYXJjaENvbXBsZXRlVXJsID0gdGhpcy5lbnZpcm9ubWVudC5jb3JlTG9naWNBZGRyZXNzQXBpVXJsICsgJ2FkZHJlc3MuanNvbj9hcGlfa2V5PScrIHRoaXMuZW52aXJvbm1lbnQuY29yZUxvZ2ljQWRkcmVzc0FwaWtleSArJyZpZD0nICsgcmVzcG9uc2U/LmRhdGFbMF0ucmVsYXRpb25zaGlwcz8uYWRkcmVzcz8uZGF0YT8uaWRcclxuICAgICAgICAgICAgICBsZXQgcXVlcnk6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgIHF1ZXJ5LmxhdCA9IGxhdDtcclxuICAgICAgICAgICAgICBxdWVyeS5sb24gPSBsb247XHJcbiAgICAgICAgICAgICAgZXNyaVJlcXVlc3QoYWZ0ZXJTZWFyY2hDb21wbGV0ZVVybCwgeyBxdWVyeTogcXVlcnksIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pLnRoZW4oKHJlc3VsdHM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZSA9IG1hcEtleXMocmVzdWx0cy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9uOiBmZWF0dXJlPy5nZW9tZXRyeT8uY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgbGF0OiBmZWF0dXJlPy5nZW9tZXRyeT8uY29vcmRpbmF0ZXNbMV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XHJcbiAgICAgICAgICAgICAgICAgIC8vIFBhcnNlIHRoZSByZXN1bHRzIG9mIHlvdXIgY3VzdG9tIHNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlRGF0YShyZXN1bHRzLCBsb2NhdGlvbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBHcmFwaGljIHRoZSBTZWFyY2ggd2lkZ2V0IGNhbiBkaXNwbGF5XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24uc2VsZWN0ZWRBZGRyZXNzID0gZmVhdHVyZT8ucHJvcGVydGllcz8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgIHZpZXcuZ3JhcGhpY3MgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBjb29yZGluYXRlcyBvZiB0aGUgY2xpY2sgb24gdGhlIHZpZXdcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3BvaW50JyxcclxuICAgICAgICAgICAgICAgICAgICB4OiBmZWF0dXJlPy5nZW9tZXRyeT8uY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgeTogZmVhdHVyZT8uZ2VvbWV0cnk/LmNvb3JkaW5hdGVzWzFdLFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc3QgcG9pbnRHcmFwaGljID0gbmV3IEdyYXBoaWMoe1xyXG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5OiBwb2ludCxcclxuICAgICAgICAgICAgICAgICAgICBzeW1ib2w6IHNpbXBsZU1hcmtlclN5bWJvbCxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIHZpZXcuZ3JhcGhpY3MuYWRkKHBvaW50R3JhcGhpYyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybURpc2FibGVkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy9jb25zdCBhZnRlclNlYXJjaENvbXBsZXRlVXJsID0gJ2h0dHBzOi8vdWF0LmFkZHJlc3NyaWdodC5jby5uei9hZGRyZXNzLmpzb24/YXBpX2tleT0yOTI2MzNfeHZzZTJad1h5SjZncWhNViZpZD0nICsgcGFyYW1zPy5zdWdnZXN0UmVzdWx0Py5pZDtcclxuICAgICAgICAgIGNvbnN0IGFmdGVyU2VhcmNoQ29tcGxldGVVcmwgPSB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0FkZHJlc3NBcGlVcmwgKyAnYWRkcmVzcy5qc29uP2FwaV9rZXk9JysgdGhpcy5lbnZpcm9ubWVudC5jb3JlTG9naWNBZGRyZXNzQXBpa2V5ICsnJmlkPScgKyBwYXJhbXM/LnN1Z2dlc3RSZXN1bHQ/LmlkO1xyXG5cclxuICAgICAgICAgIHJldHVybiBlc3JpUmVxdWVzdChhZnRlclNlYXJjaENvbXBsZXRlVXJsLCB7XHJcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcclxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICB9KS50aGVuKChyZXN1bHRzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy8gUGFyc2UgdGhlIHJlc3VsdHMgb2YgeW91ciBjdXN0b20gc2VhcmNoXHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBbcmVzdWx0cy5kYXRhXTtcclxuICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1EaXNhYmxlZC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0ge1xyXG4gICAgICAgICAgICAgIGxvbjogZGF0YVswXS5sb2NhdGlvbi53Z3M4NF9sb24sXHJcbiAgICAgICAgICAgICAgbGF0OiBkYXRhWzBdLmxvY2F0aW9uLndnczg0X2xhdFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVEYXRhKHJlc3VsdHMsIGxvY2F0aW9uKVxyXG4gICAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZGF0YT8ubWFwKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgR3JhcGhpYyB0aGUgU2VhcmNoIHdpZGdldCBjYW4gZGlzcGxheVxyXG4gICAgICAgICAgICAgIGZlYXR1cmUgPSBtYXBLZXlzKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9jYXRpb24uc2VsZWN0ZWRBZGRyZXNzID0gZmVhdHVyZT8ucHJvcGVydGllcz8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgY29uc3QgZ3JhcGhpYyA9IG5ldyBHcmFwaGljKHtcclxuICAgICAgICAgICAgICAgIGdlb21ldHJ5OiBuZXcgUG9pbnQoe1xyXG4gICAgICAgICAgICAgICAgICB4OiBmZWF0dXJlPy5nZW9tZXRyeT8uY29vcmRpbmF0ZXNbMF0sXHJcbiAgICAgICAgICAgICAgICAgIHk6IGZlYXR1cmU/Lmdlb21ldHJ5Py5jb29yZGluYXRlc1sxXSxcclxuICAgICAgICAgICAgICAgICAgLy9zcGF0aWFsUmVmZXJlbmNlOiBzZWxmPy52aWV3LnNwYXRpYWxSZWZlcmVuY2UsXHJcbiAgICAgICAgICAgICAgICAgIHNwYXRpYWxSZWZlcmVuY2U6IFNwYXRpYWxSZWZlcmVuY2UuV0dTODQsXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGZlYXR1cmU/LnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgLy8gT3B0aW9uYWxseSwgeW91IGNhbiBwcm92aWRlIGFuIGV4dGVudCBmb3JcclxuICAgICAgICAgICAgICAvLyBhIHBvaW50IHJlc3VsdCwgc28gdGhlIHZpZXcgY2FuIHpvb20gdG8gaXRcclxuICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSBnZW9tZXRyeUVuZ2luZS5nZW9kZXNpY0J1ZmZlcihcclxuICAgICAgICAgICAgICAgIGdyYXBoaWMuZ2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICAxMDAsXHJcbiAgICAgICAgICAgICAgICAnbWV0ZXJzJ1xyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFJldHVybiBhIFNlYXJjaCBSZXN1bHRcclxuICAgICAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICBleHRlbnQ6IGJ1ZmZlcj8uZXh0ZW50LFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZTogZ3JhcGhpYyxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGZlYXR1cmU/LnByb3BlcnRpZXM/LmxhYmVsLnJlcGxhY2UoL251bGwvZywgJycpLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHNlYXJjaFJlc3VsdDtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBSZXR1cm4gYW4gYXJyYXkgb2YgU2VhcmNoIFJlc3VsdHNcclxuICAgICAgICAgICAgcmV0dXJuIHNlYXJjaFJlc3VsdHM7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hXaWRnZXQgPSBuZXcgU2VhcmNoKHtcclxuICAgICAgdmlldzogdmlldyxcclxuICAgICAgc291cmNlczogW2N1c3RvbVNlYXJjaFNvdXJjZV0sXHJcbiAgICAgIGluY2x1ZGVEZWZhdWx0U291cmNlczogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBBZGQgdGhlIHdpZGdldCB0byB0aGUgdG9wLXJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld1xyXG4gICAgdmlldy51aS5hZGQoc2VhcmNoV2lkZ2V0LCB7XHJcbiAgICAgIHBvc2l0aW9uOiAndG9wLXJpZ2h0JyxcclxuICAgICAgaW5kZXg6IDIsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xyXG5cclxuICAgIHNlYXJjaFdpZGdldC5vbignc2VhcmNoLWNvbXBsZXRlJywgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgIH0pO1xyXG5cclxuICAgIHNlYXJjaFdpZGdldC5vbignc2VsZWN0LXJlc3VsdCcsIChldmVudDogYW55KSA9PiB7XHJcbiAgICB9KTtcclxuXHJcbiAgICB2aWV3Lm9uKCdjbGljaycsIChldmVudDogYW55KSA9PiB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgdGhpcy5pc0NvbmZpcm1EaXNhYmxlZC5uZXh0KGZhbHNlKTtcclxuICAgICAgXHJcbiAgICAgIHZhciBsYXQgPSBldmVudC5tYXBQb2ludC55O1xyXG4gICAgICB2YXIgbG9uID0gZXZlbnQubWFwUG9pbnQueDsgXHJcbiAgICAgIHZpZXcuZ29Ubyh7XHJcbiAgICAgICAgY2VudGVyOiBuZXcgUG9pbnQoe1xyXG4gICAgICAgICAgeDogbG9uLFxyXG4gICAgICAgICAgeTogbGF0LFxyXG4gICAgICAgICAgc3BhdGlhbFJlZmVyZW5jZToge1xyXG4gICAgICAgICAgICB3a2lkOiAyMTkzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBwb2ludCA9IHtcclxuICAgICAgICB0eXBlOiAncG9pbnQnLFxyXG4gICAgICAgIHg6IGxvbixcclxuICAgICAgICB5OiBsYXQsXHJcbiAgICAgICAgc3BhdGlhbFJlZmVyZW5jZToge1xyXG4gICAgICAgICAgd2tpZDogMjE5M1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgY29uc3QgcG9pbnRHcmFwaGljID0gbmV3IEdyYXBoaWMoe1xyXG4gICAgICAgIGdlb21ldHJ5OiBwb2ludCxcclxuICAgICAgICBzeW1ib2w6IHNpbXBsZU1hcmtlclN5bWJvbCxcclxuICAgICAgfSk7IFxyXG4gICAgICB2aWV3LmdyYXBoaWNzID0gW107XHJcbiAgICAgIHZpZXcuZ3JhcGhpY3MuYWRkKHBvaW50R3JhcGhpYyk7XHJcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0ge1xyXG4gICAgICAgIGxvbmdpdHVkZTogbG9uLFxyXG4gICAgICAgIGxhdGl0dWRlOiBsYXRcclxuICAgICAgfVxyXG4gICAgIC8vY29uc3QgdXJsID0gJ2h0dHBzOi8vdWF0LmFkZHJlc3NyaWdodC5jby5uei9yZXZlcnNlZ2VvY29kZS5qc29uP2FwaV9rZXk9MjkyNjMzX3h2c2UyWndYeUo2Z3FoTVYmbGltaXQ9MSZmb3JtYXR0ZWQ9MSZzcmlkPTIxOTMnO1xyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0FkZHJlc3NBcGlVcmwgKyAncmV2ZXJzZWdlb2NvZGUuanNvbj9hcGlfa2V5PScrIHRoaXMuZW52aXJvbm1lbnQuY29yZUxvZ2ljQWRkcmVzc0FwaWtleSArICcmbGltaXQ9MSZmb3JtYXR0ZWQ9MSZzcmlkPTIxOTMnO1xyXG4gICAgICBzZWxmLmNoZWNrb3V0U2VydmljZVxyXG4gICAgICAgIC5nZXRDbGlja0dlb0xvY2F0aW9uQWRkcmVzcyh1cmwsIGxvY2F0aW9uKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9jYXRpb24uc2VsZWN0ZWRBZGRyZXNzID0gcmVzcG9uc2U/LmRhdGFbMF0uYXR0cmlidXRlcz8ubGFiZWw7XHJcbiAgICAgICAgICAgICAgLy9jb25zdCBhZnRlclNlYXJjaENvbXBsZXRlVXJsID0gJ2h0dHBzOi8vdWF0LmFkZHJlc3NyaWdodC5jby5uei9hZGRyZXNzLmpzb24/YXBpX2tleT0yOTI2MzNfeHZzZTJad1h5SjZncWhNViZpZD0nICsgcmVzcG9uc2U/LmRhdGFbMF0ucmVsYXRpb25zaGlwcz8uYWRkcmVzcz8uZGF0YT8uaWQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgYWZ0ZXJTZWFyY2hDb21wbGV0ZVVybCA9IHRoaXMuZW52aXJvbm1lbnQuY29yZUxvZ2ljQWRkcmVzc0FwaVVybCArICdhZGRyZXNzLmpzb24/YXBpX2tleT0nKyB0aGlzLmVudmlyb25tZW50LmNvcmVMb2dpY0FkZHJlc3NBcGlrZXkgKycmaWQ9JyArIHJlc3BvbnNlPy5kYXRhWzBdLnJlbGF0aW9uc2hpcHM/LmFkZHJlc3M/LmRhdGE/LmlkO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGxldCBxdWVyeTogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgcXVlcnkubGF0ID0gbGF0O1xyXG4gICAgICAgICAgICAgIHF1ZXJ5LmxvbiA9IGxvbjtcclxuICAgICAgICAgICAgICBlc3JpUmVxdWVzdChhZnRlclNlYXJjaENvbXBsZXRlVXJsLCB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHRzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlID0gbWFwS2V5cyhyZXN1bHRzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICBsb246IGZlYXR1cmU/Lmdlb21ldHJ5Py5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgICAgICBsYXQ6IGZlYXR1cmU/Lmdlb21ldHJ5Py5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcclxuICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgdGhlIHJlc3VsdHMgb2YgeW91ciBjdXN0b20gc2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVEYXRhKHJlc3VsdHMsIGxvY2F0aW9uKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIEdyYXBoaWMgdGhlIFNlYXJjaCB3aWRnZXQgY2FuIGRpc3BsYXlcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5zZWxlY3RlZEFkZHJlc3MgPSBmZWF0dXJlPy5wcm9wZXJ0aWVzPy5sYWJlbDtcclxuICAgICAgICAgICAgICAgICAgLy8gdmlldy5ncmFwaGljcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBjbGljayBvbiB0aGUgdmlld1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBwb2ludCA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAncG9pbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgIHg6IGZlYXR1cmU/Lmdlb21ldHJ5Py5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgICAgICAgICAgICB5OiBmZWF0dXJlPy5nZW9tZXRyeT8uY29vcmRpbmF0ZXNbMV0sXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICBjb25zdCBwb2ludEdyYXBoaWMgPSBuZXcgR3JhcGhpYyh7XHJcbiAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHBvaW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbDogc2ltcGxlTWFya2VyU3ltYm9sLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgLy8gdmlldy5ncmFwaGljcy5hZGQocG9pbnRHcmFwaGljKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudmlldy53aGVuKCk7XHJcbiAgfVxyXG4gIG9uQ29uZmlybWVkQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1lZEFkZHJlc3MgPSB0aGlzLmxvY2F0aW9uLnNlbGVjdGVkQWRkcmVzcy5yZXBsYWNlKC9udWxsL2csICcnKTtcclxuICAgIHRoaXMudXBkYXRlTmV3QWRkcmVzcy5lbWl0KHRoaXMubG9jYXRpb24pO1xyXG4gICAgdGhpcy5zaG93QWRkcmVzcy5uZXh0KHRydWUpO1xyXG4gIH1cclxuICBwb3B1bGF0ZURhdGEocmVzdWx0czogYW55LCBsb2NhdGlvbjogYW55KSB7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IHJlc3VsdHMuZGF0YTtcclxuICAgIGNvbnN0IG5ld0FkZHJlc3M6IGFueSA9IHtcclxuICAgICAgbGluZTE6IGRhdGEuZm9ybWF0dGVkX2FkZHJlc3M/LmxpbmUxLFxyXG4gICAgICBsaW5lMjogZGF0YS5mb3JtYXR0ZWRfYWRkcmVzcz8ubGluZTIsXHJcbiAgICAgIHRvd246IGRhdGEuc3RydWN0dXJlZF9hZGRyZXNzPy50b3duLFxyXG4gICAgICBkaXN0cmljdDogZGF0YS5zdHJ1Y3R1cmVkX2FkZHJlc3M/LnN1YnVyYixcclxuICAgICAgcG9zdGFsQ29kZTogZGF0YS5zdHJ1Y3R1cmVkX2FkZHJlc3M/LnBvc3Rjb2RlLFxyXG4gICAgICBsb25naXR1ZGU6IGxvY2F0aW9uLmxvbixcclxuICAgICAgbGF0aXR1ZGU6IGxvY2F0aW9uLmxhdCxcclxuICAgIH1cclxuICAgIG5ld0FkZHJlc3Muc2VsZWN0ZWRBZGRyZXNzID0gdGhpcy5sb2NhdGlvbi5zZWxlY3RlZEFkZHJlc3M7XHJcbiAgICB0aGlzLmxvY2F0aW9uID0gbmV3QWRkcmVzcztcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29yZWxvZ2ljLW1hcFwiICNtYXBWaWV3Tm9kZT48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImNvbmZpcm0tY2xzXCI+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXNDb25maXJtRGlzYWJsZWQgfCBhc3luY1wiIChjbGljayk9XCJvbkNvbmZpcm1lZENsaWNrKClcIiBjbGFzcz1cImJ0biBwcmltYXJ5LWJ1dHRvbiBtdC00XCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwic2hvd0FkZHJlc3MgfCBhc3luY1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvbmZpcm1lZCBEZWxpdmVyeSBBZGRyZXNzIDwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWFwLXNlbGVjdGVkLWFkZHJlc3NcIiAqbmdJZj1cInNob3dBZGRyZXNzIHwgYXN5bmNcIiBpZD1cImFkZHJlc3NcIj5cclxuICAgICAgICB7e2NvbmZpcm1lZEFkZHJlc3N9fTwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|