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
@@ -455,4 +455,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
455
455
  providedIn: 'root'
456
456
  }]
457
457
  }], ctorParameters: () => [] });
458
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUNwRDs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ2YsYUFBYSxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNoRSxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELFVBQVUsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDaEUsVUFBVSxHQUF3QixNQUFNLENB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QyxNQUFNLENBQUMsQ0FBQTtJQUU5STs7O09BR0c7SUFDSyxhQUFhLEdBQUcsQ0FBQyxhQUFrQixFQUFFLEVBQUU7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNuQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87WUFDOUIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1NBQzVCLENBQUMsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUNELGNBQWM7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFDTyxjQUFjO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNsQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBamNXLFdBQVc7NEdBQVgsV0FBVyxjQUZYLE1BQU07OzRGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVzZXJSb2xlVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UsIENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBkZSBhdXRlbnRpZmljYWNpw7NuIGRlbCB1c3VhcmlvIGVuIGxhIHBsYXRhZm9ybWEuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcblx0cHJpdmF0ZSBfbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpXHJcblx0cHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSA9IGluamVjdChDaGFubmVsU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29uc3RhbnRzOiBDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2F1dGhTdG9yYWdlOiBBdXRoU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoQXV0aFN0b3JhZ2VTZXJ2aWNlKTtcclxuXHJcblx0Ly8gQ29udGFudGVzIHBhcmEgZWwgc3RvcmFnZS5cclxuXHRwcml2YXRlIHJlYWRvbmx5IEpXVF9UT0tFTiA9ICdKV1RfVE9LRU4nXHJcblx0cHJpdmF0ZSByZWFkb25seSBSRUZSRVNIX1RPS0VOID0gJ1JFRlJFU0hfVE9LRU4nXHJcblx0cHJpdmF0ZSByZWFkb25seSBFWFBJUkFURVNfSU4gPSAnRVhQSVJBVEVTX0lOJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgVVNFUiA9ICdVU0VSJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgTUFJTCA9ICdtYWlsJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgTE9DQUxFID0gJ0xPQ0FMRSdcclxuXHRwcml2YXRlIHJlYWRvbmx5IENIQU5ORUwgPSAnQ0hBTk5FTCdcclxuXHRwcml2YXRlIHJlYWRvbmx5IENVU1RPTUVSID0gJ0NVU1RPTUVSJ1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgQ0hBTk5FTFNFTExFUiA9ICdDSEFOTkVMU0VMTEVSJ1xyXG5cclxuXHRwcml2YXRlIGNoYW5uZWxzVXNlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSlcclxuXHRwdWJsaWMgY2hhbm5lbHMkID0gdGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblx0cHJpdmF0ZSBfY2hhbm5lbCQgPSB0aGlzLl9jaGFubmVsU2VydmljZS5nZXRDaGFubmVsKClcclxuXHRwcml2YXRlIF91c2VySW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyIHwgbnVsbD4obnVsbClcclxuXHRwcml2YXRlIF9sb2dnZWRJblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHB1YmxpYyBsb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9sb2dnZWRJblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHJpdmF0ZSBfbG9nZ2luZ0luU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblx0cHVibGljIGxvZ2dpbmdJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9sb2dnaW5nSW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXJhIGluZGljYXIgc2kgdW4gY2FuYWwgY2FtYmlvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2FjdGl2ZUNoYW5uZWxDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvKipcclxuXHQgKiBHdWFyZGEgbG9zIGRhdG9zIGRlbCB1c3VhcmlvXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdXNlcjogVXNlciB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgX2N1c3RvbWVyID0gbnVsbDtcclxuXHQvKipcclxuXHQgKiBHdWFyZGEgbG9zIGRhdG9zIGRlbCBjYW5hbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjaGFubmVsOiBhbnkgPSBbXVxyXG5cdHB1YmxpYyBjaGFubmVsczogYW55W10gPSBbXVxyXG5cdC8qKlxyXG5cdCAqIFV0aWxpemFkbyBwYXJhIHJlc29sdmVyIGhhY2lhIGRvbmRlIHNlIHRpZW5lIHF1ZSByZWRpcmVjY2lvbmFyXHJcblx0ICogbGEgcGFnaW5hIHRyYXMgdW4gZXZlbnRvLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2hvbWVSZXNvbHZlcjogYW55O1xyXG5cdC8qKlxyXG5cdCAqIFNpZ25hbCBwYXJhIGd1YXJkYXIgZWwgdG9rZW4gZGUgdXN1YXJpbyB1bmEgdmV6IGxvZ3VlYWRvXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdG9rZW5TaWduYWwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XHJcblx0LyoqXHJcblx0ICogU2lnbmFsIHBhcmEgZ3VhcmRhciBlbCB1c3VhcmlvXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfdXNlclNpZ25hbCA9IHNpZ25hbDxVc2VyIHwgbnVsbD4obnVsbCk7XHJcblx0Ly9BUElzXHJcblx0cHJpdmF0ZSBzaG9wQXBpOiBzdHJpbmcgPSB0aGlzLl9hcGlDb25zdHMuU0hPUF9BUElfVVJMXHJcblx0cHJpdmF0ZSBjaGFubmVsQXBpOiBzdHJpbmcgPSB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTFxyXG5cdHByaXZhdGUgdG9rZW5BcGkoKSB7IHJldHVybiB0aGlzLnNob3BBcGkgKyAnbG9naW5fY2hlY2snIH1cclxuXHRwcml2YXRlIHJlY292ZXJQYXNzd29yZEFwaSgpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vcmVxdWVzdC1wYXNzd29yZC1yZXNldGAgfVxyXG5cdHByaXZhdGUgcmVzZXRQYXNzd29yZEFwaSA9ICh0b2tlbjogc3RyaW5nKSA9PiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3Bhc3N3b3JkLXJlc2V0LyR7dG9rZW59YDtcclxuXHRwcml2YXRlIGNvbmZpcm1BY2NvdW50QXBpKHRva2VuOiBzdHJpbmcpIHsgcmV0dXJuIGAke3RoaXMuc2hvcEFwaX0ke3RoaXMuY2hhbm5lbEFwaX0vdmVyaWZ5LWFjY291bnQ/dG9rZW49JHt0b2tlbn1gIH1cclxuXHRwcml2YXRlIHJlZ2lzdGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3RlcmAgfVxyXG5cdHByaXZhdGUgcmVnaXN0ZXJXaG9sZXNhbGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3Rlci13aG9sZXNhbGVyYCB9XHJcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXHJcblxyXG5cdHB1YmxpYyB3aW5kb3c/OiBXaW5kb3c7XHJcblx0cHVibGljIGxvY2FsU3RvcmFnZT86IFN0b3JhZ2U7XHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHR0aGlzLndpbmRvdyA9IHdpbmRvd1xyXG5cdFx0XHR0aGlzLmxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcclxuXHRcdH1cclxuXHRcdHRoaXMubG9hZFRva2VuRnJvbVN0b3JhZ2UoKTtcclxuXHRcdHRoaXMuaXNBdXRoZW50aWNhdGVkKCkgJiYgdGhpcy5fbG9nZ2VkSW5TdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIExvZ3VlYSBhbCB1c3VhcmlvIGVuIGxhIGFwbGljYWNpw7NuLlxyXG5cdCAqIEBwYXJhbSB1c2VyIGRhdG9zIGRlbCB1c3VhcmlvXHJcblx0ICogQHBhcmFtIHdpdGhSb2xlcyByb2xlcyBkZWwgdXN1YXJpb1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGxvZ2luKHVzZXI6IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyB9LCB3aXRoUm9sZXM6IFVzZXJSb2xlVHlwZVtdID0gW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0dGhpcy5fY2hhbm5lbCQuc3Vic2NyaWJlKGNoID0+IHRoaXMuY2hhbm5lbCA9IGNoKTtcclxuXHRcdHRoaXMuY2hhbm5lbHMkLnN1YnNjcmliZShjaCA9PiB0aGlzLmNoYW5uZWxzID0gY2gpO1xyXG5cdFx0dGhpcy5fbG9nZ2luZ0luU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdFx0dXNlciA9IHsgLi4udXNlciwgLi4udGhpcy5sb2dpbkV4dHJhRGF0YSgpIH1cclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy50b2tlbkFwaSgpLCB1c2VyKS5waXBlKFxyXG5cdFx0XHRtYXAoKHJlczogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMuY2hhbm5lbEFjY2Vzc1Blcm1pc3Npb24oeyAuLi51c2VyLCAuLi5yZXMgfSkgJiYgdGhpcy5pc0FsbG93ZWRSb2xlKHdpdGhSb2xlcywgcmVzLnR5cGUpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmRvTG9naW5Vc2VyKHsgLi4udXNlciwgLi4ucmVzIH0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuICdvayc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiAnZXJyb3InO1xyXG5cdFx0XHR9KSxcclxuXHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX2xvZ2dpbmdJblN1YmplY3QubmV4dChmYWxzZSk7XHJcblx0XHRcdFx0cmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpOyAvLyA8LS0gUHJvcGFnYSBlbCBlcnJvciByZWFsXHJcblx0XHRcdH0pXHJcblx0XHQpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xhIHF1ZSBlbCB1c3VhcmlvIGxvZ3VlYWRvIHRlbmdhIHBlcm1pc29zIFxyXG5cdCAqIHBhcmEgZWwgY2FuYWwgYWN0dWFsIGRlIGxhIGFwbGljYWNpw7NuLlxyXG5cdCAqIEBwYXJhbSByZXMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjaGFubmVsQWNjZXNzUGVybWlzc2lvbihyZXM6IGFueSkge1xyXG5cdFx0Ly9jb25zb2xlLmxvZygnY2hhbm5lbEFjY2VzcycsIHJlcyk7XHJcblx0XHR0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChbXSk7XHJcblxyXG5cdFx0LyogTm8gYXV0aG9yaXplZCBjaGFubmVscyAqL1xyXG5cdFx0aWYgKHJlcy5jaGFubmVscz8ubGVuZ3RoID09IDApIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHR9XHJcblx0XHQvKiBTb21lIGF1dGhvcml6ZWQgY2hhbm5lbChzKSBpbmNsdWRpbmcgY3VycmVudCBjaGFubmVsICovXHJcblx0XHRpZiAocmVzLmNoYW5uZWxzLmZpbmQoKHVzZXJjaGFubmVsOiBhbnkpID0+IHVzZXJjaGFubmVsLmNvZGUgPT09IHRoaXMuY2hhbm5lbC5jb2RlKSkge1xyXG5cdFx0XHQvKiBNdWx0aXBsZSBhdXRob3JpemVkIGNoYW5uZWxzIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cclxuXHRcdFx0aWYgKHJlcy5jaGFubmVscz8ubGVuZ3RoID4gMSAmJiB0aGlzLl9hY3RpdmVDaGFubmVsQ2hhbmdlKVxyXG5cdFx0XHRcdHRoaXMuY2hhbm5lbHNVc2VyU3ViamVjdC5uZXh0KHJlcy5jaGFubmVscylcclxuXHRcdFx0cmV0dXJuIHRydWVcclxuXHRcdH1cclxuXHRcdC8qIE9uZSBhdXRob3JpemVkIGNoYW5uZWwgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cclxuXHRcdGlmIChyZXMuY2hhbm5lbHM/Lmxlbmd0aCA9PSAxICYmIHRoaXMuX2FjdGl2ZUNoYW5uZWxDaGFuZ2UpIHtcclxuXHRcdFx0ZGVsZXRlIHJlcy5wYXNzd29yZFxyXG5cdFx0XHR0aGlzLmNoYW5uZWxBY2Nlc3MocmVzLmNoYW5uZWxzWzBdLCByZXMpXHJcblx0XHRcdHJldHVybiB0cnVlXHJcblx0XHR9XHJcblx0XHQvKiBNdWx0aXBsZSBhdXRob3JpemVkIGNoYW5uZWxzIG5vdCBpbmNsdWRpbmcgY3VycmVudCBjaGFubmVsICovXHJcblx0XHRpZiAodGhpcy5fYWN0aXZlQ2hhbm5lbENoYW5nZSkge1xyXG5cdFx0XHR0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChyZXMuY2hhbm5lbHMpXHJcblx0XHRcdHJldHVybiB0cnVlXHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZmFsc2VcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29udHJvbGEgZWwgYWNjZXNvIGFsIGNhbmFsLCBkZSBzZXIgb3RybyBudWV2byBjYW1iaWEgbG9zIHZhbG9yZXMuXHJcblx0ICogQHBhcmFtIGNoYW5uZWwgXHJcblx0ICogQHBhcmFtIHVzZXIgXHJcblx0ICovXHJcblx0Y2hhbm5lbEFjY2VzcyhjaGFubmVsOiBhbnksIHVzZXIgPSBudWxsKSB7XHJcblx0XHRpZiAodGhpcy53aW5kb3c/LmxvY2F0aW9uLmhvc3RuYW1lICE9IGNoYW5uZWwuaG9zdG5hbWUpIHtcclxuXHRcdFx0bGV0IGVuY29kZWQgPSBidG9hKEpTT04uc3RyaW5naWZ5KHVzZXIgIT0gbnVsbCA/IHVzZXIgOiB0aGlzLl91c2VyKSlcclxuXHRcdFx0dGhpcy53aW5kb3c/LmxvY2F0aW9uLnJlcGxhY2UoYCR7dGhpcy53aW5kb3c/LmxvY2F0aW9uLnByb3RvY29sfS8vJHtjaGFubmVsLmhvc3RuYW1lfS9hdXRoL3JlZGlyZWN0LyR7ZW5jb2RlZH1gKVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5fY29uc3RhbnRzLm1vZGlmeUNoYW5uZWxDb25maWcoY2hhbm5lbClcclxuXHRcdFx0dGhpcy53aW5kb3c/LmxvY2F0aW9uLnJlbG9hZCgpXHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvbnRyb2xhIHF1ZSBlbCByb2wgZGVsIHVzdWFyaW8gc2VhIHVuIHJvbCBwZXJtaXRpZG8gcG9yIGxhIGFwbGljYWNpw7NuLlxyXG5cdCAqIEBwYXJhbSBhbGxvd2VkUm9sZXMgcm9sZXMgcXVlIHBlcm1pdGUgbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHBhcmFtIHJvbGUgcm9sIGRlbCB1c3Vhcmlvc1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgaXNBbGxvd2VkUm9sZShhbGxvd2VkUm9sZXM6IFVzZXJSb2xlVHlwZVtdLCByb2xlOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiBhbGxvd2VkUm9sZXMubGVuZ3RoXHJcblx0XHRcdD8gYWxsb3dlZFJvbGVzLmluY2x1ZGVzKHJvbGUgYXMgVXNlclJvbGVUeXBlKVxyXG5cdFx0XHQ6IHRydWVcclxuXHR9XHJcblx0LyoqXHJcblx0ICogVHJhcyB1biBsb2d1ZW8gZXhpdG9zbywgZ3VhcmRhIGxvcyBkYXRvcyBuZWNlc2FyaW9zIGVuIGVsIHN0b3JhZ2UgeSBkZW3DoXNcclxuXHQgKiBjb25maWd1cmFjaW9uZXMgbmVjZXNhcmlhcy5cclxuXHQgKiBAcGFyYW0gdG9rZW5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZG9Mb2dpblVzZXIodG9rZW5zOiBhbnkpIHtcclxuXHRcdHRoaXMuX3VzZXIgPSBuZXcgVXNlcigpXHJcblx0XHR0aGlzLl91c2VyLmluaXRpbGl6ZWQodG9rZW5zKVxyXG5cclxuXHRcdHRoaXMuZm9yY2VDaGFubmVsc0ZvclNlbGxlcih0b2tlbnMpXHJcblx0XHQvL0NoYW5uZWxcclxuXHRcdGNvbnN0IHVzZXJKc29uaWZ5ID0gdGhpcy5fdXNlci5qc29uaWZ5KClcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVVNFUiwgSlNPTi5zdHJpbmdpZnkodXNlckpzb25pZnkpKVxyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkpXVF9UT0tFTiwgdG9rZW5zLnRva2VuKTtcclxuXHRcdHRoaXMuX2F1dGhTdG9yYWdlLnNldEF1dGhUb2tlbih0b2tlbnMudG9rZW4pXHJcblx0XHR0aGlzLl90b2tlblNpZ25hbC5zZXQodG9rZW5zLnRva2VuKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTUFJTCwgdG9rZW5zLnVzZXJuYW1lKTtcclxuXHRcdC8vT2JzZXJ2YWJsZXNcclxuXHRcdHRoaXMuX3VzZXJJblN1YmplY3QubmV4dCh0aGlzLl91c2VyKTtcclxuXHRcdHRoaXMuX2xvZ2dlZEluU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdFx0dGhpcy5fbG9nZ2luZ0luU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ2FtYmlhIGxhIGZ1bmNpb24gcXVlIHNlIGVuY2FyZ2EgZGUgcmVzb2x2ZXIgaGFjaWEgZG9uZGUgc2UgcmVkaXJpZ2UgZWwgZnJvbnRlbmRcclxuXHQgKiB0cmFzIHVuYSBhY2Npw7NuXHJcblx0ICogQHBhcmFtIHJlc29sdmVyRnVuY3Rpb24gXHJcblx0ICovXHJcblx0cHVibGljIHNldEhvbWVSZXNvbHZlcihyZXNvbHZlckZ1bmN0aW9uOiBhbnkpIHsgdGhpcy5faG9tZVJlc29sdmVyID0gcmVzb2x2ZXJGdW5jdGlvbiB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBsYSBmdW5jaW9uIHF1ZSBzZSBlbmNhcmdhIGRlIHJlc29sdmVyIGhhY2lhIGRvbmRlIHNlIHJlZGlyaWdlIGVsIGZyb250ZW5kLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRIb21lUmVzb2x2ZXIoKSB7IHJldHVybiB0aGlzLl9ob21lUmVzb2x2ZXIgfVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgdG9rZW4gZGVsIHN0b3JhZ2UgeSBsbyBndWFyZGEgZW4gbGEgc2lnbmFsLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkVG9rZW5Gcm9tU3RvcmFnZSgpIHtcclxuXHRcdGNvbnN0IHRva2VuID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5KV1RfVE9LRU4pO1xyXG5cdFx0aWYgKHRva2VuKSB7XHJcblx0XHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldCh0b2tlbik7XHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIERlc2xvZ3VlYSBhbCB1c3VhcmlvLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2dvdXQoKSB7XHJcblx0XHR0aGlzLmRvTG9nb3V0VXNlcigpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHNpIGhheSB1biB1c3VhcmlvIGxvZ3VlYWRvIG8gbm8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcclxuXHRcdC8vY29uc29sZS5sb2coXCJpc0F1dGhlbnRpY2F0ZWRcIix0aGlzLmlzVG9rZW5FeHBpcmVkKCksIHRoaXMuX3Rva2VuU2lnbmFsKCkgKTtcclxuXHRcdGlmICh0aGlzLmlzVG9rZW5FeHBpcmVkKCkpIHtcclxuXHRcdFx0dGhpcy5kb0xvZ291dFVzZXIoKVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpXHJcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XHJcblx0XHQvL2NvbnNvbGUubG9nKHRoaXMuZ2V0VG9rZW4oKSwgIXRoaXMuaXNUb2tlbkV4cGlyZWQoKSAsIHRoaXMuX3VzZXIgIT0gbnVsbCk7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRUb2tlbigpICYmICF0aGlzLmlzVG9rZW5FeHBpcmVkKCkgJiYgdGhpcy5fdXNlciAhPSBudWxsO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIGVsIHRva2VuIGRlIHVzdWFyaW9cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0VG9rZW4oKTogYW55IHtcclxuXHRcdHJldHVybiB0aGlzLl90b2tlblNpZ25hbCgpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBMaW1waWEgZWwgc3RvcmFnZSB5IGxhcyBjb25maWd1cmFjaW9uZXMgaW50ZXJuYXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZG9Mb2dvdXRVc2VyKCkge1xyXG5cdFx0dGhpcy5fdXNlciA9IG51bGxcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVVNFUik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkVYUElSQVRFU19JTik7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9UT0tFTik7XHJcblx0XHR0aGlzLl9hdXRoU3RvcmFnZS5zZXRBdXRoVG9rZW4obnVsbCk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4pO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NhcnRfdG9rZW4nKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTUFJTCk7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUwpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuTE9DQUxFKTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ1VTVE9NRVIpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ01BU1RFUl9DSEFOTkVMJyk7XHJcblx0XHR0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XHJcblx0XHR0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QubmV4dChbXSlcclxuXHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldChudWxsKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBgdHJ1ZWBzaSBlbCB0b2tlbiBleHBpcm8sIGBmYWxzZWAgY2FzbyBjb250cmFyaW8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBpc1Rva2VuRXhwaXJlZCgpIHtcclxuXHRcdGNvbnN0IGZlY2hhX2V4cGlyYWNpb24gPSB0aGlzLmdldEV4cGlyYXRlc0F0KCk7XHJcblx0XHRjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxhIGZlY2hhIGRlIGV4cGlyYWNpw7NuIGRlbCB0b2tlbi5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGdldEV4cGlyYXRlc0F0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuRVhQSVJBVEVTX0lOKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBhbCB1c3VhcmlvIGFjdHVhbCB5IGxvIGNvbnZpZXJ0ZSBlbiB1bmEgaW5zdGFuY2lhIGRlIGBVc2VyYFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTogVXNlciB8IG51bGwge1xyXG5cdFx0dGhpcy5fdXNlciA9IG5ldyBVc2VyKCk7XHJcblx0XHRpZiAoIXRoaXMubG9hZFVzZXJGcm9tU3RvcmFnZSgpKSB7XHJcblx0XHRcdHRoaXMuX3VzZXIgPSBudWxsXHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLl91c2VyPy5jaGFubmVscy5maW5kKCh1c2VyY2hhbm5lbDogYW55KSA9PiB1c2VyY2hhbm5lbD8uY29kZSA9PT0gdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwpKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLl91c2VyO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sb2dvdXQoKVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuX3VzZXI7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgZWwgdXN1YXJpbyBkZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgbG9hZFVzZXJGcm9tU3RvcmFnZShrZXkgPSB0aGlzLlVTRVIpIHtcclxuXHRcdGlmICh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XHJcblx0XHRcdGNvbnN0IHVzZXJPYmogPSBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpO1xyXG5cdFx0XHR0aGlzLl91c2VyID0gT2JqZWN0LmFzc2lnbihuZXcgVXNlcigpLCB1c2VyT2JqKTsgLy8gPC0tIEFzw60gcmVjdXBlcmFzIGxvcyBtw6l0b2RvcyBkZSBVc2VyXHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cclxuXHJcblx0fVxyXG5cclxuXHRwYXNzd29yZFJlc2V0ID0gKG5ld19wYXNzd29yZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiB7XHJcblx0XHRcclxuXHRcdGNvbnN0IGRhdGEgPSB7IHBhc3N3b3JkOiB7IGZpcnN0OiBuZXdfcGFzc3dvcmQsIHNlY29uZDogbmV3X3Bhc3N3b3JkIH0gfTtcclxuXHRcdGNvbnNvbGUubG9nKHRoaXMucmVzZXRQYXNzd29yZEFwaSh0b2tlbiksIGRhdGEpXHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wdXQodGhpcy5yZXNldFBhc3N3b3JkQXBpKHRva2VuKSwgZGF0YSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEVudmlhIGxhIHNvbGljaXR1ZCBwYXJhIGNhbWJpYXIgbGEgY29udHJhc2XDsWEuXHJcblx0ICogQHBhcmFtIGVtYWlsIGVtYWlsIGRlbCBzb2xpY2l0YW50ZS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRyZWNvdmVyUGFzc3dvcmQoZW1haWw6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb24ucHV0KHRoaXMucmVjb3ZlclBhc3N3b3JkQXBpKCksIHsgZW1haWwgfSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgY29uZmlybWFyIGVsIHJlZ2lzdHJvIGRlIHVzdWFyaW8uXHJcblx0ICogQHBhcmFtIHRva2VuIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNvbmZpcm1BY2NvdW50KHRva2VuOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmNvbmZpcm1BY2NvdW50QXBpKHRva2VuKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBjb23Dum5cclxuXHQgKiBAcGFyYW0gZGF0YSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRzaW5nVXAoZGF0YTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMucmVnaXN0ZXJBcGkoKSwgZGF0YSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBtYXlvcmlzdGEuXHJcblx0ICogQHBhcmFtIGRhdGEgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0c2lnblVwV2hvbGVzYWxlcihkYXRhOiBhbnkpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5yZWdpc3Rlcldob2xlc2FsZXJBcGkoKSwgZGF0YSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENoZXF1ZWEgc2kgdW4gdXN1YXJpbyBlc3RhIGhhYmlsaXRhZG8gYSBjb21wcmFyIG8gbm8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Ly8gaXNBYmxlVG9CdXkoKTpib29sZWFuIHtcclxuXHQvLyBcdGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5nZXRVc2VyUHJvZmlsZUFzVXNlcigpIGFzIFVzZXI7XHJcblx0Ly8gXHRjb25zdCBpc1NlbGxlciA9IGN1cnJlbnRVc2VyLnR5cGVVc2VyICYmIGN1cnJlbnRVc2VyLnR5cGVVc2VyID09ICdzZWxsZXInIHx8IGZhbHNlXHJcblx0Ly8gXHRyZXR1cm4gIWlzU2VsbGVyIHx8ICF0aGlzLmdldEN1c3RvbWVyKCk7XHJcblx0Ly8gfVxyXG5cdHB1YmxpYyBpc0FibGVUb0J1eSA9ICgpOiBib29sZWFuID0+ICF0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCk/LmlzU2VsbGVyKCkgfHwgISF0aGlzLmdldEN1c3RvbWVyKClcclxuXHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1biB1c3VhcmlvIGRlIHRpcG8gY2xpZW50ZS5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRDdXN0b21lcigpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jdXN0b21lciB8fCBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ1VTVE9NRVIpKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCB1c3VhcmlvIGFjdHVhbCBsb2d1ZWFkby5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRVc2VyUHJvZmlsZUFzVXNlcigpOiBVc2VyIHtcclxuXHRcdHJldHVybiB0aGlzLl91c2VyISBhcyBVc2VyIHx8IHRoaXMuZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWdyZWdhIGRhdGEgZXh0cmEgYWwgb2JqZWN0byBkZSBVc3VhcmlvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGxvZ2luRXh0cmFEYXRhID0gKCkgPT4ge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0Y2xpZW50X2lkOiAnZGVtb19jbGllbnQnLFxyXG5cdFx0XHRjbGllbnRfc2VjcmV0OiAnc2VjcmV0X2RlbW9fY2xpZW50JyxcclxuXHRcdFx0Z3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKiBQbGVhc2UgcmVtb3ZlIHRoaXMgQVNBUCAtIE5lZWRzICpjaGFubmVscyogYXJyYXkgaW4gdXNlciBvYmplY3QgQUxXQVlTICovXHJcblx0cHJpdmF0ZSBmb3JjZUNoYW5uZWxzRm9yU2VsbGVyKHRva2VuczogYW55KSB7XHJcblx0XHRpZiAoVXNlclJvbGVUeXBlLlNFTExFUiA9PSB0b2tlbnMudHlwZSBhcyBVc2VyUm9sZVR5cGUpXHJcblx0XHRcdHRoaXMuY2hhbm5lbHM/Lmxlbmd0aFxyXG5cdFx0XHRcdD8gdGhpcy5fdXNlciEuc2V0Q2hhbm5lbHMoLi4udGhpcy5jaGFubmVscylcclxuXHRcdFx0XHQ6IHRoaXMuX3VzZXIhLnNldENoYW5uZWxzKHRoaXMuY2hhbm5lbClcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCogQ2FyZ2EgZWwgY2xpZW50ZSBjb24gZWwgcXVlIHNlIHJlYWxpemFyYW4gcGVkaWRvcy4gU2kgcmVjaWJlIGVsIHZhbG9yIG51bGxcclxuXHQqIHNlIHZ1ZWx2ZSBhIGNhcmdhciBlbCB2ZW5kZWRvciBwYXJhIHN1IHVzby4gIFxyXG5cdCogQHBhcmFtIGN1c3RvbWVyIFxyXG5cdCovXHJcblx0cHVibGljIHNldEN1c3RvbWVyKGN1c3RvbWVyOiBhbnkpIHtcclxuXHRcdGxldCByZWZyZXNoUGFnZSA9IGZhbHNlXHJcblx0XHR0aGlzLl9jdXN0b21lciA9IGN1c3RvbWVyXHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNVU1RPTUVSLCBKU09OLnN0cmluZ2lmeShjdXN0b21lcikpXHJcblxyXG5cdFx0bGV0IHNhbWVDaGFubmVsID0gY3VzdG9tZXIgPyB0aGlzLnNhbWVDaGFubmVsKGN1c3RvbWVyLmNoYW5uZWxzWzBdLmNvZGUsIGN1c3RvbWVyLmNoYW5uZWxzWzBdLmxvY2FsZXMuY29kZSkgOiBudWxsXHJcblxyXG5cdFx0aWYgKGN1c3RvbWVyKSB7XHJcblx0XHRcdGlmICghc2FtZUNoYW5uZWwpIHtcclxuXHRcdFx0XHQhdGhpcy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKSA/XHJcblx0XHRcdFx0XHR0aGlzLmxvY2FsU3RvcmFnZT8uc2V0SXRlbSh0aGlzLkNIQU5ORUxTRUxMRVIsIEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdFx0Y2hhbm5lbDogdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwsXHJcblx0XHRcdFx0XHRcdGxvY2FsZTogdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRVxyXG5cdFx0XHRcdFx0fSkpIDogbnVsbDtcclxuXHRcdFx0XHR0aGlzLmNoYW5nZUNoYW5uZWwoe1xyXG5cdFx0XHRcdFx0Y2hhbm5lbDogY3VzdG9tZXIuY2hhbm5lbHNbMF0uY29kZSxcclxuXHRcdFx0XHRcdGxvY2FsZTogY3VzdG9tZXIuY2hhbm5lbHNbMF0ubG9jYWxlcy5jb2RlXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHRyZWZyZXNoUGFnZSA9IHRydWVcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IHJlcyA9IEpTT04ucGFyc2UodGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKSlcclxuXHRcdFx0aWYgKHJlcykge1xyXG5cdFx0XHRcdGlmICghdGhpcy5zYW1lQ2hhbm5lbChyZXMuY2hhbm5lbCwgcmVzLmxvY2FsZSkpIHtcclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlQ2hhbm5lbChyZXMpXHJcblx0XHRcdFx0XHRyZWZyZXNoUGFnZSA9IHRydWVcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5sb2NhbFN0b3JhZ2U/LnJlbW92ZUl0ZW0odGhpcy5DSEFOTkVMU0VMTEVSKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly90aGlzLl9jYXJ0U2VydmljZS5jbGVhckFuZFJlc2V0Q3VzdG9tZXJDYXJ0KClcclxuXHRcdHJlZnJlc2hQYWdlID8gbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWYgOiBudWxsXHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb21wcnVlYmEgc2kgbG9zIHZhbG9yZXMgZGVsIGNhbmFsIGFjdHVhbCBzb24gaWd1YWxlcyBhIGxvcyBpbmdyZXNhZG8gcG9yIHBhcmFtZXRyb3MuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgTm9tYnJlIGRlbCBjYW5hbFxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgIExvY2FsZSBkZWwgY2FuYWxcclxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBzaSBlcyBlbCBtaXNtbyBjYW5hbCwgRmFsc2UgY2FzbyBjb250cmFyaW8uXHJcblx0ICovXHJcblx0cHJpdmF0ZSBzYW1lQ2hhbm5lbCA9IChjaGFubmVsOiBzdHJpbmcsIGxvY2FsZTogc3RyaW5nKTogYm9vbGVhbiA9PiAoY2hhbm5lbCA9PSB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCkgJiYgKGxvY2FsZSA9PSB0aGlzLl9hcGlDb25zdHMuTE9DQUxFKVxyXG5cclxuXHQvKipcclxuXHQgKiBDYW1iaWEgZGUgY2FuYWxcclxuXHQgKiBAcGFyYW0gY2hhbm5lbENvbmZpZyBkZWJlIHNlciB1biBvYmpldG8gcXVlIGNvbnRlbmdhIGFsIG1lbm9zIGxhcyBrZXlzIGNoYW5uZWwgeSBsb2NhbGUuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjaGFuZ2VDaGFubmVsID0gKGNoYW5uZWxDb25maWc6IGFueSkgPT4ge1xyXG5cdFx0dGhpcy5fY29uc3RhbnRzLm1vZGlmeUNoYW5uZWxDb25maWcoe1xyXG5cdFx0XHRjaGFubmVsOiBjaGFubmVsQ29uZmlnLmNoYW5uZWwsXHJcblx0XHRcdGxvY2FsZTogY2hhbm5lbENvbmZpZy5sb2NhbGVcclxuXHRcdH0pXHJcblx0fVxyXG5cdGdldFVzZXJQcm9maWxlKCk6IE9ic2VydmFibGU8VXNlciB8IG51bGw+IHtcclxuXHRcdHJldHVybiAodGhpcy5fdXNlciAmJiBvZih0aGlzLl91c2VyKSkgfHwgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xyXG5cdH1cclxuXHRwcml2YXRlIGdldEN1cnJlbnRVc2VyKCk6IE9ic2VydmFibGU8VXNlciB8IG51bGw+IHtcclxuXHRcdHRoaXMuX3VzZXIgPSBuZXcgVXNlcigpO1xyXG5cdFx0aWYgKCF0aGlzLmxvYWRVc2VyRnJvbVN0b3JhZ2UoKSkge1xyXG5cdFx0XHR0aGlzLl91c2VyID0gbnVsbFxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG9mKHRoaXMuX3VzZXIpO1xyXG5cdH1cclxufVxyXG4iXX0=
458
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUNwRDs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ2YsYUFBYSxHQUF3QixNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtJQUNoRSxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELGVBQWUsR0FBbUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pELFVBQVUsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDaEUsVUFBVSxHQUF3QixNQUFNLENB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QyxNQUFNLENBQUMsQ0FBQTtJQUU5STs7O09BR0c7SUFDSyxhQUFhLEdBQUcsQ0FBQyxhQUFrQixFQUFFLEVBQUU7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNuQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87WUFDOUIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1NBQzVCLENBQUMsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUNELGNBQWM7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFDTyxjQUFjO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNsQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBamNXLFdBQVc7NEdBQVgsV0FBVyxjQUZYLE1BQU07OzRGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVc2VyUm9sZVR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbi8qKlxuICogU2VydmljaW8gZGUgYXV0ZW50aWZpY2FjacOzbiBkZWwgdXN1YXJpbyBlbiBsYSBwbGF0YWZvcm1hLlxuICovXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKVxuXHRwcml2YXRlIF9jb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSk7XG5cdHByaXZhdGUgX2NoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSA9IGluamVjdChDaGFubmVsU2VydmljZSk7XG5cdHByaXZhdGUgX2NvbnN0YW50czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuXHRwcml2YXRlIF9hcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XG5cdHByaXZhdGUgX2F1dGhTdG9yYWdlOiBBdXRoU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoQXV0aFN0b3JhZ2VTZXJ2aWNlKTtcblxuXHQvLyBDb250YW50ZXMgcGFyYSBlbCBzdG9yYWdlLlxuXHRwcml2YXRlIHJlYWRvbmx5IEpXVF9UT0tFTiA9ICdKV1RfVE9LRU4nXG5cdHByaXZhdGUgcmVhZG9ubHkgUkVGUkVTSF9UT0tFTiA9ICdSRUZSRVNIX1RPS0VOJ1xuXHRwcml2YXRlIHJlYWRvbmx5IEVYUElSQVRFU19JTiA9ICdFWFBJUkFURVNfSU4nXG5cdHByaXZhdGUgcmVhZG9ubHkgVVNFUiA9ICdVU0VSJ1xuXHRwcml2YXRlIHJlYWRvbmx5IE1BSUwgPSAnbWFpbCdcblx0cHJpdmF0ZSByZWFkb25seSBMT0NBTEUgPSAnTE9DQUxFJ1xuXHRwcml2YXRlIHJlYWRvbmx5IENIQU5ORUwgPSAnQ0hBTk5FTCdcblx0cHJpdmF0ZSByZWFkb25seSBDVVNUT01FUiA9ICdDVVNUT01FUidcblx0cHJpdmF0ZSByZWFkb25seSBDSEFOTkVMU0VMTEVSID0gJ0NIQU5ORUxTRUxMRVInXG5cblx0cHJpdmF0ZSBjaGFubmVsc1VzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pXG5cdHB1YmxpYyBjaGFubmVscyQgPSB0aGlzLmNoYW5uZWxzVXNlclN1YmplY3QuYXNPYnNlcnZhYmxlKClcblx0cHJpdmF0ZSBfY2hhbm5lbCQgPSB0aGlzLl9jaGFubmVsU2VydmljZS5nZXRDaGFubmVsKClcblx0cHJpdmF0ZSBfdXNlckluU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlciB8IG51bGw+KG51bGwpXG5cdHByaXZhdGUgX2xvZ2dlZEluU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cdHB1YmxpYyBsb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9sb2dnZWRJblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdHByaXZhdGUgX2xvZ2dpbmdJblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXHRwdWJsaWMgbG9nZ2luZ0luJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2xvZ2dpbmdJblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblx0LyoqXG5cdCAqIFBhcmEgaW5kaWNhciBzaSB1biBjYW5hbCBjYW1iaW8uXG5cdCAqL1xuXHRwcml2YXRlIF9hY3RpdmVDaGFubmVsQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBHdWFyZGEgbG9zIGRhdG9zIGRlbCB1c3VhcmlvXG5cdCAqL1xuXHRwcml2YXRlIF91c2VyOiBVc2VyIHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgX2N1c3RvbWVyID0gbnVsbDtcblx0LyoqXG5cdCAqIEd1YXJkYSBsb3MgZGF0b3MgZGVsIGNhbmFsXG5cdCAqL1xuXHRwdWJsaWMgY2hhbm5lbDogYW55ID0gW11cblx0cHVibGljIGNoYW5uZWxzOiBhbnlbXSA9IFtdXG5cdC8qKlxuXHQgKiBVdGlsaXphZG8gcGFyYSByZXNvbHZlciBoYWNpYSBkb25kZSBzZSB0aWVuZSBxdWUgcmVkaXJlY2Npb25hclxuXHQgKiBsYSBwYWdpbmEgdHJhcyB1biBldmVudG8uXG5cdCAqL1xuXHRwcml2YXRlIF9ob21lUmVzb2x2ZXI6IGFueTtcblx0LyoqXG5cdCAqIFNpZ25hbCBwYXJhIGd1YXJkYXIgZWwgdG9rZW4gZGUgdXN1YXJpbyB1bmEgdmV6IGxvZ3VlYWRvXG5cdCAqL1xuXHRwcml2YXRlIF90b2tlblNpZ25hbCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblx0LyoqXG5cdCAqIFNpZ25hbCBwYXJhIGd1YXJkYXIgZWwgdXN1YXJpb1xuXHQgKi9cblx0cHJpdmF0ZSBfdXNlclNpZ25hbCA9IHNpZ25hbDxVc2VyIHwgbnVsbD4obnVsbCk7XG5cdC8vQVBJc1xuXHRwcml2YXRlIHNob3BBcGk6IHN0cmluZyA9IHRoaXMuX2FwaUNvbnN0cy5TSE9QX0FQSV9VUkxcblx0cHJpdmF0ZSBjaGFubmVsQXBpOiBzdHJpbmcgPSB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTFxuXHRwcml2YXRlIHRva2VuQXBpKCkgeyByZXR1cm4gdGhpcy5zaG9wQXBpICsgJ2xvZ2luX2NoZWNrJyB9XG5cdHByaXZhdGUgcmVjb3ZlclBhc3N3b3JkQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0YCB9XG5cdHByaXZhdGUgcmVzZXRQYXNzd29yZEFwaSA9ICh0b2tlbjogc3RyaW5nKSA9PiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3Bhc3N3b3JkLXJlc2V0LyR7dG9rZW59YDtcblx0cHJpdmF0ZSBjb25maXJtQWNjb3VudEFwaSh0b2tlbjogc3RyaW5nKSB7IHJldHVybiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3ZlcmlmeS1hY2NvdW50P3Rva2VuPSR7dG9rZW59YCB9XG5cdHByaXZhdGUgcmVnaXN0ZXJBcGkoKSB7IHJldHVybiBgJHt0aGlzLnNob3BBcGl9JHt0aGlzLmNoYW5uZWxBcGl9L3JlZ2lzdGVyYCB9XG5cdHByaXZhdGUgcmVnaXN0ZXJXaG9sZXNhbGVyQXBpKCkgeyByZXR1cm4gYCR7dGhpcy5zaG9wQXBpfSR7dGhpcy5jaGFubmVsQXBpfS9yZWdpc3Rlci13aG9sZXNhbGVyYCB9XG5cdHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxuXG5cdHB1YmxpYyB3aW5kb3c/OiBXaW5kb3c7XG5cdHB1YmxpYyBsb2NhbFN0b3JhZ2U/OiBTdG9yYWdlO1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuXHRcdFx0dGhpcy53aW5kb3cgPSB3aW5kb3dcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlID0gbG9jYWxTdG9yYWdlO1xuXHRcdH1cblx0XHR0aGlzLmxvYWRUb2tlbkZyb21TdG9yYWdlKCk7XG5cdFx0dGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSAmJiB0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dCh0cnVlKTtcblx0fVxuXHQvKipcblx0ICogTG9ndWVhIGFsIHVzdWFyaW8gZW4gbGEgYXBsaWNhY2nDs24uXG5cdCAqIEBwYXJhbSB1c2VyIGRhdG9zIGRlbCB1c3VhcmlvXG5cdCAqIEBwYXJhbSB3aXRoUm9sZXMgcm9sZXMgZGVsIHVzdWFyaW9cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRsb2dpbih1c2VyOiB7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcgfSwgd2l0aFJvbGVzOiBVc2VyUm9sZVR5cGVbXSA9IFtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHR0aGlzLl9jaGFubmVsJC5zdWJzY3JpYmUoY2ggPT4gdGhpcy5jaGFubmVsID0gY2gpO1xuXHRcdHRoaXMuY2hhbm5lbHMkLnN1YnNjcmliZShjaCA9PiB0aGlzLmNoYW5uZWxzID0gY2gpO1xuXHRcdHRoaXMuX2xvZ2dpbmdJblN1YmplY3QubmV4dCh0cnVlKTtcblx0XHR1c2VyID0geyAuLi51c2VyLCAuLi50aGlzLmxvZ2luRXh0cmFEYXRhKCkgfVxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy50b2tlbkFwaSgpLCB1c2VyKS5waXBlKFxuXHRcdFx0bWFwKChyZXM6IGFueSkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5jaGFubmVsQWNjZXNzUGVybWlzc2lvbih7IC4uLnVzZXIsIC4uLnJlcyB9KSAmJiB0aGlzLmlzQWxsb3dlZFJvbGUod2l0aFJvbGVzLCByZXMudHlwZSkpIHtcblx0XHRcdFx0XHR0aGlzLmRvTG9naW5Vc2VyKHsgLi4udXNlciwgLi4ucmVzIH0pO1xuXHRcdFx0XHRcdHJldHVybiAnb2snO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAnZXJyb3InO1xuXHRcdFx0fSksXG5cdFx0XHRjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuX2xvZ2dpbmdJblN1YmplY3QubmV4dChmYWxzZSk7XG5cdFx0XHRcdHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTsgLy8gPC0tIFByb3BhZ2EgZWwgZXJyb3IgcmVhbFxuXHRcdFx0fSlcblx0XHQpXG5cdH1cblx0LyoqXG5cdCAqIENvbnRyb2xhIHF1ZSBlbCB1c3VhcmlvIGxvZ3VlYWRvIHRlbmdhIHBlcm1pc29zIFxuXHQgKiBwYXJhIGVsIGNhbmFsIGFjdHVhbCBkZSBsYSBhcGxpY2FjacOzbi5cblx0ICogQHBhcmFtIHJlcyBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIGNoYW5uZWxBY2Nlc3NQZXJtaXNzaW9uKHJlczogYW55KSB7XG5cdFx0Ly9jb25zb2xlLmxvZygnY2hhbm5lbEFjY2VzcycsIHJlcyk7XG5cdFx0dGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQoW10pO1xuXG5cdFx0LyogTm8gYXV0aG9yaXplZCBjaGFubmVscyAqL1xuXHRcdGlmIChyZXMuY2hhbm5lbHM/Lmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2Vcblx0XHR9XG5cdFx0LyogU29tZSBhdXRob3JpemVkIGNoYW5uZWwocykgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xuXHRcdGlmIChyZXMuY2hhbm5lbHMuZmluZCgodXNlcmNoYW5uZWw6IGFueSkgPT4gdXNlcmNoYW5uZWwuY29kZSA9PT0gdGhpcy5jaGFubmVsLmNvZGUpKSB7XG5cdFx0XHQvKiBNdWx0aXBsZSBhdXRob3JpemVkIGNoYW5uZWxzIGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cblx0XHRcdGlmIChyZXMuY2hhbm5lbHM/Lmxlbmd0aCA+IDEgJiYgdGhpcy5fYWN0aXZlQ2hhbm5lbENoYW5nZSlcblx0XHRcdFx0dGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQocmVzLmNoYW5uZWxzKVxuXHRcdFx0cmV0dXJuIHRydWVcblx0XHR9XG5cdFx0LyogT25lIGF1dGhvcml6ZWQgY2hhbm5lbCBub3QgaW5jbHVkaW5nIGN1cnJlbnQgY2hhbm5lbCAqL1xuXHRcdGlmIChyZXMuY2hhbm5lbHM/Lmxlbmd0aCA9PSAxICYmIHRoaXMuX2FjdGl2ZUNoYW5uZWxDaGFuZ2UpIHtcblx0XHRcdGRlbGV0ZSByZXMucGFzc3dvcmRcblx0XHRcdHRoaXMuY2hhbm5lbEFjY2VzcyhyZXMuY2hhbm5lbHNbMF0sIHJlcylcblx0XHRcdHJldHVybiB0cnVlXG5cdFx0fVxuXHRcdC8qIE11bHRpcGxlIGF1dGhvcml6ZWQgY2hhbm5lbHMgbm90IGluY2x1ZGluZyBjdXJyZW50IGNoYW5uZWwgKi9cblx0XHRpZiAodGhpcy5fYWN0aXZlQ2hhbm5lbENoYW5nZSkge1xuXHRcdFx0dGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQocmVzLmNoYW5uZWxzKVxuXHRcdFx0cmV0dXJuIHRydWVcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cblx0LyoqXG5cdCAqIENvbnRyb2xhIGVsIGFjY2VzbyBhbCBjYW5hbCwgZGUgc2VyIG90cm8gbnVldm8gY2FtYmlhIGxvcyB2YWxvcmVzLlxuXHQgKiBAcGFyYW0gY2hhbm5lbCBcblx0ICogQHBhcmFtIHVzZXIgXG5cdCAqL1xuXHRjaGFubmVsQWNjZXNzKGNoYW5uZWw6IGFueSwgdXNlciA9IG51bGwpIHtcblx0XHRpZiAodGhpcy53aW5kb3c/LmxvY2F0aW9uLmhvc3RuYW1lICE9IGNoYW5uZWwuaG9zdG5hbWUpIHtcblx0XHRcdGxldCBlbmNvZGVkID0gYnRvYShKU09OLnN0cmluZ2lmeSh1c2VyICE9IG51bGwgPyB1c2VyIDogdGhpcy5fdXNlcikpXG5cdFx0XHR0aGlzLndpbmRvdz8ubG9jYXRpb24ucmVwbGFjZShgJHt0aGlzLndpbmRvdz8ubG9jYXRpb24ucHJvdG9jb2x9Ly8ke2NoYW5uZWwuaG9zdG5hbWV9L2F1dGgvcmVkaXJlY3QvJHtlbmNvZGVkfWApXG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2NvbnN0YW50cy5tb2RpZnlDaGFubmVsQ29uZmlnKGNoYW5uZWwpXG5cdFx0XHR0aGlzLndpbmRvdz8ubG9jYXRpb24ucmVsb2FkKClcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIENvbnRyb2xhIHF1ZSBlbCByb2wgZGVsIHVzdWFyaW8gc2VhIHVuIHJvbCBwZXJtaXRpZG8gcG9yIGxhIGFwbGljYWNpw7NuLlxuXHQgKiBAcGFyYW0gYWxsb3dlZFJvbGVzIHJvbGVzIHF1ZSBwZXJtaXRlIGxhIGFwbGljYWNpw7NuLlxuXHQgKiBAcGFyYW0gcm9sZSByb2wgZGVsIHVzdWFyaW9zXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBpc0FsbG93ZWRSb2xlKGFsbG93ZWRSb2xlczogVXNlclJvbGVUeXBlW10sIHJvbGU6IHN0cmluZykge1xuXHRcdHJldHVybiBhbGxvd2VkUm9sZXMubGVuZ3RoXG5cdFx0XHQ/IGFsbG93ZWRSb2xlcy5pbmNsdWRlcyhyb2xlIGFzIFVzZXJSb2xlVHlwZSlcblx0XHRcdDogdHJ1ZVxuXHR9XG5cdC8qKlxuXHQgKiBUcmFzIHVuIGxvZ3VlbyBleGl0b3NvLCBndWFyZGEgbG9zIGRhdG9zIG5lY2VzYXJpb3MgZW4gZWwgc3RvcmFnZSB5IGRlbcOhc1xuXHQgKiBjb25maWd1cmFjaW9uZXMgbmVjZXNhcmlhcy5cblx0ICogQHBhcmFtIHRva2VucyBcblx0ICovXG5cdHByaXZhdGUgZG9Mb2dpblVzZXIodG9rZW5zOiBhbnkpIHtcblx0XHR0aGlzLl91c2VyID0gbmV3IFVzZXIoKVxuXHRcdHRoaXMuX3VzZXIuaW5pdGlsaXplZCh0b2tlbnMpXG5cblx0XHR0aGlzLmZvcmNlQ2hhbm5lbHNGb3JTZWxsZXIodG9rZW5zKVxuXHRcdC8vQ2hhbm5lbFxuXHRcdGNvbnN0IHVzZXJKc29uaWZ5ID0gdGhpcy5fdXNlci5qc29uaWZ5KClcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlVTRVIsIEpTT04uc3RyaW5naWZ5KHVzZXJKc29uaWZ5KSlcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkVYUElSQVRFU19JTiwgbW9tZW50KHRva2Vucy5leHBpcmVfaW4pLmFkZCgxLCAnaCcpLmZvcm1hdCgpKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4sIG1vbWVudCh0b2tlbnMuZXhwaXJlX2luKS5hZGQoMSwgJ2gnKS5mb3JtYXQoKSk7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5KV1RfVE9LRU4sIHRva2Vucy50b2tlbik7XG5cdFx0dGhpcy5fYXV0aFN0b3JhZ2Uuc2V0QXV0aFRva2VuKHRva2Vucy50b2tlbilcblx0XHR0aGlzLl90b2tlblNpZ25hbC5zZXQodG9rZW5zLnRva2VuKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLk1BSUwsIHRva2Vucy51c2VybmFtZSk7XG5cdFx0Ly9PYnNlcnZhYmxlc1xuXHRcdHRoaXMuX3VzZXJJblN1YmplY3QubmV4dCh0aGlzLl91c2VyKTtcblx0XHR0aGlzLl9sb2dnZWRJblN1YmplY3QubmV4dCh0cnVlKTtcblx0XHR0aGlzLl9sb2dnaW5nSW5TdWJqZWN0Lm5leHQoZmFsc2UpO1xuXHR9XG5cdC8qKlxuXHQgKiBDYW1iaWEgbGEgZnVuY2lvbiBxdWUgc2UgZW5jYXJnYSBkZSByZXNvbHZlciBoYWNpYSBkb25kZSBzZSByZWRpcmlnZSBlbCBmcm9udGVuZFxuXHQgKiB0cmFzIHVuYSBhY2Npw7NuXG5cdCAqIEBwYXJhbSByZXNvbHZlckZ1bmN0aW9uIFxuXHQgKi9cblx0cHVibGljIHNldEhvbWVSZXNvbHZlcihyZXNvbHZlckZ1bmN0aW9uOiBhbnkpIHsgdGhpcy5faG9tZVJlc29sdmVyID0gcmVzb2x2ZXJGdW5jdGlvbiB9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGxhIGZ1bmNpb24gcXVlIHNlIGVuY2FyZ2EgZGUgcmVzb2x2ZXIgaGFjaWEgZG9uZGUgc2UgcmVkaXJpZ2UgZWwgZnJvbnRlbmQuXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHVibGljIGdldEhvbWVSZXNvbHZlcigpIHsgcmV0dXJuIHRoaXMuX2hvbWVSZXNvbHZlciB9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGVsIHRva2VuIGRlbCBzdG9yYWdlIHkgbG8gZ3VhcmRhIGVuIGxhIHNpZ25hbC5cblx0ICovXG5cdHB1YmxpYyBsb2FkVG9rZW5Gcm9tU3RvcmFnZSgpIHtcblx0XHRjb25zdCB0b2tlbiA9IHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX1RPS0VOKTtcblx0XHRpZiAodG9rZW4pIHtcblx0XHRcdHRoaXMuX3Rva2VuU2lnbmFsLnNldCh0b2tlbik7XG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBEZXNsb2d1ZWEgYWwgdXN1YXJpby5cblx0ICovXG5cdHB1YmxpYyBsb2dvdXQoKSB7XG5cdFx0dGhpcy5kb0xvZ291dFVzZXIoKTtcblx0fVxuXHQvKipcblx0ICogUmV0b3JuYSBzaSBoYXkgdW4gdXN1YXJpbyBsb2d1ZWFkbyBvIG5vLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG5cdFx0Ly9jb25zb2xlLmxvZyhcImlzQXV0aGVudGljYXRlZFwiLHRoaXMuaXNUb2tlbkV4cGlyZWQoKSwgdGhpcy5fdG9rZW5TaWduYWwoKSApO1xuXHRcdGlmICh0aGlzLmlzVG9rZW5FeHBpcmVkKCkpIHtcblx0XHRcdHRoaXMuZG9Mb2dvdXRVc2VyKClcblx0XHR9XG5cdFx0dGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpXG5cdFx0dGhpcy5fdXNlckluU3ViamVjdC5uZXh0KHRoaXMuX3VzZXIpO1xuXHRcdC8vY29uc29sZS5sb2codGhpcy5nZXRUb2tlbigpLCAhdGhpcy5pc1Rva2VuRXhwaXJlZCgpICwgdGhpcy5fdXNlciAhPSBudWxsKTtcblx0XHRyZXR1cm4gdGhpcy5nZXRUb2tlbigpICYmICF0aGlzLmlzVG9rZW5FeHBpcmVkKCkgJiYgdGhpcy5fdXNlciAhPSBudWxsO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRvcm5hIGVsIHRva2VuIGRlIHVzdWFyaW9cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VG9rZW4oKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5fdG9rZW5TaWduYWwoKTtcblx0fVxuXHQvKipcblx0ICogTGltcGlhIGVsIHN0b3JhZ2UgeSBsYXMgY29uZmlndXJhY2lvbmVzIGludGVybmFzXG5cdCAqL1xuXHRwdWJsaWMgZG9Mb2dvdXRVc2VyKCkge1xuXHRcdHRoaXMuX3VzZXIgPSBudWxsXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5VU0VSKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkVYUElSQVRFU19JTik7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5KV1RfVE9LRU4pO1xuXHRcdHRoaXMuX2F1dGhTdG9yYWdlLnNldEF1dGhUb2tlbihudWxsKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlJFRlJFU0hfVE9LRU4pO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjYXJ0X3Rva2VuJyk7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5NQUlMKTtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkNIQU5ORUwpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUik7XG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5MT0NBTEUpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ1VTVE9NRVIpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdNQVNURVJfQ0hBTk5FTCcpO1xuXHRcdHRoaXMuX2xvZ2dlZEluU3ViamVjdC5uZXh0KGZhbHNlKTtcblx0XHR0aGlzLl91c2VySW5TdWJqZWN0Lm5leHQodGhpcy5fdXNlcik7XG5cdFx0dGhpcy5jaGFubmVsc1VzZXJTdWJqZWN0Lm5leHQoW10pXG5cdFx0dGhpcy5fdG9rZW5TaWduYWwuc2V0KG51bGwpXG5cdH1cblx0LyoqXG5cdCAqIERldnVlbHZlIGB0cnVlYHNpIGVsIHRva2VuIGV4cGlybywgYGZhbHNlYCBjYXNvIGNvbnRyYXJpby5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIGlzVG9rZW5FeHBpcmVkKCkge1xuXHRcdGNvbnN0IGZlY2hhX2V4cGlyYWNpb24gPSB0aGlzLmdldEV4cGlyYXRlc0F0KCk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gbW9tZW50KCkgPj0gbW9tZW50KGZlY2hhX2V4cGlyYWNpb24pO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblx0LyoqXG5cdCAqIE9idGllbmUgbGEgZmVjaGEgZGUgZXhwaXJhY2nDs24gZGVsIHRva2VuLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgZ2V0RXhwaXJhdGVzQXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuRVhQSVJBVEVTX0lOKTtcblx0fVxuXHQvKipcblx0ICogT2J0aWVuZSBhbCB1c3VhcmlvIGFjdHVhbCB5IGxvIGNvbnZpZXJ0ZSBlbiB1bmEgaW5zdGFuY2lhIGRlIGBVc2VyYFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXJBc1VzZXIoKTogVXNlciB8IG51bGwge1xuXHRcdHRoaXMuX3VzZXIgPSBuZXcgVXNlcigpO1xuXHRcdGlmICghdGhpcy5sb2FkVXNlckZyb21TdG9yYWdlKCkpIHtcblx0XHRcdHRoaXMuX3VzZXIgPSBudWxsXG5cdFx0fVxuXHRcdGVsc2UgaWYgKHRoaXMuX3VzZXI/LmNoYW5uZWxzLmZpbmQoKHVzZXJjaGFubmVsOiBhbnkpID0+IHVzZXJjaGFubmVsPy5jb2RlID09PSB0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTCkpIHtcblx0XHRcdHJldHVybiB0aGlzLl91c2VyO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmxvZ291dCgpXG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl91c2VyO1xuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGVsIHVzdWFyaW8gZGVsIHN0b3JhZ2UuXG5cdCAqIEBwYXJhbSBrZXkgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBsb2FkVXNlckZyb21TdG9yYWdlKGtleSA9IHRoaXMuVVNFUikge1xuXHRcdGlmICh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XG5cdFx0XHRjb25zdCB1c2VyT2JqID0gSlNPTi5wYXJzZSh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcblx0XHRcdHRoaXMuX3VzZXIgPSBPYmplY3QuYXNzaWduKG5ldyBVc2VyKCksIHVzZXJPYmopOyAvLyA8LS0gQXPDrSByZWN1cGVyYXMgbG9zIG3DqXRvZG9zIGRlIFVzZXJcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cblxuXHR9XG5cblx0cGFzc3dvcmRSZXNldCA9IChuZXdfcGFzc3dvcmQ6IHN0cmluZywgdG9rZW46IHN0cmluZykgPT4ge1xuXHRcdFxuXHRcdGNvbnN0IGRhdGEgPSB7IHBhc3N3b3JkOiB7IGZpcnN0OiBuZXdfcGFzc3dvcmQsIHNlY29uZDogbmV3X3Bhc3N3b3JkIH0gfTtcblx0XHRjb25zb2xlLmxvZyh0aGlzLnJlc2V0UGFzc3dvcmRBcGkodG9rZW4pLCBkYXRhKVxuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLnJlc2V0UGFzc3dvcmRBcGkodG9rZW4pLCBkYXRhKTtcblx0fVxuXHQvKipcblx0ICogRW52aWEgbGEgc29saWNpdHVkIHBhcmEgY2FtYmlhciBsYSBjb250cmFzZcOxYS5cblx0ICogQHBhcmFtIGVtYWlsIGVtYWlsIGRlbCBzb2xpY2l0YW50ZS5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRyZWNvdmVyUGFzc3dvcmQoZW1haWw6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLnJlY292ZXJQYXNzd29yZEFwaSgpLCB7IGVtYWlsIH0pO1xuXHR9XG5cdC8qKlxuXHQgKiBQYXJhIGNvbmZpcm1hciBlbCByZWdpc3RybyBkZSB1c3VhcmlvLlxuXHQgKiBAcGFyYW0gdG9rZW4gXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Y29uZmlybUFjY291bnQodG9rZW46IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmNvbmZpcm1BY2NvdW50QXBpKHRva2VuKSk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcmEgcmVnaXN0cmFyIGEgdW4gdXN1YXJpbyBjb23Dum5cblx0ICogQHBhcmFtIGRhdGEgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c2luZ1VwKGRhdGE6IGFueSkge1xuXHRcdHJldHVybiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5yZWdpc3RlckFwaSgpLCBkYXRhKTtcblx0fVxuXHQvKipcblx0ICogUGFyYSByZWdpc3RyYXIgYSB1biB1c3VhcmlvIG1heW9yaXN0YS5cblx0ICogQHBhcmFtIGRhdGEgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c2lnblVwV2hvbGVzYWxlcihkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4gdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMucmVnaXN0ZXJXaG9sZXNhbGVyQXBpKCksIGRhdGEpO1xuXHR9XG5cdC8qKlxuXHQgKiBDaGVxdWVhIHNpIHVuIHVzdWFyaW8gZXN0YSBoYWJpbGl0YWRvIGEgY29tcHJhciBvIG5vLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdC8vIGlzQWJsZVRvQnV5KCk6Ym9vbGVhbiB7XG5cdC8vIFx0Y29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCkgYXMgVXNlcjtcblx0Ly8gXHRjb25zdCBpc1NlbGxlciA9IGN1cnJlbnRVc2VyLnR5cGVVc2VyICYmIGN1cnJlbnRVc2VyLnR5cGVVc2VyID09ICdzZWxsZXInIHx8IGZhbHNlXG5cdC8vIFx0cmV0dXJuICFpc1NlbGxlciB8fCAhdGhpcy5nZXRDdXN0b21lcigpO1xuXHQvLyB9XG5cdHB1YmxpYyBpc0FibGVUb0J1eSA9ICgpOiBib29sZWFuID0+ICF0aGlzLmdldFVzZXJQcm9maWxlQXNVc2VyKCk/LmlzU2VsbGVyKCkgfHwgISF0aGlzLmdldEN1c3RvbWVyKClcblxuXHQvKipcblx0ICogUmV0b3JuYSB1biB1c3VhcmlvIGRlIHRpcG8gY2xpZW50ZS5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRnZXRDdXN0b21lcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fY3VzdG9tZXIgfHwgSlNPTi5wYXJzZSh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNVU1RPTUVSKSlcblx0fVxuXHQvKipcblx0ICogRGV2dWVsdmUgZWwgdXN1YXJpbyBhY3R1YWwgbG9ndWVhZG8uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Z2V0VXNlclByb2ZpbGVBc1VzZXIoKTogVXNlciB7XG5cdFx0cmV0dXJuIHRoaXMuX3VzZXIhIGFzIFVzZXIgfHwgdGhpcy5nZXRDdXJyZW50VXNlckFzVXNlcigpO1xuXHR9XG5cdC8qKlxuXHQgKiBBZ3JlZ2EgZGF0YSBleHRyYSBhbCBvYmplY3RvIGRlIFVzdWFyaW8uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0bG9naW5FeHRyYURhdGEgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNsaWVudF9pZDogJ2RlbW9fY2xpZW50Jyxcblx0XHRcdGNsaWVudF9zZWNyZXQ6ICdzZWNyZXRfZGVtb19jbGllbnQnLFxuXHRcdFx0Z3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xuXHRcdH1cblx0fVxuXHQvKiBQbGVhc2UgcmVtb3ZlIHRoaXMgQVNBUCAtIE5lZWRzICpjaGFubmVscyogYXJyYXkgaW4gdXNlciBvYmplY3QgQUxXQVlTICovXG5cdHByaXZhdGUgZm9yY2VDaGFubmVsc0ZvclNlbGxlcih0b2tlbnM6IGFueSkge1xuXHRcdGlmIChVc2VyUm9sZVR5cGUuU0VMTEVSID09IHRva2Vucy50eXBlIGFzIFVzZXJSb2xlVHlwZSlcblx0XHRcdHRoaXMuY2hhbm5lbHM/Lmxlbmd0aFxuXHRcdFx0XHQ/IHRoaXMuX3VzZXIhLnNldENoYW5uZWxzKC4uLnRoaXMuY2hhbm5lbHMpXG5cdFx0XHRcdDogdGhpcy5fdXNlciEuc2V0Q2hhbm5lbHModGhpcy5jaGFubmVsKVxuXHR9XG5cblx0LyoqXG5cdCogQ2FyZ2EgZWwgY2xpZW50ZSBjb24gZWwgcXVlIHNlIHJlYWxpemFyYW4gcGVkaWRvcy4gU2kgcmVjaWJlIGVsIHZhbG9yIG51bGxcblx0KiBzZSB2dWVsdmUgYSBjYXJnYXIgZWwgdmVuZGVkb3IgcGFyYSBzdSB1c28uICBcblx0KiBAcGFyYW0gY3VzdG9tZXIgXG5cdCovXG5cdHB1YmxpYyBzZXRDdXN0b21lcihjdXN0b21lcjogYW55KSB7XG5cdFx0bGV0IHJlZnJlc2hQYWdlID0gZmFsc2Vcblx0XHR0aGlzLl9jdXN0b21lciA9IGN1c3RvbWVyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DVVNUT01FUiwgSlNPTi5zdHJpbmdpZnkoY3VzdG9tZXIpKVxuXG5cdFx0bGV0IHNhbWVDaGFubmVsID0gY3VzdG9tZXIgPyB0aGlzLnNhbWVDaGFubmVsKGN1c3RvbWVyLmNoYW5uZWxzWzBdLmNvZGUsIGN1c3RvbWVyLmNoYW5uZWxzWzBdLmxvY2FsZXMuY29kZSkgOiBudWxsXG5cblx0XHRpZiAoY3VzdG9tZXIpIHtcblx0XHRcdGlmICghc2FtZUNoYW5uZWwpIHtcblx0XHRcdFx0IXRoaXMubG9jYWxTdG9yYWdlPy5nZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUikgP1xuXHRcdFx0XHRcdHRoaXMubG9jYWxTdG9yYWdlPy5zZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUiwgSlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRcdFx0Y2hhbm5lbDogdGhpcy5fYXBpQ29uc3RzLkNIQU5ORUwsXG5cdFx0XHRcdFx0XHRsb2NhbGU6IHRoaXMuX2FwaUNvbnN0cy5MT0NBTEVcblx0XHRcdFx0XHR9KSkgOiBudWxsO1xuXHRcdFx0XHR0aGlzLmNoYW5nZUNoYW5uZWwoe1xuXHRcdFx0XHRcdGNoYW5uZWw6IGN1c3RvbWVyLmNoYW5uZWxzWzBdLmNvZGUsXG5cdFx0XHRcdFx0bG9jYWxlOiBjdXN0b21lci5jaGFubmVsc1swXS5sb2NhbGVzLmNvZGVcblx0XHRcdFx0fSlcblx0XHRcdFx0cmVmcmVzaFBhZ2UgPSB0cnVlXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCByZXMgPSBKU09OLnBhcnNlKHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUikpXG5cdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdGlmICghdGhpcy5zYW1lQ2hhbm5lbChyZXMuY2hhbm5lbCwgcmVzLmxvY2FsZSkpIHtcblx0XHRcdFx0XHR0aGlzLmNoYW5nZUNoYW5uZWwocmVzKVxuXHRcdFx0XHRcdHJlZnJlc2hQYWdlID0gdHJ1ZVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMubG9jYWxTdG9yYWdlPy5yZW1vdmVJdGVtKHRoaXMuQ0hBTk5FTFNFTExFUik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vdGhpcy5fY2FydFNlcnZpY2UuY2xlYXJBbmRSZXNldEN1c3RvbWVyQ2FydCgpXG5cdFx0cmVmcmVzaFBhZ2UgPyBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZiA6IG51bGxcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21wcnVlYmEgc2kgbG9zIHZhbG9yZXMgZGVsIGNhbmFsIGFjdHVhbCBzb24gaWd1YWxlcyBhIGxvcyBpbmdyZXNhZG8gcG9yIHBhcmFtZXRyb3MuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIE5vbWJyZSBkZWwgY2FuYWxcblx0ICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSAgTG9jYWxlIGRlbCBjYW5hbFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBzaSBlcyBlbCBtaXNtbyBjYW5hbCwgRmFsc2UgY2FzbyBjb250cmFyaW8uXG5cdCAqL1xuXHRwcml2YXRlIHNhbWVDaGFubmVsID0gKGNoYW5uZWw6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcpOiBib29sZWFuID0+IChjaGFubmVsID09IHRoaXMuX2FwaUNvbnN0cy5DSEFOTkVMKSAmJiAobG9jYWxlID09IHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUpXG5cblx0LyoqXG5cdCAqIENhbWJpYSBkZSBjYW5hbFxuXHQgKiBAcGFyYW0gY2hhbm5lbENvbmZpZyBkZWJlIHNlciB1biBvYmpldG8gcXVlIGNvbnRlbmdhIGFsIG1lbm9zIGxhcyBrZXlzIGNoYW5uZWwgeSBsb2NhbGUuXG5cdCAqL1xuXHRwcml2YXRlIGNoYW5nZUNoYW5uZWwgPSAoY2hhbm5lbENvbmZpZzogYW55KSA9PiB7XG5cdFx0dGhpcy5fY29uc3RhbnRzLm1vZGlmeUNoYW5uZWxDb25maWcoe1xuXHRcdFx0Y2hhbm5lbDogY2hhbm5lbENvbmZpZy5jaGFubmVsLFxuXHRcdFx0bG9jYWxlOiBjaGFubmVsQ29uZmlnLmxvY2FsZVxuXHRcdH0pXG5cdH1cblx0Z2V0VXNlclByb2ZpbGUoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xuXHRcdHJldHVybiAodGhpcy5fdXNlciAmJiBvZih0aGlzLl91c2VyKSkgfHwgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuXHR9XG5cdHByaXZhdGUgZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xuXHRcdHRoaXMuX3VzZXIgPSBuZXcgVXNlcigpO1xuXHRcdGlmICghdGhpcy5sb2FkVXNlckZyb21TdG9yYWdlKCkpIHtcblx0XHRcdHRoaXMuX3VzZXIgPSBudWxsXG5cdFx0fVxuXHRcdHJldHVybiBvZih0aGlzLl91c2VyKTtcblx0fVxufVxuIl19
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
51
51
  providedIn: 'root'
52
52
  }]
53
53
  }], ctorParameters: () => [] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYXV0aC5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBSzVCLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTVDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQTtJQUVwRSw2QkFBNkI7SUFDWixTQUFTLEdBQUcsV0FBVyxDQUFBO0lBQ3ZCLGFBQWEsR0FBRyxlQUFlLENBQUE7SUFDL0IsWUFBWSxHQUFHLGNBQWMsQ0FBQTtJQUM5QyxnQkFBZ0IsQ0FBQztJQUVqQixZQUFZLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYTtRQUNaLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZO1FBQ1gsSUFBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDdEQsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ3JDLENBQUM7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYztRQUNyQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRDs7O09BR0c7SUFDSyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7d0dBM0NXLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmxCLE1BQU07OzRGQUVOLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTmd4TG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yYWdlU2VydmljZSB7XHJcblx0cHJpdmF0ZSBfbG9jYWxTdG9yYWdlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG5cclxuXHRwcml2YXRlIF9hdXRoVG9rZW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKVxyXG5cclxuXHQvLyBDb250YW50ZXMgcGFyYSBlbCBzdG9yYWdlLlxyXG5cdHByaXZhdGUgcmVhZG9ubHkgSldUX1RPS0VOID0gJ0pXVF9UT0tFTidcclxuXHRwcml2YXRlIHJlYWRvbmx5IFJFRlJFU0hfVE9LRU4gPSAnUkVGUkVTSF9UT0tFTidcclxuXHRwcml2YXRlIHJlYWRvbmx5IEVYUElSQVRFU19JTiA9ICdFWFBJUkFURVNfSU4nXHJcblx0Y29uc3RydWN0b3IoKSB7IH1cclxuXHJcblx0c2V0QXV0aFRva2VuKHRva2VuOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcblx0XHR0aGlzLl9hdXRoVG9rZW5TdWJqZWN0Lm5leHQodG9rZW4pO1xyXG5cdH1cclxuXHJcblx0Z2V0QXV0aFRva2VuJCgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9hdXRoVG9rZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0Z2V0QXV0aFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG5cdFx0aWYoIXRoaXMuX2F1dGhUb2tlblN1YmplY3QudmFsdWUpe1xyXG5cdFx0XHRjb25zdCByZXMgPSB0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkpXVF9UT0tFTilcclxuXHRcdFx0cmV0dXJuIHJlcyA/IHJlcyA6IG51bGw7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5fYXV0aFRva2VuU3ViamVjdC52YWx1ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGB0cnVlYHNpIGVsIHRva2VuIGV4cGlybywgYGZhbHNlYCBjYXNvIGNvbnRyYXJpby5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcml2YXRlIGlzVG9rZW5FeHBpcmVkKCkge1xyXG5cdFx0Y29uc3QgZmVjaGFfZXhwaXJhY2lvbiA9IHRoaXMuZ2V0RXhwaXJhdGVzQXQoKTtcclxuXHRcdGNvbnN0IHJlc3VsdCA9IG1vbWVudCgpID49IG1vbWVudChmZWNoYV9leHBpcmFjaW9uKTtcclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgbGEgZmVjaGEgZGUgZXhwaXJhY2nDs24gZGVsIHRva2VuLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0RXhwaXJhdGVzQXQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4pO1xyXG5cdH1cclxufVxyXG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYXV0aC5zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBSzVCLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTVDLGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQTtJQUVwRSw2QkFBNkI7SUFDWixTQUFTLEdBQUcsV0FBVyxDQUFBO0lBQ3ZCLGFBQWEsR0FBRyxlQUFlLENBQUE7SUFDL0IsWUFBWSxHQUFHLGNBQWMsQ0FBQTtJQUM5QyxnQkFBZ0IsQ0FBQztJQUVqQixZQUFZLENBQUMsS0FBb0I7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYTtRQUNaLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZO1FBQ1gsSUFBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDdEQsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQ3JDLENBQUM7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYztRQUNyQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRDs7O09BR0c7SUFDSyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUM7d0dBM0NXLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmxCLE1BQU07OzRGQUVOLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yYWdlU2VydmljZSB7XG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuXHRwcml2YXRlIF9hdXRoVG9rZW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKVxuXG5cdC8vIENvbnRhbnRlcyBwYXJhIGVsIHN0b3JhZ2UuXG5cdHByaXZhdGUgcmVhZG9ubHkgSldUX1RPS0VOID0gJ0pXVF9UT0tFTidcblx0cHJpdmF0ZSByZWFkb25seSBSRUZSRVNIX1RPS0VOID0gJ1JFRlJFU0hfVE9LRU4nXG5cdHByaXZhdGUgcmVhZG9ubHkgRVhQSVJBVEVTX0lOID0gJ0VYUElSQVRFU19JTidcblx0Y29uc3RydWN0b3IoKSB7IH1cblxuXHRzZXRBdXRoVG9rZW4odG9rZW46IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcblx0XHR0aGlzLl9hdXRoVG9rZW5TdWJqZWN0Lm5leHQodG9rZW4pO1xuXHR9XG5cblx0Z2V0QXV0aFRva2VuJCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fYXV0aFRva2VuU3ViamVjdC5hc09ic2VydmFibGUoKTtcblx0fVxuXG5cdGdldEF1dGhUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcblx0XHRpZighdGhpcy5fYXV0aFRva2VuU3ViamVjdC52YWx1ZSl7XG5cdFx0XHRjb25zdCByZXMgPSB0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkpXVF9UT0tFTilcblx0XHRcdHJldHVybiByZXMgPyByZXMgOiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fYXV0aFRva2VuU3ViamVjdC52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGV2dWVsdmUgYHRydWVgc2kgZWwgdG9rZW4gZXhwaXJvLCBgZmFsc2VgIGNhc28gY29udHJhcmlvLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgaXNUb2tlbkV4cGlyZWQoKSB7XG5cdFx0Y29uc3QgZmVjaGFfZXhwaXJhY2lvbiA9IHRoaXMuZ2V0RXhwaXJhdGVzQXQoKTtcblx0XHRjb25zdCByZXN1bHQgPSBtb21lbnQoKSA+PSBtb21lbnQoZmVjaGFfZXhwaXJhY2lvbik7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXHQvKipcblx0ICogT2J0aWVuZSBsYSBmZWNoYSBkZSBleHBpcmFjacOzbiBkZWwgdG9rZW4uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRFeHBpcmF0ZXNBdCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5FWFBJUkFURVNfSU4pO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,148 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { switchMap } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "./runtime-config.service";
7
+ /**
8
+ * Servicio base para realizar peticiones HTTP usando configuración dinámica
9
+ * Todos los servicios de la aplicación deben extender este servicio o usar sus métodos
10
+ */
11
+ export class BaseApiService {
12
+ http;
13
+ runtimeConfigService;
14
+ constructor(http, runtimeConfigService) {
15
+ this.http = http;
16
+ this.runtimeConfigService = runtimeConfigService;
17
+ }
18
+ /**
19
+ * Construye una URL completa usando la API_URL del runtime
20
+ */
21
+ buildApiUrl(endpoint) {
22
+ return this.runtimeConfigService.buildApiUrl(endpoint);
23
+ }
24
+ /**
25
+ * Obtiene headers comunes que incluyen información del runtime
26
+ */
27
+ getCommonHeaders() {
28
+ const config = this.runtimeConfigService.getConfig();
29
+ let headers = new HttpHeaders({
30
+ 'Content-Type': 'application/json'
31
+ });
32
+ if (config) {
33
+ headers = headers
34
+ .set('X-Channel', config.channel)
35
+ .set('X-Locale', config.locale)
36
+ .set('X-Environment', config.appEnv);
37
+ }
38
+ return headers;
39
+ }
40
+ /**
41
+ * Método GET genérico
42
+ */
43
+ get(endpoint, options = {}) {
44
+ const url = this.buildApiUrl(endpoint);
45
+ const headers = this.mergeHeaders(options.headers);
46
+ return this.http.get(url, {
47
+ ...options,
48
+ headers
49
+ });
50
+ }
51
+ /**
52
+ * Método POST genérico
53
+ */
54
+ post(endpoint, data, options = {}) {
55
+ const url = this.buildApiUrl(endpoint);
56
+ const headers = this.mergeHeaders(options.headers);
57
+ return this.http.post(url, data, {
58
+ ...options,
59
+ headers
60
+ });
61
+ }
62
+ /**
63
+ * Método PUT genérico
64
+ */
65
+ put(endpoint, data, options = {}) {
66
+ const url = this.buildApiUrl(endpoint);
67
+ const headers = this.mergeHeaders(options.headers);
68
+ return this.http.put(url, data, {
69
+ ...options,
70
+ headers
71
+ });
72
+ }
73
+ /**
74
+ * Método PATCH genérico
75
+ */
76
+ patch(endpoint, data, options = {}) {
77
+ const url = this.buildApiUrl(endpoint);
78
+ const headers = this.mergeHeaders(options.headers);
79
+ return this.http.patch(url, data, {
80
+ ...options,
81
+ headers
82
+ });
83
+ }
84
+ /**
85
+ * Método DELETE genérico
86
+ */
87
+ delete(endpoint, options = {}) {
88
+ const url = this.buildApiUrl(endpoint);
89
+ const headers = this.mergeHeaders(options.headers);
90
+ return this.http.delete(url, {
91
+ ...options,
92
+ headers
93
+ });
94
+ }
95
+ /**
96
+ * Método para peticiones que necesitan esperar a que la config esté cargada
97
+ */
98
+ getWithConfig(endpoint, options = {}) {
99
+ return this.runtimeConfigService.config$.pipe(switchMap(config => {
100
+ if (!config) {
101
+ throw new Error('Runtime config not loaded');
102
+ }
103
+ return this.get(endpoint, options);
104
+ }));
105
+ }
106
+ /**
107
+ * Método para POST que necesitan esperar a que la config esté cargada
108
+ */
109
+ postWithConfig(endpoint, data, options = {}) {
110
+ return this.runtimeConfigService.config$.pipe(switchMap(config => {
111
+ if (!config) {
112
+ throw new Error('Runtime config not loaded');
113
+ }
114
+ return this.post(endpoint, data, options);
115
+ }));
116
+ }
117
+ /**
118
+ * Combina headers personalizados con los headers comunes
119
+ */
120
+ mergeHeaders(customHeaders) {
121
+ let headers = this.getCommonHeaders();
122
+ if (customHeaders) {
123
+ if (customHeaders instanceof HttpHeaders) {
124
+ customHeaders.keys().forEach(key => {
125
+ const values = customHeaders.getAll(key);
126
+ if (values) {
127
+ headers = headers.set(key, values);
128
+ }
129
+ });
130
+ }
131
+ else {
132
+ Object.keys(customHeaders).forEach(key => {
133
+ headers = headers.set(key, customHeaders[key]);
134
+ });
135
+ }
136
+ }
137
+ return headers;
138
+ }
139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, deps: [{ token: i1.HttpClient }, { token: i2.RuntimeConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
140
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, providedIn: 'root' });
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseApiService, decorators: [{
143
+ type: Injectable,
144
+ args: [{
145
+ providedIn: 'root'
146
+ }]
147
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.RuntimeConfigService }] });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9iYXNlLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFdBQVcsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFTN0M7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFHYjtJQUNBO0lBRlosWUFDWSxJQUFnQixFQUNoQixvQkFBMEM7UUFEMUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO0lBQ25ELENBQUM7SUFFSjs7T0FFRztJQUNPLFdBQVcsQ0FBQyxRQUFnQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0JBQWdCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixjQUFjLEVBQUUsa0JBQWtCO1NBQ25DLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPLEdBQUcsT0FBTztpQkFDZCxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztpQkFDOUIsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMs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SlUsY0FBYzs0R0FBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUnVudGltZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL3J1bnRpbWUtY29uZmlnLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlcXVlc3RPcHRpb25zIHtcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwgeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2VydmljaW8gYmFzZSBwYXJhIHJlYWxpemFyIHBldGljaW9uZXMgSFRUUCB1c2FuZG8gY29uZmlndXJhY2nDs24gZGluw6FtaWNhXG4gKiBUb2RvcyBsb3Mgc2VydmljaW9zIGRlIGxhIGFwbGljYWNpw7NuIGRlYmVuIGV4dGVuZGVyIGVzdGUgc2VydmljaW8gbyB1c2FyIHN1cyBtw6l0b2Rvc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYXNlQXBpU2VydmljZSB7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgcnVudGltZUNvbmZpZ1NlcnZpY2U6IFJ1bnRpbWVDb25maWdTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ29uc3RydXllIHVuYSBVUkwgY29tcGxldGEgdXNhbmRvIGxhIEFQSV9VUkwgZGVsIHJ1bnRpbWVcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEFwaVVybChlbmRwb2ludDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ydW50aW1lQ29uZmlnU2VydmljZS5idWlsZEFwaVVybChlbmRwb2ludCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBoZWFkZXJzIGNvbXVuZXMgcXVlIGluY2x1eWVuIGluZm9ybWFjacOzbiBkZWwgcnVudGltZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbW1vbkhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucnVudGltZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnNcbiAgICAgICAgLnNldCgnWC1DaGFubmVsJywgY29uZmlnLmNoYW5uZWwpXG4gICAgICAgIC5zZXQoJ1gtTG9jYWxlJywgY29uZmlnLmxvY2FsZSlcbiAgICAgICAgLnNldCgnWC1FbnZpcm9ubWVudCcsIGNvbmZpZy5hcHBFbnYpO1xuICAgIH1cblxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gR0VUIGdlbsOpcmljb1xuICAgKi9cbiAgZ2V0PFQ+KGVuZHBvaW50OiBzdHJpbmcsIG9wdGlvbnM6IEFwaVJlcXVlc3RPcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkQXBpVXJsKGVuZHBvaW50KTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5tZXJnZUhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBQT1NUIGdlbsOpcmljb1xuICAgKi9cbiAgcG9zdDxUPihlbmRwb2ludDogc3RyaW5nLCBkYXRhOiBhbnksIG9wdGlvbnM6IEFwaVJlcXVlc3RPcHRpb25zID0ge30pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkQXBpVXJsKGVuZHBvaW50KTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5tZXJnZUhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih1cmwsIGRhdGEsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBQVVQgZ2Vuw6lyaWNvXG4gICAqL1xuICBwdXQ8VD4oZW5kcG9pbnQ6IHN0cmluZywgZGF0YTogYW55LCBvcHRpb25zOiBBcGlSZXF1ZXN0T3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZEFwaVVybChlbmRwb2ludCk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMubWVyZ2VIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPih1cmwsIGRhdGEsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBQQVRDSCBnZW7DqXJpY29cbiAgICovXG4gIHBhdGNoPFQ+KGVuZHBvaW50OiBzdHJpbmcsIGRhdGE6IGFueSwgb3B0aW9uczogQXBpUmVxdWVzdE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRBcGlVcmwoZW5kcG9pbnQpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLm1lcmdlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxUPih1cmwsIGRhdGEsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBoZWFkZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBERUxFVEUgZ2Vuw6lyaWNvXG4gICAqL1xuICBkZWxldGU8VD4oZW5kcG9pbnQ6IHN0cmluZywgb3B0aW9uczogQXBpUmVxdWVzdE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRBcGlVcmwoZW5kcG9pbnQpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLm1lcmdlSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8VD4odXJsLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGVhZGVyc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcGFyYSBwZXRpY2lvbmVzIHF1ZSBuZWNlc2l0YW4gZXNwZXJhciBhIHF1ZSBsYSBjb25maWcgZXN0w6kgY2FyZ2FkYVxuICAgKi9cbiAgZ2V0V2l0aENvbmZpZzxUPihlbmRwb2ludDogc3RyaW5nLCBvcHRpb25zOiBBcGlSZXF1ZXN0T3B0aW9ucyA9IHt9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZUNvbmZpZ1NlcnZpY2UuY29uZmlnJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNvbmZpZyA9PiB7XG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW50aW1lIGNvbmZpZyBub3QgbG9hZGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0PFQ+KGVuZHBvaW50LCBvcHRpb25zKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHBhcmEgUE9TVCBxdWUgbmVjZXNpdGFuIGVzcGVyYXIgYSBxdWUgbGEgY29uZmlnIGVzdMOpIGNhcmdhZGFcbiAgICovXG4gIHBvc3RXaXRoQ29uZmlnPFQ+KGVuZHBvaW50OiBzdHJpbmcsIGRhdGE6IGFueSwgb3B0aW9uczogQXBpUmVxdWVzdE9wdGlvbnMgPSB7fSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVDb25maWdTZXJ2aWNlLmNvbmZpZyQucGlwZShcbiAgICAgIHN3aXRjaE1hcChjb25maWcgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVudGltZSBjb25maWcgbm90IGxvYWRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3Q8VD4oZW5kcG9pbnQsIGRhdGEsIG9wdGlvbnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmEgaGVhZGVycyBwZXJzb25hbGl6YWRvcyBjb24gbG9zIGhlYWRlcnMgY29tdW5lc1xuICAgKi9cbiAgcHJpdmF0ZSBtZXJnZUhlYWRlcnMoY3VzdG9tSGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9KTogSHR0cEhlYWRlcnMge1xuICAgIGxldCBoZWFkZXJzID0gdGhpcy5nZXRDb21tb25IZWFkZXJzKCk7XG5cbiAgICBpZiAoY3VzdG9tSGVhZGVycykge1xuICAgICAgaWYgKGN1c3RvbUhlYWRlcnMgaW5zdGFuY2VvZiBIdHRwSGVhZGVycykge1xuICAgICAgICBjdXN0b21IZWFkZXJzLmtleXMoKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gY3VzdG9tSGVhZGVycy5nZXRBbGwoa2V5KTtcbiAgICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21IZWFkZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGtleSwgY3VzdG9tSGVhZGVyc1trZXldKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cbn0iXX0=
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
61
61
  providedIn: 'root'
62
62
  }]
63
63
  }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLXJlcG9zaXRvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9ibG9ja3MtcmVwb3NpdG9yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDOztBQUMzQzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ25DOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0ssVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQzlDOztPQUVHO0lBQ0ssYUFBYSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ3pEOztPQUVHO0lBQ0ssT0FBTyxHQUF5QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFFLFVBQVU7SUFDVjs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLE9BQWUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLG1CQUFtQixPQUFPLFdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFFN0o7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxPQUFlO1FBQy9CLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QyxPQUFPLFFBQVEsQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FDRixDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2IsR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNwQixDQUFDO0lBRUQ7O1FBRUk7SUFFSSxXQUFXLEdBQUcsQ0FBQyxNQUFnQixFQUFFLE9BQWUsRUFBRSxFQUFFO1FBQzNELE1BQU0sU0FBUyxHQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBRW5ELENBQUMsQ0FBQTt3R0FwRFcsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdkIsTUFBTTs7NEZBRU4sdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElCbG9jaywgSUJsb2NrSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBxdWUgbWFuZWphIGxvcyBibG9xdWVzIGNvbW8gcmVwb3NpdG9yaW8uXHJcbiAqIEBjbGFzcyBCbG9ja3NSZXBvc2l0b3J5U2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmxvY2tzUmVwb3NpdG9yeVNlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBhcGlDb25zdGFudHMgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XHJcblx0LyoqXHJcblx0ICogTWVuYWphIGxhcyBjb25leGlvbmVzIGNvbiBsYSBBUElcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbm5lY3Rpb24gPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpXHJcblx0LyoqXHJcblx0ICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbG9zIGJsb3F1ZXMgcmVjaWJpZG9zLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgYmxvY2tzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUJsb2NrW10+KFtdKVxyXG5cdC8qKlxyXG5cdCAqIE9ic2VydmFibGUgZGUgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIGJsb2NrcyQ6IE9ic2VydmFibGU8SUJsb2NrW10+ID0gdGhpcy5ibG9ja3NTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHQvL0FQSSBVUkxTXHJcblx0LyoqXHJcblx0ICogRGV2dWVsdmUgbGEgdXJsIHBhcmEgb2J0ZW5lciBsb3MgYmxvcXVlcyBzZWd1biBsYSBzZWNjacOzbi5cclxuXHQgKiBAcGFyYW0gc2VjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRibG9ja3NBUEkoc2VjdGlvbjogc3RyaW5nKSB7IHJldHVybiBgJHt0aGlzLmFwaUNvbnN0YW50cy5DTVNfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vYmxvY2tzL3NlY3Rpb24vJHtzZWN0aW9ufT9sb2NhbGU9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9YCB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9idGllbmUgbG9zIGJsb3F1ZXMgc2VndW4gbGEgc2VjY2lvbiBkZWwgQmFja2VuZC5cclxuXHQgKiBAcGFyYW0gc2VjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBVbiBvYnNlcnZhYmxlIGRlIGxvcyBibG9xdWVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRCbG9ja3Moc2VjdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxJQmxvY2tbXT4ge1xyXG5cdFx0Ly9pZih0aGlzLmJsb2Nrc1N1YmplY3QuZ2V0VmFsdWUoKSAhPSBudWxsKXtcclxuXHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5ibG9ja3NBUEkoc2VjdGlvbikpLnBpcGUoXHJcblx0XHRcdHNoYXJlUmVwbGF5KDEpLFxyXG5cdFx0XHRtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3BvbnNlKVxyXG5cdFx0XHRcdHRoaXMuYmxvY2tzU3ViamVjdC5uZXh0KHJlc3BvbnNlLml0ZW1zKVxyXG5cdFx0XHRcdHJldHVybiByZXNwb25zZVxyXG5cdFx0XHR9KVxyXG5cdFx0KS5zdWJzY3JpYmUoKVxyXG5cdFx0Ly99XHJcblx0XHRyZXR1cm4gdGhpcy5ibG9ja3MkXHJcblx0fVxyXG5cclxuXHQvKiBwcml2YXRlIGhhc1NlY3Rpb25CbG9ja3MgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XHJcblx0XHRcclxuXHR9ICovXHJcblxyXG5cdHByaXZhdGUgYXBwZW5kQmxvY2sgPSAoYmxvY2tzOiBJQmxvY2tbXSwgc2VjdGlvbjogc3RyaW5nKSA9PiB7XHJcblx0XHRjb25zdCBuZXdfYmxvY2s6IElCbG9ja0luZm8gPSB7IHNlY3Rpb24sIGJsb2NrcyB9O1xyXG5cclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLXJlcG9zaXRvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9ibG9ja3MtcmVwb3NpdG9yeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDOztBQUMzQzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ25DOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0ssVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQzlDOztPQUVHO0lBQ0ssYUFBYSxHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ3pEOztPQUVHO0lBQ0ssT0FBTyxHQUF5QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFFLFVBQVU7SUFDVjs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLE9BQWUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLG1CQUFtQixPQUFPLFdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFFN0o7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxPQUFlO1FBQy9CLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRCxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckIsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QyxPQUFPLFFBQVEsQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FDRixDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2IsR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNwQixDQUFDO0lBRUQ7O1FBRUk7SUFFSSxXQUFXLEdBQUcsQ0FBQyxNQUFnQixFQUFFLE9BQWUsRUFBRSxFQUFFO1FBQzNELE1BQU0sU0FBUyxHQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBRW5ELENBQUMsQ0FBQTt3R0FwRFcsdUJBQXVCOzRHQUF2Qix1QkFBdUIsY0FGdkIsTUFBTTs7NEZBRU4sdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElCbG9jaywgSUJsb2NrSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xuLyoqXG4gKiBTZXJ2aWNpbyBxdWUgbWFuZWphIGxvcyBibG9xdWVzIGNvbW8gcmVwb3NpdG9yaW8uXG4gKiBAY2xhc3MgQmxvY2tzUmVwb3NpdG9yeVNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmxvY2tzUmVwb3NpdG9yeVNlcnZpY2Uge1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogTWVuYWphIGxhcyBjb25leGlvbmVzIGNvbiBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgY29ubmVjdGlvbiA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcblx0LyoqXG5cdCAqIFN1YmplY3QgcGFyYSBtYW5lamFyIGxvcyBibG9xdWVzIHJlY2liaWRvcy5cblx0ICovXG5cdHByaXZhdGUgYmxvY2tzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUJsb2NrW10+KFtdKVxuXHQvKipcblx0ICogT2JzZXJ2YWJsZSBkZSBibG9xdWVzLlxuXHQgKi9cblx0cHJpdmF0ZSBibG9ja3MkOiBPYnNlcnZhYmxlPElCbG9ja1tdPiA9IHRoaXMuYmxvY2tzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHQvL0FQSSBVUkxTXG5cdC8qKlxuXHQgKiBEZXZ1ZWx2ZSBsYSB1cmwgcGFyYSBvYnRlbmVyIGxvcyBibG9xdWVzIHNlZ3VuIGxhIHNlY2Npw7NuLlxuXHQgKiBAcGFyYW0gc2VjdGlvbiBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRibG9ja3NBUEkoc2VjdGlvbjogc3RyaW5nKSB7IHJldHVybiBgJHt0aGlzLmFwaUNvbnN0YW50cy5DTVNfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuQ0hBTk5FTH0vYmxvY2tzL3NlY3Rpb24vJHtzZWN0aW9ufT9sb2NhbGU9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9YCB9XG5cblx0LyoqXG5cdCAqIE9idGllbmUgbG9zIGJsb3F1ZXMgc2VndW4gbGEgc2VjY2lvbiBkZWwgQmFja2VuZC5cblx0ICogQHBhcmFtIHNlY3Rpb24gXG5cdCAqIEByZXR1cm5zIFVuIG9ic2VydmFibGUgZGUgbG9zIGJsb3F1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0QmxvY2tzKHNlY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8SUJsb2NrW10+IHtcblx0XHQvL2lmKHRoaXMuYmxvY2tzU3ViamVjdC5nZXRWYWx1ZSgpICE9IG51bGwpe1xuXHRcdHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5ibG9ja3NBUEkoc2VjdGlvbikpLnBpcGUoXG5cdFx0XHRzaGFyZVJlcGxheSgxKSxcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3BvbnNlKVxuXHRcdFx0XHR0aGlzLmJsb2Nrc1N1YmplY3QubmV4dChyZXNwb25zZS5pdGVtcylcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlXG5cdFx0XHR9KVxuXHRcdCkuc3Vic2NyaWJlKClcblx0XHQvL31cblx0XHRyZXR1cm4gdGhpcy5ibG9ja3MkXG5cdH1cblxuXHQvKiBwcml2YXRlIGhhc1NlY3Rpb25CbG9ja3MgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XG5cdFx0XG5cdH0gKi9cblxuXHRwcml2YXRlIGFwcGVuZEJsb2NrID0gKGJsb2NrczogSUJsb2NrW10sIHNlY3Rpb246IHN0cmluZykgPT4ge1xuXHRcdGNvbnN0IG5ld19ibG9jazogSUJsb2NrSW5mbyA9IHsgc2VjdGlvbiwgYmxvY2tzIH07XG5cblx0fVxuXG59XG4iXX0=
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
49
49
  providedIn: 'root'
50
50
  }]
51
51
  }], ctorParameters: () => [] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYmxvY2tzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXRFOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBQ3pCOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0ssdUJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEU7O09BRUc7SUFDSyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkQ7O09BRUc7SUFDSSxPQUFPLEdBQXNCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdEUsVUFBVTtJQUNWOzs7T0FHRztJQUNILHNCQUFzQixLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sd0JBQXdCLENBQUEsQ0FBQyxDQUFDO0lBRW5ILFNBQVM7SUFDVDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE9BQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFDRCxnQkFBZ0IsQ0FBQzt3R0FsQ0wsYUFBYTs0R0FBYixhQUFhLGNBRmIsTUFBTTs7NEZBRU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBCbG9ja3NSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4vYmxvY2tzLXJlcG9zaXRvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IElCbG9jayB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG4vKipcclxuICogU2VydmljaW8gZGUgdGlwbyBhZGFwdGVyIHBhcmEgbWFuZWphciBsb3MgYmxvcXVlcy5cclxuICogQGNsYXNzIEJsb2Nrc1NlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEJsb2Nrc1NlcnZpY2Uge1xyXG5cdC8qKlxyXG5cdCAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBhcGlDb25zdGFudHMgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSk7XHJcblx0LyoqXHJcblx0ICogU2VydmljaW8gZGUgQmxvY2tzUmVwb3NpdG9yeS5cclxuXHQgKi9cclxuXHRwcml2YXRlIGJsb2Nrc1JlcG9zaXRvcnlTZXJ2aWNlID0gaW5qZWN0KEJsb2Nrc1JlcG9zaXRvcnlTZXJ2aWNlKTtcclxuXHQvKipcclxuXHQgKiBTdWJqZWN0IHBhcmEgbWFuZWphciBsb3MgYmxvcXVlcyByZWNpYmlkb3MuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBibG9ja3NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xyXG5cdC8qKlxyXG5cdCAqIE9ic2VydmFibGUgZGUgYmxvcXVlcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgYmxvY2tzJDogT2JzZXJ2YWJsZTxhbnlbXT4gPSB0aGlzLmJsb2Nrc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cdC8vQVBJIFVSTFNcclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBsYSB1cmwgcGFyYSBpbnRlcmFjdHVhciBjb24gZWwgYmxvcXVlIGRlIGNvbnRhY3RvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGNvbnRhY3RGb3JtUmVzcG9uc2VBUEkoKSB7IHJldHVybiBgJHt0aGlzLmFwaUNvbnN0YW50cy5DTVNfVVJMfSR7dGhpcy5hcGlDb25zdGFudHMuTE9DQUxFfS9jb250YWN0LWZvcm0vcmVzcG9uc2VgIH1cclxuXHJcblx0Ly9NRVRIT0RTXHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBsb3MgYmxvcXVlcyBkZSB1bmEgc2VjY2nDs24gZW4gZXNwZWNpZmljby5cclxuXHQgKiBAcGFyYW0gc2VjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGRlIGxvcyBibG9xdWVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRCbG9ja3Moc2VjdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmJsb2Nrc1JlcG9zaXRvcnlTZXJ2aWNlLmdldEJsb2NrcyhzZWN0aW9uKVxyXG5cdH1cclxuXHRjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYmxvY2tzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXRFOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBQ3pCOztPQUVHO0lBQ0ssWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25EOztPQUVHO0lBQ0ssdUJBQXVCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEU7O09BRUc7SUFDSyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7SUFDdkQ7O09BRUc7SUFDSSxPQUFPLEdBQXNCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdEUsVUFBVTtJQUNWOzs7T0FHRztJQUNILHNCQUFzQixLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sd0JBQXdCLENBQUEsQ0FBQyxDQUFDO0lBRW5ILFNBQVM7SUFDVDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE9BQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFDRCxnQkFBZ0IsQ0FBQzt3R0FsQ0wsYUFBYTs0R0FBYixhQUFhLGNBRmIsTUFBTTs7NEZBRU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCbG9ja3NSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4vYmxvY2tzLXJlcG9zaXRvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBJQmxvY2sgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbi8qKlxuICogU2VydmljaW8gZGUgdGlwbyBhZGFwdGVyIHBhcmEgbWFuZWphciBsb3MgYmxvcXVlcy5cbiAqIEBjbGFzcyBCbG9ja3NTZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJsb2Nrc1NlcnZpY2Uge1xuXHQvKipcblx0ICogQ29uc3RhbnRlcyBkZSBsYSBBUElcblx0ICovXG5cdHByaXZhdGUgYXBpQ29uc3RhbnRzID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHQvKipcblx0ICogU2VydmljaW8gZGUgQmxvY2tzUmVwb3NpdG9yeS5cblx0ICovXG5cdHByaXZhdGUgYmxvY2tzUmVwb3NpdG9yeVNlcnZpY2UgPSBpbmplY3QoQmxvY2tzUmVwb3NpdG9yeVNlcnZpY2UpO1xuXHQvKipcblx0ICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbG9zIGJsb3F1ZXMgcmVjaWJpZG9zLlxuXHQgKi9cblx0cHJpdmF0ZSBibG9ja3NTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuXHQvKipcblx0ICogT2JzZXJ2YWJsZSBkZSBibG9xdWVzLlxuXHQgKi9cblx0cHVibGljIGJsb2NrcyQ6IE9ic2VydmFibGU8YW55W10+ID0gdGhpcy5ibG9ja3NTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8vQVBJIFVSTFNcblx0LyoqXG5cdCAqIERldnVlbHZlIGxhIHVybCBwYXJhIGludGVyYWN0dWFyIGNvbiBlbCBibG9xdWUgZGUgY29udGFjdG8uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Y29udGFjdEZvcm1SZXNwb25zZUFQSSgpIHsgcmV0dXJuIGAke3RoaXMuYXBpQ29uc3RhbnRzLkNNU19VUkx9JHt0aGlzLmFwaUNvbnN0YW50cy5MT0NBTEV9L2NvbnRhY3QtZm9ybS9yZXNwb25zZWAgfVxuXG5cdC8vTUVUSE9EU1xuXHQvKipcblx0ICogT2J0aWVuZSBsb3MgYmxvcXVlcyBkZSB1bmEgc2VjY2nDs24gZW4gZXNwZWNpZmljby5cblx0ICogQHBhcmFtIHNlY3Rpb24gXG5cdCAqIEByZXR1cm5zIE9ic2VydmFibGUgZGUgbG9zIGJsb3F1ZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0QmxvY2tzKHNlY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuYmxvY2tzUmVwb3NpdG9yeVNlcnZpY2UuZ2V0QmxvY2tzKHNlY3Rpb24pXG5cdH1cblx0Y29uc3RydWN0b3IoKSB7IH1cbn1cbiJdfQ==