ng-easycommerce-v18 0.3.23-beta.2 → 0.4.0

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.
Files changed (202) hide show
  1. package/README.md +119 -111
  2. package/assets/decidirFormEc.html +514 -514
  3. package/assets/ec-i18n/ct.json +282 -282
  4. package/assets/ec-i18n/en.json +0 -0
  5. package/assets/ec-i18n/es.json +434 -434
  6. package/assets/ec-i18n/fr.json +0 -0
  7. package/assets/ec-i18n/gl.json +282 -282
  8. package/assets/ec-i18n/pr.json +282 -282
  9. package/assets/images/cards-occasional.svg +21 -21
  10. package/assets/recaptcha/recaptcha-site-keys.json +3 -3
  11. package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
  12. package/assets/recaptcha/recaptcha-sites.json +52 -52
  13. package/esm2022/lib/api/connection.service.mjs +1 -1
  14. package/esm2022/lib/classes/checkout/steps.mjs +1 -1
  15. package/esm2022/lib/classes/component-helper.mjs +1 -1
  16. package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
  17. package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
  18. package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
  19. package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
  20. package/esm2022/lib/classes/filters/filter.mjs +1 -1
  21. package/esm2022/lib/classes/filters/index.mjs +1 -1
  22. package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
  23. package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
  24. package/esm2022/lib/classes/index.mjs +1 -1
  25. package/esm2022/lib/classes/user.mjs +1 -1
  26. package/esm2022/lib/constants/api.constants.service.mjs +19 -15
  27. package/esm2022/lib/constants/core.constants.service.mjs +9 -3
  28. package/esm2022/lib/constants/index.mjs +1 -1
  29. package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
  30. package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
  31. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +17 -1
  32. package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
  33. package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
  34. package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +3 -3
  35. package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
  36. package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
  37. package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
  38. package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
  39. package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
  40. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +28 -18
  41. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +27 -23
  42. package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
  43. package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
  44. package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
  45. package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
  46. package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
  47. package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
  48. package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
  49. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +7 -4
  50. package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
  51. package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
  52. package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
  53. package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -3
  54. package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
  55. package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
  56. package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
  57. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +4 -11
  58. package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
  59. package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
  60. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +8 -4
  61. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
  62. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
  63. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +55 -46
  64. package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
  65. package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
  66. package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
  67. package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -3
  68. package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
  69. package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
  70. package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
  71. package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
  72. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +30 -7
  73. package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
  74. package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
  75. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +13 -7
  76. package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
  77. package/esm2022/lib/ec-components/index.mjs +1 -1
  78. package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
  79. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +12 -7
  80. package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
  81. package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
  82. package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
  83. package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
  84. package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
  85. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
  86. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
  87. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
  88. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
  89. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
  90. package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
  91. package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
  92. package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
  93. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +20 -11
  94. package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
  95. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +14 -8
  96. package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
  97. package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
  98. package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
  99. package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
  100. package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
  101. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +9 -9
  102. package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
  103. package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
  104. package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
  105. package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +19 -9
  106. package/esm2022/lib/ec-directive/index.mjs +1 -1
  107. package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
  108. package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
  109. package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
  110. package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
  111. package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
  112. package/esm2022/lib/ec-pipe/index.mjs +1 -1
  113. package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
  114. package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
  115. package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
  116. package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
  117. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  118. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +3 -2
  119. package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
  120. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
  121. package/esm2022/lib/ec-services/auth.service.mjs +1 -1
  122. package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
  123. package/esm2022/lib/ec-services/base-api.service.mjs +148 -0
  124. package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
  125. package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
  126. package/esm2022/lib/ec-services/cart.service.mjs +1 -1
  127. package/esm2022/lib/ec-services/channel.service.mjs +1 -1
  128. package/esm2022/lib/ec-services/checkout.service.mjs +4 -2
  129. package/esm2022/lib/ec-services/currency.service.mjs +1 -1
  130. package/esm2022/lib/ec-services/filters.service.mjs +1 -1
  131. package/esm2022/lib/ec-services/form.service.mjs +1 -1
  132. package/esm2022/lib/ec-services/index.mjs +3 -1
  133. package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
  134. package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
  135. package/esm2022/lib/ec-services/options.service.mjs +1 -1
  136. package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
  137. package/esm2022/lib/ec-services/orders.service.mjs +1 -1
  138. package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
  139. package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
  140. package/esm2022/lib/ec-services/payment.service.mjs +1 -1
  141. package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
  142. package/esm2022/lib/ec-services/products.service.mjs +1 -1
  143. package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
  144. package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
  145. package/esm2022/lib/ec-services/runtime-config.service.mjs +219 -0
  146. package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
  147. package/esm2022/lib/ec-services/stores.service.mjs +1 -1
  148. package/esm2022/lib/ec-services/test.service.mjs +1 -1
  149. package/esm2022/lib/ec-services/toast.service.mjs +1 -1
  150. package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
  151. package/esm2022/lib/interceptors/index.mjs +2 -1
  152. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +41 -0
  153. package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
  154. package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
  155. package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
  156. package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
  157. package/esm2022/lib/interfaces/blocks.mjs +1 -1
  158. package/esm2022/lib/interfaces/checkout.mjs +1 -1
  159. package/esm2022/lib/interfaces/connection.mjs +1 -1
  160. package/esm2022/lib/interfaces/coupon.mjs +1 -1
  161. package/esm2022/lib/interfaces/currency.mjs +1 -1
  162. package/esm2022/lib/interfaces/deserializable.mjs +1 -1
  163. package/esm2022/lib/interfaces/environment.mjs +1 -1
  164. package/esm2022/lib/interfaces/faqs.mjs +1 -1
  165. package/esm2022/lib/interfaces/filter.mjs +1 -1
  166. package/esm2022/lib/interfaces/index.mjs +2 -1
  167. package/esm2022/lib/interfaces/options.mjs +1 -1
  168. package/esm2022/lib/interfaces/pagination.mjs +1 -1
  169. package/esm2022/lib/interfaces/parameter.mjs +1 -1
  170. package/esm2022/lib/interfaces/product.mjs +1 -1
  171. package/esm2022/lib/interfaces/runtime-config.mjs +2 -0
  172. package/esm2022/lib/interfaces/step.mjs +1 -1
  173. package/esm2022/lib/interfaces/storage.mjs +1 -1
  174. package/esm2022/lib/interfaces/store.mjs +1 -1
  175. package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
  176. package/esm2022/lib/providers/index.mjs +2 -1
  177. package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
  178. package/esm2022/lib/providers/provideRuntimeConfig.mjs +36 -0
  179. package/esm2022/lib/stores/currency.store.mjs +1 -1
  180. package/esm2022/public-api.mjs +1 -1
  181. package/fesm2022/ng-easycommerce-v18.mjs +851 -314
  182. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  183. package/lib/constants/api.constants.service.d.ts +1 -0
  184. package/lib/constants/core.constants.service.d.ts +5 -1
  185. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +12 -0
  186. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +2 -0
  187. package/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.d.ts +1 -1
  188. package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +1 -0
  189. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +12 -4
  190. package/lib/ec-services/base-api.service.d.ts +64 -0
  191. package/lib/ec-services/index.d.ts +2 -0
  192. package/lib/ec-services/runtime-config.service.d.ts +69 -0
  193. package/lib/interceptors/index.d.ts +1 -0
  194. package/lib/interceptors/runtime-config.interceptor.d.ts +7 -0
  195. package/lib/interfaces/environment.d.ts +1 -0
  196. package/lib/interfaces/filter.d.ts +1 -0
  197. package/lib/interfaces/index.d.ts +1 -0
  198. package/lib/interfaces/options.d.ts +2 -0
  199. package/lib/interfaces/runtime-config.d.ts +22 -0
  200. package/lib/providers/index.d.ts +1 -0
  201. package/lib/providers/provideRuntimeConfig.d.ts +13 -0
  202. package/package.json +1 -1
@@ -133,14 +133,14 @@ export class RegisterFormEcComponent {
133
133
  this.showPassword = !this.showPassword;
134
134
  }
135
135
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterFormEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
136
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterFormEcComponent, isStandalone: true, selector: "app-register-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\r\n <div class=\"py-2\">\r\n <h5>CREAR CUENTA</h5>\r\n </div>\r\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">NOMBRE</label>\r\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">APELLIDO</label>\r\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\r\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\r\n placeholder=\"Correo electr\u00F3nico\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Contrase\u00F1a\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Repetir contrase\u00F1a\">\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\r\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\r\n id=\"Color2\">\r\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\r\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\r\n condiciones</label>\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\r\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\r\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\r\n Suscripci\u00F3n al Newsletter</label>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\r\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\r\n </div>\r\n </div>\r\n </form>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.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.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { 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: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }] });
136
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterFormEcComponent, isStandalone: true, selector: "app-register-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\n <div class=\"py-2\">\n <h5>CREAR CUENTA</h5>\n </div>\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">NOMBRE</label>\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">APELLIDO</label>\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\n placeholder=\"Correo electr\u00F3nico\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\n placeholder=\"Contrase\u00F1a\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\n placeholder=\"Repetir contrase\u00F1a\">\n </div>\n\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\n id=\"Color2\">\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\n condiciones</label>\n </div>\n\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\n Suscripci\u00F3n al Newsletter</label>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\n </div>\n </div>\n </form>\n @if(loading){\n <app-loading-section-ec />\n }\n \n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.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.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { 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: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }] });
137
137
  }
138
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterFormEcComponent, decorators: [{
139
139
  type: Component,
140
- args: [{ selector: 'app-register-form-ec', standalone: true, imports: [ReactiveFormsModule, LoadingSectionEcComponent], template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\r\n <div class=\"py-2\">\r\n <h5>CREAR CUENTA</h5>\r\n </div>\r\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">NOMBRE</label>\r\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">APELLIDO</label>\r\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\r\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\r\n placeholder=\"Correo electr\u00F3nico\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Contrase\u00F1a\">\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\r\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\r\n placeholder=\"Repetir contrase\u00F1a\">\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\r\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\r\n id=\"Color2\">\r\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\r\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\r\n condiciones</label>\r\n </div>\r\n\r\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\r\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\r\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\r\n Suscripci\u00F3n al Newsletter</label>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\r\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\r\n </div>\r\n </div>\r\n </form>\r\n @if(loading){\r\n <app-loading-section-ec />\r\n }\r\n \r\n</div>\r\n" }]
140
+ args: [{ selector: 'app-register-form-ec', standalone: true, imports: [ReactiveFormsModule, LoadingSectionEcComponent], template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\n <div class=\"py-2\">\n <h5>CREAR CUENTA</h5>\n </div>\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">NOMBRE</label>\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">APELLIDO</label>\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\n placeholder=\"Correo electr\u00F3nico\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\n placeholder=\"Contrase\u00F1a\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\n placeholder=\"Repetir contrase\u00F1a\">\n </div>\n\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\n id=\"Color2\">\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\n condiciones</label>\n </div>\n\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\n Suscripci\u00F3n al Newsletter</label>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\n </div>\n </div>\n </form>\n @if(loading){\n <app-loading-section-ec />\n }\n \n</div>\n" }]
141
141
  }], ctorParameters: () => [], propDecorators: { redirect: [{
142
142
  type: Input
143
143
  }], ready: [{
144
144
  type: Output
145
145
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBU3RELE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7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QUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx5QkFBeUIsQ0FBQzt3REFnQmhELFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQXV0aFNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi93aWRnZXRzLWVjL2xvYWRpbmdcIjtcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1mb3JtLWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBMb2FkaW5nU2VjdGlvbkVjQ29tcG9uZW50XSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZvcm1FY0NvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSBfYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblx0cHJpdmF0ZSBfYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xyXG5cdHByaXZhdGUgY2hhbm5lbENvbmZpZ1NlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcclxuXHRzaG93UGFzc3dvcmQgPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0KiBJbmRpY2Egc2kgZGViZSByZWRpcmVjY2lvbmFyIG8gc2UgcXVlZGEgZW4gbGEgbWlzbWEgcGFudGFsbGFcclxuXHQqL1xyXG5cdEBJbnB1dCgpIHJlZGlyZWN0OiBib29sZWFuID0gdHJ1ZTtcclxuXHQvKipcclxuXHQgKiBQYXJhIHF1ZSBzZSBwdWVkZSBjYXB0dXJhciBlbCBlc3RhZG8gZGUgbGEgcGV0aWNpw7NuIGRlIHJlZ2lzdHJvLlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKipcclxuXHQgKiBDb250aWVuZSBlbCBmb3JtdWxhcmlvIGRlIHJlZ2lzdHJvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWdpc3RlckZvcm06IEZvcm1Hcm91cCA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcclxuXHRcdGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuXHRcdGxhc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG5cdFx0ZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcclxuXHRcdHBsYWluUGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcblx0XHRwbGFpblBhc3N3b3JkMjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuXHRcdHBob25lOiBbJycsXSxcclxuXHRcdG5ld3NsZXR0ZXI6IFsnJ10sXHJcblx0XHR0ZXJtczogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV0sXHJcblx0fSwgeyB2YWxpZGF0b3JzOiB0aGlzLnBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IgfSk7XHJcblx0cmVnaXN0ZXJfbG9hZGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHRwdWJsaWMgaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBmYWxzZTtcclxuXHRwdWJsaWMgaXNTZW5kV2VsY29tZUVtYWlsID0gZmFsc2U7XHJcblxyXG5cdHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoZ3JvdXA6IEZvcm1Hcm91cCkge1xyXG5cdFx0cmV0dXJuIGdyb3VwLmdldCgncGxhaW5QYXNzd29yZCcpPy52YWx1ZSA9PT0gZ3JvdXAuZ2V0KCdwbGFpblBhc3N3b3JkMicpPy52YWx1ZVxyXG5cdFx0XHQ/IG51bGwgOiB7IG1pc21hdGNoOiB0cnVlIH07XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgaW5kaWNhciBxdWUgc2UgZXN0YSBwcm9jZXNhbmRvIGxhIHNvbGljaXR1ZCBkZSByZWdpc3Ryby5cclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdC8qKlxyXG5cdCAqIFBhcmEgaW5kaWNhciBlbCBleGl0byBkZSBsYSBzb2xpY2l0dWQgZGUgcmVnaXN0cm8uXHJcblx0ICovXHJcblx0cHVibGljIHN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLmNoYW5uZWxDb25maWdTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShcclxuXHRcdFx0KGNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdGlmIChjb25maWcgJiYgY29uZmlnLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBjb25maWcuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQ7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGNvbmZpZyAmJiBjb25maWcuaXNTZW5kV2VsY29tZUVtYWlsICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMuaXNTZW5kV2VsY29tZUVtYWlsID0gY29uZmlnLmlzU2VuZFdlbGNvbWVFbWFpbDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5pc1NlbmRXZWxjb21lRW1haWwgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHQpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZWdpc3RyYSB1biB1c3VhcmlvLlxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRyZWdpc3RlcihldmVudDogRXZlbnQpIHtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ3JlZ2lzdGVyRm9ybScsIHRoaXMucmVnaXN0ZXJGb3JtKTtcclxuXHRcdGlmICghdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ZpZWxkcy1pbmNvbXBsZXRlJyk7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdHJldHVybjtcclxuXHRcdH07XHJcblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZCAhPSB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkMikge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWlzbWF0Y2hlZC1wYXNzd29yZCcpO1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcclxuXHRcdFx0dGhpcy5fYXV0aFNlcnZpY2Uuc2luZ1VwKHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlKS50b1Byb21pc2UoKS50aGVuKFxyXG5cdFx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdGxldCBtZXNzYWdlS2V5OiBzdHJpbmc7XHJcblx0XHRcdFx0XHRzd2l0Y2ggKHRydWUpIHtcclxuXHRcdFx0XHRcdFx0Y2FzZSB0aGlzLmlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkOlxyXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VLZXkgPSAncmVnaXN0ZXItb2snO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIHRoaXMuaXNTZW5kV2VsY29tZUVtYWlsOlxyXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VLZXkgPSAncmVnaXN0ZXItd2VsY29tZSc7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdFx0bWVzc2FnZUtleSA9ICdyZWdpc3Rlci1zdWNjZXNzJztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KG1lc3NhZ2VLZXkpO1xyXG5cdFx0XHRcdFx0dGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NpZ25fdXAnLCB7XHJcblx0XHRcdFx0XHRcdGZpcnN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUuZmlyc3ROYW1lLFxyXG5cdFx0XHRcdFx0XHRsYXN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUubGFzdE5hbWUsXHJcblx0XHRcdFx0XHRcdGVtYWlsOiB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5lbWFpbFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR0aGlzLnN1Y2Nlc3MgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5yZWFkeS5lbWl0KHRydWUpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChtZXNzYWdlS2V5ICE9PSAncmVnaXN0ZXItb2snICYmIHRoaXMucmVkaXJlY3QpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZWdpc3RlckZvcm0ucmVzZXQoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLnJlZGlyZWN0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdob21lJyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvciA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdFbCBlbWFpbCBpbmdyZXNhZG8geWEgc2UgZW5jdWVudHJhIHJlZ2lzdHJhZG8uJyk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnRXJyb3IgZW4gZWwgcmVnaXN0cm8uIFZ1ZWx2YSBhIGludGVudGFybG8gbcOhcyB0YXJkZS4nKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnaW52YWxpZC1mb3JtJyk7XHJcblx0XHRcdHRoaXMucmVnaXN0ZXJfbG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG9nZ2xlUGFzc3dvcmQoKSB7XHJcblx0XHR0aGlzLnNob3dQYXNzd29yZCA9ICF0aGlzLnNob3dQYXNzd29yZDtcclxuXHR9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInctMTAwIHBsLW1kLTUgcG9zaXRpb24tcmVsYXRpdmVcIiBpZD1cInJlZ2lzdGVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInB5LTJcIj5cclxuICAgICAgPGg1PkNSRUFSIENVRU5UQTwvaDU+XHJcbiAgPC9kaXY+XHJcbiAgPGZvcm0gaWQ9XCJyZWdpc3Ryb1wiIFtmb3JtR3JvdXBdPVwicmVnaXN0ZXJGb3JtXCIgKHN1Ym1pdCk9XCJyZWdpc3RlcigkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Tk9NQlJFPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTBcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFQRUxMSURPPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBcGVsbGlkb1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cIlwiPkNPUlJFTyBFTEVDVFJPTklDTzwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBlbWFpbCByZXF1aXJlZCBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTBcIiB0eXBlPVwiZW1haWxcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ29ycmVvIGVsZWN0csOzbmljb1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5DT05UUkFTRcORQTwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGxhaW5QYXNzd29yZFwiIHJlcXVpcmVkIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDb250cmFzZcOxYVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5SRVBFVElSIENPTlRSQVNFw5FBPC9sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwbGFpblBhc3N3b3JkMlwiIHJlcXVpcmVkIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSZXBldGlyIGNvbnRyYXNlw7FhXCI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGQtZmxleCBmbGV4LXJvdyBmb3JtLWNoZWNrIGN1c3RvbS1jaGVja2JveCBtci1zbS0yIG10LTQgbWItMlwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cInRlcm1zXCIgcmVxdWlyZWQgY2xhc3M9XCJjdXN0b20tY29udHJvbC1pbnB1dCBmb3JtLWNoZWNrLWlucHV0XCIgbmFtZT1cIkNvbG9yMlwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJDb2xvcjJcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGZmLXVidW50dS1saWdodCBmb250LXNtIGZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJDb2xvcjJcIj4gSGVcclxuICAgICAgICAgICAgICBsZcOtZG8geSBhY2VwdG8gbGFzIHBvbMOtdGljYXMgZGUgcHJpdmFjaWRhZCB5IGxvcyB0w6lybWlub3MgeVxyXG4gICAgICAgICAgICAgIGNvbmRpY2lvbmVzPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgZC1mbGV4IGZsZXgtcm93IGZvcm0tY2hlY2sgY3VzdG9tLWNoZWNrYm94IG1yLXNtLTIgbWItNFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cIm5ld3NsZXR0ZXJcIiBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0IGZvcm0tY2hlY2staW5wdXRcIiBuYW1lPVwiQ29sb3IzXCIgaWQ9XCJDb2xvcjNcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGZvcm0tY2hlY2stbGFiZWwgZmYtdWJ1bnR1LWxpZ2h0IGZvbnQtc21cIiBmb3I9XCJDb2xvcjNcIj5cclxuICAgICAgICAgICAgICBTdXNjcmlwY2nDs24gYWwgTmV3c2xldHRlcjwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlZ2lzdGVyRm9ybS5pbnZhbGlkXCIgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTUgcHktMiBoLWZpdFwiPkNSRUFSPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgPC9mb3JtPlxyXG4gIEBpZihsb2FkaW5nKXtcclxuICAgIDxhcHAtbG9hZGluZy1zZWN0aW9uLWVjIC8+XHJcbiAgfVxyXG4gIFxyXG48L2Rpdj5cclxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBU3RELE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsT0FBTyxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxpQkFBaUIsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsb0JBQW9CLEdBQW1CLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RSxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRXJCOztNQUVFO0lBQ08sUUFBUSxHQUFZLElBQUksQ0FBQztJQUNsQzs7T0FFRztJQUNPLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3JDOztPQUVHO0lBQ0ksWUFBWSxHQUFjLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ3hELFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3hDLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3pDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNaLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQztLQUNwQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDaEQsZ0JBQWdCLENBQXNCO0lBQy9CLDZCQUE2QixHQUFHLEtBQUssQ0FBQztJQUN0QyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFFbEMsc0JBQXNCLENBQUMsS0FBZ0I7UUFDdEMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSztZQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7O09BRUc7SUFDSSxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2hDOztPQUVHO0lBQ0ksT0FBTyxHQUFZLEtBQUssQ0FBQztJQUVoQztRQUNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUMzQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLDZCQUE2QixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsRSxJQUFJLENBQUMsNkJBQTZCLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDO1lBQzNFLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO1lBQzVDLENBQUM7WUFDRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUM7WUFDckQsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDakMsQ0FBQztRQUNGLENBQUMsQ0FDRCxDQUFDO0lBQ0gsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsS0FBWTtRQUNwQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsT0FBTztRQUNSLENBQUM7UUFBQSxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtZQUNwQixPQUFPO1FBQ1IsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxVQUFrQixDQUFDO2dCQUN2QixRQUFRLElBQUksRUFBRSxDQUFDO29CQUNkLEtBQUssSUFBSSxDQUFDLDZCQUE2Qjt3QkFDdEMsVUFBVSxHQUFHLGFBQWEsQ0FBQzt3QkFDM0IsTUFBTTtvQkFDUCxLQUFLLElBQUksQ0FBQyxrQkFBa0I7d0JBQzNCLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQzt3QkFDaEMsTUFBTTtvQkFDUDt3QkFDQyxVQUFVLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ2xDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO29CQUMzQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUztvQkFDNUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVE7b0JBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLO2lCQUNwQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV0QixJQUFJLFVBQVUsS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNGLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtnQkFDUCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2dCQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7Z0JBQzNFLENBQUM7cUJBQU0sQ0FBQztvQkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2dCQUNqRixDQUFDO1lBQ0YsQ0FBQyxDQUNELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQztJQUNGLENBQUM7SUFFRCxjQUFjO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDeEMsQ0FBQzt3R0FsSVcsdUJBQXVCOzRGQUF2Qix1QkFBdUIsK0lDZnBDLGd1RkF1REEseURENUNXLG1CQUFtQixzckRBQUUseUJBQXlCOzs0RkFJNUMsdUJBQXVCO2tCQVBuQyxTQUFTOytCQUNDLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx5QkFBeUIsQ0FBQzt3REFnQmhELFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIEF1dGhTZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvYWRpbmdTZWN0aW9uRWNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vd2lkZ2V0cy1lYy9sb2FkaW5nXCI7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1yZWdpc3Rlci1mb3JtLWVjJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIExvYWRpbmdTZWN0aW9uRWNDb21wb25lbnRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZvcm1FY0NvbXBvbmVudCB7XG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG5cdHByaXZhdGUgX3JvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cdHByaXZhdGUgX2FuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XG5cdHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cdHByaXZhdGUgY2hhbm5lbENvbmZpZ1NlcnZpY2U6IENoYW5uZWxTZXJ2aWNlID0gaW5qZWN0KENoYW5uZWxTZXJ2aWNlKTtcblx0c2hvd1Bhc3N3b3JkID0gZmFsc2U7XG5cblx0LyoqXG5cdCogSW5kaWNhIHNpIGRlYmUgcmVkaXJlY2Npb25hciBvIHNlIHF1ZWRhIGVuIGxhIG1pc21hIHBhbnRhbGxhXG5cdCovXG5cdEBJbnB1dCgpIHJlZGlyZWN0OiBib29sZWFuID0gdHJ1ZTtcblx0LyoqXG5cdCAqIFBhcmEgcXVlIHNlIHB1ZWRlIGNhcHR1cmFyIGVsIGVzdGFkbyBkZSBsYSBwZXRpY2nDs24gZGUgcmVnaXN0cm8uXG5cdCAqL1xuXHRAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdC8qKlxuXHQgKiBDb250aWVuZSBlbCBmb3JtdWxhcmlvIGRlIHJlZ2lzdHJvLlxuXHQgKi9cblx0cHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuXHRcdGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRsYXN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuXHRcdHBsYWluUGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0cGxhaW5QYXNzd29yZDI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0cGhvbmU6IFsnJyxdLFxuXHRcdG5ld3NsZXR0ZXI6IFsnJ10sXG5cdFx0dGVybXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZFRydWVdLFxuXHR9LCB7IHZhbGlkYXRvcnM6IHRoaXMucGFzc3dvcmRNYXRjaFZhbGlkYXRvciB9KTtcblx0cmVnaXN0ZXJfbG9hZGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0cHVibGljIGlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gZmFsc2U7XG5cdHB1YmxpYyBpc1NlbmRXZWxjb21lRW1haWwgPSBmYWxzZTtcblxuXHRwYXNzd29yZE1hdGNoVmFsaWRhdG9yKGdyb3VwOiBGb3JtR3JvdXApIHtcblx0XHRyZXR1cm4gZ3JvdXAuZ2V0KCdwbGFpblBhc3N3b3JkJyk/LnZhbHVlID09PSBncm91cC5nZXQoJ3BsYWluUGFzc3dvcmQyJyk/LnZhbHVlXG5cdFx0XHQ/IG51bGwgOiB7IG1pc21hdGNoOiB0cnVlIH07XG5cdH1cblx0LyoqXG5cdCAqIFBhcmEgaW5kaWNhciBxdWUgc2UgZXN0YSBwcm9jZXNhbmRvIGxhIHNvbGljaXR1ZCBkZSByZWdpc3Ryby5cblx0ICovXG5cdHB1YmxpYyBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBQYXJhIGluZGljYXIgZWwgZXhpdG8gZGUgbGEgc29saWNpdHVkIGRlIHJlZ2lzdHJvLlxuXHQgKi9cblx0cHVibGljIHN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmNoYW5uZWxDb25maWdTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShcblx0XHRcdChjb25maWcpID0+IHtcblx0XHRcdFx0aWYgKGNvbmZpZyAmJiBjb25maWcuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHRoaXMuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQgPSBjb25maWcuaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZCA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjb25maWcgJiYgY29uZmlnLmlzU2VuZFdlbGNvbWVFbWFpbCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0dGhpcy5pc1NlbmRXZWxjb21lRW1haWwgPSBjb25maWcuaXNTZW5kV2VsY29tZUVtYWlsO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuaXNTZW5kV2VsY29tZUVtYWlsID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0KTtcblx0fVxuXHQvKipcblx0ICogUmVnaXN0cmEgdW4gdXN1YXJpby5cblx0ICogQHBhcmFtIGV2ZW50IFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHJlZ2lzdGVyKGV2ZW50OiBFdmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcblx0XHQvLyBjb25zb2xlLmxvZygncmVnaXN0ZXJGb3JtJywgdGhpcy5yZWdpc3RlckZvcm0pO1xuXHRcdGlmICghdGhpcy5yZWdpc3RlckZvcm0udmFsaWQpIHtcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdmaWVsZHMtaW5jb21wbGV0ZScpO1xuXHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2Vcblx0XHRcdHJldHVybjtcblx0XHR9O1xuXHRcdGlmICh0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkICE9IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLnBsYWluUGFzc3dvcmQyKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbWlzbWF0Y2hlZC1wYXNzd29yZCcpO1xuXHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2Vcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XG5cdFx0XHR0aGlzLl9hdXRoU2VydmljZS5zaW5nVXAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUpLnRvUHJvbWlzZSgpLnRoZW4oXG5cdFx0XHRcdHJlcyA9PiB7XG5cdFx0XHRcdFx0dGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0bGV0IG1lc3NhZ2VLZXk6IHN0cmluZztcblx0XHRcdFx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRcdFx0XHRcdGNhc2UgdGhpcy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZDpcblx0XHRcdFx0XHRcdFx0bWVzc2FnZUtleSA9ICdyZWdpc3Rlci1vayc7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSB0aGlzLmlzU2VuZFdlbGNvbWVFbWFpbDpcblx0XHRcdFx0XHRcdFx0bWVzc2FnZUtleSA9ICdyZWdpc3Rlci13ZWxjb21lJztcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLXN1Y2Nlc3MnO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdyhtZXNzYWdlS2V5KTtcblx0XHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2lnbl91cCcsIHtcblx0XHRcdFx0XHRcdGZpcnN0TmFtZTogdGhpcy5yZWdpc3RlckZvcm0udmFsdWUuZmlyc3ROYW1lLFxuXHRcdFx0XHRcdFx0bGFzdE5hbWU6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmxhc3ROYW1lLFxuXHRcdFx0XHRcdFx0ZW1haWw6IHRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlLmVtYWlsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5zdWNjZXNzID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSk7XG5cblx0XHRcdFx0XHRpZiAobWVzc2FnZUtleSAhPT0gJ3JlZ2lzdGVyLW9rJyAmJiB0aGlzLnJlZGlyZWN0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlZ2lzdGVyRm9ybS5yZXNldCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGhpcy5yZWRpcmVjdCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2hvbWUnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVycm9yID0+IHtcblx0XHRcdFx0XHR0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAoZXJyb3Iuc3RhdHVzID09IDQwMCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ0VsIGVtYWlsIGluZ3Jlc2FkbyB5YSBzZSBlbmN1ZW50cmEgcmVnaXN0cmFkby4nKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ0Vycm9yIGVuIGVsIHJlZ2lzdHJvLiBWdWVsdmEgYSBpbnRlbnRhcmxvIG3DoXMgdGFyZGUuJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnaW52YWxpZC1mb3JtJyk7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyX2xvYWRpbmcgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHR0b2dnbGVQYXNzd29yZCgpIHtcblx0XHR0aGlzLnNob3dQYXNzd29yZCA9ICF0aGlzLnNob3dQYXNzd29yZDtcblx0fVxufVxuIiwiPGRpdiBjbGFzcz1cInctMTAwIHBsLW1kLTUgcG9zaXRpb24tcmVsYXRpdmVcIiBpZD1cInJlZ2lzdGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJweS0yXCI+XG4gICAgICA8aDU+Q1JFQVIgQ1VFTlRBPC9oNT5cbiAgPC9kaXY+XG4gIDxmb3JtIGlkPVwicmVnaXN0cm9cIiBbZm9ybUdyb3VwXT1cInJlZ2lzdGVyRm9ybVwiIChzdWJtaXQpPVwicmVnaXN0ZXIoJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Tk9NQlJFPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIk5vbWJyZVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BUEVMTElETzwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkFwZWxsaWRvXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiXCI+Q09SUkVPIEVMRUNUUk9OSUNPPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBlbWFpbCByZXF1aXJlZCBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTBcIiB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkNvcnJlbyBlbGVjdHLDs25pY29cIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q09OVFJBU0XDkUE8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwbGFpblBhc3N3b3JkXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDb250cmFzZcOxYVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5SRVBFVElSIENPTlRSQVNFw5FBPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGxhaW5QYXNzd29yZDJcIiByZXF1aXJlZCBjbGFzcz1cImZvcm0tY29udHJvbCByb3VuZGVkLTBcIiB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJlcGV0aXIgY29udHJhc2XDsWFcIj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wgZC1mbGV4IGZsZXgtcm93IGZvcm0tY2hlY2sgY3VzdG9tLWNoZWNrYm94IG1yLXNtLTIgbXQtNCBtYi0yXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cInRlcm1zXCIgcmVxdWlyZWQgY2xhc3M9XCJjdXN0b20tY29udHJvbC1pbnB1dCBmb3JtLWNoZWNrLWlucHV0XCIgbmFtZT1cIkNvbG9yMlwiXG4gICAgICAgICAgICAgIGlkPVwiQ29sb3IyXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtbGFiZWwgZmYtdWJ1bnR1LWxpZ2h0IGZvbnQtc20gZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cIkNvbG9yMlwiPiBIZVxuICAgICAgICAgICAgICBsZcOtZG8geSBhY2VwdG8gbGFzIHBvbMOtdGljYXMgZGUgcHJpdmFjaWRhZCB5IGxvcyB0w6lybWlub3MgeVxuICAgICAgICAgICAgICBjb25kaWNpb25lczwvbGFiZWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGQtZmxleCBmbGV4LXJvdyBmb3JtLWNoZWNrIGN1c3RvbS1jaGVja2JveCBtci1zbS0yIG1iLTRcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgZm9ybUNvbnRyb2xOYW1lPVwibmV3c2xldHRlclwiIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgZm9ybS1jaGVjay1pbnB1dFwiIG5hbWU9XCJDb2xvcjNcIiBpZD1cIkNvbG9yM1wiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGZvcm0tY2hlY2stbGFiZWwgZmYtdWJ1bnR1LWxpZ2h0IGZvbnQtc21cIiBmb3I9XCJDb2xvcjNcIj5cbiAgICAgICAgICAgICAgU3VzY3JpcGNpw7NuIGFsIE5ld3NsZXR0ZXI8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlZ2lzdGVyRm9ybS5pbnZhbGlkXCIgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC01IHB5LTIgaC1maXRcIj5DUkVBUjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZm9ybT5cbiAgQGlmKGxvYWRpbmcpe1xuICAgIDxhcHAtbG9hZGluZy1zZWN0aW9uLWVjIC8+XG4gIH1cbiAgXG48L2Rpdj5cbiJdfQ==
@@ -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