simpo-component-library 3.6.930 → 3.6.932

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 (267) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  5. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  6. package/esm2022/lib/constants/business.constant.mjs +1 -1
  7. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  8. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  9. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  10. package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
  11. package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
  12. package/esm2022/lib/directive/color.directive.mjs +1 -1
  13. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  14. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  15. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  16. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  17. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  18. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  19. package/esm2022/lib/directive/height.directive.mjs +1 -1
  20. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  21. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  22. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  23. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  24. package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
  25. package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
  26. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  27. package/esm2022/lib/directive/letters-only.directive.mjs +1 -1
  28. package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
  29. package/esm2022/lib/directive/numbers-only.directive.mjs +1 -1
  30. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  31. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  32. package/esm2022/lib/directive/spacing-around.directive.mjs +1 -1
  33. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
  34. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  35. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  36. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  37. package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
  38. package/esm2022/lib/directive/video-directive.directive.mjs +1 -1
  39. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  40. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  41. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +18 -14
  42. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +22 -14
  43. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  44. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
  45. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
  46. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
  47. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/categories-with-image-background-columns/categories-with-image-background-columns.component.mjs +3 -3
  49. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  50. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  51. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  52. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  53. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  54. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  55. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  56. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  57. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +4 -4
  61. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  62. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  63. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  65. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
  66. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  67. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +3 -3
  68. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  69. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  70. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +12 -9
  71. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  72. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +17 -16
  73. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  74. package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.component.mjs +3 -3
  75. package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.modal.mjs +1 -1
  76. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +1 -1
  77. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  78. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +3 -3
  79. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  80. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +3 -3
  81. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +1 -1
  82. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
  83. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  84. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  85. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  86. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  87. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  88. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  89. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
  90. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  91. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  92. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  95. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  96. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  97. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  98. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  99. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  100. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  101. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  102. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  103. package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -3
  104. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  105. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  106. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  107. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  108. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  109. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
  110. package/esm2022/lib/elements/editor-service.service.mjs +1 -1
  111. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  112. package/esm2022/lib/elements/index.mjs +1 -1
  113. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  114. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  115. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  116. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  117. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  118. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  119. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
  120. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
  121. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  122. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  123. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +7 -7
  124. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
  125. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  126. package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
  127. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  128. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  129. package/esm2022/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.mjs +3 -3
  130. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  131. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  132. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  133. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  134. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  135. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
  136. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  137. package/esm2022/lib/sections/brand-story-section/brand-story-section.component.mjs +3 -3
  138. package/esm2022/lib/sections/brand-story-section/brand-story-section.modal.mjs +1 -1
  139. package/esm2022/lib/sections/button-grid-section/button-grid-section.component.mjs +3 -3
  140. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  141. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  142. package/esm2022/lib/sections/condensed-and-gradient/condensed-and-gradient.component.mjs +3 -3
  143. package/esm2022/lib/sections/countdown-banner/countdown-banner.component.mjs +3 -3
  144. package/esm2022/lib/sections/countdown-banner/countdown-banner.component.model.mjs +1 -1
  145. package/esm2022/lib/sections/faq-columns-cards/faq-columns-cards.component.mjs +3 -3
  146. package/esm2022/lib/sections/faq-columns-cards/faq-columns-cards.modal.mjs +1 -1
  147. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  148. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  149. package/esm2022/lib/sections/feature-experience-section/feature-experience-section.component.mjs +3 -3
  150. package/esm2022/lib/sections/feature-experience-section/feature-experience-section.modal.mjs +1 -1
  151. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  152. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  153. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  154. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  155. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.component.mjs +3 -3
  156. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.modal.mjs +1 -1
  157. package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
  158. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  159. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  160. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  161. package/esm2022/lib/sections/image-background/image-background/image-background.component.mjs +3 -3
  162. package/esm2022/lib/sections/image-background/image-background/image-background.component.model.mjs +1 -1
  163. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  164. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  165. package/esm2022/lib/sections/image-grid-hotspot/image-grid-hotspot.component.mjs +3 -3
  166. package/esm2022/lib/sections/image-grid-hotspot/image-grid-hotspot.model.mjs +1 -1
  167. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  168. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  169. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  170. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  171. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  172. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  173. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  174. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  175. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  176. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  177. package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
  178. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  179. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
  180. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  181. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  182. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  183. package/esm2022/lib/sections/overlapping-image/overlapping-image.component.mjs +3 -3
  184. package/esm2022/lib/sections/overlapping-image/overlapping-image.component.modal.mjs +1 -1
  185. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  186. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  187. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  188. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  189. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  190. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  191. package/esm2022/lib/sections/product-info-section/product-info-section.component.mjs +3 -3
  192. package/esm2022/lib/sections/product-info-section/product-info-section.component.modal.mjs +1 -1
  193. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  194. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  195. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  196. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  197. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  198. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  199. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  200. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  201. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +3 -3
  202. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +1 -1
  203. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  204. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  205. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  206. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  207. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  208. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  209. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  210. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.component.mjs +3 -3
  211. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.model.mjs +1 -1
  212. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
  213. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  214. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.component.mjs +3 -3
  215. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.model.mjs +1 -1
  216. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  217. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  218. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  219. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  220. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  221. package/esm2022/lib/sections/video-carousel-section/video-carousel-section.component.mjs +3 -3
  222. package/esm2022/lib/sections/video-carousel-section/video-carousel.model.mjs +1 -1
  223. package/esm2022/lib/sections/video-grid-section/video-grid-section.component.mjs +4 -4
  224. package/esm2022/lib/sections/video-grid-section/video-grid-section.model.mjs +1 -1
  225. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  226. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  227. package/esm2022/lib/sections/video-showcase/video-showcase.component.mjs +4 -4
  228. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  229. package/esm2022/lib/services/analytics.service.mjs +59 -9
  230. package/esm2022/lib/services/cart.service.mjs +28 -35
  231. package/esm2022/lib/services/endUser.service.mjs +1 -1
  232. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  233. package/esm2022/lib/services/rest.service.mjs +2 -2
  234. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  235. package/esm2022/lib/services/storage.service.mjs +15 -1
  236. package/esm2022/lib/styles/gradient-extension.mjs +1 -1
  237. package/esm2022/lib/styles/index.mjs +1 -1
  238. package/esm2022/lib/styles/style.model.mjs +1 -1
  239. package/esm2022/lib/styles/text-size.extension.mjs +1 -1
  240. package/esm2022/lib/styles/types.mjs +1 -1
  241. package/esm2022/lib/tokens/api-token.mjs +1 -1
  242. package/esm2022/public-api.mjs +1 -1
  243. package/fesm2022/simpo-component-library.mjs +522 -450
  244. package/fesm2022/simpo-component-library.mjs.map +1 -1
  245. package/lib/components/input-fields/input-fields.component.d.ts +1 -1
  246. package/lib/ecommerce/sections/authenticate-user/authenticate-user.component.d.ts +4 -2
  247. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +5 -3
  248. package/lib/ecommerce/sections/featured-category/featured-category.component.d.ts +1 -1
  249. package/lib/ecommerce/sections/featured-category/featured-collection.component.d.ts +1 -1
  250. package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +1 -1
  251. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  252. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +3 -1
  253. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
  254. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  255. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  256. package/lib/sections/image-grid-hotspot/image-grid-hotspot.component.d.ts +1 -1
  257. package/lib/sections/image-grid-section/image-grid-section.component.d.ts +1 -1
  258. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  259. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -2
  260. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  261. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  262. package/lib/services/analytics.service.d.ts +13 -0
  263. package/lib/services/cart.service.d.ts +5 -7
  264. package/lib/services/storage.service.d.ts +6 -0
  265. package/package.json +1 -1
  266. package/simpo-component-library-3.6.932.tgz +0 -0
  267. package/simpo-component-library-3.6.930.tgz +0 -0
@@ -1,6 +1,6 @@
1
1
  import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
2
2
  import { interval } from 'rxjs';
3
- import { DOCUMENT } from '@angular/common';
3
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
4
4
  import { API_URL } from '../tokens/api-token';
5
5
  import { LOCAL_STORAGE } from '../services/local-storage.token';
6
6
  import { NavigationEnd } from '@angular/router';
@@ -20,14 +20,18 @@ export class AnalyticsService {
20
20
  this.eventQueue = [];
21
21
  this.BATCH_SIZE = 10;
22
22
  this.FLUSH_INTERVAL = 5000; // 5 seconds
23
+ this.consecutiveFailures = 0;
24
+ this.MAX_RETRIES = 3;
23
25
  // ===== Duration Tracking =====
24
26
  this.currentPage = '';
25
27
  this.currentContextMetadata = null;
26
28
  this.contextStartTime = null;
27
29
  this.contextActiveTime = 0;
28
30
  this.currentEvent = '';
29
- this.startAutoFlush();
30
- this.listenToUnload();
31
+ if (isPlatformBrowser(this.platformId)) {
32
+ this.startAutoFlush();
33
+ this.listenToUnload();
34
+ }
31
35
  this.listenToRouteChange();
32
36
  }
33
37
  startNewContext(metadata, event) {
@@ -48,12 +52,13 @@ export class AnalyticsService {
48
52
  }
49
53
  const user = this.storageService.getUser();
50
54
  const requestFrom = this.storage.getItem('REQUEST_FROM');
51
- if (!user || requestFrom === 'ECOMMERCE')
55
+ if (requestFrom === 'ECOMMERCE')
52
56
  return;
53
57
  const event = {
54
58
  businessId: this.storage.getItem('bId') || '',
55
59
  businessName: this.storage.getItem('bName') || '',
56
- userId: user.userId,
60
+ userId: user?.userId ?? null,
61
+ anonymousId: this.storageService.getAnonymousId(),
57
62
  createdTimeStamp: new Date().toISOString(),
58
63
  page: this.currentPage,
59
64
  duration: this.contextActiveTime,
@@ -95,14 +100,15 @@ export class AnalyticsService {
95
100
  trackUser(event, eventType) {
96
101
  const user = this.storageService.getUser();
97
102
  const requestFrom = this.storage.getItem('REQUEST_FROM');
98
- if (user === null || requestFrom === 'ECOMMERCE') {
103
+ if (requestFrom === 'ECOMMERCE') {
99
104
  return;
100
105
  }
101
106
  const page = this.router.url.split('?')[0];
102
107
  this.eventQueue.push({
103
108
  businessId: this.storage.getItem('bId') || '',
104
109
  businessName: this.storage.getItem('bName') || '',
105
- userId: user?.userId,
110
+ userId: user?.userId ?? null,
111
+ anonymousId: this.storageService.getAnonymousId(),
106
112
  createdTimeStamp: new Date().toISOString(),
107
113
  page: page,
108
114
  metadata: event,
@@ -112,6 +118,15 @@ export class AnalyticsService {
112
118
  this.flush();
113
119
  }
114
120
  }
121
+ /**
122
+ * Reattributes this browser's pre-login (anonymous) events onto the now-known user.
123
+ * Call right after login succeeds (mirrors syncTrialCartToServerDB's cart-merge pattern).
124
+ */
125
+ mergeAnonymousUser(userId) {
126
+ const anonId = this.storageService.getAnonymousId();
127
+ this.http.post(this.API_URL + 'ecommerce/analytics/merge', null, { params: { anonymousId: anonId, userId } })
128
+ .subscribe({ error: () => { } });
129
+ }
115
130
  startAutoFlush() {
116
131
  interval(this.FLUSH_INTERVAL).subscribe(() => {
117
132
  if (this.eventQueue.length > 0) {
@@ -120,10 +135,25 @@ export class AnalyticsService {
120
135
  });
121
136
  }
122
137
  flush() {
138
+ if (this.eventQueue.length === 0)
139
+ return;
123
140
  const eventsToSend = [...this.eventQueue];
124
141
  this.eventQueue = [];
125
142
  this.http.post(this.API_URL + 'ecommerce/analytics/batch', eventsToSend)
126
- .subscribe({ error: () => { } });
143
+ .subscribe({
144
+ next: () => { this.consecutiveFailures = 0; },
145
+ error: () => {
146
+ // requeue for the next flush cycle rather than dropping silently, but cap
147
+ // retries so a prolonged backend outage doesn't grow the queue unbounded
148
+ this.consecutiveFailures++;
149
+ if (this.consecutiveFailures <= this.MAX_RETRIES) {
150
+ this.eventQueue.unshift(...eventsToSend);
151
+ }
152
+ else {
153
+ this.consecutiveFailures = 0;
154
+ }
155
+ }
156
+ });
127
157
  }
128
158
  listenToUnload() {
129
159
  this.document.addEventListener('visibilitychange', () => {
@@ -135,9 +165,29 @@ export class AnalyticsService {
135
165
  this.contextActiveTime += Date.now() - this.contextStartTime;
136
166
  }
137
167
  this.closeCurrentContext(true);
168
+ this.flushQueueViaBeacon();
138
169
  }
139
170
  });
140
171
  }
172
+ /**
173
+ * Same reliability primitive closeCurrentContext(true) already uses for the current page's
174
+ * event - drains whatever's still queued (e.g. recent cart/wishlist events under the
175
+ * BATCH_SIZE/FLUSH_INTERVAL threshold) so it isn't lost when the tab is closed/hidden.
176
+ */
177
+ flushQueueViaBeacon() {
178
+ if (this.eventQueue.length === 0)
179
+ return;
180
+ const eventsToSend = [...this.eventQueue];
181
+ this.eventQueue = [];
182
+ fetch(this.API_URL + 'ecommerce/analytics/batch', {
183
+ method: 'POST',
184
+ body: JSON.stringify(eventsToSend),
185
+ headers: {
186
+ 'Content-Type': 'application/json'
187
+ },
188
+ keepalive: true
189
+ });
190
+ }
141
191
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, deps: [{ token: i1.HttpClient }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: i2.StorageServiceService }, { token: API_URL }, { token: LOCAL_STORAGE }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
142
192
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnalyticsService, providedIn: 'root' }); }
143
193
  }
@@ -157,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
157
207
  type: Inject,
158
208
  args: [LOCAL_STORAGE]
159
209
  }] }, { type: i3.Router }] });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBR3hELE1BQU0sT0FBTyxnQkFBZ0I7SUFhekIsWUFBb0IsSUFBZ0IsRUFDSCxVQUFrQixFQUNyQixRQUFrQixFQUMzQixjQUFxQyxFQUM3QixPQUFlLEVBQ1QsT0FBb0IsRUFDM0MsTUFBYztRQU5OLFNBQUksR0FBSixJQUFJLENBQVk7UUFDSCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQzdCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDVCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqQmxCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixtQkFBYyxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7UUFFM0MsZ0NBQWdDO1FBQ3hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLDJCQUFzQixHQUFRLElBQUksQ0FBQztRQUNuQyxx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QUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2pFLENBQUM7Z0JBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBNUpRLGdCQUFnQiw0Q0FjYixXQUFXLGFBQ1gsUUFBUSxrREFFUixPQUFPLGFBQ1AsYUFBYTttSEFsQmhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFlekIsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLE9BQU87OzBCQUNkLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUElfVVJMIH0gZnJvbSAnLi4vdG9rZW5zL2FwaS10b2tlbic7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2UtbGlrZSc7XHJcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnRva2VuJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBbmFseXRpY3NTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGV2ZW50UXVldWU6IGFueVtdID0gW107XHJcbiAgICBwcml2YXRlIEJBVENIX1NJWkUgPSAxMDtcclxuICAgIHByaXZhdGUgRkxVU0hfSU5URVJWQUwgPSA1MDAwOyAvLyA1IHNlY29uZHNcclxuXHJcbiAgICAvLyA9PT09PSBEdXJhdGlvbiBUcmFja2luZyA9PT09PVxyXG4gICAgcHJpdmF0ZSBjdXJyZW50UGFnZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBjdXJyZW50Q29udGV4dE1ldGFkYXRhOiBhbnkgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBjb250ZXh0U3RhcnRUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgY29udGV4dEFjdGl2ZVRpbWUgPSAwO1xyXG4gICAgcHJpdmF0ZSBjdXJyZW50RXZlbnQgPSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgICAgIEBJbmplY3QoQVBJX1VSTCkgcHJpdmF0ZSBBUElfVVJMOiBzdHJpbmcsXHJcbiAgICAgICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc3RhcnRBdXRvRmx1c2goKTtcclxuICAgICAgICB0aGlzLmxpc3RlblRvVW5sb2FkKCk7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5Ub1JvdXRlQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnROZXdDb250ZXh0KG1ldGFkYXRhOiBhbnksIGV2ZW50OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmNsb3NlQ3VycmVudENvbnRleHQoKTsgICAvLyBjbG9zZSBwcmV2aW91cyBmaWx0ZXIgc2Vzc2lvblxyXG5cclxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEgPSBtZXRhZGF0YTtcclxuICAgICAgICB0aGlzLmNvbnRleHRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIHRoaXMuY29udGV4dEFjdGl2ZVRpbWUgPSAwO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEV2ZW50ID0gZXZlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q3VycmVudENvbnRleHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbnRleHRNZXRhZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNsb3NlQ3VycmVudENvbnRleHQodXNlQmVhY29uOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dFN0YXJ0VGltZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lICs9IERhdGUubm93KCkgLSB0aGlzLmNvbnRleHRTdGFydFRpbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpO1xyXG5cclxuICAgICAgICBpZiAoIXVzZXIgfHwgcmVxdWVzdEZyb20gPT09ICdFQ09NTUVSQ0UnKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgfHwgJycsXHJcbiAgICAgICAgICAgIGJ1c2luZXNzTmFtZTogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JOYW1lJykgfHwgJycsXHJcbiAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRUaW1lU3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuY29udGV4dEFjdGl2ZVRpbWUsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZTogIHRoaXMuY3VycmVudEV2ZW50LFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogdGhpcy5jdXJyZW50Q29udGV4dE1ldGFkYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHVzZUJlYWNvbikge1xyXG5cclxuICAgICAgICAgICBmZXRjaCh0aGlzLkFQSV9VUkwgKyAnZWNvbW1lcmNlL2FuYWx5dGljcy9iYXRjaCcsIHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoW2V2ZW50XSksXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAga2VlcGFsaXZlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50UXVldWUucHVzaChldmVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY29udGV4dFN0YXJ0VGltZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RXZlbnQgPSAnJztcclxuICAgIH1cclxuXHJcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvLyDwn5SlIFJPVVRFIENIQU5HRSBMSVNURU5FUlxyXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub1JvdXRlQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2UgcHJldmlvdXMgcGFnZSBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQ3VycmVudENvbnRleHQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja1VzZXIoZXZlbnQ6IGFueSwgZXZlbnRUeXBlOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpXHJcblxyXG4gICAgICAgIGlmICh1c2VyID09PSBudWxsIHx8IHJlcXVlc3RGcm9tID09PSAnRUNPTU1FUkNFJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcclxuICAgICAgICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JJZCcpIHx8ICcnLFxyXG4gICAgICAgICAgICBidXNpbmVzc05hbWU6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiTmFtZScpIHx8ICcnLFxyXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXI/LnVzZXJJZCxcclxuICAgICAgICAgICAgY3JlYXRlZFRpbWVTdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICBwYWdlOiBwYWdlLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogZXZlbnQsXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnRUeXBlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmV2ZW50UXVldWUubGVuZ3RoID49IHRoaXMuQkFUQ0hfU0laRSkge1xyXG4gICAgICAgICAgICB0aGlzLmZsdXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnRBdXRvRmx1c2goKSB7XHJcbiAgICAgICAgaW50ZXJ2YWwodGhpcy5GTFVTSF9JTlRFUlZBTCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsdXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZsdXNoKCkge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvU2VuZCA9IFsuLi50aGlzLmV2ZW50UXVldWVdO1xyXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLkFQSV9VUkwgKyAnZWNvbW1lcmNlL2FuYWx5dGljcy9iYXRjaCcsIGV2ZW50c1RvU2VuZClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7IGVycm9yOiAoKSA9PiB7IH0gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub1VubG9hZCgpIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCAoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0U3RhcnRUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSArPSBEYXRlLm5vdygpIC0gdGhpcy5jb250ZXh0U3RhcnRUaW1lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VDdXJyZW50Q29udGV4dCh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFHeEQsTUFBTSxPQUFPLGdCQUFnQjtJQWV6QixZQUFvQixJQUFnQixFQUNILFVBQWtCLEVBQ3JCLFFBQWtCLEVBQzNCLGNBQXFDLEVBQzdCLE9BQWUsRUFDVCxPQUFvQixFQUMzQyxNQUFjO1FBTk4sU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNILGVBQVUsR0FBVixVQUFVLENBQVE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNULFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQW5CbEIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtRQUNuQyx3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFeEIsZ0NB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SUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNqRSxDQUFDO2dCQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUN6QyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXJCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLDJCQUEyQixFQUFFO1lBQzlDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ2xDLE9BQU8sRUFBRTtnQkFDTCxjQUFjLEVBQUUsa0JBQWtCO2FBQ3JDO1lBQ0QsU0FBUyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5TVEsZ0JBQWdCLDRDQWdCYixXQUFXLGFBQ1gsUUFBUSxrREFFUixPQUFPLGFBQ1AsYUFBYTttSEFwQmhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFpQnpCLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsUUFBUTs7MEJBRWYsTUFBTTsyQkFBQyxPQUFPOzswQkFDZCxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBUElfVVJMIH0gZnJvbSAnLi4vdG9rZW5zL2FwaS10b2tlbic7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsJztcbmltcG9ydCB7IFN0b3JhZ2VMaWtlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RvcmFnZS1saWtlJztcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnRva2VuJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQW5hbHl0aWNzU2VydmljZSB7XG5cbiAgICBwcml2YXRlIGV2ZW50UXVldWU6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBCQVRDSF9TSVpFID0gMTA7XG4gICAgcHJpdmF0ZSBGTFVTSF9JTlRFUlZBTCA9IDUwMDA7IC8vIDUgc2Vjb25kc1xuICAgIHByaXZhdGUgY29uc2VjdXRpdmVGYWlsdXJlcyA9IDA7XG4gICAgcHJpdmF0ZSBNQVhfUkVUUklFUyA9IDM7XG5cbiAgICAvLyA9PT09PSBEdXJhdGlvbiBUcmFja2luZyA9PT09PVxuICAgIHByaXZhdGUgY3VycmVudFBhZ2UgPSAnJztcbiAgICBwcml2YXRlIGN1cnJlbnRDb250ZXh0TWV0YWRhdGE6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBjb250ZXh0U3RhcnRUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGNvbnRleHRBY3RpdmVUaW1lID0gMDtcbiAgICBwcml2YXRlIGN1cnJlbnRFdmVudCA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUElfVVJMKSBwcml2YXRlIEFQSV9VUkw6IHN0cmluZyxcbiAgICAgICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b0ZsdXNoKCk7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblRvVW5sb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0ZW5Ub1JvdXRlQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgc3RhcnROZXdDb250ZXh0KG1ldGFkYXRhOiBhbnksIGV2ZW50OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jbG9zZUN1cnJlbnRDb250ZXh0KCk7ICAgLy8gY2xvc2UgcHJldmlvdXMgZmlsdGVyIHNlc3Npb25cblxuICAgICAgICB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5jb250ZXh0QWN0aXZlVGltZSA9IDA7XG4gICAgICAgIHRoaXMuY3VycmVudEV2ZW50ID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudENvbnRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZUN1cnJlbnRDb250ZXh0KHVzZUJlYWNvbjogYm9vbGVhbiA9IGZhbHNlKSB7XG5cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGEpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy5jb250ZXh0U3RhcnRUaW1lKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lICs9IERhdGUubm93KCkgLSB0aGlzLmNvbnRleHRTdGFydFRpbWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xuICAgICAgICBjb25zdCByZXF1ZXN0RnJvbSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdSRVFVRVNUX0ZST00nKTtcblxuICAgICAgICBpZiAocmVxdWVzdEZyb20gPT09ICdFQ09NTUVSQ0UnKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICAgICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgfHwgJycsXG4gICAgICAgICAgICBidXNpbmVzc05hbWU6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiTmFtZScpIHx8ICcnLFxuICAgICAgICAgICAgdXNlcklkOiB1c2VyPy51c2VySWQgPz8gbnVsbCxcbiAgICAgICAgICAgIGFub255bW91c0lkOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFub255bW91c0lkKCksXG4gICAgICAgICAgICBjcmVhdGVkVGltZVN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgZHVyYXRpb246IHRoaXMuY29udGV4dEFjdGl2ZVRpbWUsXG4gICAgICAgICAgICBldmVudFR5cGU6ICB0aGlzLmN1cnJlbnRFdmVudCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0aGlzLmN1cnJlbnRDb250ZXh0TWV0YWRhdGFcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodXNlQmVhY29uKSB7XG5cbiAgICAgICAgICAgZmV0Y2godGhpcy5BUElfVVJMICsgJ2Vjb21tZXJjZS9hbmFseXRpY3MvYmF0Y2gnLCB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoW2V2ZW50XSksXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGtlZXBhbGl2ZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5wdXNoKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudENvbnRleHRNZXRhZGF0YSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGV4dFN0YXJ0VGltZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udGV4dEFjdGl2ZVRpbWUgPSAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRFdmVudCA9ICcnO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyDwn5SlIFJPVVRFIENIQU5HRSBMSVNURU5FUlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBwcml2YXRlIGxpc3RlblRvUm91dGVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2UgcHJldmlvdXMgcGFnZSBjb250ZXh0XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUN1cnJlbnRDb250ZXh0KCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tVc2VyKGV2ZW50OiBhbnksIGV2ZW50VHlwZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHVzZXI6IFVzZXIgfCBudWxsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpXG5cbiAgICAgICAgaWYgKHJlcXVlc3RGcm9tID09PSAnRUNPTU1FUkNFJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xuXG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgIGJ1c2luZXNzSWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiSWQnKSB8fCAnJyxcbiAgICAgICAgICAgIGJ1c2luZXNzTmFtZTogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JOYW1lJykgfHwgJycsXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXI/LnVzZXJJZCA/PyBudWxsLFxuICAgICAgICAgICAgYW5vbnltb3VzSWQ6IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QW5vbnltb3VzSWQoKSxcbiAgICAgICAgICAgIGNyZWF0ZWRUaW1lU3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXG4gICAgICAgICAgICBtZXRhZGF0YTogZXZlbnQsXG4gICAgICAgICAgICBldmVudFR5cGU6IGV2ZW50VHlwZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5ldmVudFF1ZXVlLmxlbmd0aCA+PSB0aGlzLkJBVENIX1NJWkUpIHtcbiAgICAgICAgICAgIHRoaXMuZmx1c2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYXR0cmlidXRlcyB0aGlzIGJyb3dzZXIncyBwcmUtbG9naW4gKGFub255bW91cykgZXZlbnRzIG9udG8gdGhlIG5vdy1rbm93biB1c2VyLlxuICAgICAqIENhbGwgcmlnaHQgYWZ0ZXIgbG9naW4gc3VjY2VlZHMgKG1pcnJvcnMgc3luY1RyaWFsQ2FydFRvU2VydmVyREIncyBjYXJ0LW1lcmdlIHBhdHRlcm4pLlxuICAgICAqL1xuICAgIG1lcmdlQW5vbnltb3VzVXNlcih1c2VySWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhbm9uSWQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFub255bW91c0lkKCk7XG4gICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuQVBJX1VSTCArICdlY29tbWVyY2UvYW5hbHl0aWNzL21lcmdlJywgbnVsbCwgeyBwYXJhbXM6IHsgYW5vbnltb3VzSWQ6IGFub25JZCwgdXNlcklkIH0gfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoeyBlcnJvcjogKCkgPT4geyB9IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRBdXRvRmx1c2goKSB7XG4gICAgICAgIGludGVydmFsKHRoaXMuRkxVU0hfSU5URVJWQUwpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5ldmVudFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmx1c2goKSB7XG4gICAgICAgIGlmICh0aGlzLmV2ZW50UXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGV2ZW50c1RvU2VuZCA9IFsuLi50aGlzLmV2ZW50UXVldWVdO1xuICAgICAgICB0aGlzLmV2ZW50UXVldWUgPSBbXTtcblxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLkFQSV9VUkwgKyAnZWNvbW1lcmNlL2FuYWx5dGljcy9iYXRjaCcsIGV2ZW50c1RvU2VuZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHsgdGhpcy5jb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXVlIGZvciB0aGUgbmV4dCBmbHVzaCBjeWNsZSByYXRoZXIgdGhhbiBkcm9wcGluZyBzaWxlbnRseSwgYnV0IGNhcFxuICAgICAgICAgICAgICAgICAgICAvLyByZXRyaWVzIHNvIGEgcHJvbG9uZ2VkIGJhY2tlbmQgb3V0YWdlIGRvZXNuJ3QgZ3JvdyB0aGUgcXVldWUgdW5ib3VuZGVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc2VjdXRpdmVGYWlsdXJlcysrO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25zZWN1dGl2ZUZhaWx1cmVzIDw9IHRoaXMuTUFYX1JFVFJJRVMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRRdWV1ZS51bnNoaWZ0KC4uLmV2ZW50c1RvU2VuZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnNlY3V0aXZlRmFpbHVyZXMgPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub1VubG9hZCgpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dFN0YXJ0VGltZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHRBY3RpdmVUaW1lICs9IERhdGUubm93KCkgLSB0aGlzLmNvbnRleHRTdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUN1cnJlbnRDb250ZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmx1c2hRdWV1ZVZpYUJlYWNvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYW1lIHJlbGlhYmlsaXR5IHByaW1pdGl2ZSBjbG9zZUN1cnJlbnRDb250ZXh0KHRydWUpIGFscmVhZHkgdXNlcyBmb3IgdGhlIGN1cnJlbnQgcGFnZSdzXG4gICAgICogZXZlbnQgLSBkcmFpbnMgd2hhdGV2ZXIncyBzdGlsbCBxdWV1ZWQgKGUuZy4gcmVjZW50IGNhcnQvd2lzaGxpc3QgZXZlbnRzIHVuZGVyIHRoZVxuICAgICAqIEJBVENIX1NJWkUvRkxVU0hfSU5URVJWQUwgdGhyZXNob2xkKSBzbyBpdCBpc24ndCBsb3N0IHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQvaGlkZGVuLlxuICAgICAqL1xuICAgIHByaXZhdGUgZmx1c2hRdWV1ZVZpYUJlYWNvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRRdWV1ZS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgICAgY29uc3QgZXZlbnRzVG9TZW5kID0gWy4uLnRoaXMuZXZlbnRRdWV1ZV07XG4gICAgICAgIHRoaXMuZXZlbnRRdWV1ZSA9IFtdO1xuXG4gICAgICAgIGZldGNoKHRoaXMuQVBJX1VSTCArICdlY29tbWVyY2UvYW5hbHl0aWNzL2JhdGNoJywge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShldmVudHNUb1NlbmQpLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBrZWVwYWxpdmU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
@@ -1,19 +1,16 @@
1
- import { Inject, Injectable } from '@angular/core';
1
+ import { Injectable } from '@angular/core';
2
2
  import { OrderedItems } from '../ecommerce/styles/OrderedItems.modal';
3
3
  import { syncItemToServerDBRequest } from '../ecommerce/styles/product.modal';
4
4
  import { firstValueFrom } from 'rxjs';
5
- import { LOCAL_STORAGE } from '../services/local-storage.token';
6
5
  import * as i0 from "@angular/core";
7
6
  import * as i1 from "./storage.service";
8
7
  import * as i2 from "./rest.service";
9
- import * as i3 from "@angular/router";
10
- // import { AnalyticsService } from './analytics.service';
8
+ import * as i3 from "./analytics.service";
11
9
  export class CartService {
12
- constructor(storageService, restService, router, storage) {
10
+ constructor(storageService, restService, analyticsService) {
13
11
  this.storageService = storageService;
14
12
  this.restService = restService;
15
- this.router = router;
16
- this.storage = storage;
13
+ this.analyticsService = analyticsService;
17
14
  }
18
15
  addItemFromCartPage(product, userCart) {
19
16
  if (product.quantity) {
@@ -32,10 +29,12 @@ export class CartService {
32
29
  }
33
30
  }
34
31
  addItemFromWishlistPage(product, userWishlist) {
32
+ this.captureWishlistAnalytics(product.itemId, 'ADD_TO_WISHLIST', product.varientId);
35
33
  this.storageService.addProductToWishlist(product);
36
34
  return this.restService.addItemToDB(userWishlist);
37
35
  }
38
36
  removeItemFromWishlistPage(product, userWishlist) {
37
+ this.captureWishlistAnalytics(product.itemId, 'REMOVE_FROM_WISHLIST', product.varientId);
39
38
  this.storageService.removeProductFromWishlist(product.varientId);
40
39
  return this.restService.addItemToDB(userWishlist);
41
40
  }
@@ -55,13 +54,25 @@ export class CartService {
55
54
  PRODUCT_ID: productId,
56
55
  QUANTITY: 1
57
56
  };
58
- if (variantId) {
57
+ // when a product has no real variants, varientId is conventionally set equal to itemId
58
+ // (same sentinel used in AsyncService.updateItemQuantity's stock bucketing) - not a real variant
59
+ if (variantId && variantId !== productId) {
59
60
  analyticsEvent['VARIANT_ID'] = variantId;
60
61
  }
61
- this.trackUser(analyticsEvent, type);
62
- // this.analyticsService.trackUser(analyticsEvent, type);
62
+ this.analyticsService.trackUser(analyticsEvent, type);
63
+ }
64
+ captureWishlistAnalytics(productId, type, variantId) {
65
+ const analyticsEvent = {};
66
+ if (productId) {
67
+ analyticsEvent['PRODUCT_ID'] = productId;
68
+ }
69
+ if (variantId && variantId !== productId) {
70
+ analyticsEvent['VARIANT_ID'] = variantId;
71
+ }
72
+ this.analyticsService.trackUser(analyticsEvent, type);
63
73
  }
64
74
  addItemToFavourite(product, varientId) {
75
+ this.captureWishlistAnalytics(product.itemId, 'ADD_TO_WISHLIST', varientId);
65
76
  const orderedItem = this.objectMapper(product, varientId);
66
77
  this.storageService.addProductToWishlist(orderedItem);
67
78
  }
@@ -101,12 +112,15 @@ export class CartService {
101
112
  }
102
113
  }
103
114
  addItemToFavFromCart(product) {
115
+ this.captureWishlistAnalytics(product.itemId, 'ADD_TO_WISHLIST', product.varientId);
104
116
  this.storageService.addProductToWishlist(product);
105
117
  }
106
118
  addOrderedItemToFavourite(orderedItem) {
119
+ this.captureWishlistAnalytics(orderedItem.itemId, 'ADD_TO_WISHLIST', orderedItem.varientId);
107
120
  this.storageService.addProductToWishlist(orderedItem);
108
121
  }
109
- removeItemFromFavourite(varientId) {
122
+ removeItemFromFavourite(varientId, itemId) {
123
+ this.captureWishlistAnalytics(itemId, 'REMOVE_FROM_WISHLIST', varientId);
110
124
  this.storageService.removeProductFromWishlist(varientId);
111
125
  }
112
126
  removeItemFromCart(product) {
@@ -115,25 +129,7 @@ export class CartService {
115
129
  objectMapper(product, variantId) {
116
130
  return new OrderedItems(product, variantId);
117
131
  }
118
- trackUser(event, eventType) {
119
- const user = this.storageService.getUser();
120
- const requestFrom = this.storage.getItem('REQUEST_FROM');
121
- if (user === null || requestFrom === 'ECOMMERCE') {
122
- return;
123
- }
124
- const page = this.router.url.split('?')[0];
125
- let request = [{
126
- businessId: this.storage.getItem('bId') || '',
127
- businessName: this.storage.getItem('bName') || '',
128
- userId: user?.userId,
129
- createdTimeStamp: new Date().toISOString(),
130
- page: page,
131
- metadata: event,
132
- eventType: eventType
133
- }];
134
- this.restService.flush(request);
135
- }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartService, deps: [{ token: i1.StorageServiceService }, { token: i2.RestService }, { token: i3.Router }, { token: LOCAL_STORAGE }], target: i0.ɵɵFactoryTarget.Injectable }); }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartService, deps: [{ token: i1.StorageServiceService }, { token: i2.RestService }, { token: i3.AnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
137
133
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartService, providedIn: 'root' }); }
138
134
  }
139
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CartService, decorators: [{
@@ -141,8 +137,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
141
137
  args: [{
142
138
  providedIn: 'root',
143
139
  }]
144
- }], ctorParameters: () => [{ type: i1.StorageServiceService }, { type: i2.RestService }, { type: i3.Router }, { type: undefined, decorators: [{
145
- type: Inject,
146
- args: [LOCAL_STORAGE]
147
- }] }] });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixNQUFNLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RSxPQUFPLEVBQVcseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUt2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFHaEUsMERBQTBEO0FBSzFELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ21CLGNBQXFDLEVBQ3JDLFdBQXdCLEVBQ2pDLE1BQWMsRUFDUyxPQUFvQjtRQUhsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNTLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFHckQsQ0FBQztJQUdNLG1CQUFtQixDQUFDLE9BQXFCLEVBQUUsUUFBYTtRQUM3RCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQiwrQkFBK0I7WUFDL0IsOERBQThEO1lBQzlELHVDQUF1QztZQUN2Qyx3QkFBd0I7WUFDeEIsTUFBTTtZQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBdUIsQ0FBQyxDQUFDO1lBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTix3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxD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LEVBQUUsSUFBSSxFQUFFLE1BQU07Z0JBQ3BCLGdCQUFnQixFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxJQUFJLEVBQUUsSUFBSTtnQkFDVixRQUFRLEVBQUUsS0FBSztnQkFDZixTQUFTLEVBQUUsU0FBUzthQUNyQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxDQUFDOytHQXpKVSxXQUFXLHdHQUtaLGFBQWE7bUhBTFosV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFNSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgUHJvZHVjdCwgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcnQgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL2NhcnQubW9kYWwnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTE9DQUxfU1RPUkFHRSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UudG9rZW4nO1xyXG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2UtbGlrZSc7XHJcblxyXG4vLyBpbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FydFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxyXG4gICAgLy8gcHJpdmF0ZSByZWFkb25seSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Gcm9tQ2FydFBhZ2UocHJvZHVjdDogT3JkZXJlZEl0ZW1zLCB1c2VyQ2FydDogYW55KSB7XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICAvLyBsZXQgcHJvZHVjdElkeDogbnVtYmVyID0gLTE7XHJcbiAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMsIGlkeCk9PiB7XHJcbiAgICAgIC8vICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKVxyXG4gICAgICAvLyAgICAgcHJvZHVjdElkeCA9IGlkeDtcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0IGFzIE9yZGVyZWRJdGVtcyk7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gY2FydFxyXG4gICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0KTtcclxuICAgICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlckNhcnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgYWRkSXRlbUZyb21XaXNobGlzdFBhZ2UocHJvZHVjdDogT3JkZXJlZEl0ZW1zLCB1c2VyV2lzaGxpc3Q6IGFueSkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0KTtcclxuICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJXaXNobGlzdCk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZW1vdmVJdGVtRnJvbVdpc2hsaXN0UGFnZShwcm9kdWN0OiBPcmRlcmVkSXRlbXMsIHVzZXJXaXNobGlzdDogYW55KSB7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC52YXJpZW50SWQpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlcldpc2hsaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRJdGVtVG9DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QgfCBPcmRlcmVkSXRlbXMsIHZhcmllbnRJZD86IHN0cmluZykge1xyXG4gICAgaWYgKHByb2R1Y3QucXVhbnRpdHkpIHtcclxuICAgICAgdGhpcy5jYXB0dXJlQ2FydEFuYWx5dGljcyhwcm9kdWN0Lml0ZW1JZCwgJ0FERF9UT19DQVJUJywgdmFyaWVudElkKTtcclxuXHJcbiAgICAgIGNvbnN0IG9yZGVyZWRJdGVtID0gdGhpcy5vYmplY3RNYXBwZXIocHJvZHVjdCBhcyBQcm9kdWN0LCB2YXJpZW50SWQpO1xyXG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KG9yZGVyZWRJdGVtIGFzIE9yZGVyZWRJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcHR1cmVDYXJ0QW5hbHl0aWNzKHByb2R1Y3QuaXRlbUlkLCAnUkVNT1ZFX0ZST01fQ0FSVCcsIHZhcmllbnRJZCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0IGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhcHR1cmVDYXJ0QW5hbHl0aWNzKFxyXG4gICAgcHJvZHVjdElkOiBzdHJpbmcsXHJcbiAgICB0eXBlOiAnQUREX1RPX0NBUlQnIHwgJ1JFTU9WRV9GUk9NX0NBUlQnLFxyXG4gICAgdmFyaWFudElkPzogc3RyaW5nXHJcbiAgKSB7XHJcblxyXG4gICAgY29uc3QgYW5hbHl0aWNzRXZlbnQ6IGFueSA9IHtcclxuICAgICAgUFJPRFVDVF9JRDogcHJvZHVjdElkLFxyXG4gICAgICBRVUFOVElUWTogMVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodmFyaWFudElkKSB7XHJcbiAgICAgIGFuYWx5dGljc0V2ZW50WydWQVJJQU5UX0lEJ10gPSB2YXJpYW50SWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYWNrVXNlcihhbmFseXRpY3NFdmVudCwgdHlwZSk7XHJcbiAgICAvLyB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tVc2VyKGFuYWx5dGljc0V2ZW50LCB0eXBlKTtcclxuICB9XHJcbiAgcHVibGljIGFkZEl0ZW1Ub0Zhdm91cml0ZShwcm9kdWN0OiBQcm9kdWN0LCB2YXJpZW50SWQ/OiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QsIHZhcmllbnRJZCk7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KG9yZGVyZWRJdGVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBhZGRJdGVtVG9UcmlhbChwcm9kdWN0OiBQcm9kdWN0LCB2YXJpZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IG9yZGVyZWRJdGVtID0gdGhpcy5vYmplY3RNYXBwZXIocHJvZHVjdCwgdmFyaWVudElkKTtcclxuXHJcbiAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG5cclxuICAgIGlmICh1c2VyKSB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCh1c2VyLnVzZXJJZCwgJ1RSSUFMX0NBUlQnLCBbb3JkZXJlZEl0ZW1dKTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yZXN0U2VydmljZS5hZGRUcmlhbEl0ZW0ocmVxdWVzdCkpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFkZGluZyB0cmlhbCBpdGVtIHRvIHNlcnZlcjonLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBkYlJlcXVlc3Q6IGFueSA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VHJpYWxDYXJ0KCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRyaWFsQ2FydEl0ZW06IE9yZGVyZWRJdGVtc1tdID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgZGJSZXF1ZXN0Lm9uc3VjY2VzcyA9IChldmVudDogYW55KSA9PiByZXNvbHZlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xyXG4gICAgICAgICAgZGJSZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQ6IGFueSkgPT4gcmVqZWN0KGV2ZW50LnRhcmdldC5lcnJvcik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGlzSXRlbUFscmVhZHlBZGRlZCA9IHRyaWFsQ2FydEl0ZW0uc29tZSgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PlxyXG4gICAgICAgICAgaXRlbS5pdGVtSWQgPT09IHByb2R1Y3QuaXRlbUlkICYmXHJcbiAgICAgICAgICAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA9PT0gMCB8fCBwcm9kdWN0LnZhcmllbnRJZCA9PT0gaXRlbS52YXJpZW50SWQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc0l0ZW1BbHJlYWR5QWRkZWQpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvVHJpYWwob3JkZXJlZEl0ZW0pO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyB0cmlhbCBjYXJ0IGZyb20gbG9jYWwgc3RvcmFnZTonLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Ub0ZhdkZyb21DYXJ0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0KTtcclxuICB9XHJcbiAgcHVibGljIGFkZE9yZGVyZWRJdGVtVG9GYXZvdXJpdGUob3JkZXJlZEl0ZW06IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChvcmRlcmVkSXRlbSk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZW1vdmVJdGVtRnJvbUZhdm91cml0ZSh2YXJpZW50SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHZhcmllbnRJZCk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZW1vdmVJdGVtRnJvbUNhcnQocHJvZHVjdDogUHJvZHVjdCB8IE9yZGVyZWRJdGVtcykge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbUNhcnQocHJvZHVjdC52YXJpZW50SWQpO1xyXG4gIH1cclxuICBwcml2YXRlIG9iamVjdE1hcHBlcihwcm9kdWN0OiBQcm9kdWN0LCB2YXJpYW50SWQ/OiBzdHJpbmcpOiBPcmRlcmVkSXRlbXMge1xyXG4gICAgcmV0dXJuIG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgdmFyaWFudElkKTtcclxuICB9XHJcblxyXG4gIHRyYWNrVXNlcihldmVudDogYW55LCBldmVudFR5cGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgdXNlcjogVXNlciB8IG51bGwgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuICAgIGNvbnN0IHJlcXVlc3RGcm9tID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ1JFUVVFU1RfRlJPTScpXHJcblxyXG4gICAgaWYgKHVzZXIgPT09IG51bGwgfHwgcmVxdWVzdEZyb20gPT09ICdFQ09NTUVSQ0UnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYWdlID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/JylbMF07XHJcblxyXG4gICAgbGV0IHJlcXVlc3QgPSBbe1xyXG4gICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJykgfHwgJycsXHJcbiAgICAgIGJ1c2luZXNzTmFtZTogdGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2JOYW1lJykgfHwgJycsXHJcbiAgICAgIHVzZXJJZDogdXNlcj8udXNlcklkLFxyXG4gICAgICBjcmVhdGVkVGltZVN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgIHBhZ2U6IHBhZ2UsXHJcbiAgICAgIG1ldGFkYXRhOiBldmVudCxcclxuICAgICAgZXZlbnRUeXBlOiBldmVudFR5cGVcclxuICAgIH1dO1xyXG5cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZmx1c2gocmVxdWVzdCk7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuIl19
140
+ }], ctorParameters: () => [{ type: i1.StorageServiceService }, { type: i2.RestService }, { type: i3.AnalyticsService }] });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLE9BQU8sRUFBVyx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBS3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTXRDLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQ21CLGNBQXFDLEVBQ3JDLFdBQXdCLEVBQ3hCLGdCQUFrQztRQUZsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUVyRCxDQUFDO0lBR00sbUJBQW1CLENBQUMsT0FBcUIsRUFBRSxRQUFhO1FBQzdELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLCtCQUErQjtZQUMvQiw4REFBOEQ7WUFDOUQsdUNBQXVDO1lBQ3ZDLHdCQUF3QjtZQUN4QixNQUFNO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUF1QixDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUNNLHVCQUF1QixD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QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNNLGtCQUFrQixDQUFDLE9BQStCO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDTyxZQUFZLENBQUMsT0FBZ0IsRUFBRSxTQUFrQjtRQUN2RCxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDOytHQXRKVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XG5pbXBvcnQgeyBQcm9kdWN0LCBzeW5jSXRlbVRvU2VydmVyREJSZXF1ZXN0IH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy9wcm9kdWN0Lm1vZGFsJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydCB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvY2FydC5tb2RhbCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuXG4gIHB1YmxpYyBhZGRJdGVtRnJvbUNhcnRQYWdlKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcywgdXNlckNhcnQ6IGFueSkge1xuICAgIGlmIChwcm9kdWN0LnF1YW50aXR5KSB7XG4gICAgICAvLyBsZXQgcHJvZHVjdElkeDogbnVtYmVyID0gLTE7XG4gICAgICAvLyBVc2VyQ2FydC5vcmRlcmVkSXRlbXMuZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zLCBpZHgpPT4ge1xuICAgICAgLy8gICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdC5pdGVtSWQpXG4gICAgICAvLyAgICAgcHJvZHVjdElkeCA9IGlkeDtcbiAgICAgIC8vIH0pO1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9DYXJ0KHByb2R1Y3QgYXMgT3JkZXJlZEl0ZW1zKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlIGl0ZW0gZnJvbSBjYXJ0XG4gICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0KTtcbiAgICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGFkZEl0ZW1Gcm9tV2lzaGxpc3RQYWdlKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcywgdXNlcldpc2hsaXN0OiBhbnkpIHtcbiAgICB0aGlzLmNhcHR1cmVXaXNobGlzdEFuYWx5dGljcyhwcm9kdWN0Lml0ZW1JZCwgJ0FERF9UT19XSVNITElTVCcsIHByb2R1Y3QudmFyaWVudElkKTtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KHByb2R1Y3QpO1xuICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJXaXNobGlzdCk7XG4gIH1cbiAgcHVibGljIHJlbW92ZUl0ZW1Gcm9tV2lzaGxpc3RQYWdlKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcywgdXNlcldpc2hsaXN0OiBhbnkpIHtcbiAgICB0aGlzLmNhcHR1cmVXaXNobGlzdEFuYWx5dGljcyhwcm9kdWN0Lml0ZW1JZCwgJ1JFTU9WRV9GUk9NX1dJU0hMSVNUJywgcHJvZHVjdC52YXJpZW50SWQpO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0LnZhcmllbnRJZCk7XG4gICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlcldpc2hsaXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJdGVtVG9DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QgfCBPcmRlcmVkSXRlbXMsIHZhcmllbnRJZD86IHN0cmluZykge1xuICAgIGlmIChwcm9kdWN0LnF1YW50aXR5KSB7XG4gICAgICB0aGlzLmNhcHR1cmVDYXJ0QW5hbHl0aWNzKHByb2R1Y3QuaXRlbUlkLCAnQUREX1RPX0NBUlQnLCB2YXJpZW50SWQpO1xuXG4gICAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QgYXMgUHJvZHVjdCwgdmFyaWVudElkKTtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQob3JkZXJlZEl0ZW0gYXMgT3JkZXJlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXB0dXJlQ2FydEFuYWx5dGljcyhwcm9kdWN0Lml0ZW1JZCwgJ1JFTU9WRV9GUk9NX0NBUlQnLCB2YXJpZW50SWQpO1xuICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlSXRlbUZyb21DYXJ0KHByb2R1Y3QgYXMgUHJvZHVjdCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhcHR1cmVDYXJ0QW5hbHl0aWNzKFxuICAgIHByb2R1Y3RJZDogc3RyaW5nLFxuICAgIHR5cGU6ICdBRERfVE9fQ0FSVCcgfCAnUkVNT1ZFX0ZST01fQ0FSVCcsXG4gICAgdmFyaWFudElkPzogc3RyaW5nXG4gICkge1xuXG4gICAgY29uc3QgYW5hbHl0aWNzRXZlbnQ6IGFueSA9IHtcbiAgICAgIFBST0RVQ1RfSUQ6IHByb2R1Y3RJZCxcbiAgICAgIFFVQU5USVRZOiAxXG4gICAgfTtcblxuICAgIC8vIHdoZW4gYSBwcm9kdWN0IGhhcyBubyByZWFsIHZhcmlhbnRzLCB2YXJpZW50SWQgaXMgY29udmVudGlvbmFsbHkgc2V0IGVxdWFsIHRvIGl0ZW1JZFxuICAgIC8vIChzYW1lIHNlbnRpbmVsIHVzZWQgaW4gQXN5bmNTZXJ2aWNlLnVwZGF0ZUl0ZW1RdWFudGl0eSdzIHN0b2NrIGJ1Y2tldGluZykgLSBub3QgYSByZWFsIHZhcmlhbnRcbiAgICBpZiAodmFyaWFudElkICYmIHZhcmlhbnRJZCAhPT0gcHJvZHVjdElkKSB7XG4gICAgICBhbmFseXRpY3NFdmVudFsnVkFSSUFOVF9JRCddID0gdmFyaWFudElkO1xuICAgIH1cbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2tVc2VyKGFuYWx5dGljc0V2ZW50LCB0eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBjYXB0dXJlV2lzaGxpc3RBbmFseXRpY3MoXG4gICAgcHJvZHVjdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHlwZTogJ0FERF9UT19XSVNITElTVCcgfCAnUkVNT1ZFX0ZST01fV0lTSExJU1QnLFxuICAgIHZhcmlhbnRJZD86IHN0cmluZ1xuICApIHtcbiAgICBjb25zdCBhbmFseXRpY3NFdmVudDogYW55ID0ge307XG4gICAgaWYgKHByb2R1Y3RJZCkge1xuICAgICAgYW5hbHl0aWNzRXZlbnRbJ1BST0RVQ1RfSUQnXSA9IHByb2R1Y3RJZDtcbiAgICB9XG4gICAgaWYgKHZhcmlhbnRJZCAmJiB2YXJpYW50SWQgIT09IHByb2R1Y3RJZCkge1xuICAgICAgYW5hbHl0aWNzRXZlbnRbJ1ZBUklBTlRfSUQnXSA9IHZhcmlhbnRJZDtcbiAgICB9XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnRyYWNrVXNlcihhbmFseXRpY3NFdmVudCwgdHlwZSk7XG4gIH1cblxuICBwdWJsaWMgYWRkSXRlbVRvRmF2b3VyaXRlKHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmllbnRJZD86IHN0cmluZykge1xuXG4gICAgdGhpcy5jYXB0dXJlV2lzaGxpc3RBbmFseXRpY3MocHJvZHVjdC5pdGVtSWQsICdBRERfVE9fV0lTSExJU1QnLCB2YXJpZW50SWQpO1xuICAgIGNvbnN0IG9yZGVyZWRJdGVtID0gdGhpcy5vYmplY3RNYXBwZXIocHJvZHVjdCwgdmFyaWVudElkKTtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KG9yZGVyZWRJdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRJdGVtVG9UcmlhbChwcm9kdWN0OiBQcm9kdWN0LCB2YXJpZW50SWQ/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QsIHZhcmllbnRJZCk7XG5cbiAgICBjb25zdCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCh1c2VyLnVzZXJJZCwgJ1RSSUFMX0NBUlQnLCBbb3JkZXJlZEl0ZW1dKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yZXN0U2VydmljZS5hZGRUcmlhbEl0ZW0ocmVxdWVzdCkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFkZGluZyB0cmlhbCBpdGVtIHRvIHNlcnZlcjonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYlJlcXVlc3Q6IGFueSA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VHJpYWxDYXJ0KCk7XG5cbiAgICAgICAgY29uc3QgdHJpYWxDYXJ0SXRlbTogT3JkZXJlZEl0ZW1zW10gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgZGJSZXF1ZXN0Lm9uc3VjY2VzcyA9IChldmVudDogYW55KSA9PiByZXNvbHZlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICAgIGRiUmVxdWVzdC5vbmVycm9yID0gKGV2ZW50OiBhbnkpID0+IHJlamVjdChldmVudC50YXJnZXQuZXJyb3IpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpc0l0ZW1BbHJlYWR5QWRkZWQgPSB0cmlhbENhcnRJdGVtLnNvbWUoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT5cbiAgICAgICAgICBpdGVtLml0ZW1JZCA9PT0gcHJvZHVjdC5pdGVtSWQgJiZcbiAgICAgICAgICAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA9PT0gMCB8fCBwcm9kdWN0LnZhcmllbnRJZCA9PT0gaXRlbS52YXJpZW50SWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFpc0l0ZW1BbHJlYWR5QWRkZWQpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1RyaWFsKG9yZGVyZWRJdGVtKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWNjZXNzaW5nIHRyaWFsIGNhcnQgZnJvbSBsb2NhbCBzdG9yYWdlOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgcHVibGljIGFkZEl0ZW1Ub0ZhdkZyb21DYXJ0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xuICAgIHRoaXMuY2FwdHVyZVdpc2hsaXN0QW5hbHl0aWNzKHByb2R1Y3QuaXRlbUlkLCAnQUREX1RPX1dJU0hMSVNUJywgcHJvZHVjdC52YXJpZW50SWQpO1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvV2lzaGxpc3QocHJvZHVjdCk7XG4gIH1cbiAgcHVibGljIGFkZE9yZGVyZWRJdGVtVG9GYXZvdXJpdGUob3JkZXJlZEl0ZW06IE9yZGVyZWRJdGVtcykge1xuICAgIHRoaXMuY2FwdHVyZVdpc2hsaXN0QW5hbHl0aWNzKG9yZGVyZWRJdGVtLml0ZW1JZCwgJ0FERF9UT19XSVNITElTVCcsIG9yZGVyZWRJdGVtLnZhcmllbnRJZCk7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChvcmRlcmVkSXRlbSk7XG4gIH1cbiAgcHVibGljIHJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHZhcmllbnRJZDogc3RyaW5nLCBpdGVtSWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhcHR1cmVXaXNobGlzdEFuYWx5dGljcyhpdGVtSWQsICdSRU1PVkVfRlJPTV9XSVNITElTVCcsIHZhcmllbnRJZCk7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHZhcmllbnRJZCk7XG4gIH1cbiAgcHVibGljIHJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0OiBQcm9kdWN0IHwgT3JkZXJlZEl0ZW1zKSB7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbUNhcnQocHJvZHVjdC52YXJpZW50SWQpO1xuICB9XG4gIHByaXZhdGUgb2JqZWN0TWFwcGVyKHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmlhbnRJZD86IHN0cmluZyk6IE9yZGVyZWRJdGVtcyB7XG4gICAgcmV0dXJuIG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgdmFyaWFudElkKTtcbiAgfVxuXG59XG4iXX0=
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25
25
  providedIn: 'root',
26
26
  }]
27
27
  }], ctorParameters: () => [{ type: i1.StorageServiceService }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kVXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9lbmRVc2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7QUFPNUUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDcUIsY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBR25ELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsYUFBUSxHQUF3QixJQUFJLENBQUM7SUFIekMsQ0FBQztJQUlMLFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLFFBQVE7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOytHQWZRLGNBQWM7bUhBQWQsY0FBYyxjQUZYLE1BQU07OzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gXCIuL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW5kVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHVibGljIHBheW1lbnRTdGF0dXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIHByaXZhdGUgZXZlbnRSZWY6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ldmVudFJlZiA9IHRoaXMucGF5bWVudFN0YXR1c0V2ZW50LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXZlbnRSZWY/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn0gICJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kVXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9lbmRVc2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7QUFPNUUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDcUIsY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBR25ELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsYUFBUSxHQUF3QixJQUFJLENBQUM7SUFIekMsQ0FBQztJQUlMLFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLFFBQVE7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOytHQWZRLGNBQWM7bUhBQWQsY0FBYyxjQUZYLE1BQU07OzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVuZFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2VcbiAgICApIHsgfVxuXG4gICAgcHVibGljIHBheW1lbnRTdGF0dXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGV2ZW50UmVmOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldmVudFJlZiA9IHRoaXMucGF5bWVudFN0YXR1c0V2ZW50LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSlcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyVXNlckNhcnQoKTtcbiAgICAgICAgfSlcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXZlbnRSZWY/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufSAgIl19
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104
104
  type: Inject,
105
105
  args: [BUCKET_URL]
106
106
  }] }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsdUJBQXVCO0lBQ3ZCLHFFQUFxRTtJQUNyRSwrQkFBK0I7SUFFL0IsWUFBb0IsSUFBZ0IsRUFDTixTQUFjO1FBRHhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBYjVDLG1CQUFjLEdBQVE7WUFDcEIsUUFBUSxFQUFFLHNLQUFzSztZQUNoTCxXQUFXLEVBQUUsVUFBVTtZQUN2QixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFBO1FBQ0QsdUJBQWtCLEdBQUcsNkNBQTZDLENBQUE7UUFVaEUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxvQkFBb0I7WUFDbkUsV0FBVyxFQUFFLHVCQUF1QixDQUFDO2dCQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxN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cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tQ29nbml0b0lkZW50aXR5UG9vbCB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItY29nbml0by1pZGVudGl0eSc7XHJcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcclxuaW1wb3J0IHsgQlVDS0VUX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hcGktdG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEltYWdlVXBsYW9kU2VydmljZSB7XHJcbiAgY21pc0ZpbGVVcGxvYWQ6IGFueSA9IHtcclxuICAgIHNhc1Rva2VuOiAnc3Y9MjAyMi0xMS0wMiZzcz1iZnF0JnNydD1zY28mc3A9cndkbGFjdXBpeXRmeCZzZT0yMDI5LTEyLTMxVDIzOjQ1OjAzWiZzdD0yMDI0LTEyLTE4VDE1OjQ1OjAzWiZzcHI9aHR0cHMsaHR0cCZzaWc9UWpqNVhlNUtpTXh2RVRtNnJQJTJGWlAzMWkzeERTOXQxUXV5dUtnY1klMkZQQzglM0QnLFxyXG4gICAgYWNjb3VudE5hbWU6ICdjbWlzcHJvZCcsXHJcbiAgICBjb250YWluZXJOYW1lOiAncHJvZC1jbWlzJ1xyXG4gIH1cclxuICBVTlNQTEFTSF9BUElfVE9LRU4gPSAnaU1uNDNIQ1pfRkxDTVdrWmdVdE1BanQtcC1NNnZtYUIxWl8zZmJldG1KQSdcclxuXHJcbiAgcHJpdmF0ZSBzM0NsaWVudD86IFMzQ2xpZW50O1xyXG4gIC8vIHJlZ2lvbiA9ICd1cy1lYXN0LTEnXHJcbiAgLy8gaWRlbnRpdHlQb29sSWQgPSAndXMtZWFzdC0xOmQ0YmM3NzBhLTU2NjQtNDA1MS1iZDY2LTY4NjFhNmVmYmQ5Yyc7XHJcbiAgLy8gYnVja2V0TmFtZSA9IGAke2J1Y2tldFVybH1gO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KEJVQ0tFVF9VUkwpIHByaXZhdGUgYnVja2V0VXJsOiBhbnkpIFxyXG4gICB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnYnVja2V0VXJsJywgdGhpcy5idWNrZXRVcmwpO1xyXG4gICAgdGhpcy5zM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XHJcbiAgICAgIHJlZ2lvbjogdGhpcy5idWNrZXRVcmw/LmJ1Y2tldERldGFpbHM/LlJlZ2lvbiwgLy8gZS5nLiwgJ3VzLWVhc3QtMSdcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Db2duaXRvSWRlbnRpdHlQb29sKHtcclxuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5idWNrZXRVcmw/LnBvb2xJZCxcclxuICAgICAgICBjbGllbnRDb25maWc6IHsgcmVnaW9uOiB0aGlzLmJ1Y2tldFVybD8uYnVja2V0RGV0YWlscz8uUmVnaW9uIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkF6dXJlKGZpbGU6IEZpbGUsIGZvbGRlck5hbWU6IHN0cmluZyA9ICdjbWlzJykge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGNvbnN0IHsgQmxvYlNlcnZpY2VDbGllbnQgfSA9IGF3YWl0IGltcG9ydCgnQGF6dXJlL3N0b3JhZ2UtYmxvYicpO1xyXG5cclxuICAgICAgY29uc3Qgc2FzVG9rZW4gPSB0aGlzLmNtaXNGaWxlVXBsb2FkLnNhc1Rva2VuLnN0YXJ0c1dpdGgoJz8nKVxyXG4gICAgICAgID8gdGhpcy5jbWlzRmlsZVVwbG9hZC5zYXNUb2tlblxyXG4gICAgICAgIDogYD8ke3RoaXMuY21pc0ZpbGVVcGxvYWQuc2FzVG9rZW59YDtcclxuICAgICAgY29uc3QgYWNjb3VudE5hbWUgPSB0aGlzLmNtaXNGaWxlVXBsb2FkLmFjY291bnROYW1lO1xyXG4gICAgICBjb25zdCBjb250YWluZXJOYW1lID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5jb250YWluZXJOYW1lO1xyXG5cclxuICAgICAgY29uc3QgYmxvYlNlcnZpY2VDbGllbnQgPSBuZXcgQmxvYlNlcnZpY2VDbGllbnQoYGh0dHBzOi8vJHthY2NvdW50TmFtZX0uYmxvYi5jb3JlLndpbmRvd3MubmV0JHtzYXNUb2tlbn1gKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyQ2xpZW50ID0gYmxvYlNlcnZpY2VDbGllbnQuZ2V0Q29udGFpbmVyQ2xpZW50KGNvbnRhaW5lck5hbWUpO1xyXG4gICAgICBjb25zdCBibG9iTmFtZSA9IGAke2ZvbGRlck5hbWV9LyR7ZmlsZS5uYW1lfWA7XHJcbiAgICAgIGNvbnN0IGJsb2NrQmxvYkNsaWVudCA9IGNvbnRhaW5lckNsaWVudC5nZXRCbG9ja0Jsb2JDbGllbnQoYmxvYk5hbWUpO1xyXG5cclxuICAgICAgYXdhaXQgYmxvY2tCbG9iQ2xpZW50LnVwbG9hZERhdGEoZmlsZSwge1xyXG4gICAgICAgIGJsb2JIVFRQSGVhZGVyczogeyBibG9iQ29udGVudFR5cGU6IGZpbGUudHlwZSB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBibG9ja0Jsb2JDbGllbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkFXUyhmaWxlOiBGaWxlLCBmb2xkZXJOYW1lOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBkb21haW5cclxuICAgICAgY29uc3QgY2xvdWRmcm9udERvbWFpbiA9IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0ID09ICdkZXYtYmVlb3MnID8gJ2h0dHBzOi8vZDJ5eDE1cG5jZ211NjMuY2xvdWRmcm9udC5uZXQnIDogJ2h0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQnIDtcclxuICAgICAgXHJcbiAgICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBmaWxlIG5hbWVcclxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtmb2xkZXJOYW1lfS8ke0RhdGUubm93KCl9LSR7ZmlsZS5uYW1lLnJlcGxhY2UoJyAnLCAnXycpfWA7XHJcbiAgXHJcbiAgICAgIC8vIENvbnZlcnQgZmlsZSB0byBidWZmZXJcclxuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGF3YWl0IHRoaXMuZmlsZVRvQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgXHJcbiAgICAgIC8vIFByZXBhcmUgdGhlIHVwbG9hZCBwYXJhbWV0ZXJzXHJcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xyXG4gICAgICAgIEJ1Y2tldDogdGhpcy5idWNrZXRVcmwuYnVja2V0RGV0YWlscy5CdWNrZXQsXHJcbiAgICAgICAgS2V5OiBmaWxlTmFtZSxcclxuICAgICAgICBCb2R5OiBmaWxlQnVmZmVyLFxyXG4gICAgICAgIENvbnRlbnRUeXBlOiBmaWxlLnR5cGUsXHJcbiAgICAgICAgLy8gUmVtb3ZlIHB1YmxpYy1yZWFkIEFDTCBpZiB1c2luZyBPQUMvT0FJIGFzIGl0J3Mgbm90IG5lZWRlZCBhbmQgbWF5IGNhdXNlIGlzc3Vlc1xyXG4gICAgICAgIC8vIEFDTDogJ3B1YmxpYy1yZWFkJ1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICAvLyBVcGxvYWQgZmlsZSB0byBTM1xyXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IFB1dE9iamVjdENvbW1hbmQocGFyYW1zKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnMzQ2xpZW50Py5zZW5kKGNvbW1hbmQpO1xyXG4gIFxyXG4gICAgICAvLyBDb25zdHJ1Y3QgdGhlIENsb3VkRnJvbnQgVVJMIGluc3RlYWQgb2YgUzMgVVJMXHJcbiAgICAgIGNvbnN0IHVybCA9IGAke2Nsb3VkZnJvbnREb21haW59LyR7ZmlsZU5hbWV9YDtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZTogJywgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsZVRvQXJyYXlCdWZmZXIoZmlsZTogRmlsZSk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgQXJyYXlCdWZmZXIpO1xyXG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9VbnNwbGFzaCByZWxhdGVkIEFQSVNcclxuICBzZWFyY2hQaG90b3NJblVuc3BsYXNoKFxyXG4gICAgc2VhcmNoZWRUZXh0OiBzdHJpbmcsXHJcbiAgICBwYWdlOiBudW1iZXIgPSAxLFxyXG4gICAgc2l6ZTogbnVtYmVyID0gMTBcclxuICApIHtcclxuICAgIGNvbnN0IGhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEF1dGhvcml6YXRpb246IGBDbGllbnQtSUQgJHt0aGlzLlVOU1BMQVNIX0FQSV9UT0tFTn1gLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGBodHRwczovL2FwaS51bnNwbGFzaC5jb20vc2VhcmNoL3Bob3Rvcz9wYWdlPSR7cGFnZX0mcGVyX3BhZ2U9JHtzaXplfSZxdWVyeT0ke3NlYXJjaGVkVGV4dH1gLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsdUJBQXVCO0lBQ3ZCLHFFQUFxRTtJQUNyRSwrQkFBK0I7SUFFL0IsWUFBb0IsSUFBZ0IsRUFDTixTQUFjO1FBRHhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBYjVDLG1CQUFjLEdBQVE7WUFDcEIsUUFBUSxFQUFFLHNLQUFzSztZQUNoTCxXQUFXLEVBQUUsVUFBVTtZQUN2QixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFBO1FBQ0QsdUJBQWtCLEdBQUcsNkNBQTZDLENBQUE7UUFVaEUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxvQkFBb0I7WUFDbkUsV0FBVyxFQUFFLHVCQUF1QixDQUFDO2dCQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxN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cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21Db2duaXRvSWRlbnRpdHlQb29sIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1jb2duaXRvLWlkZW50aXR5JztcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IEJVQ0tFVF9VUkwgfSBmcm9tICcuLi90b2tlbnMvYXBpLXRva2VuJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJbWFnZVVwbGFvZFNlcnZpY2Uge1xuICBjbWlzRmlsZVVwbG9hZDogYW55ID0ge1xuICAgIHNhc1Rva2VuOiAnc3Y9MjAyMi0xMS0wMiZzcz1iZnF0JnNydD1zY28mc3A9cndkbGFjdXBpeXRmeCZzZT0yMDI5LTEyLTMxVDIzOjQ1OjAzWiZzdD0yMDI0LTEyLTE4VDE1OjQ1OjAzWiZzcHI9aHR0cHMsaHR0cCZzaWc9UWpqNVhlNUtpTXh2RVRtNnJQJTJGWlAzMWkzeERTOXQxUXV5dUtnY1klMkZQQzglM0QnLFxuICAgIGFjY291bnROYW1lOiAnY21pc3Byb2QnLFxuICAgIGNvbnRhaW5lck5hbWU6ICdwcm9kLWNtaXMnXG4gIH1cbiAgVU5TUExBU0hfQVBJX1RPS0VOID0gJ2lNbjQzSENaX0ZMQ01Xa1pnVXRNQWp0LXAtTTZ2bWFCMVpfM2ZiZXRtSkEnXG5cbiAgcHJpdmF0ZSBzM0NsaWVudD86IFMzQ2xpZW50O1xuICAvLyByZWdpb24gPSAndXMtZWFzdC0xJ1xuICAvLyBpZGVudGl0eVBvb2xJZCA9ICd1cy1lYXN0LTE6ZDRiYzc3MGEtNTY2NC00MDUxLWJkNjYtNjg2MWE2ZWZiZDljJztcbiAgLy8gYnVja2V0TmFtZSA9IGAke2J1Y2tldFVybH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBASW5qZWN0KEJVQ0tFVF9VUkwpIHByaXZhdGUgYnVja2V0VXJsOiBhbnkpIFxuICAge1xuICAgIC8vIGNvbnNvbGUubG9nKCdidWNrZXRVcmwnLCB0aGlzLmJ1Y2tldFVybCk7XG4gICAgdGhpcy5zM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XG4gICAgICByZWdpb246IHRoaXMuYnVja2V0VXJsPy5idWNrZXREZXRhaWxzPy5SZWdpb24sIC8vIGUuZy4sICd1cy1lYXN0LTEnXG4gICAgICBjcmVkZW50aWFsczogZnJvbUNvZ25pdG9JZGVudGl0eVBvb2woe1xuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5idWNrZXRVcmw/LnBvb2xJZCxcbiAgICAgICAgY2xpZW50Q29uZmlnOiB7IHJlZ2lvbjogdGhpcy5idWNrZXRVcmw/LmJ1Y2tldERldGFpbHM/LlJlZ2lvbiB9LFxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkF6dXJlKGZpbGU6IEZpbGUsIGZvbGRlck5hbWU6IHN0cmluZyA9ICdjbWlzJykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgeyBCbG9iU2VydmljZUNsaWVudCB9ID0gYXdhaXQgaW1wb3J0KCdAYXp1cmUvc3RvcmFnZS1ibG9iJyk7XG5cbiAgICAgIGNvbnN0IHNhc1Rva2VuID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5zYXNUb2tlbi5zdGFydHNXaXRoKCc/JylcbiAgICAgICAgPyB0aGlzLmNtaXNGaWxlVXBsb2FkLnNhc1Rva2VuXG4gICAgICAgIDogYD8ke3RoaXMuY21pc0ZpbGVVcGxvYWQuc2FzVG9rZW59YDtcbiAgICAgIGNvbnN0IGFjY291bnROYW1lID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5hY2NvdW50TmFtZTtcbiAgICAgIGNvbnN0IGNvbnRhaW5lck5hbWUgPSB0aGlzLmNtaXNGaWxlVXBsb2FkLmNvbnRhaW5lck5hbWU7XG5cbiAgICAgIGNvbnN0IGJsb2JTZXJ2aWNlQ2xpZW50ID0gbmV3IEJsb2JTZXJ2aWNlQ2xpZW50KGBodHRwczovLyR7YWNjb3VudE5hbWV9LmJsb2IuY29yZS53aW5kb3dzLm5ldCR7c2FzVG9rZW59YCk7XG4gICAgICBjb25zdCBjb250YWluZXJDbGllbnQgPSBibG9iU2VydmljZUNsaWVudC5nZXRDb250YWluZXJDbGllbnQoY29udGFpbmVyTmFtZSk7XG4gICAgICBjb25zdCBibG9iTmFtZSA9IGAke2ZvbGRlck5hbWV9LyR7ZmlsZS5uYW1lfWA7XG4gICAgICBjb25zdCBibG9ja0Jsb2JDbGllbnQgPSBjb250YWluZXJDbGllbnQuZ2V0QmxvY2tCbG9iQ2xpZW50KGJsb2JOYW1lKTtcblxuICAgICAgYXdhaXQgYmxvY2tCbG9iQ2xpZW50LnVwbG9hZERhdGEoZmlsZSwge1xuICAgICAgICBibG9iSFRUUEhlYWRlcnM6IHsgYmxvYkNvbnRlbnRUeXBlOiBmaWxlLnR5cGUgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYmxvY2tCbG9iQ2xpZW50O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkFXUyhmaWxlOiBGaWxlLCBmb2xkZXJOYW1lOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGRvbWFpblxuICAgICAgY29uc3QgY2xvdWRmcm9udERvbWFpbiA9IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0ID09ICdkZXYtYmVlb3MnID8gJ2h0dHBzOi8vZDJ5eDE1cG5jZ211NjMuY2xvdWRmcm9udC5uZXQnIDogJ2h0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQnIDtcbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIGZpbGUgbmFtZVxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtmb2xkZXJOYW1lfS8ke0RhdGUubm93KCl9LSR7ZmlsZS5uYW1lLnJlcGxhY2UoJyAnLCAnXycpfWA7XG4gIFxuICAgICAgLy8gQ29udmVydCBmaWxlIHRvIGJ1ZmZlclxuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGF3YWl0IHRoaXMuZmlsZVRvQXJyYXlCdWZmZXIoZmlsZSk7XG4gIFxuICAgICAgLy8gUHJlcGFyZSB0aGUgdXBsb2FkIHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgICBCdWNrZXQ6IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0LFxuICAgICAgICBLZXk6IGZpbGVOYW1lLFxuICAgICAgICBCb2R5OiBmaWxlQnVmZmVyLFxuICAgICAgICBDb250ZW50VHlwZTogZmlsZS50eXBlLFxuICAgICAgICAvLyBSZW1vdmUgcHVibGljLXJlYWQgQUNMIGlmIHVzaW5nIE9BQy9PQUkgYXMgaXQncyBub3QgbmVlZGVkIGFuZCBtYXkgY2F1c2UgaXNzdWVzXG4gICAgICAgIC8vIEFDTDogJ3B1YmxpYy1yZWFkJ1xuICAgICAgfTtcbiAgXG4gICAgICAvLyBVcGxvYWQgZmlsZSB0byBTM1xuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBQdXRPYmplY3RDb21tYW5kKHBhcmFtcyk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuczNDbGllbnQ/LnNlbmQoY29tbWFuZCk7XG4gIFxuICAgICAgLy8gQ29uc3RydWN0IHRoZSBDbG91ZEZyb250IFVSTCBpbnN0ZWFkIG9mIFMzIFVSTFxuICAgICAgY29uc3QgdXJsID0gYCR7Y2xvdWRmcm9udERvbWFpbn0vJHtmaWxlTmFtZX1gO1xuICAgICAgXG4gICAgICByZXR1cm4gdXJsO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZTogJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWxlVG9BcnJheUJ1ZmZlcihmaWxlOiBGaWxlKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcik7XG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgfSk7XG4gIH1cblxuICAvL1Vuc3BsYXNoIHJlbGF0ZWQgQVBJU1xuICBzZWFyY2hQaG90b3NJblVuc3BsYXNoKFxuICAgIHNlYXJjaGVkVGV4dDogc3RyaW5nLFxuICAgIHBhZ2U6IG51bWJlciA9IDEsXG4gICAgc2l6ZTogbnVtYmVyID0gMTBcbiAgKSB7XG4gICAgY29uc3QgaGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBDbGllbnQtSUQgJHt0aGlzLlVOU1BMQVNIX0FQSV9UT0tFTn1gLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgaHR0cHM6Ly9hcGkudW5zcGxhc2guY29tL3NlYXJjaC9waG90b3M/cGFnZT0ke3BhZ2V9JnBlcl9wYWdlPSR7c2l6ZX0mcXVlcnk9JHtzZWFyY2hlZFRleHR9YCxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxufVxuIl19