ng-easycommerce-v18 0.4.4-beta.2 → 0.4.6
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 +130 -125
- package/assets/decidirFormEc.html +514 -514
- package/assets/ec-i18n/ct.json +286 -282
- package/assets/ec-i18n/en.json +12 -1
- package/assets/ec-i18n/es.json +445 -434
- package/assets/ec-i18n/fr.json +4 -0
- package/assets/ec-i18n/gl.json +286 -282
- package/assets/ec-i18n/pr.json +286 -282
- package/assets/images/cards-occasional.svg +21 -21
- package/assets/recaptcha/recaptcha-site-keys.json +3 -3
- package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
- package/assets/recaptcha/recaptcha-sites.json +52 -52
- package/esm2022/lib/api/connection.service.mjs +7 -6
- package/esm2022/lib/classes/checkout/steps.mjs +1 -1
- package/esm2022/lib/classes/component-helper.mjs +1 -1
- package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
- package/esm2022/lib/classes/filters/filter.mjs +1 -1
- package/esm2022/lib/classes/filters/index.mjs +1 -1
- package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
- package/esm2022/lib/classes/index.mjs +1 -1
- package/esm2022/lib/classes/user.mjs +1 -1
- package/esm2022/lib/constants/api.constants.service.mjs +1 -1
- package/esm2022/lib/constants/core.constants.service.mjs +1 -1
- package/esm2022/lib/constants/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +5 -9
- package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +11 -5
- package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -4
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +12 -3
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +10 -3
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +11 -4
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +5 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +44 -4
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +4 -3
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.mjs +79 -0
- package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +27 -13
- package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/index.mjs +2 -1
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +5 -7
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +5 -11
- package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
- package/esm2022/lib/ec-directive/index.mjs +1 -1
- package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
- package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
- package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/index.mjs +1 -1
- package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
- package/esm2022/lib/ec-services/auth.service.mjs +1 -1
- package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/base-api.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
- package/esm2022/lib/ec-services/cart.service.mjs +42 -7
- package/esm2022/lib/ec-services/channel.service.mjs +1 -1
- package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
- package/esm2022/lib/ec-services/currency.service.mjs +1 -1
- package/esm2022/lib/ec-services/filters.service.mjs +1 -1
- package/esm2022/lib/ec-services/form.service.mjs +1 -1
- package/esm2022/lib/ec-services/index.mjs +2 -1
- package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/options.service.mjs +1 -1
- package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
- package/esm2022/lib/ec-services/orders.service.mjs +1 -1
- package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
- package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
- package/esm2022/lib/ec-services/payment.service.mjs +1 -1
- package/esm2022/lib/ec-services/price-visibility.service.mjs +40 -0
- package/esm2022/lib/ec-services/product-detail.service.mjs +45 -7
- package/esm2022/lib/ec-services/products.service.mjs +1 -1
- package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
- package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
- package/esm2022/lib/ec-services/runtime-config.service.mjs +13 -31
- package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
- package/esm2022/lib/ec-services/stores.service.mjs +1 -1
- package/esm2022/lib/ec-services/test.service.mjs +1 -1
- package/esm2022/lib/ec-services/toast.service.mjs +1 -1
- package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
- package/esm2022/lib/interceptors/index.mjs +1 -1
- package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
- package/esm2022/lib/interfaces/blocks.mjs +1 -1
- package/esm2022/lib/interfaces/checkout.mjs +1 -1
- package/esm2022/lib/interfaces/connection.mjs +1 -1
- package/esm2022/lib/interfaces/coupon.mjs +1 -1
- package/esm2022/lib/interfaces/currency.mjs +1 -1
- package/esm2022/lib/interfaces/deserializable.mjs +1 -1
- package/esm2022/lib/interfaces/environment.mjs +1 -1
- package/esm2022/lib/interfaces/faqs.mjs +1 -1
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/index.mjs +1 -1
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/esm2022/lib/interfaces/pagination.mjs +1 -1
- package/esm2022/lib/interfaces/parameter.mjs +1 -1
- package/esm2022/lib/interfaces/product.mjs +1 -1
- package/esm2022/lib/interfaces/runtime-config.mjs +1 -1
- package/esm2022/lib/interfaces/step.mjs +1 -1
- package/esm2022/lib/interfaces/storage.mjs +1 -1
- package/esm2022/lib/interfaces/store.mjs +1 -1
- package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
- package/esm2022/lib/providers/index.mjs +1 -2
- package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
- package/esm2022/lib/providers/provideRuntimeConfig.mjs +1 -1
- package/esm2022/lib/stores/currency.store.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +437 -232
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/api/connection.service.d.ts +4 -3
- package/lib/ec-components/account-ec/order-ec/order-ec.component.d.ts +2 -2
- package/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.d.ts +3 -0
- package/lib/ec-components/cart-ec/cart-ec.component.d.ts +4 -2
- package/lib/ec-components/checkout-ec/checkout-ec.component.d.ts +2 -0
- package/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +2 -0
- package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +6 -0
- package/lib/ec-components/checkout-ec/success-ec/success-ec.component.d.ts +1 -0
- package/lib/ec-components/credit-account-banner-ec/credit-account-banner-ec.component.d.ts +27 -0
- package/lib/ec-components/header-ec/header-ec.component.d.ts +12 -4
- package/lib/ec-components/index.d.ts +1 -0
- package/lib/ec-components/sidebar-ec/sidebar-ec.component.d.ts +2 -1
- package/lib/ec-components/widgets-ec/price-ec/price-ec.component.d.ts +2 -4
- package/lib/ec-services/cart.service.d.ts +1 -0
- package/lib/ec-services/index.d.ts +1 -0
- package/lib/ec-services/price-visibility.service.d.ts +23 -0
- package/lib/ec-services/product-detail.service.d.ts +3 -0
- package/lib/ec-services/runtime-config.service.d.ts +2 -3
- package/lib/providers/index.d.ts +0 -1
- package/package.json +1 -1
- package/esm2022/lib/providers/provideServerRuntimeConfig.mjs +0 -20
- package/lib/providers/provideServerRuntimeConfig.d.ts +0 -13
|
@@ -140,14 +140,14 @@ export class RegisterWholesalerFormEcComponent {
|
|
|
140
140
|
this.form.controls['provinceName'].setValue(provinces.find((province) => province.code == value).name);
|
|
141
141
|
};
|
|
142
142
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterWholesalerFormEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterWholesalerFormEcComponent, isStandalone: true, selector: "app-register-wholesaler-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"\">\r\n <div class=\"pt-5 pb-3 border-bottom\">\r\n <h3 class=\"my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap\">CREAR CUENTA\r\n MAYORISTA</h3>\r\n </div>\r\n <div class=\" py-3\">\r\n <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate\r\n ingresando estos\r\n datos:</p>\r\n </div>\r\n <form [formGroup]=\"form\" (submit)=\"register($event)\" class=\"position-relative\">\r\n <div class=\"row w-100 mx-auto d-flex justify-content-center px-0 py-3\">\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre\" required name=\"firstName\"\r\n formControlName=\"firstName\"\r\n [class]=\"form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Apellidos</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Apellido\" required name=\"lastName\"\r\n formControlName=\"lastName\"\r\n [class]=\"form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El apellido es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Email</label>\r\n <input type=\"email\" id=\"\" placeholder=\"Email\" email required name=\"email\"\r\n formControlName=\"email\"\r\n [class]=\"form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El email no posee un formato correcto.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Contrase\u00F1a</label>\r\n <input type=\"password\" id=\"\" placeholder=\"Contrase\u00F1a\" required name=\"plainPassword\"\r\n formControlName=\"plainPassword\"\r\n [class]=\"form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La contrase\u00F1a es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-type'|translate}}</label>\r\n <select name=\"documentType\" formControlName=\"documentType\" required\r\n [class]=\"form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectDocumentType\" disabled>Seleccione un tipo</option>\r\n @for (type of documentTypes; track $index) {\r\n <option [value]=\"type.code\">{{ type.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-number'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'document-number'|translate}}\" required\r\n name=\"documentNumber\" formControlName=\"documentNumber\"\r\n [class]=\"form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n @if(countries$ | async; as countries ){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'country'|translate}}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" required (change)=\"onCountrySelected($event)\"\r\n [class]=\"form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpPais\" disabled>Seleccione un pais</option>\r\n @for (country of countries; track $index) {\r\n <option [value]=\"country.code\"> {{ country.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'country-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n @if(provinces$ |async ; as provinces){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'state'|translate}}</label>\r\n <select name=\"provinceCode\" formControlName=\"provinceCode\" required (change)=\"onProvincesSelected($event, provinces)\"\r\n [class]=\"form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpProvincia\" disabled>Seleccione una provincia\r\n </option>\r\n @for (province of provinces; track $index) {\r\n <option [value]=\"province.code\">{{ province.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'state-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'address'|translate}}</label>\r\n <input placeholder=\"{{'address'|translate}}\" required type=\"text\" name=\"street\"\r\n formControlName=\"street\"\r\n [class]=\"form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'address-help1'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'town-city'|translate}}</label>\r\n <input placeholder=\"{{'town-city'|translate}}\" required type=\"text\" name=\"city\"\r\n formControlName=\"city\"\r\n [class]=\"form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'postal-code'|translate}}</label>\r\n <input placeholder=\"{{'postal-code'|translate}}\" required type=\"text\" name=\"postcode\"\r\n formControlName=\"postcode\"\r\n [class]=\"form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre compa\u00F1\u00EDa</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre compa\u00F1\u00EDa\" required name=\"companyName\"\r\n formControlName=\"companyName\"\r\n [class]=\"form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre compa\u00F1\u00EDa es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'phone'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'phone'|translate}}\" required name=\"phoneNumber\"\r\n formControlName=\"phoneNumber\"\r\n [class]=\"form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El numero de telefono es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Sexo</label>\r\n <select required name=\"gender\" formControlName=\"gender\"\r\n [class]=\"form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option value=\"null\" id=\"selectOpSexo\">Sexo</option>\r\n <option value=\"u\">Desconocido</option>\r\n <option value=\"s\">Femenino</option>\r\n <option value=\"m\">Masculino</option>\r\n </select>\r\n <span class=\"invalid-feedback\">El sexo es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Fecha creacion</label>\r\n <input type=\"date\" id=\"\" placeholder=\"Fecha creacion\" required name=\"birthday\"\r\n formControlName=\"birthday\"\r\n [class]=\"form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La fecha de creacion es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Identificacion</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Identificacion\" required name=\"taxIdentification\"\r\n formControlName=\"taxIdentification\"\r\n [class]=\"form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La identificacion de la compa\u00F1\u00EDa es un campo\r\n obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1 \">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"terms\" name=\"terms\"\r\n formControlName=\"terms\" type=\"checkbox\">\r\n <label for=\"terms\" class=\"form-check-label\">Acepto los <a\r\n [routerLink]=\"['/section/terminos-y-condiciones']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary\">t\u00E9rminos y\r\n condiciones *</a></label>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1\">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\"\r\n name=\"subscribedToNewsletter\" formControlName=\"subscribedToNewsletter\"\r\n type=\"checkbox\">\r\n <label class=\"form-check-label\" for=\"defaultCheck2\">\r\n Suscripci\u00F3n al newsletter\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1\">\r\n\r\n <button type=\"submit\" role=\"button\" [disabled]=\"form.invalid\"\r\n class=\"btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit\">REGISTRATE</button>\r\n </div>\r\n\r\n </div>\r\n <pre>{{form.value | json}}</pre>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterWholesalerFormEcComponent, isStandalone: true, selector: "app-register-wholesaler-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"\">\n <div class=\"pt-5 pb-3 border-bottom\">\n <h3 class=\"my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap\">CREAR CUENTA\n MAYORISTA</h3>\n </div>\n <div class=\" py-3\">\n <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate\n ingresando estos\n datos:</p>\n </div>\n <form [formGroup]=\"form\" (submit)=\"register($event)\" class=\"position-relative\">\n <div class=\"row w-100 mx-auto d-flex justify-content-center px-0 py-3\">\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Nombre</label>\n <input type=\"text\" id=\"\" placeholder=\"Nombre\" required name=\"firstName\"\n formControlName=\"firstName\"\n [class]=\"form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El nombre es un campo obligatorio.</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Apellidos</label>\n <input type=\"text\" id=\"\" placeholder=\"Apellido\" required name=\"lastName\"\n formControlName=\"lastName\"\n [class]=\"form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El apellido es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Email</label>\n <input type=\"email\" id=\"\" placeholder=\"Email\" email required name=\"email\"\n formControlName=\"email\"\n [class]=\"form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El email no posee un formato correcto.</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Contrase\u00F1a</label>\n <input type=\"password\" id=\"\" placeholder=\"Contrase\u00F1a\" required name=\"plainPassword\"\n formControlName=\"plainPassword\"\n [class]=\"form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">La contrase\u00F1a es un campo obligatorio.</span>\n </div>\n </div>\n @if(documentTypes$ | async; as documentTypes){\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'document-type'|translate}}</label>\n <select name=\"documentType\" formControlName=\"documentType\" required\n [class]=\"form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option [value]=\"null\" id=\"selectDocumentType\" disabled>Seleccione un tipo</option>\n @for (type of documentTypes; track $index) {\n <option [value]=\"type.code\">{{ type.name }}</option>\n }\n </select>\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\n </div>\n </div>\n }\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'document-number'|translate}}</label>\n <input type=\"text\" id=\"\" placeholder=\"{{'document-number'|translate}}\" required\n name=\"documentNumber\" formControlName=\"documentNumber\"\n [class]=\"form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\n </div>\n </div>\n\n @if(countries$ | async; as countries ){\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'country'|translate}}</label>\n <select name=\"countryCode\" formControlName=\"countryCode\" required (change)=\"onCountrySelected($event)\"\n [class]=\"form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option [value]=\"null\" id=\"selectOpPais\" disabled>Seleccione un pais</option>\n @for (country of countries; track $index) {\n <option [value]=\"country.code\"> {{ country.name }}</option>\n }\n </select>\n <span class=\"invalid-feedback\">{{'country-help'|translate}}</span>\n </div>\n </div>\n }\n @if(provinces$ |async ; as provinces){\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'state'|translate}}</label>\n <select name=\"provinceCode\" formControlName=\"provinceCode\" required (change)=\"onProvincesSelected($event, provinces)\"\n [class]=\"form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option [value]=\"null\" id=\"selectOpProvincia\" disabled>Seleccione una provincia\n </option>\n @for (province of provinces; track $index) {\n <option [value]=\"province.code\">{{ province.name }}</option>\n }\n </select>\n <span class=\"invalid-feedback\">{{'state-help'|translate}}</span>\n </div>\n </div>\n }\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'address'|translate}}</label>\n <input placeholder=\"{{'address'|translate}}\" required type=\"text\" name=\"street\"\n formControlName=\"street\"\n [class]=\"form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'address-help1'|translate}}</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'town-city'|translate}}</label>\n <input placeholder=\"{{'town-city'|translate}}\" required type=\"text\" name=\"city\"\n formControlName=\"city\"\n [class]=\"form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'town-city-help'|translate}}</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'postal-code'|translate}}</label>\n <input placeholder=\"{{'postal-code'|translate}}\" required type=\"text\" name=\"postcode\"\n formControlName=\"postcode\"\n [class]=\"form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'postal-code-help'|translate}}</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Nombre compa\u00F1\u00EDa</label>\n <input type=\"text\" id=\"\" placeholder=\"Nombre compa\u00F1\u00EDa\" required name=\"companyName\"\n formControlName=\"companyName\"\n [class]=\"form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El nombre compa\u00F1\u00EDa es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'phone'|translate}}</label>\n <input type=\"text\" id=\"\" placeholder=\"{{'phone'|translate}}\" required name=\"phoneNumber\"\n formControlName=\"phoneNumber\"\n [class]=\"form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El numero de telefono es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Sexo</label>\n <select required name=\"gender\" formControlName=\"gender\"\n [class]=\"form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option value=\"null\" id=\"selectOpSexo\">Sexo</option>\n <option value=\"u\">Desconocido</option>\n <option value=\"s\">Femenino</option>\n <option value=\"m\">Masculino</option>\n </select>\n <span class=\"invalid-feedback\">El sexo es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Fecha creacion</label>\n <input type=\"date\" id=\"\" placeholder=\"Fecha creacion\" required name=\"birthday\"\n formControlName=\"birthday\"\n [class]=\"form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">La fecha de creacion es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Identificacion</label>\n <input type=\"text\" id=\"\" placeholder=\"Identificacion\" required name=\"taxIdentification\"\n formControlName=\"taxIdentification\"\n [class]=\"form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">La identificacion de la compa\u00F1\u00EDa es un campo\n obligatorio.</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1 \">\n <div class=\"form-check py-2\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"terms\" name=\"terms\"\n formControlName=\"terms\" type=\"checkbox\">\n <label for=\"terms\" class=\"form-check-label\">Acepto los <a\n [routerLink]=\"['/section/terminos-y-condiciones']\"\n routerLinkActive=\"router-link-active\" class=\"text-primary\">t\u00E9rminos y\n condiciones *</a></label>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1\">\n <div class=\"form-check py-2\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\"\n name=\"subscribedToNewsletter\" formControlName=\"subscribedToNewsletter\"\n type=\"checkbox\">\n <label class=\"form-check-label\" for=\"defaultCheck2\">\n Suscripci\u00F3n al newsletter\n </label>\n </div>\n </div>\n\n <div\n class=\"col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1\">\n\n <button type=\"submit\" role=\"button\" [disabled]=\"form.invalid\"\n class=\"btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit\">REGISTRATE</button>\n </div>\n\n </div>\n <pre>{{form.value | json}}</pre>\n @if(loading){\n <app-loading-section-ec />\n }\n </form>\n </div>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
144
144
|
}
|
|
145
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterWholesalerFormEcComponent, decorators: [{
|
|
146
146
|
type: Component,
|
|
147
|
-
args: [{ selector: 'app-register-wholesaler-form-ec', standalone: true, imports: [LoadingSectionEcComponent, ReactiveFormsModule, TranslateModule, AsyncPipe, JsonPipe, RouterLink], template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"\">\r\n <div class=\"pt-5 pb-3 border-bottom\">\r\n <h3 class=\"my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap\">CREAR CUENTA\r\n MAYORISTA</h3>\r\n </div>\r\n <div class=\" py-3\">\r\n <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate\r\n ingresando estos\r\n datos:</p>\r\n </div>\r\n <form [formGroup]=\"form\" (submit)=\"register($event)\" class=\"position-relative\">\r\n <div class=\"row w-100 mx-auto d-flex justify-content-center px-0 py-3\">\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre\" required name=\"firstName\"\r\n formControlName=\"firstName\"\r\n [class]=\"form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Apellidos</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Apellido\" required name=\"lastName\"\r\n formControlName=\"lastName\"\r\n [class]=\"form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El apellido es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Email</label>\r\n <input type=\"email\" id=\"\" placeholder=\"Email\" email required name=\"email\"\r\n formControlName=\"email\"\r\n [class]=\"form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El email no posee un formato correcto.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Contrase\u00F1a</label>\r\n <input type=\"password\" id=\"\" placeholder=\"Contrase\u00F1a\" required name=\"plainPassword\"\r\n formControlName=\"plainPassword\"\r\n [class]=\"form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La contrase\u00F1a es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n @if(documentTypes$ | async; as documentTypes){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-type'|translate}}</label>\r\n <select name=\"documentType\" formControlName=\"documentType\" required\r\n [class]=\"form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectDocumentType\" disabled>Seleccione un tipo</option>\r\n @for (type of documentTypes; track $index) {\r\n <option [value]=\"type.code\">{{ type.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'document-number'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'document-number'|translate}}\" required\r\n name=\"documentNumber\" formControlName=\"documentNumber\"\r\n [class]=\"form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n @if(countries$ | async; as countries ){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'country'|translate}}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" required (change)=\"onCountrySelected($event)\"\r\n [class]=\"form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpPais\" disabled>Seleccione un pais</option>\r\n @for (country of countries; track $index) {\r\n <option [value]=\"country.code\"> {{ country.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'country-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n @if(provinces$ |async ; as provinces){\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'state'|translate}}</label>\r\n <select name=\"provinceCode\" formControlName=\"provinceCode\" required (change)=\"onProvincesSelected($event, provinces)\"\r\n [class]=\"form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option [value]=\"null\" id=\"selectOpProvincia\" disabled>Seleccione una provincia\r\n </option>\r\n @for (province of provinces; track $index) {\r\n <option [value]=\"province.code\">{{ province.name }}</option>\r\n }\r\n </select>\r\n <span class=\"invalid-feedback\">{{'state-help'|translate}}</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'address'|translate}}</label>\r\n <input placeholder=\"{{'address'|translate}}\" required type=\"text\" name=\"street\"\r\n formControlName=\"street\"\r\n [class]=\"form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'address-help1'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'town-city'|translate}}</label>\r\n <input placeholder=\"{{'town-city'|translate}}\" required type=\"text\" name=\"city\"\r\n formControlName=\"city\"\r\n [class]=\"form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'town-city-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'postal-code'|translate}}</label>\r\n <input placeholder=\"{{'postal-code'|translate}}\" required type=\"text\" name=\"postcode\"\r\n formControlName=\"postcode\"\r\n [class]=\"form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">{{'postal-code-help'|translate}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Nombre compa\u00F1\u00EDa</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Nombre compa\u00F1\u00EDa\" required name=\"companyName\"\r\n formControlName=\"companyName\"\r\n [class]=\"form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El nombre compa\u00F1\u00EDa es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">{{'phone'|translate}}</label>\r\n <input type=\"text\" id=\"\" placeholder=\"{{'phone'|translate}}\" required name=\"phoneNumber\"\r\n formControlName=\"phoneNumber\"\r\n [class]=\"form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">El numero de telefono es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Sexo</label>\r\n <select required name=\"gender\" formControlName=\"gender\"\r\n [class]=\"form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <option value=\"null\" id=\"selectOpSexo\">Sexo</option>\r\n <option value=\"u\">Desconocido</option>\r\n <option value=\"s\">Femenino</option>\r\n <option value=\"m\">Masculino</option>\r\n </select>\r\n <span class=\"invalid-feedback\">El sexo es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Fecha creacion</label>\r\n <input type=\"date\" id=\"\" placeholder=\"Fecha creacion\" required name=\"birthday\"\r\n formControlName=\"birthday\"\r\n [class]=\"form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La fecha de creacion es un campo obligatorio.</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\r\n <div class=\"form-group\">\r\n <label for=\"\">Identificacion</label>\r\n <input type=\"text\" id=\"\" placeholder=\"Identificacion\" required name=\"taxIdentification\"\r\n formControlName=\"taxIdentification\"\r\n [class]=\"form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\r\n <span class=\"invalid-feedback\">La identificacion de la compa\u00F1\u00EDa es un campo\r\n obligatorio.</span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1 \">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"terms\" name=\"terms\"\r\n formControlName=\"terms\" type=\"checkbox\">\r\n <label for=\"terms\" class=\"form-check-label\">Acepto los <a\r\n [routerLink]=\"['/section/terminos-y-condiciones']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary\">t\u00E9rminos y\r\n condiciones *</a></label>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1\">\r\n <div class=\"form-check py-2\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\"\r\n name=\"subscribedToNewsletter\" formControlName=\"subscribedToNewsletter\"\r\n type=\"checkbox\">\r\n <label class=\"form-check-label\" for=\"defaultCheck2\">\r\n Suscripci\u00F3n al newsletter\r\n </label>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1\">\r\n\r\n <button type=\"submit\" role=\"button\" [disabled]=\"form.invalid\"\r\n class=\"btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit\">REGISTRATE</button>\r\n </div>\r\n\r\n </div>\r\n <pre>{{form.value | json}}</pre>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
147
|
+
args: [{ selector: 'app-register-wholesaler-form-ec', standalone: true, imports: [LoadingSectionEcComponent, ReactiveFormsModule, TranslateModule, AsyncPipe, JsonPipe, RouterLink], template: "<div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"\">\n <div class=\"pt-5 pb-3 border-bottom\">\n <h3 class=\"my-auto mx-2 text-left w-fit bold text-beige1 white-space-md-nowrap\">CREAR CUENTA\n MAYORISTA</h3>\n </div>\n <div class=\" py-3\">\n <p>Si todavia no tienes una cuenta de grandes consumidores en nuestra plataforma, registrate\n ingresando estos\n datos:</p>\n </div>\n <form [formGroup]=\"form\" (submit)=\"register($event)\" class=\"position-relative\">\n <div class=\"row w-100 mx-auto d-flex justify-content-center px-0 py-3\">\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Nombre</label>\n <input type=\"text\" id=\"\" placeholder=\"Nombre\" required name=\"firstName\"\n formControlName=\"firstName\"\n [class]=\"form.controls['firstName'].touched ? (form.controls['firstName'].valid && form.controls['firstName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El nombre es un campo obligatorio.</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Apellidos</label>\n <input type=\"text\" id=\"\" placeholder=\"Apellido\" required name=\"lastName\"\n formControlName=\"lastName\"\n [class]=\"form.controls['lastName'].touched ? (form.controls['lastName'].valid && form.controls['lastName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El apellido es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Email</label>\n <input type=\"email\" id=\"\" placeholder=\"Email\" email required name=\"email\"\n formControlName=\"email\"\n [class]=\"form.controls['email'].touched ? (form.controls['email'].valid && form.controls['email'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El email no posee un formato correcto.</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Contrase\u00F1a</label>\n <input type=\"password\" id=\"\" placeholder=\"Contrase\u00F1a\" required name=\"plainPassword\"\n formControlName=\"plainPassword\"\n [class]=\"form.controls['plainPassword'].touched ? (form.controls['plainPassword'].valid && form.controls['plainPassword'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">La contrase\u00F1a es un campo obligatorio.</span>\n </div>\n </div>\n @if(documentTypes$ | async; as documentTypes){\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'document-type'|translate}}</label>\n <select name=\"documentType\" formControlName=\"documentType\" required\n [class]=\"form.controls['documentType'].touched ? (form.controls['documentType'].valid && form.controls['documentType'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option [value]=\"null\" id=\"selectDocumentType\" disabled>Seleccione un tipo</option>\n @for (type of documentTypes; track $index) {\n <option [value]=\"type.code\">{{ type.name }}</option>\n }\n </select>\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\n </div>\n </div>\n }\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'document-number'|translate}}</label>\n <input type=\"text\" id=\"\" placeholder=\"{{'document-number'|translate}}\" required\n name=\"documentNumber\" formControlName=\"documentNumber\"\n [class]=\"form.controls['documentNumber'].touched ? (form.controls['documentNumber'].valid && form.controls['documentNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'document-type-help'|translate}}</span>\n </div>\n </div>\n\n @if(countries$ | async; as countries ){\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'country'|translate}}</label>\n <select name=\"countryCode\" formControlName=\"countryCode\" required (change)=\"onCountrySelected($event)\"\n [class]=\"form.controls['countryCode'].touched ? (form.controls['countryCode'].valid && form.controls['countryCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option [value]=\"null\" id=\"selectOpPais\" disabled>Seleccione un pais</option>\n @for (country of countries; track $index) {\n <option [value]=\"country.code\"> {{ country.name }}</option>\n }\n </select>\n <span class=\"invalid-feedback\">{{'country-help'|translate}}</span>\n </div>\n </div>\n }\n @if(provinces$ |async ; as provinces){\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'state'|translate}}</label>\n <select name=\"provinceCode\" formControlName=\"provinceCode\" required (change)=\"onProvincesSelected($event, provinces)\"\n [class]=\"form.controls['provinceCode'].touched ? (form.controls['provinceCode'].valid && form.controls['provinceCode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option [value]=\"null\" id=\"selectOpProvincia\" disabled>Seleccione una provincia\n </option>\n @for (province of provinces; track $index) {\n <option [value]=\"province.code\">{{ province.name }}</option>\n }\n </select>\n <span class=\"invalid-feedback\">{{'state-help'|translate}}</span>\n </div>\n </div>\n }\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'address'|translate}}</label>\n <input placeholder=\"{{'address'|translate}}\" required type=\"text\" name=\"street\"\n formControlName=\"street\"\n [class]=\"form.controls['street'].touched ? (form.controls['street'].valid && form.controls['street'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'address-help1'|translate}}</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'town-city'|translate}}</label>\n <input placeholder=\"{{'town-city'|translate}}\" required type=\"text\" name=\"city\"\n formControlName=\"city\"\n [class]=\"form.controls['city'].touched ? (form.controls['city'].valid && form.controls['city'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'town-city-help'|translate}}</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pl-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'postal-code'|translate}}</label>\n <input placeholder=\"{{'postal-code'|translate}}\" required type=\"text\" name=\"postcode\"\n formControlName=\"postcode\"\n [class]=\"form.controls['postcode'].touched ? (form.controls['postcode'].valid && form.controls['postcode'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">{{'postal-code-help'|translate}}</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Nombre compa\u00F1\u00EDa</label>\n <input type=\"text\" id=\"\" placeholder=\"Nombre compa\u00F1\u00EDa\" required name=\"companyName\"\n formControlName=\"companyName\"\n [class]=\"form.controls['companyName'].touched ? (form.controls['companyName'].valid && form.controls['companyName'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El nombre compa\u00F1\u00EDa es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">{{'phone'|translate}}</label>\n <input type=\"text\" id=\"\" placeholder=\"{{'phone'|translate}}\" required name=\"phoneNumber\"\n formControlName=\"phoneNumber\"\n [class]=\"form.controls['phoneNumber'].touched ? (form.controls['phoneNumber'].valid && form.controls['phoneNumber'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">El numero de telefono es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Sexo</label>\n <select required name=\"gender\" formControlName=\"gender\"\n [class]=\"form.controls['gender'].touched ? (form.controls['gender'].valid && form.controls['gender'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <option value=\"null\" id=\"selectOpSexo\">Sexo</option>\n <option value=\"u\">Desconocido</option>\n <option value=\"s\">Femenino</option>\n <option value=\"m\">Masculino</option>\n </select>\n <span class=\"invalid-feedback\">El sexo es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Fecha creacion</label>\n <input type=\"date\" id=\"\" placeholder=\"Fecha creacion\" required name=\"birthday\"\n formControlName=\"birthday\"\n [class]=\"form.controls['birthday'].touched ? (form.controls['birthday'].valid && form.controls['birthday'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">La fecha de creacion es un campo obligatorio.</span>\n </div>\n </div>\n\n <div class=\"col-12 col-md-6 px-0 pr-md-1\">\n <div class=\"form-group\">\n <label for=\"\">Identificacion</label>\n <input type=\"text\" id=\"\" placeholder=\"Identificacion\" required name=\"taxIdentification\"\n formControlName=\"taxIdentification\"\n [class]=\"form.controls['taxIdentification'].touched ? (form.controls['taxIdentification'].valid && form.controls['taxIdentification'].touched) ? 'form-control rounded-0 is-valid' : 'form-control rounded-0 is-invalid' : 'form-control rounded-0'\">\n <span class=\"invalid-feedback\">La identificacion de la compa\u00F1\u00EDa es un campo\n obligatorio.</span>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1 \">\n <div class=\"form-check py-2\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"terms\" name=\"terms\"\n formControlName=\"terms\" type=\"checkbox\">\n <label for=\"terms\" class=\"form-check-label\">Acepto los <a\n [routerLink]=\"['/section/terminos-y-condiciones']\"\n routerLinkActive=\"router-link-active\" class=\"text-primary\">t\u00E9rminos y\n condiciones *</a></label>\n </div>\n </div>\n <div class=\"col-12 col-md-6 px-0 py-4 pl-md-1\">\n <div class=\"form-check py-2\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"defaultCheck2\"\n name=\"subscribedToNewsletter\" formControlName=\"subscribedToNewsletter\"\n type=\"checkbox\">\n <label class=\"form-check-label\" for=\"defaultCheck2\">\n Suscripci\u00F3n al newsletter\n </label>\n </div>\n </div>\n\n <div\n class=\"col-12 col-md-6 px-0 py-4 pr-md-1 d-flex justify-content-md-start order-2 order-md-1\">\n\n <button type=\"submit\" role=\"button\" [disabled]=\"form.invalid\"\n class=\"btn btn-primary rounded-0 px-5 py-2 w-100 w-md-auto h-fit\">REGISTRATE</button>\n </div>\n\n </div>\n <pre>{{form.value | json}}</pre>\n @if(loading){\n <app-loading-section-ec />\n }\n </form>\n </div>\n </div>\n </div>\n</div>" }]
|
|
148
148
|
}], ctorParameters: () => [], propDecorators: { redirect: [{
|
|
149
149
|
type: Input
|
|
150
150
|
}], ready: [{
|
|
151
151
|
type: Output
|
|
152
152
|
}] } });
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2F1dGgtZWMvcmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjL3JlZ2lzdGVyLXdob2xlc2FsZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLXdob2xlc2FsZXItZm9ybS1lYy9yZWdpc3Rlci13aG9sZXNhbGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFTdEMsTUFBTSxPQUFPLGlDQUFpQztJQUNsQyxZQUFZLEdB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Q0wsQ0FBQyxDQUFBO0lBQ0Q7Ozs7T0FJRztJQUNILG1CQUFtQixHQUFHLENBQUMsS0FBVSxFQUFFLFNBQWMsRUFBRSxFQUFFO1FBQ2pELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hILENBQUMsQ0FBQTt3R0FsSVEsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsMEpDaEI5QyxpamtCQXdPTSwwREQ1TlEseUJBQXlCLGtFQUFFLG1CQUFtQixvNERBQUUsZUFBZSx1RkFBRSxTQUFTLHlDQUFFLFFBQVEsNkNBQUUsVUFBVTs7NEZBSWpHLGlDQUFpQztrQkFQN0MsU0FBUzsrQkFDSSxpQ0FBaUMsY0FDL0IsSUFBSSxXQUNQLENBQUMseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO3dEQWFsRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi93aWRnZXRzLWVjL2xvYWRpbmdcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBGb3JtU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtcmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBBc3luY1BpcGUsIEpzb25QaXBlLCBSb3V0ZXJMaW5rXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3Rlci13aG9sZXNhbGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL3JlZ2lzdGVyLXdob2xlc2FsZXItZm9ybS1lYy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyV2hvbGVzYWxlckZvcm1FY0NvbXBvbmVudCB7XHJcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXHJcbiAgICBwcml2YXRlIF9mb3JtU2VydmljZTogRm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybVNlcnZpY2UpXHJcbiAgICBwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpXHJcbiAgICBwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzaSBkZWJlIHJlZGlyZWNjaW9uYXIgbyBzZSBxdWVkYSBlbiBsYSBtaXNtYSBwYW50YWxsYVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSByZWRpcmVjdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvKipcclxuICAgICAqIFBhcmEgcXVlIHNlIHB1ZWRlIGNhcHR1cmFyIGVsIGVzdGFkbyBkZSBsYSBwZXRpY2nDs24gZGUgcmVnaXN0cm8uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIC8qKlxyXG4gICAgICogQ29udGllbmUgbG9zIHBhaXNlcyB5IHN1cyBkYXRvc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY291bnRyaWVzJCA9IHRoaXMuX2Zvcm1TZXJ2aWNlLmdldENvdW50cmllc0RhdGEoKTtcclxuICAgIC8qKlxyXG4gICAgICogQ29udGllbmUgbGFzIHByb3ZpbmNpYXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb3ZpbmNlcyQgPSB0aGlzLl9mb3JtU2VydmljZS5wcm92aW5jZXMkO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb250aWVuZSBsb3MgdGlwb3MgZGUgZG9jdW1lbnRvcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGRvY3VtZW50VHlwZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UuZG9jdW1lbnRUeXBlcyQ7XHJcbiAgICAvKipcclxuICAgICAqIENvbnRpZW5lIGVsIGZvcm11bGFyaW8gZGUgcmVnaXN0cm8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgICAvKipcclxuICAgICAqIFBhcmEgaW5kaWNhciBjdWFuZG8gc2UgZXN0YSBwcm9jZXNhbmRvIGVsIHJlZ2lzdHJvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJhIGluZGljYXIgY3VhbmRvIHNlIHByb2Nlc28gY29uIGV4aXRvIGVsIHJlZ2lzdHJvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIGxhc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50VHlwZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXHJcbiAgICAgICAgICAgIHBsYWluUGFzc3dvcmQ6IFsnJ10sXHJcbiAgICAgICAgICAgIHBsYWluUGFzc3dvcmQyOiBbJycsIFtdXSxcclxuICAgICAgICAgICAgY291bnRyeUNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgc3RyZWV0OiBbbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKV1dLFxyXG4gICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBwb3N0Y29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgcHJvdmluY2VOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgY29tcGFueU5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICAgICAgcGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignWzAtOV0rJyldXSxcclxuICAgICAgICAgICAgZ2VuZGVyOiBbbnVsbCwgW11dLFxyXG4gICAgICAgICAgICBiaXJ0aGRheTogW251bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgxMSldXSxcclxuICAgICAgICAgICAgdGF4SWRlbnRpZmljYXRpb246IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIGNvbW1lbnRzOiBbJycsIFtdXSxcclxuICAgICAgICAgICAgY29udGFjdEZpcnN0TmFtZTogWycnLCBbXV0sXHJcbiAgICAgICAgICAgIGNvbnRhY3RMYXN0TmFtZTogWycnLCBbXV0sXHJcbiAgICAgICAgICAgIGNvbnRhY3RDb21wYW55UG9zaXRpb246IFsnJywgW11dLFxyXG4gICAgICAgICAgICBjb250YWN0RW1haWw6IFsnJywgW11dLFxyXG4gICAgICAgICAgICBjb250YWN0RG9jdW1lbnRUeXBlOiBbJycsIFtdXSxcclxuICAgICAgICAgICAgY29udGFjdERvY3VtZW50TnVtYmVyOiBbJycsIFtdXSxcclxuICAgICAgICAgICAgc3Vic2NyaWJlZFRvTmV3c2xldHRlcjogW2ZhbHNlXSxcclxuICAgICAgICAgICAgdGVybXM6IFt0cnVlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0cmEgdW4gdXN1YXJpby5cclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICByZWdpc3RlcihldmVudDogRXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZmllbGRzLWluY29tcGxldGUnKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICAgICAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hdXRoU2VydmljZS5zaWduVXBXaG9sZXNhbGVyKHRoaXMuZm9ybS52YWx1ZSkpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygncmVnaXN0ZXItb2snKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWRpcmVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnaG9tZScpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2VtYWlsLWFscmVhZHktcmVnaXN0ZXJlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdlbWFpbC1yZWdpc3Rlci1lcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdpbnZhbGlkLWZvcm0nKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDYXB0dXJhIGVsIGV2ZW50byBkZSBjdWFuZG8gY2FtYmlhIHVuIHBhaXMgZW4gZWwgYDxzZWxlY3Q+YFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBvbkNvdW50cnlTZWxlY3RlZCA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIC8vJCgnI3NlbGVjdE9wUGFpcycpLmF0dHIoJ2Rpc2FibGVkJywgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKCdudWxsJyk7XHJcbiAgICAgICAgLy92YWx1ZSAhPSAnJyAmJiB0aGlzLnByb3ZpbmNlc1N1YmplY3QubmV4dCh0aGlzLmNvdW50cmllc1N1YmplY3QudmFsdWUuZmluZChjb3VudHJ5ID0+IGNvdW50cnkuY29kZSA9PSB2YWx1ZSkucHJvdmluY2VzKTtcclxuICAgICAgICBpZiAodmFsdWUgIT0gJycgfHwgdmFsdWUgIT0gJ251bGwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1TZXJ2aWNlLm9uQ291bnRyeVNlbGVjdGVkKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENhcHR1cmEgZWwgZXZlbnRvIGRlIGN1YW5kbyBjYW1iaWEgdW5hIHByb3ZpbmNpYS9lc3RhZG8gZW4gZWwgYDxzZWxlY3Q+YFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICogQHBhcmFtIHByb3ZpbmNlcyBsaXN0YSBkZSBwcm92aW5jaWFzIHBhcmEgb2J0ZW5lciBlbCBub21icmUgZGUgbGEgc2VsZWNjaW9uYWRhLlxyXG4gICAgICovXHJcbiAgICBvblByb3ZpbmNlc1NlbGVjdGVkID0gKGV2ZW50OiBhbnksIHByb3ZpbmNlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1sncHJvdmluY2VOYW1lJ10uc2V0VmFsdWUocHJvdmluY2VzLmZpbmQoKHByb3ZpbmNlOiBhbnkpID0+IHByb3ZpbmNlLmNvZGUgPT0gdmFsdWUpLm5hbWUpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtNSBwYi0zIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJteS1hdXRvIG14LTIgdGV4dC1sZWZ0IHctZml0IGJvbGQgdGV4dC1iZWlnZTEgd2hpdGUtc3BhY2UtbWQtbm93cmFwXCI+Q1JFQVIgQ1VFTlRBXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1BWU9SSVNUQTwvaDM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlNpIHRvZGF2aWEgbm8gdGllbmVzIHVuYSBjdWVudGEgZGUgZ3JhbmRlcyBjb25zdW1pZG9yZXMgZW4gbnVlc3RyYSBwbGF0YWZvcm1hLCByZWdpc3RyYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZ3Jlc2FuZG8gZXN0b3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3M6PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInJlZ2lzdGVyKCRldmVudClcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCBteC1hdXRvIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTAgcHktM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHByLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPk5vbWJyZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJcIiBwbGFjZWhvbGRlcj1cIk5vbWJyZVwiIHJlcXVpcmVkIG5hbWU9XCJmaXJzdE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1snZmlyc3ROYW1lJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydmaXJzdE5hbWUnXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydmaXJzdE5hbWUnXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5FbCBub21icmUgZXMgdW4gY2FtcG8gb2JsaWdhdG9yaW8uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+QXBlbGxpZG9zPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiQXBlbGxpZG9cIiByZXF1aXJlZCBuYW1lPVwibGFzdE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydsYXN0TmFtZSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snbGFzdE5hbWUnXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydsYXN0TmFtZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIGFwZWxsaWRvIGVzIHVuIGNhbXBvIG9ibGlnYXRvcmlvLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwci1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5FbWFpbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIGlkPVwiXCIgcGxhY2Vob2xkZXI9XCJFbWFpbFwiIGVtYWlsIHJlcXVpcmVkIG5hbWU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2VtYWlsJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydlbWFpbCddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2VtYWlsJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+RWwgZW1haWwgbm8gcG9zZWUgdW4gZm9ybWF0byBjb3JyZWN0by48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5Db250cmFzZcOxYTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGlkPVwiXCIgcGxhY2Vob2xkZXI9XCJDb250cmFzZcOxYVwiIHJlcXVpcmVkIG5hbWU9XCJwbGFpblBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGxhaW5QYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydwbGFpblBhc3N3b3JkJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydwbGFpblBhc3N3b3JkJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1sncGxhaW5QYXNzd29yZCddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkxhIGNvbnRyYXNlw7FhIGVzIHVuIGNhbXBvIG9ibGlnYXRvcmlvLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGRvY3VtZW50VHlwZXMkIHwgYXN5bmM7IGFzIGRvY3VtZW50VHlwZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3snZG9jdW1lbnQtdHlwZSd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cImRvY3VtZW50VHlwZVwiIGZvcm1Db250cm9sTmFtZT1cImRvY3VtZW50VHlwZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJudWxsXCIgaWQ9XCJzZWxlY3REb2N1bWVudFR5cGVcIiBkaXNhYmxlZD5TZWxlY2Npb25lIHVuIHRpcG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodHlwZSBvZiBkb2N1bWVudFR5cGVzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidHlwZS5jb2RlXCI+e3sgdHlwZS5uYW1lIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eydkb2N1bWVudC10eXBlLWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3snZG9jdW1lbnQtbnVtYmVyJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJcIiBwbGFjZWhvbGRlcj1cInt7J2RvY3VtZW50LW51bWJlcid8dHJhbnNsYXRlfX1cIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZG9jdW1lbnROdW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydkb2N1bWVudE51bWJlciddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snZG9jdW1lbnROdW1iZXInXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydkb2N1bWVudE51bWJlciddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7J2RvY3VtZW50LXR5cGUtaGVscCd8dHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoY291bnRyaWVzJCB8IGFzeW5jOyBhcyBjb3VudHJpZXMgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHBsLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J2NvdW50cnknfHRyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJjb3VudHJ5Q29kZVwiIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlDb2RlXCIgcmVxdWlyZWQgKGNoYW5nZSk9XCJvbkNvdW50cnlTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm51bGxcIiBpZD1cInNlbGVjdE9wUGFpc1wiIGRpc2FibGVkPlNlbGVjY2lvbmUgdW4gcGFpczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIGNvdW50cmllczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImNvdW50cnkuY29kZVwiPiB7eyBjb3VudHJ5Lm5hbWUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7J2NvdW50cnktaGVscCd8dHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHByb3ZpbmNlcyQgfGFzeW5jIDsgYXMgcHJvdmluY2VzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHBsLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J3N0YXRlJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwicHJvdmluY2VDb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvdmluY2VDb2RlXCIgcmVxdWlyZWQgKGNoYW5nZSk9XCJvblByb3ZpbmNlc1NlbGVjdGVkKCRldmVudCwgcHJvdmluY2VzKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJudWxsXCIgaWQ9XCJzZWxlY3RPcFByb3ZpbmNpYVwiIGRpc2FibGVkPlNlbGVjY2lvbmUgdW5hIHByb3ZpbmNpYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAocHJvdmluY2Ugb2YgcHJvdmluY2VzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwicHJvdmluY2UuY29kZVwiPnt7IHByb3ZpbmNlLm5hbWUgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7J3N0YXRlLWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3snYWRkcmVzcyd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cInt7J2FkZHJlc3MnfHRyYW5zbGF0ZX19XCIgcmVxdWlyZWQgdHlwZT1cInRleHRcIiBuYW1lPVwic3RyZWV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RyZWV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ3N0cmVldCddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snc3RyZWV0J10udmFsaWQgJiYgZm9ybS5jb250cm9sc1snc3RyZWV0J10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3snYWRkcmVzcy1oZWxwMSd8dHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+e3sndG93bi1jaXR5J3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwie3sndG93bi1jaXR5J3x0cmFuc2xhdGV9fVwiIHJlcXVpcmVkIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2NpdHknXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2NpdHknXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydjaXR5J10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sndG93bi1jaXR5LWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHBsLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J3Bvc3RhbC1jb2RlJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwie3sncG9zdGFsLWNvZGUnfHRyYW5zbGF0ZX19XCIgcmVxdWlyZWQgdHlwZT1cInRleHRcIiBuYW1lPVwicG9zdGNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwb3N0Y29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydwb3N0Y29kZSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1sncG9zdGNvZGUnXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydwb3N0Y29kZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7J3Bvc3RhbC1jb2RlLWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHByLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPk5vbWJyZSBjb21wYcOxw61hPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGNvbXBhw7HDrWFcIiByZXF1aXJlZCBuYW1lPVwiY29tcGFueU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21wYW55TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydjb21wYW55TmFtZSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snY29tcGFueU5hbWUnXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydjb21wYW55TmFtZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIG5vbWJyZSBjb21wYcOxw61hIGVzIHVuIGNhbXBvIG9ibGlnYXRvcmlvLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwci1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj57eydwaG9uZSd8dHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiXCIgcGxhY2Vob2xkZXI9XCJ7eydwaG9uZSd8dHJhbnNsYXRlfX1cIiByZXF1aXJlZCBuYW1lPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydwaG9uZU51bWJlciddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1sncGhvbmVOdW1iZXInXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydwaG9uZU51bWJlciddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIG51bWVybyBkZSB0ZWxlZm9ubyBlcyB1biBjYW1wbyBvYmxpZ2F0b3Jpby48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHItbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+U2V4bzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCByZXF1aXJlZCBuYW1lPVwiZ2VuZGVyXCIgZm9ybUNvbnRyb2xOYW1lPVwiZ2VuZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2dlbmRlciddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snZ2VuZGVyJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1snZ2VuZGVyJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJudWxsXCIgaWQ9XCJzZWxlY3RPcFNleG9cIj5TZXhvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ1XCI+RGVzY29ub2NpZG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNcIj5GZW1lbmlubzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibVwiPk1hc2N1bGlubzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIHNleG8gZXMgdW4gY2FtcG8gb2JsaWdhdG9yaW8uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHByLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPkZlY2hhIGNyZWFjaW9uPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiRmVjaGEgY3JlYWNpb25cIiByZXF1aXJlZCBuYW1lPVwiYmlydGhkYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJiaXJ0aGRheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydiaXJ0aGRheSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snYmlydGhkYXknXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydiaXJ0aGRheSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkxhIGZlY2hhIGRlIGNyZWFjaW9uIGVzIHVuIGNhbXBvIG9ibGlnYXRvcmlvLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwci1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5JZGVudGlmaWNhY2lvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJcIiBwbGFjZWhvbGRlcj1cIklkZW50aWZpY2FjaW9uXCIgcmVxdWlyZWQgbmFtZT1cInRheElkZW50aWZpY2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGF4SWRlbnRpZmljYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1sndGF4SWRlbnRpZmljYXRpb24nXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ3RheElkZW50aWZpY2F0aW9uJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1sndGF4SWRlbnRpZmljYXRpb24nXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5MYSBpZGVudGlmaWNhY2lvbiBkZSBsYSBjb21wYcOxw61hIGVzIHVuIGNhbXBvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ibGlnYXRvcmlvLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHB5LTQgcGwtbWQtMSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cInRlcm1zXCIgbmFtZT1cInRlcm1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGVybXNcIiB0eXBlPVwiY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGVybXNcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5BY2VwdG8gbG9zIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9zZWN0aW9uL3Rlcm1pbm9zLXktY29uZGljaW9uZXMnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj50w6lybWlub3MgeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGljaW9uZXMgKjwvYT48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHktNCBwbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJkZWZhdWx0Q2hlY2syXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInN1YnNjcmliZWRUb05ld3NsZXR0ZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzdWJzY3JpYmVkVG9OZXdzbGV0dGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImRlZmF1bHRDaGVjazJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VzY3JpcGNpw7NuIGFsIG5ld3NsZXR0ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBweS00IHByLW1kLTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1tZC1zdGFydCBvcmRlci0yIG9yZGVyLW1kLTFcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiByb2xlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0wIHB4LTUgcHktMiB3LTEwMCB3LW1kLWF1dG8gaC1maXRcIj5SRUdJU1RSQVRFPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cHJlPnt7Zm9ybS52YWx1ZSB8IGpzb259fTwvcHJlPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZihsb2FkaW5nKXtcclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctc2VjdGlvbi1lYyAvPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2F1dGgtZWMvcmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjL3JlZ2lzdGVyLXdob2xlc2FsZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLXdob2xlc2FsZXItZm9ybS1lYy9yZWdpc3Rlci13aG9sZXNhbGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFTdEMsTUFBTSxPQUFPLGlDQUFpQztJQUNsQyxZQUFZLEdB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Q0wsQ0FBQyxDQUFBO0lBQ0Q7Ozs7T0FJRztJQUNILG1CQUFtQixHQUFHLENBQUMsS0FBVSxFQUFFLFNBQWMsRUFBRSxFQUFFO1FBQ2pELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hILENBQUMsQ0FBQTt3R0FsSVEsaUNBQWlDOzRGQUFqQyxpQ0FBaUMsMEpDaEI5QyxpbWpCQXdPTSwwREQ1TlEseUJBQXlCLGtFQUFFLG1CQUFtQixvNERBQUUsZUFBZSx1RkFBRSxTQUFTLHlDQUFFLFFBQVEsNkNBQUUsVUFBVTs7NEZBSWpHLGlDQUFpQztrQkFQN0MsU0FBUzsrQkFDSSxpQ0FBaUMsY0FDL0IsSUFBSSxXQUNQLENBQUMseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO3dEQWFsRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvYWRpbmdTZWN0aW9uRWNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vd2lkZ2V0cy1lYy9sb2FkaW5nXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgRm9ybVNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXJlZ2lzdGVyLXdob2xlc2FsZXItZm9ybS1lYycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBBc3luY1BpcGUsIEpzb25QaXBlLCBSb3V0ZXJMaW5rXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcmVnaXN0ZXItd2hvbGVzYWxlci1mb3JtLWVjLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3Rlcldob2xlc2FsZXJGb3JtRWNDb21wb25lbnQge1xuICAgIHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcilcbiAgICBwcml2YXRlIF9mb3JtU2VydmljZTogRm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybVNlcnZpY2UpXG4gICAgcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKVxuICAgIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSlcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGRlYmUgcmVkaXJlY2Npb25hciBvIHNlIHF1ZWRhIGVuIGxhIG1pc21hIHBhbnRhbGxhXG4gICAgICovXG4gICAgQElucHV0KCkgcmVkaXJlY3Q6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFBhcmEgcXVlIHNlIHB1ZWRlIGNhcHR1cmFyIGVsIGVzdGFkbyBkZSBsYSBwZXRpY2nDs24gZGUgcmVnaXN0cm8uXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKlxuICAgICAqIENvbnRpZW5lIGxvcyBwYWlzZXMgeSBzdXMgZGF0b3NcbiAgICAgKi9cbiAgICBwdWJsaWMgY291bnRyaWVzJCA9IHRoaXMuX2Zvcm1TZXJ2aWNlLmdldENvdW50cmllc0RhdGEoKTtcbiAgICAvKipcbiAgICAgKiBDb250aWVuZSBsYXMgcHJvdmluY2lhc1xuICAgICAqL1xuICAgIHB1YmxpYyBwcm92aW5jZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UucHJvdmluY2VzJDtcbiAgICAvKipcbiAgICAgKiBDb250aWVuZSBsb3MgdGlwb3MgZGUgZG9jdW1lbnRvcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZG9jdW1lbnRUeXBlcyQgPSB0aGlzLl9mb3JtU2VydmljZS5kb2N1bWVudFR5cGVzJDtcbiAgICAvKipcbiAgICAgKiBDb250aWVuZSBlbCBmb3JtdWxhcmlvIGRlIHJlZ2lzdHJvLlxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gICAgLyoqXG4gICAgICogUGFyYSBpbmRpY2FyIGN1YW5kbyBzZSBlc3RhIHByb2Nlc2FuZG8gZWwgcmVnaXN0cm8uXG4gICAgICovXG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBQYXJhIGluZGljYXIgY3VhbmRvIHNlIHByb2Nlc28gY29uIGV4aXRvIGVsIHJlZ2lzdHJvLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdWNjZXNzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgZmlyc3ROYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICBsYXN0TmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgZG9jdW1lbnRUeXBlOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIGRvY3VtZW50TnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgICAgICAgcGxhaW5QYXNzd29yZDogWycnXSxcbiAgICAgICAgICAgIHBsYWluUGFzc3dvcmQyOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvdW50cnlDb2RlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBzdHJlZXQ6IFtudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXV0sXG4gICAgICAgICAgICBjaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgcG9zdGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBwcm92aW5jZU5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICBwcm92aW5jZUNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGNvbXBhbnlOYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICBwaG9uZU51bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdbMC05XSsnKV1dLFxuICAgICAgICAgICAgZ2VuZGVyOiBbbnVsbCwgW11dLFxuICAgICAgICAgICAgYmlydGhkYXk6IFtudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTEpXV0sXG4gICAgICAgICAgICB0YXhJZGVudGlmaWNhdGlvbjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGNvbW1lbnRzOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvbnRhY3RGaXJzdE5hbWU6IFsnJywgW11dLFxuICAgICAgICAgICAgY29udGFjdExhc3ROYW1lOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvbnRhY3RDb21wYW55UG9zaXRpb246IFsnJywgW11dLFxuICAgICAgICAgICAgY29udGFjdEVtYWlsOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGNvbnRhY3REb2N1bWVudFR5cGU6IFsnJywgW11dLFxuICAgICAgICAgICAgY29udGFjdERvY3VtZW50TnVtYmVyOiBbJycsIFtdXSxcbiAgICAgICAgICAgIHN1YnNjcmliZWRUb05ld3NsZXR0ZXI6IFtmYWxzZV0sXG4gICAgICAgICAgICB0ZXJtczogW3RydWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVnaXN0cmEgdW4gdXN1YXJpby5cbiAgICAgKiBAcGFyYW0gZXZlbnQgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcmVnaXN0ZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdmaWVsZHMtaW5jb21wbGV0ZScpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgZmlyc3RWYWx1ZUZyb20odGhpcy5fYXV0aFNlcnZpY2Uuc2lnblVwV2hvbGVzYWxlcih0aGlzLmZvcm0udmFsdWUpKS50aGVuKFxuICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ3JlZ2lzdGVyLW9rJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVkaXJlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdob21lJylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZW1haWwtYWxyZWFkeS1yZWdpc3RlcmVkJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZW1haWwtcmVnaXN0ZXItZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdpbnZhbGlkLWZvcm0nKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhcHR1cmEgZWwgZXZlbnRvIGRlIGN1YW5kbyBjYW1iaWEgdW4gcGFpcyBlbiBlbCBgPHNlbGVjdD5gXG4gICAgICogQHBhcmFtIGV2ZW50IFxuICAgICAqL1xuICAgIG9uQ291bnRyeVNlbGVjdGVkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAvLyQoJyNzZWxlY3RPcFBhaXMnKS5hdHRyKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnNldFZhbHVlKCdudWxsJyk7XG4gICAgICAgIC8vdmFsdWUgIT0gJycgJiYgdGhpcy5wcm92aW5jZXNTdWJqZWN0Lm5leHQodGhpcy5jb3VudHJpZXNTdWJqZWN0LnZhbHVlLmZpbmQoY291bnRyeSA9PiBjb3VudHJ5LmNvZGUgPT0gdmFsdWUpLnByb3ZpbmNlcyk7XG4gICAgICAgIGlmICh2YWx1ZSAhPSAnJyB8fCB2YWx1ZSAhPSAnbnVsbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1TZXJ2aWNlLm9uQ291bnRyeVNlbGVjdGVkKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYXB0dXJhIGVsIGV2ZW50byBkZSBjdWFuZG8gY2FtYmlhIHVuYSBwcm92aW5jaWEvZXN0YWRvIGVuIGVsIGA8c2VsZWN0PmBcbiAgICAgKiBAcGFyYW0gZXZlbnQgXG4gICAgICogQHBhcmFtIHByb3ZpbmNlcyBsaXN0YSBkZSBwcm92aW5jaWFzIHBhcmEgb2J0ZW5lciBlbCBub21icmUgZGUgbGEgc2VsZWNjaW9uYWRhLlxuICAgICAqL1xuICAgIG9uUHJvdmluY2VzU2VsZWN0ZWQgPSAoZXZlbnQ6IGFueSwgcHJvdmluY2VzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlTmFtZSddLnNldFZhbHVlKHByb3ZpbmNlcy5maW5kKChwcm92aW5jZTogYW55KSA9PiBwcm92aW5jZS5jb2RlID09IHZhbHVlKS5uYW1lKTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtNSBwYi0zIGJvcmRlci1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibXktYXV0byBteC0yIHRleHQtbGVmdCB3LWZpdCBib2xkIHRleHQtYmVpZ2UxIHdoaXRlLXNwYWNlLW1kLW5vd3JhcFwiPkNSRUFSIENVRU5UQVxuICAgICAgICAgICAgICAgICAgICAgICAgTUFZT1JJU1RBPC9oMz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+U2kgdG9kYXZpYSBubyB0aWVuZXMgdW5hIGN1ZW50YSBkZSBncmFuZGVzIGNvbnN1bWlkb3JlcyBlbiBudWVzdHJhIHBsYXRhZm9ybWEsIHJlZ2lzdHJhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZ3Jlc2FuZG8gZXN0b3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zOjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInJlZ2lzdGVyKCRldmVudClcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbXgtYXV0byBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0wIHB5LTNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHByLW1kLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+Tm9tYnJlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJcIiBwbGFjZWhvbGRlcj1cIk5vbWJyZVwiIHJlcXVpcmVkIG5hbWU9XCJmaXJzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydmaXJzdE5hbWUnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2ZpcnN0TmFtZSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2ZpcnN0TmFtZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5FbCBub21icmUgZXMgdW4gY2FtcG8gb2JsaWdhdG9yaW8uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5BcGVsbGlkb3M8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiQXBlbGxpZG9cIiByZXF1aXJlZCBuYW1lPVwibGFzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2xhc3ROYW1lJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydsYXN0TmFtZSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2xhc3ROYW1lJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIGFwZWxsaWRvIGVzIHVuIGNhbXBvIG9ibGlnYXRvcmlvLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHItbWQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5FbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiRW1haWxcIiBlbWFpbCByZXF1aXJlZCBuYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2VtYWlsJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydlbWFpbCddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2VtYWlsJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIGVtYWlsIG5vIHBvc2VlIHVuIGZvcm1hdG8gY29ycmVjdG8uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5Db250cmFzZcOxYTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiQ29udHJhc2XDsWFcIiByZXF1aXJlZCBuYW1lPVwicGxhaW5QYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwbGFpblBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydwbGFpblBhc3N3b3JkJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydwbGFpblBhc3N3b3JkJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1sncGxhaW5QYXNzd29yZCddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5MYSBjb250cmFzZcOxYSBlcyB1biBjYW1wbyBvYmxpZ2F0b3Jpby48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihkb2N1bWVudFR5cGVzJCB8IGFzeW5jOyBhcyBkb2N1bWVudFR5cGVzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J2RvY3VtZW50LXR5cGUnfHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiZG9jdW1lbnRUeXBlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnRUeXBlXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydkb2N1bWVudFR5cGUnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2RvY3VtZW50VHlwZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwibnVsbFwiIGlkPVwic2VsZWN0RG9jdW1lbnRUeXBlXCIgZGlzYWJsZWQ+U2VsZWNjaW9uZSB1biB0aXBvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0eXBlIG9mIGRvY3VtZW50VHlwZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidHlwZS5jb2RlXCI+e3sgdHlwZS5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eydkb2N1bWVudC10eXBlLWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J2RvY3VtZW50LW51bWJlcid8dHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwie3snZG9jdW1lbnQtbnVtYmVyJ3x0cmFuc2xhdGV9fVwiIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZG9jdW1lbnROdW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJkb2N1bWVudE51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1snZG9jdW1lbnROdW1iZXInXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2RvY3VtZW50TnVtYmVyJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1snZG9jdW1lbnROdW1iZXInXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3snZG9jdW1lbnQtdHlwZS1oZWxwJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoY291bnRyaWVzJCB8IGFzeW5jOyBhcyBjb3VudHJpZXMgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J2NvdW50cnknfHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiY291bnRyeUNvZGVcIiBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5Q29kZVwiIHJlcXVpcmVkIChjaGFuZ2UpPVwib25Db3VudHJ5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1snY291bnRyeUNvZGUnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1snY291bnRyeUNvZGUnXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm51bGxcIiBpZD1cInNlbGVjdE9wUGFpc1wiIGRpc2FibGVkPlNlbGVjY2lvbmUgdW4gcGFpczwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBjb3VudHJpZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiY291bnRyeS5jb2RlXCI+IHt7IGNvdW50cnkubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3snY291bnRyeS1oZWxwJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHByb3ZpbmNlcyQgfGFzeW5jIDsgYXMgcHJvdmluY2VzKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J3N0YXRlJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cInByb3ZpbmNlQ29kZVwiIGZvcm1Db250cm9sTmFtZT1cInByb3ZpbmNlQ29kZVwiIHJlcXVpcmVkIChjaGFuZ2UpPVwib25Qcm92aW5jZXNTZWxlY3RlZCgkZXZlbnQsIHByb3ZpbmNlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ3Byb3ZpbmNlQ29kZSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1sncHJvdmluY2VDb2RlJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1sncHJvdmluY2VDb2RlJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJudWxsXCIgaWQ9XCJzZWxlY3RPcFByb3ZpbmNpYVwiIGRpc2FibGVkPlNlbGVjY2lvbmUgdW5hIHByb3ZpbmNpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChwcm92aW5jZSBvZiBwcm92aW5jZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwicHJvdmluY2UuY29kZVwiPnt7IHByb3ZpbmNlLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7J3N0YXRlLWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J2FkZHJlc3MnfHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwie3snYWRkcmVzcyd8dHJhbnNsYXRlfX1cIiByZXF1aXJlZCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzdHJlZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RyZWV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydzdHJlZXQnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ3N0cmVldCddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ3N0cmVldCddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eydhZGRyZXNzLWhlbHAxJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcGwtbWQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj57eyd0b3duLWNpdHknfHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBsYWNlaG9sZGVyPVwie3sndG93bi1jaXR5J3x0cmFuc2xhdGV9fVwiIHJlcXVpcmVkIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1snY2l0eSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1snY2l0eSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2NpdHknXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sndG93bi1jaXR5LWhlbHAnfHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J3Bvc3RhbC1jb2RlJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cInt7J3Bvc3RhbC1jb2RlJ3x0cmFuc2xhdGV9fVwiIHJlcXVpcmVkIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInBvc3Rjb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvc3Rjb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJmb3JtLmNvbnRyb2xzWydwb3N0Y29kZSddLnRvdWNoZWQgPyAoZm9ybS5jb250cm9sc1sncG9zdGNvZGUnXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydwb3N0Y29kZSddLnRvdWNoZWQpID8gICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLXZhbGlkJyA6ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy1pbnZhbGlkJyA6ICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eydwb3N0YWwtY29kZS1oZWxwJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHItbWQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5Ob21icmUgY29tcGHDscOtYTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiXCIgcGxhY2Vob2xkZXI9XCJOb21icmUgY29tcGHDscOtYVwiIHJlcXVpcmVkIG5hbWU9XCJjb21wYW55TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21wYW55TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1snY29tcGFueU5hbWUnXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ2NvbXBhbnlOYW1lJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1snY29tcGFueU5hbWUnXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+RWwgbm9tYnJlIGNvbXBhw7HDrWEgZXMgdW4gY2FtcG8gb2JsaWdhdG9yaW8uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBwci1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPnt7J3Bob25lJ3x0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiXCIgcGxhY2Vob2xkZXI9XCJ7eydwaG9uZSd8dHJhbnNsYXRlfX1cIiByZXF1aXJlZCBuYW1lPVwicGhvbmVOdW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVOdW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ3Bob25lTnVtYmVyJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydwaG9uZU51bWJlciddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ3Bob25lTnVtYmVyJ10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkVsIG51bWVybyBkZSB0ZWxlZm9ubyBlcyB1biBjYW1wbyBvYmxpZ2F0b3Jpby48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHByLW1kLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+U2V4bzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgcmVxdWlyZWQgbmFtZT1cImdlbmRlclwiIGZvcm1Db250cm9sTmFtZT1cImdlbmRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1snZ2VuZGVyJ10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzWydnZW5kZXInXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJudWxsXCIgaWQ9XCJzZWxlY3RPcFNleG9cIj5TZXhvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidVwiPkRlc2Nvbm9jaWRvPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwic1wiPkZlbWVuaW5vPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibVwiPk1hc2N1bGlubzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+RWwgc2V4byBlcyB1biBjYW1wbyBvYmxpZ2F0b3Jpby48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBweC0wIHByLW1kLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCI+RmVjaGEgY3JlYWNpb248L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBpZD1cIlwiIHBsYWNlaG9sZGVyPVwiRmVjaGEgY3JlYWNpb25cIiByZXF1aXJlZCBuYW1lPVwiYmlydGhkYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYmlydGhkYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImZvcm0uY29udHJvbHNbJ2JpcnRoZGF5J10udG91Y2hlZCA/IChmb3JtLmNvbnRyb2xzWydiaXJ0aGRheSddLnZhbGlkICYmIGZvcm0uY29udHJvbHNbJ2JpcnRoZGF5J10udG91Y2hlZCkgPyAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtdmFsaWQnIDogICdmb3JtLWNvbnRyb2wgcm91bmRlZC0wIGlzLWludmFsaWQnIDogJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkxhIGZlY2hhIGRlIGNyZWFjaW9uIGVzIHVuIGNhbXBvIG9ibGlnYXRvcmlvLjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHItbWQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5JZGVudGlmaWNhY2lvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiXCIgcGxhY2Vob2xkZXI9XCJJZGVudGlmaWNhY2lvblwiIHJlcXVpcmVkIG5hbWU9XCJ0YXhJZGVudGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhJZGVudGlmaWNhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZm9ybS5jb250cm9sc1sndGF4SWRlbnRpZmljYXRpb24nXS50b3VjaGVkID8gKGZvcm0uY29udHJvbHNbJ3RheElkZW50aWZpY2F0aW9uJ10udmFsaWQgJiYgZm9ybS5jb250cm9sc1sndGF4SWRlbnRpZmljYXRpb24nXS50b3VjaGVkKSA/ICAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCBpcy12YWxpZCcgOiAgJ2Zvcm0tY29udHJvbCByb3VuZGVkLTAgaXMtaW52YWxpZCcgOiAnZm9ybS1jb250cm9sIHJvdW5kZWQtMCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+TGEgaWRlbnRpZmljYWNpb24gZGUgbGEgY29tcGHDscOtYSBlcyB1biBjYW1wb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JsaWdhdG9yaW8uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHktNCBwbC1tZC0xIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCIgaWQ9XCJ0ZXJtc1wiIG5hbWU9XCJ0ZXJtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJtc1wiIHR5cGU9XCJjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGVybXNcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5BY2VwdG8gbG9zIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvc2VjdGlvbi90ZXJtaW5vcy15LWNvbmRpY2lvbmVzJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPnTDqXJtaW5vcyB5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGljaW9uZXMgKjwvYT48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IHB4LTAgcHktNCBwbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIiBpZD1cImRlZmF1bHRDaGVjazJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInN1YnNjcmliZWRUb05ld3NsZXR0ZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzdWJzY3JpYmVkVG9OZXdzbGV0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZGVmYXVsdENoZWNrMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VzY3JpcGNpw7NuIGFsIG5ld3NsZXR0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgcHgtMCBweS00IHByLW1kLTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1tZC1zdGFydCBvcmRlci0yIG9yZGVyLW1kLTFcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHJvbGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0wIHB4LTUgcHktMiB3LTEwMCB3LW1kLWF1dG8gaC1maXRcIj5SRUdJU1RSQVRFPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHByZT57e2Zvcm0udmFsdWUgfCBqc29ufX08L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgQGlmKGxvYWRpbmcpe1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctc2VjdGlvbi1lYyAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|