simpo-component-library 3.6.134 → 3.6.138

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 (223) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +5 -5
  3. package/esm2022/lib/components/document/document.component.mjs +5 -5
  4. package/esm2022/lib/components/hover-elements/hover-elements.component.mjs +4 -4
  5. package/esm2022/lib/components/image-loading/image-loading.component.mjs +5 -5
  6. package/esm2022/lib/components/index.mjs +5 -5
  7. package/esm2022/lib/components/input-fields/input-fields.component.mjs +4 -4
  8. package/esm2022/lib/components/payment-details/payment-details.component.mjs +5 -5
  9. package/esm2022/lib/components/trasport-availability/trasport-availability.component.mjs +4 -4
  10. package/esm2022/lib/constants/business.constant.mjs +1 -1
  11. package/esm2022/lib/directive/alignment.directive.mjs +4 -4
  12. package/esm2022/lib/directive/animation-directive.mjs +4 -4
  13. package/esm2022/lib/directive/background-directive.mjs +4 -4
  14. package/esm2022/lib/directive/banner-content-fit-directive.mjs +4 -4
  15. package/esm2022/lib/directive/blur-content.directive.mjs +4 -4
  16. package/esm2022/lib/directive/border-directive.mjs +4 -4
  17. package/esm2022/lib/directive/borderlessImage.directive.mjs +4 -4
  18. package/esm2022/lib/directive/button-directive.directive.mjs +4 -4
  19. package/esm2022/lib/directive/button-editor.directive.mjs +5 -4
  20. package/esm2022/lib/directive/color.directive.mjs +4 -4
  21. package/esm2022/lib/directive/column-directive.directive.mjs +4 -4
  22. package/esm2022/lib/directive/container-alignment.directive.mjs +4 -4
  23. package/esm2022/lib/directive/container-fir.directive.mjs +4 -4
  24. package/esm2022/lib/directive/content-alignment-directive.mjs +4 -4
  25. package/esm2022/lib/directive/content-fit-directive.mjs +4 -4
  26. package/esm2022/lib/directive/content-title-spacing.directive.mjs +4 -4
  27. package/esm2022/lib/directive/contenteditable.directive.mjs +4 -4
  28. package/esm2022/lib/directive/corner-directive.mjs +4 -4
  29. package/esm2022/lib/directive/footer-layout-directive.mjs +4 -4
  30. package/esm2022/lib/directive/height.directive.mjs +4 -4
  31. package/esm2022/lib/directive/hover-animation.directive.mjs +4 -4
  32. package/esm2022/lib/directive/hover-element-directive.mjs +4 -4
  33. package/esm2022/lib/directive/hoverborder.directive.mjs +4 -4
  34. package/esm2022/lib/directive/image-container.directive.mjs +4 -4
  35. package/esm2022/lib/directive/image-directive.directive.mjs +4 -4
  36. package/esm2022/lib/directive/image-editor.directive.mjs +4 -4
  37. package/esm2022/lib/directive/image-position.directive.mjs +4 -4
  38. package/esm2022/lib/directive/overlay-directive.mjs +4 -4
  39. package/esm2022/lib/directive/position-layout-directive.directive.mjs +4 -4
  40. package/esm2022/lib/directive/removeCarousel-directive.mjs +4 -4
  41. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +4 -4
  42. package/esm2022/lib/directive/spacing-around.directive.mjs +4 -4
  43. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +4 -4
  44. package/esm2022/lib/directive/spacing.directive.mjs +4 -4
  45. package/esm2022/lib/directive/sticky-directive.mjs +4 -4
  46. package/esm2022/lib/directive/text-background-directive.directive.mjs +4 -4
  47. package/esm2022/lib/directive/text-size.directive.mjs +4 -4
  48. package/esm2022/lib/directive/translate-onhover.directive.mjs +4 -4
  49. package/esm2022/lib/directive/wrap-containers.directive.mjs +4 -4
  50. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +6 -6
  51. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +5 -5
  52. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +6 -6
  53. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  54. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +5 -5
  55. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  56. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +5 -5
  57. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  58. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +5 -5
  59. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  60. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +5 -5
  61. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  62. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +5 -5
  63. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  64. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +5 -5
  65. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +5 -5
  66. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  67. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +5 -5
  68. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +5 -5
  69. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  70. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +6 -5
  71. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +5 -5
  72. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +5 -5
  73. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  74. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +7 -5
  75. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  76. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +11 -9
  77. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  78. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +5 -5
  79. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +8 -6
  80. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  81. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +5 -5
  82. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  83. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +5 -5
  84. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +5 -5
  85. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  86. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +5 -5
  87. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  88. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +5 -5
  89. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  90. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  91. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  92. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  95. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  96. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  97. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  98. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  99. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  100. package/esm2022/lib/elements/add-section/add-section.component.mjs +5 -5
  101. package/esm2022/lib/elements/address-list/address-list.component.mjs +5 -5
  102. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +5 -5
  103. package/esm2022/lib/elements/button/button.component.mjs +5 -5
  104. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  105. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +5 -5
  106. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +5 -5
  107. package/esm2022/lib/elements/editor-service.service.mjs +4 -4
  108. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +5 -5
  109. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +5 -5
  110. package/esm2022/lib/elements/index.mjs +5 -5
  111. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +5 -5
  112. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +5 -5
  113. package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +4 -4
  114. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +5 -5
  115. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +5 -5
  116. package/esm2022/lib/elements/property/property.component.mjs +5 -5
  117. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +5 -5
  118. package/esm2022/lib/elements/socia-icons/socia-icons.component.mjs +4 -4
  119. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +5 -5
  120. package/esm2022/lib/elements/text/text.component.mjs +5 -5
  121. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +5 -5
  122. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +5 -5
  123. package/esm2022/lib/pipes/amount.pipe.mjs +4 -4
  124. package/esm2022/lib/pipes/gender.pipe.mjs +4 -4
  125. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  126. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +5 -5
  127. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +5 -5
  128. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  129. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +5 -5
  130. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  131. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +5 -5
  132. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +4 -4
  133. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +5 -5
  134. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  135. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +4 -4
  136. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +5 -5
  137. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  138. package/esm2022/lib/sections/contact-us/contact-us.component.mjs +4 -4
  139. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +5 -5
  140. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  141. package/esm2022/lib/sections/features-section/features-section.component.mjs +5 -5
  142. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  143. package/esm2022/lib/sections/footer/footer.component.mjs +5 -5
  144. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  145. package/esm2022/lib/sections/footer-section/footer-section.component.mjs +4 -4
  146. package/esm2022/lib/sections/header-section/header-section.component.mjs +5 -5
  147. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  148. package/esm2022/lib/sections/header-text/header-text.component.mjs +5 -5
  149. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  150. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +5 -5
  151. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  152. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +5 -5
  153. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  154. package/esm2022/lib/sections/image-section/image-section.component.mjs +5 -5
  155. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  156. package/esm2022/lib/sections/location-section/location-section.component.mjs +5 -5
  157. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  158. package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +4 -4
  159. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +5 -5
  160. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  161. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +5 -5
  162. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  163. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +4 -4
  164. package/esm2022/lib/sections/new-services/new-services.component.mjs +5 -5
  165. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  166. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +5 -5
  167. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  168. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +5 -5
  169. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  170. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +5 -5
  171. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  172. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +5 -5
  173. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  174. package/esm2022/lib/sections/process-section/process-section.component.mjs +5 -5
  175. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  176. package/esm2022/lib/sections/property-component/property-component.component.mjs +5 -5
  177. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  178. package/esm2022/lib/sections/property-list/property-list.component.mjs +5 -5
  179. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  180. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +5 -5
  181. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  182. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +6 -6
  183. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  184. package/esm2022/lib/sections/service-section/service-section.component.mjs +5 -5
  185. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  186. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +5 -5
  187. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +5 -5
  188. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  189. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +5 -5
  190. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  191. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +5 -5
  192. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  193. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +5 -5
  194. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  195. package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +4 -4
  196. package/esm2022/lib/sections/text-section/text-section.component.mjs +4 -4
  197. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  198. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +5 -5
  199. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  200. package/esm2022/lib/sections/video-section/video-section.component.mjs +5 -5
  201. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  202. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +5 -5
  203. package/esm2022/lib/services/cart.service.mjs +4 -4
  204. package/esm2022/lib/services/endUser.service.mjs +4 -4
  205. package/esm2022/lib/services/events.service.mjs +5 -4
  206. package/esm2022/lib/services/image-upload-service.service.mjs +4 -4
  207. package/esm2022/lib/services/rest.service.mjs +9 -7
  208. package/esm2022/lib/services/sanitizeHtml.mjs +4 -4
  209. package/esm2022/lib/services/storage.service.mjs +14 -10
  210. package/esm2022/lib/styles/index.mjs +1 -1
  211. package/esm2022/lib/styles/style.model.mjs +1 -1
  212. package/esm2022/lib/styles/types.mjs +1 -1
  213. package/esm2022/lib/tokens/api-token.mjs +1 -1
  214. package/esm2022/public-api.mjs +1 -1
  215. package/fesm2022/simpo-component-library.mjs +547 -533
  216. package/fesm2022/simpo-component-library.mjs.map +1 -1
  217. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
  218. package/lib/services/events.service.d.ts +1 -0
  219. package/lib/services/storage.service.d.ts +1 -0
  220. package/package.json +1 -1
  221. package/simpo-component-library-3.6.138.tgz +0 -0
  222. package/src/lib/styles/global-styles.css +242 -242
  223. package/simpo-component-library-3.6.134.tgz +0 -0
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0Lm1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1saXN0L3Byb2R1Y3QtbGlzdC5tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdENhcmRUaGVtZSB9IGZyb20gXCIuLi8uLi8uLi9zdHlsZXMvaW5kZXhcIjtcbmltcG9ydCB7IEFjdGlvbk1vZGVsLCBBbmltYXRpb25Nb2RlbCwgQmFja2dyb3VuZE1vZGVsLCBMYXlPdXRNb2RlbCB9IGZyb20gXCIuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0TGlzdE1vZGFsIHtcbiAgaWQ6IHN0cmluZztcbiAgc2VjdGlvblR5cGU6IHN0cmluZztcbiAgc2VjdGlvbk5hbWU6IHN0cmluZztcbiAgY29udGVudDogUHJvZHVjdExpc3RDb250ZW50TW9kYWw7XG4gIHN0eWxlczogUHJvZHVjdExpc3RTdHlsZXNNb2RhbDtcbiAgYWN0aW9uOiBBY3Rpb25Nb2RlbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RMaXN0U3R5bGVzTW9kYWwge1xuICBsYXlvdXQ6IExheU91dE1vZGVsO1xuICBiYWNrZ3JvdW5kOiBCYWNrZ3JvdW5kTW9kZWw7XG4gIGVsZW1lbnRJblJvdzogbnVtYmVyO1xuICBtb2JpbGVDb2x1bW46IG51bWJlcjtcbiAgbWF4UHJpY2U6IG51bWJlcjtcbiAgbWluUHJpY2U6IG51bWJlcjtcbiAgYW5pbWF0aW9uOiBBbmltYXRpb25Nb2RlbDtcbiAgdGhlbWU6IFByb2R1Y3RDYXJkVGhlbWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0TGlzdENvbnRlbnRNb2RhbCB7XG4gIGRpc3BsYXk6IERpc3BsYXk7XG4gIGJ1dHRvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXkge1xuICBzaG93QnV0dG9uOiBib29sZWFuO1xufVxuXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1saXN0Lm1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1saXN0L3Byb2R1Y3QtbGlzdC5tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdENhcmRUaGVtZSB9IGZyb20gXCIuLi8uLi8uLi9zdHlsZXMvaW5kZXhcIjtcclxuaW1wb3J0IHsgQWN0aW9uTW9kZWwsIEFuaW1hdGlvbk1vZGVsLCBCYWNrZ3JvdW5kTW9kZWwsIExheU91dE1vZGVsIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0TGlzdE1vZGFsIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHNlY3Rpb25UeXBlOiBzdHJpbmc7XHJcbiAgc2VjdGlvbk5hbWU6IHN0cmluZztcclxuICBjb250ZW50OiBQcm9kdWN0TGlzdENvbnRlbnRNb2RhbDtcclxuICBzdHlsZXM6IFByb2R1Y3RMaXN0U3R5bGVzTW9kYWw7XHJcbiAgYWN0aW9uOiBBY3Rpb25Nb2RlbFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RMaXN0U3R5bGVzTW9kYWwge1xyXG4gIGxheW91dDogTGF5T3V0TW9kZWw7XHJcbiAgYmFja2dyb3VuZDogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGVsZW1lbnRJblJvdzogbnVtYmVyO1xyXG4gIG1vYmlsZUNvbHVtbjogbnVtYmVyO1xyXG4gIG1heFByaWNlOiBudW1iZXI7XHJcbiAgbWluUHJpY2U6IG51bWJlcjtcclxuICBhbmltYXRpb246IEFuaW1hdGlvbk1vZGVsO1xyXG4gIHRoZW1lOiBQcm9kdWN0Q2FyZFRoZW1lXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdExpc3RDb250ZW50TW9kYWwge1xyXG4gIGRpc3BsYXk6IERpc3BsYXk7XHJcbiAgYnV0dG9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlzcGxheSB7XHJcbiAgc2hvd0J1dHRvbjogYm9vbGVhbjtcclxufVxyXG5cclxuIl19
@@ -129,10 +129,10 @@ export class SmallProductListingComponent {
129
129
  return noofratings;
130
130
  }
131
131
  }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmallProductListingComponent, deps: [{ token: i1.CartService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SmallProductListingComponent, isStandalone: true, selector: "simpo-small-product-listing", inputs: { product: "product", data: "data", isScrollable: "isScrollable", isCategoryProductList: "isCategoryProductList", customClass: "customClass", index: "index" }, ngImport: i0, template: "<div class=\"product hover-effect\" [ngClass]=\"{'width' : isScrollable, 'adjustHeightWidth': isCategoryProductList}\"\n [style.opacity]=\"product?.itemInventory?.openingStock == 0 ? 0.5 : 1\" [attr.style]=\"customClass\">\n <div class=\"prod-img\" [class.fade-out]=\"imageIndex == index\">\n <image-loading [imageUrl]=\"getProductImages(product)\" [hash]=\"product.itemImages?.[0]?.blurhash\"\n (click)=\"goToProductDetail(product)\" [theme]=\"data?.styles?.theme\"></image-loading>\n <div class=\"discount\" [style.backgroundColor]=\"data?.styles?.background?.color\"\n [simpoColor]=\"data?.styles?.background?.color\" *ngIf=\"getPercentage(product) > '0'\">{{getPercentage(product)}}%\n off</div>\n <div class=\"carousel-buttons\" *ngIf=\"(product?.itemImages?.length || 0) > 1\">\n <div><mat-icon (click)=\"changeImage(product, 'PREV')\">keyboard_arrow_left</mat-icon></div>\n <div><mat-icon (click)=\"changeImage(product, 'NEXT')\">keyboard_arrow_right</mat-icon></div>\n </div>\n </div>\n <div class=\"p-2 h-40\" (click)=\"goToProductDetail(product)\">\n <span class=\"trim-text color\">{{product.name}}</span>\n <div class=\"bottom\">\n <span class=\"m-1\">\n <span class=\"color\" *ngIf=\"product?.price?.discountedPrice && product.price.discountedPrice > 0\"><span\n [innerHTML]=\"currency\"></span> {{product?.price?.discountedPrice ?? 0}}</span>\n <span class=\"color\"\n [ngClass]=\"{'strike-through' : product?.price?.discountedPrice && product.price.discountedPrice > 0 }\"><span\n [innerHTML]=\"currency\"></span> {{product?.price?.sellingPrice ?? 0}}</span>\n </span>\n <div class=\"review-rating d-flex gap-2 align-items-center justify-content-between\" *ngIf=\"product?.averageRating\">\n <p-rating [(ngModel)]=\"product.averageRating\" [cancel]=\"false\" [readonly]=\"true\" />\n <div class=\"total-ratings\">{{\n getRatings(product?.totalReviewCount)}}</div>\n </div>\n <div class=\"add-to-cart\" [style.borderColor]=\"data.styles?.background?.accentColor\" *ngIf=\"data?.content?.display?.showButton\"\n [ngClass]=\"{'justify-content-between p-0 d-flex': product.quantity, 'justify-content-center': !product.quantity}\"\n (click)=\"removeDefault($event)\">\n <ng-container *ngIf=\"product?.itemInventory?.openingStock\">\n <ng-container *ngIf=\"!product.quantity\">\n <div (click)=\"addItemToCart($event, product, 'ADD')\" [style.color]=\"data.styles?.background?.accentColor\">\n Add to Cart</div>\n </ng-container>\n <ng-container *ngIf=\"product.quantity\">\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'SUBSTRACT')\"\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\n [style.color]=\"data.styles?.background?.accentColor\">-</span>\n <span class=\"quantity\" [style.color]=\"data.styles?.background?.accentColor\">{{product.quantity}}</span>\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'ADD')\"\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\n [style.color]=\"data.styles?.background?.accentColor\">+</span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!product?.itemInventory?.openingStock\">\n <span class=\"d-flex align-items-center justify-content-center w-100\">\n <mat-icon>notification_important</mat-icon>\n <span class=\"ml-2\">Notify</span>\n </span>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<!-- <ng-template #loadingScreen>\n <ngx-skeleton-loader *ngIf=\"filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\n width: '100%',\n height: '100%',\n 'border-radius': '10px',\n 'position': 'relative',\n 'right': '5px'\n }\" />\n</ng-template> -->", styles: [".product{position:relative;display:flex;flex-direction:column;cursor:pointer;margin-bottom:10px;border-radius:10px;overflow:hidden;height:350px;background-color:#fff}.product .prod-img{position:relative;height:55%;width:100%;overflow:hidden;border:1.8px solid;border-radius:10px;border-color:#e5e7eb}.product .prod-img img{height:100%;width:100%;object-fit:cover}.width{margin-right:10px;min-width:195px;max-width:195px}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid transparent;border-radius:5px;padding:5px;text-align:center;align-items:center}.add-to-cart .quantity-btn{padding:5px 10px;font-weight:700}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@media screen and (max-width: 475px){.width{max-width:160px;min-width:160px;height:300px}.adjustHeightWidth{max-width:100%;min-width:100%}}.h-40{height:45%;position:relative}.bottom{position:absolute;bottom:10px;width:93%;display:flex;flex-direction:column}.discount-price{font-weight:600;font-size:14px}.color{color:#000}.trim-text{text-align:inherit!important}.product-img.fade-out{opacity:0;transform:scale(.95)}.gap-15{gap:15px}.flex-wrap{flex-wrap:wrap}.carousel-buttons{display:flex;gap:10px;position:absolute;bottom:10px;left:10px;transform:translateY(-50%);pointer-events:none}.carousel-buttons div{background:#fff;display:flex;align-items:center;border-radius:100%;height:30px;width:30px;justify-content:center;pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ImageLoadingComponent, selector: "image-loading", inputs: ["hash", "imageUrl", "index", "product", "theme"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: RatingModule }, { kind: "component", type: i4.Rating, selector: "p-rating", inputs: ["disabled", "readonly", "stars", "cancel", "iconOnClass", "iconOnStyle", "iconOffClass", "iconOffStyle", "iconCancelClass", "iconCancelStyle", "autofocus"], outputs: ["onRate", "onCancel", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SmallProductListingComponent, deps: [{ token: i1.CartService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SmallProductListingComponent, isStandalone: true, selector: "simpo-small-product-listing", inputs: { product: "product", data: "data", isScrollable: "isScrollable", isCategoryProductList: "isCategoryProductList", customClass: "customClass", index: "index" }, ngImport: i0, template: "<div class=\"product hover-effect\" [ngClass]=\"{'width' : isScrollable, 'adjustHeightWidth': isCategoryProductList}\"\r\n [style.opacity]=\"product?.itemInventory?.openingStock == 0 ? 0.5 : 1\" [attr.style]=\"customClass\">\r\n <div class=\"prod-img\" [class.fade-out]=\"imageIndex == index\">\r\n <image-loading [imageUrl]=\"getProductImages(product)\" [hash]=\"product.itemImages?.[0]?.blurhash\"\r\n (click)=\"goToProductDetail(product)\" [theme]=\"data?.styles?.theme\"></image-loading>\r\n <div class=\"discount\" [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [simpoColor]=\"data?.styles?.background?.color\" *ngIf=\"getPercentage(product) > '0'\">{{getPercentage(product)}}%\r\n off</div>\r\n <div class=\"carousel-buttons\" *ngIf=\"(product?.itemImages?.length || 0) > 1\">\r\n <div><mat-icon (click)=\"changeImage(product, 'PREV')\">keyboard_arrow_left</mat-icon></div>\r\n <div><mat-icon (click)=\"changeImage(product, 'NEXT')\">keyboard_arrow_right</mat-icon></div>\r\n </div>\r\n </div>\r\n <div class=\"p-2 h-40\" (click)=\"goToProductDetail(product)\">\r\n <span class=\"trim-text color\">{{product.name}}</span>\r\n <div class=\"bottom\">\r\n <span class=\"m-1\">\r\n <span class=\"color\" *ngIf=\"product?.price?.discountedPrice && product.price.discountedPrice > 0\"><span\r\n [innerHTML]=\"currency\"></span> {{product?.price?.discountedPrice ?? 0}}</span>\r\n <span class=\"color\"\r\n [ngClass]=\"{'strike-through' : product?.price?.discountedPrice && product.price.discountedPrice > 0 }\"><span\r\n [innerHTML]=\"currency\"></span> {{product?.price?.sellingPrice ?? 0}}</span>\r\n </span>\r\n <div class=\"review-rating d-flex gap-2 align-items-center justify-content-between\" *ngIf=\"product?.averageRating\">\r\n <p-rating [(ngModel)]=\"product.averageRating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div class=\"total-ratings\">{{\r\n getRatings(product?.totalReviewCount)}}</div>\r\n </div>\r\n <div class=\"add-to-cart\" [style.borderColor]=\"data.styles?.background?.accentColor\" *ngIf=\"data?.content?.display?.showButton\"\r\n [ngClass]=\"{'justify-content-between p-0 d-flex': product.quantity, 'justify-content-center': !product.quantity}\"\r\n (click)=\"removeDefault($event)\">\r\n <ng-container *ngIf=\"product?.itemInventory?.openingStock\">\r\n <ng-container *ngIf=\"!product.quantity\">\r\n <div (click)=\"addItemToCart($event, product, 'ADD')\" [style.color]=\"data.styles?.background?.accentColor\">\r\n Add to Cart</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"product.quantity\">\r\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'SUBSTRACT')\"\r\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\r\n [style.color]=\"data.styles?.background?.accentColor\">-</span>\r\n <span class=\"quantity\" [style.color]=\"data.styles?.background?.accentColor\">{{product.quantity}}</span>\r\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'ADD')\"\r\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\r\n [style.color]=\"data.styles?.background?.accentColor\">+</span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!product?.itemInventory?.openingStock\">\r\n <span class=\"d-flex align-items-center justify-content-center w-100\">\r\n <mat-icon>notification_important</mat-icon>\r\n <span class=\"ml-2\">Notify</span>\r\n </span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <ng-template #loadingScreen>\r\n <ngx-skeleton-loader *ngIf=\"filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '100%',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\" />\r\n</ng-template> -->", styles: [".product{position:relative;display:flex;flex-direction:column;cursor:pointer;margin-bottom:10px;border-radius:10px;overflow:hidden;height:350px;background-color:#fff}.product .prod-img{position:relative;height:55%;width:100%;overflow:hidden;border:1.8px solid;border-radius:10px;border-color:#e5e7eb}.product .prod-img img{height:100%;width:100%;object-fit:cover}.width{margin-right:10px;min-width:195px;max-width:195px}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid transparent;border-radius:5px;padding:5px;text-align:center;align-items:center}.add-to-cart .quantity-btn{padding:5px 10px;font-weight:700}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@media screen and (max-width: 475px){.width{max-width:160px;min-width:160px;height:300px}.adjustHeightWidth{max-width:100%;min-width:100%}}.h-40{height:45%;position:relative}.bottom{position:absolute;bottom:10px;width:93%;display:flex;flex-direction:column}.discount-price{font-weight:600;font-size:14px}.color{color:#000}.trim-text{text-align:inherit!important}.product-img.fade-out{opacity:0;transform:scale(.95)}.gap-15{gap:15px}.flex-wrap{flex-wrap:wrap}.carousel-buttons{display:flex;gap:10px;position:absolute;bottom:10px;left:10px;transform:translateY(-50%);pointer-events:none}.carousel-buttons div{background:#fff;display:flex;align-items:center;border-radius:100%;height:30px;width:30px;justify-content:center;pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ImageLoadingComponent, selector: "image-loading", inputs: ["hash", "imageUrl", "index", "product", "theme"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "ngmodule", type: RatingModule }, { kind: "component", type: i4.Rating, selector: "p-rating", inputs: ["disabled", "readonly", "stars", "cancel", "iconOnClass", "iconOnStyle", "iconOffClass", "iconOffStyle", "iconCancelClass", "iconCancelStyle", "autofocus"], outputs: ["onRate", "onCancel", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmallProductListingComponent, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SmallProductListingComponent, decorators: [{
136
136
  type: Component,
137
137
  args: [{ selector: 'simpo-small-product-listing', standalone: true, imports: [
138
138
  CommonModule,
@@ -141,7 +141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
141
141
  ColorDirective,
142
142
  RatingModule,
143
143
  FormsModule
144
- ], template: "<div class=\"product hover-effect\" [ngClass]=\"{'width' : isScrollable, 'adjustHeightWidth': isCategoryProductList}\"\n [style.opacity]=\"product?.itemInventory?.openingStock == 0 ? 0.5 : 1\" [attr.style]=\"customClass\">\n <div class=\"prod-img\" [class.fade-out]=\"imageIndex == index\">\n <image-loading [imageUrl]=\"getProductImages(product)\" [hash]=\"product.itemImages?.[0]?.blurhash\"\n (click)=\"goToProductDetail(product)\" [theme]=\"data?.styles?.theme\"></image-loading>\n <div class=\"discount\" [style.backgroundColor]=\"data?.styles?.background?.color\"\n [simpoColor]=\"data?.styles?.background?.color\" *ngIf=\"getPercentage(product) > '0'\">{{getPercentage(product)}}%\n off</div>\n <div class=\"carousel-buttons\" *ngIf=\"(product?.itemImages?.length || 0) > 1\">\n <div><mat-icon (click)=\"changeImage(product, 'PREV')\">keyboard_arrow_left</mat-icon></div>\n <div><mat-icon (click)=\"changeImage(product, 'NEXT')\">keyboard_arrow_right</mat-icon></div>\n </div>\n </div>\n <div class=\"p-2 h-40\" (click)=\"goToProductDetail(product)\">\n <span class=\"trim-text color\">{{product.name}}</span>\n <div class=\"bottom\">\n <span class=\"m-1\">\n <span class=\"color\" *ngIf=\"product?.price?.discountedPrice && product.price.discountedPrice > 0\"><span\n [innerHTML]=\"currency\"></span> {{product?.price?.discountedPrice ?? 0}}</span>\n <span class=\"color\"\n [ngClass]=\"{'strike-through' : product?.price?.discountedPrice && product.price.discountedPrice > 0 }\"><span\n [innerHTML]=\"currency\"></span> {{product?.price?.sellingPrice ?? 0}}</span>\n </span>\n <div class=\"review-rating d-flex gap-2 align-items-center justify-content-between\" *ngIf=\"product?.averageRating\">\n <p-rating [(ngModel)]=\"product.averageRating\" [cancel]=\"false\" [readonly]=\"true\" />\n <div class=\"total-ratings\">{{\n getRatings(product?.totalReviewCount)}}</div>\n </div>\n <div class=\"add-to-cart\" [style.borderColor]=\"data.styles?.background?.accentColor\" *ngIf=\"data?.content?.display?.showButton\"\n [ngClass]=\"{'justify-content-between p-0 d-flex': product.quantity, 'justify-content-center': !product.quantity}\"\n (click)=\"removeDefault($event)\">\n <ng-container *ngIf=\"product?.itemInventory?.openingStock\">\n <ng-container *ngIf=\"!product.quantity\">\n <div (click)=\"addItemToCart($event, product, 'ADD')\" [style.color]=\"data.styles?.background?.accentColor\">\n Add to Cart</div>\n </ng-container>\n <ng-container *ngIf=\"product.quantity\">\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'SUBSTRACT')\"\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\n [style.color]=\"data.styles?.background?.accentColor\">-</span>\n <span class=\"quantity\" [style.color]=\"data.styles?.background?.accentColor\">{{product.quantity}}</span>\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'ADD')\"\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\n [style.color]=\"data.styles?.background?.accentColor\">+</span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!product?.itemInventory?.openingStock\">\n <span class=\"d-flex align-items-center justify-content-center w-100\">\n <mat-icon>notification_important</mat-icon>\n <span class=\"ml-2\">Notify</span>\n </span>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<!-- <ng-template #loadingScreen>\n <ngx-skeleton-loader *ngIf=\"filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\n width: '100%',\n height: '100%',\n 'border-radius': '10px',\n 'position': 'relative',\n 'right': '5px'\n }\" />\n</ng-template> -->", styles: [".product{position:relative;display:flex;flex-direction:column;cursor:pointer;margin-bottom:10px;border-radius:10px;overflow:hidden;height:350px;background-color:#fff}.product .prod-img{position:relative;height:55%;width:100%;overflow:hidden;border:1.8px solid;border-radius:10px;border-color:#e5e7eb}.product .prod-img img{height:100%;width:100%;object-fit:cover}.width{margin-right:10px;min-width:195px;max-width:195px}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid transparent;border-radius:5px;padding:5px;text-align:center;align-items:center}.add-to-cart .quantity-btn{padding:5px 10px;font-weight:700}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@media screen and (max-width: 475px){.width{max-width:160px;min-width:160px;height:300px}.adjustHeightWidth{max-width:100%;min-width:100%}}.h-40{height:45%;position:relative}.bottom{position:absolute;bottom:10px;width:93%;display:flex;flex-direction:column}.discount-price{font-weight:600;font-size:14px}.color{color:#000}.trim-text{text-align:inherit!important}.product-img.fade-out{opacity:0;transform:scale(.95)}.gap-15{gap:15px}.flex-wrap{flex-wrap:wrap}.carousel-buttons{display:flex;gap:10px;position:absolute;bottom:10px;left:10px;transform:translateY(-50%);pointer-events:none}.carousel-buttons div{background:#fff;display:flex;align-items:center;border-radius:100%;height:30px;width:30px;justify-content:center;pointer-events:auto}\n"] }]
144
+ ], template: "<div class=\"product hover-effect\" [ngClass]=\"{'width' : isScrollable, 'adjustHeightWidth': isCategoryProductList}\"\r\n [style.opacity]=\"product?.itemInventory?.openingStock == 0 ? 0.5 : 1\" [attr.style]=\"customClass\">\r\n <div class=\"prod-img\" [class.fade-out]=\"imageIndex == index\">\r\n <image-loading [imageUrl]=\"getProductImages(product)\" [hash]=\"product.itemImages?.[0]?.blurhash\"\r\n (click)=\"goToProductDetail(product)\" [theme]=\"data?.styles?.theme\"></image-loading>\r\n <div class=\"discount\" [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [simpoColor]=\"data?.styles?.background?.color\" *ngIf=\"getPercentage(product) > '0'\">{{getPercentage(product)}}%\r\n off</div>\r\n <div class=\"carousel-buttons\" *ngIf=\"(product?.itemImages?.length || 0) > 1\">\r\n <div><mat-icon (click)=\"changeImage(product, 'PREV')\">keyboard_arrow_left</mat-icon></div>\r\n <div><mat-icon (click)=\"changeImage(product, 'NEXT')\">keyboard_arrow_right</mat-icon></div>\r\n </div>\r\n </div>\r\n <div class=\"p-2 h-40\" (click)=\"goToProductDetail(product)\">\r\n <span class=\"trim-text color\">{{product.name}}</span>\r\n <div class=\"bottom\">\r\n <span class=\"m-1\">\r\n <span class=\"color\" *ngIf=\"product?.price?.discountedPrice && product.price.discountedPrice > 0\"><span\r\n [innerHTML]=\"currency\"></span> {{product?.price?.discountedPrice ?? 0}}</span>\r\n <span class=\"color\"\r\n [ngClass]=\"{'strike-through' : product?.price?.discountedPrice && product.price.discountedPrice > 0 }\"><span\r\n [innerHTML]=\"currency\"></span> {{product?.price?.sellingPrice ?? 0}}</span>\r\n </span>\r\n <div class=\"review-rating d-flex gap-2 align-items-center justify-content-between\" *ngIf=\"product?.averageRating\">\r\n <p-rating [(ngModel)]=\"product.averageRating\" [cancel]=\"false\" [readonly]=\"true\" />\r\n <div class=\"total-ratings\">{{\r\n getRatings(product?.totalReviewCount)}}</div>\r\n </div>\r\n <div class=\"add-to-cart\" [style.borderColor]=\"data.styles?.background?.accentColor\" *ngIf=\"data?.content?.display?.showButton\"\r\n [ngClass]=\"{'justify-content-between p-0 d-flex': product.quantity, 'justify-content-center': !product.quantity}\"\r\n (click)=\"removeDefault($event)\">\r\n <ng-container *ngIf=\"product?.itemInventory?.openingStock\">\r\n <ng-container *ngIf=\"!product.quantity\">\r\n <div (click)=\"addItemToCart($event, product, 'ADD')\" [style.color]=\"data.styles?.background?.accentColor\">\r\n Add to Cart</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"product.quantity\">\r\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'SUBSTRACT')\"\r\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\r\n [style.color]=\"data.styles?.background?.accentColor\">-</span>\r\n <span class=\"quantity\" [style.color]=\"data.styles?.background?.accentColor\">{{product.quantity}}</span>\r\n <span class=\"quantity-btn\" (click)=\"addItemToCart($event, product, 'ADD')\"\r\n [style.backgroundColor]=\"getSupportingColor(data.styles?.background?.accentColor)\"\r\n [style.color]=\"data.styles?.background?.accentColor\">+</span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!product?.itemInventory?.openingStock\">\r\n <span class=\"d-flex align-items-center justify-content-center w-100\">\r\n <mat-icon>notification_important</mat-icon>\r\n <span class=\"ml-2\">Notify</span>\r\n </span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <ng-template #loadingScreen>\r\n <ngx-skeleton-loader *ngIf=\"filterLoading\" count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '100%',\r\n 'border-radius': '10px',\r\n 'position': 'relative',\r\n 'right': '5px'\r\n }\" />\r\n</ng-template> -->", styles: [".product{position:relative;display:flex;flex-direction:column;cursor:pointer;margin-bottom:10px;border-radius:10px;overflow:hidden;height:350px;background-color:#fff}.product .prod-img{position:relative;height:55%;width:100%;overflow:hidden;border:1.8px solid;border-radius:10px;border-color:#e5e7eb}.product .prod-img img{height:100%;width:100%;object-fit:cover}.width{margin-right:10px;min-width:195px;max-width:195px}.styling{height:30px;width:30px;border-radius:50%;background-color:#fff;position:absolute;bottom:0;right:-12px}.strike-through{text-decoration:line-through;color:#d3d3d3;font-size:12px;margin-left:5px;position:relative}.add-to-cart{width:100%;cursor:pointer;background-color:#fff;border:1.5px solid transparent;border-radius:5px;padding:5px;text-align:center;align-items:center}.add-to-cart .quantity-btn{padding:5px 10px;font-weight:700}.discount{position:absolute;top:0;padding:5px;width:60px;text-align:center;font-size:12px;border-bottom-right-radius:3px}@media screen and (max-width: 475px){.width{max-width:160px;min-width:160px;height:300px}.adjustHeightWidth{max-width:100%;min-width:100%}}.h-40{height:45%;position:relative}.bottom{position:absolute;bottom:10px;width:93%;display:flex;flex-direction:column}.discount-price{font-weight:600;font-size:14px}.color{color:#000}.trim-text{text-align:inherit!important}.product-img.fade-out{opacity:0;transform:scale(.95)}.gap-15{gap:15px}.flex-wrap{flex-wrap:wrap}.carousel-buttons{display:flex;gap:10px;position:absolute;bottom:10px;left:10px;transform:translateY(-50%);pointer-events:none}.carousel-buttons div{background:#fff;display:flex;align-items:center;border-radius:100%;height:30px;width:30px;justify-content:center;pointer-events:auto}\n"] }]
145
145
  }], ctorParameters: () => [{ type: i1.CartService }, { type: i2.Router }], propDecorators: { product: [{
146
146
  type: Input
147
147
  }], data: [{
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
155
155
  }], index: [{
156
156
  type: Input
157
157
  }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hbGwtcHJvZHVjdC1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3NtYWxsLXByb2R1Y3QtbGlzdGluZy9zbWFsbC1wcm9kdWN0LWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc21hbGwtcHJvZHVjdC1saXN0aW5nL3NtYWxsLXByb2R1Y3QtbGlzdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWdCN0MsTUFBTSxPQUFPLDRCQUE0QjtJQUV2QyxZQUNtQixXQUF3QixFQUN4QixNQUFjO1FBRGQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUd6QixjQUFTLEdBQTBCLElBQUksQ0FBQztRQUl2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LElBQUksT0FBTyxFQUFDLENBQUM7WUFDdEQsT0FBTyxDQUFDLFdBQVcsR0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2hELENBQUM7YUFDSSxJQUFHLFdBQVcsR0FBRyxPQUFPLEVBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsV0FBVyxHQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakQsQ0FBQzthQUNHLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQzsrR0F2SVUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsK1BDM0J6QyxpL0hBaUVrQixrdkREaERkLFlBQVksaU9BQ1osT0FBTywySUFDUCxxQkFBcUIscUhBQ3JCLGNBQWMsZ0ZBQ2QsWUFBWSx3VEFDWixXQUFXOzs0RkFLRiw0QkFBNEI7a0JBZHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLE9BQU87d0JBQ1AscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osV0FBVztxQkFDWjtxR0FZUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdGVtVmFyaWFudCwgUHJvZHVjdCB9IGZyb20gJy4uLy4uL3N0eWxlcy9wcm9kdWN0Lm1vZGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCVVNJTkVTU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MuY29uc3RhbnQnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEltYWdlTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW1hZ2UtbG9hZGluZy9pbWFnZS1sb2FkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYXRpbmdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhdGluZyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tc21hbGwtcHJvZHVjdC1saXN0aW5nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIEltYWdlTG9hZGluZ0NvbXBvbmVudCxcbiAgICBDb2xvckRpcmVjdGl2ZSxcbiAgICBSYXRpbmdNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYWxsLXByb2R1Y3QtbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zbWFsbC1wcm9kdWN0LWxpc3RpbmcuY29tcG9uZW50LmNzcydcbn0pXG5leHBvcnQgY2xhc3MgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgcHJpdmF0ZSBVU0VSX0NBUlQ6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHByb2R1Y3QhOiBQcm9kdWN0O1xuICBASW5wdXQoKSBkYXRhPzogYW55O1xuICBASW5wdXQoKSBpc1Njcm9sbGFibGU/OiBib29sZWFuO1xuICBASW5wdXQoKSBpc0NhdGVnb3J5UHJvZHVjdExpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluZGV4ITpudW1iZXJcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgYWRkSXRlbVRvQ2FydChldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCwgcHJvZHVjdDogUHJvZHVjdCwgdHlwZTogJ0FERCcgfCAnU1VCU1RSQUNUJykge1xuICAgIC8vIGlmICh0aGlzLmlzSXRlbU91dE9mU3RvY2socHJvZHVjdCkpIHtcbiAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cblxuICAgIGlmICghcHJvZHVjdD8ucXVhbnRpdHkpXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ID0gMDtcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xuICAgICAgcHJvZHVjdC5xdWFudGl0eSArPSAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHByb2R1Y3QucXVhbnRpdHkgLT0gMTtcbiAgICB9XG5cbiAgICBpZiAocHJvZHVjdD8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpO1xuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eTtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHByb2R1Y3QsIGl0ZW1WYXJpZW50LnZhcmlhbnRJZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0KTtcbiAgICB9XG4gICAgaWYgKHByb2R1Y3QucXVhbnRpdHkpIHtcbiAgICAgIGxldCBpc1ByZXNlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHByb2R1Y3QudmFyaWVudElkKSB7XG4gICAgICAgICAgaXRlbS5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHk7XG4gICAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmICghaXNQcmVzZW50KVxuICAgICAgICB0aGlzLlVTRVJfQ0FSVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcmVtb3ZlRGVmYXVsdChldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZ2V0SXRlbVZhcmllbnQocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkOiBzdHJpbmcpOiBJdGVtVmFyaWFudCB8IG51bGwge1xuICAgIGxldCBzZWxlY3RlZFZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IG51bGw7XG4gICAgcHJvZHVjdD8uaXRlbVZhcmlhbnQ/LmZvckVhY2goKHZhcmllbnQ6IEl0ZW1WYXJpYW50KSA9PiB7XG4gICAgICBpZiAodmFyaWVudC52YXJpYW50SWQgPT0gdmFyaWVudElkKVxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xuICAgIH0pXG5cbiAgICByZXR1cm4gc2VsZWN0ZWRWYXJpZW50O1xuICB9XG4gIGdldFBlcmNlbnRhZ2UocHJvZHVjdDogUHJvZHVjdCkge1xuICAgIHJldHVybiAoKChwcm9kdWN0Py5wcmljZT8uc2VsbGluZ1ByaWNlIC0gcHJvZHVjdD8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZSkgLyBwcm9kdWN0Py5wcmljZT8uc2VsbGluZ1ByaWNlKSAqIDEwMCkudG9GaXhlZCgwKTtcbiAgfVxuICBnb1RvUHJvZHVjdERldGFpbChwcm9kdWN0OiBQcm9kdWN0KSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2BkZXRhaWxzYF0sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHByb2R1Y3QuaXRlbUlkIH0gfSk7XG4gIH1cbiAgZ2V0U3VwcG9ydGluZ0NvbG9yKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBoZXggPSBjb2xvcjtcbiAgICBpZiAoIWhleClcbiAgICAgIHJldHVybiBjb2xvcjtcbiAgICBoZXggPSBoZXgucmVwbGFjZSgvXiMvLCAnJyk7XG5cbiAgICBsZXQgYmlnaW50ID0gcGFyc2VJbnQoaGV4LCAxNik7XG4gICAgbGV0IHIgPSAoYmlnaW50ID4+IDE2KSAmIDI1NTtcbiAgICBsZXQgZyA9IChiaWdpbnQgPj4gOCkgJiAyNTU7XG4gICAgbGV0IGIgPSBiaWdpbnQgJiAyNTU7XG5cbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgMC40KWA7XG4gIH1cblxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xuICB9XG5cbiAgZ2V0UHJvZHVjdEltYWdlcyhwcm9kdWN0OiBhbnkpIHtcbiAgICBpZighcHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXSlcbiAgICAgIHByb2R1Y3RbJ2N1cnJlbnRJbWFnZUluZGV4J10gPSAwO1xuXG4gICAgbGV0IGltYWdlSW5kZXg6bnVtYmVyID0gcHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXSAlIHByb2R1Y3Q/LlsnaXRlbUltYWdlcyddPy5sZW5ndGg7XG4gICAgcmV0dXJuIHByb2R1Y3Q/LlsnaXRlbUltYWdlcyddPy5baW1hZ2VJbmRleF0/LmltZ1VybFxuICB9XG5cbiAgaW1hZ2VJbmRleDogbnVtYmVyID0gLTE7XG4gIGFzeW5jIGNoYW5nZUltYWdlKHByb2R1Y3Q6IGFueSwgYWN0aW9uOiAnUFJFVicgfCAnTkVYVCcpIHtcbiAgICB0aGlzLmltYWdlSW5kZXggPSB0aGlzLmluZGV4O1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAzMDApKTtcblxuICAgIGlmKGFjdGlvbiA9PT0gJ05FWFQnKSB7XG4gICAgICBwcm9kdWN0WydjdXJyZW50SW1hZ2VJbmRleCddKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2R1Y3RbJ2N1cnJlbnRJbWFnZUluZGV4J10tLTtcblxuICAgICAgaWYocHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXSA8IDApXG4gICAgICAgIHByb2R1Y3RbJ2N1cnJlbnRJbWFnZUluZGV4J10gPSBwcm9kdWN0Py5bJ2l0ZW1JbWFnZXMnXT8ubGVuZ3RoIC0gMTtcbiAgICB9XG4gICAgICB0aGlzLmltYWdlSW5kZXggPSAtMTtcbiAgfVxuICBnZXRSYXRpbmdzKG5vb2ZyYXRpbmdzIDogYW55KXtcbiAgICBpZihub29mcmF0aW5ncyA+PSAxMDAwICYmIG5vb2ZyYXRpbmdzIDw9IDEwMDAwKXtcbiAgICAgIHJldHVybiAobm9vZnJhdGluZ3MvMTAwMCkudG9GaXhlZCgxKSArIFwiSytcIjtcbiAgICB9XG4gICAgZWxzZSBpZihub29mcmF0aW5ncyA+IDEwMDAwICYmIG5vb2ZyYXRpbmdzIDw9IDEwMDAwMCl7XG4gICAgICByZXR1cm4gKG5vb2ZyYXRpbmdzLzEwMDAwKS50b0ZpeGVkKDEpICsgXCJLK1wiO1xuICAgIH1cbiAgICBlbHNlIGlmKG5vb2ZyYXRpbmdzID4gMTAwMDAwICYmIG5vb2ZyYXRpbmdzIDw9IDEwMDAwMDApe1xuICAgICAgcmV0dXJuIChub29mcmF0aW5ncy8xMDAwMDApLnRvRml4ZWQoMSkgKyBcIkwrXCI7XG4gICAgfVxuICAgIGVsc2UgaWYobm9vZnJhdGluZ3MgPiAxMDAwMDAwKXtcbiAgICAgIHJldHVybiAobm9vZnJhdGluZ3MvMTAwMDAwMCkudG9GaXhlZCgxKSArIFwiTStcIjtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHJldHVybiBub29mcmF0aW5ncztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwcm9kdWN0IGhvdmVyLWVmZmVjdFwiIFtuZ0NsYXNzXT1cInsnd2lkdGgnIDogaXNTY3JvbGxhYmxlLCAnYWRqdXN0SGVpZ2h0V2lkdGgnOiBpc0NhdGVnb3J5UHJvZHVjdExpc3R9XCJcbiAgW3N0eWxlLm9wYWNpdHldPVwicHJvZHVjdD8uaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrID09IDAgPyAwLjUgOiAxXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cbiAgPGRpdiBjbGFzcz1cInByb2QtaW1nXCIgW2NsYXNzLmZhZGUtb3V0XT1cImltYWdlSW5kZXggPT0gaW5kZXhcIj5cbiAgICA8aW1hZ2UtbG9hZGluZyBbaW1hZ2VVcmxdPVwiZ2V0UHJvZHVjdEltYWdlcyhwcm9kdWN0KVwiIFtoYXNoXT1cInByb2R1Y3QuaXRlbUltYWdlcz8uWzBdPy5ibHVyaGFzaFwiXG4gICAgICAoY2xpY2spPVwiZ29Ub1Byb2R1Y3REZXRhaWwocHJvZHVjdClcIiBbdGhlbWVdPVwiZGF0YT8uc3R5bGVzPy50aGVtZVwiPjwvaW1hZ2UtbG9hZGluZz5cbiAgICA8ZGl2IGNsYXNzPVwiZGlzY291bnRcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIlxuICAgICAgW3NpbXBvQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiICpuZ0lmPVwiZ2V0UGVyY2VudGFnZShwcm9kdWN0KSA+ICcwJ1wiPnt7Z2V0UGVyY2VudGFnZShwcm9kdWN0KX19JVxuICAgICAgb2ZmPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWJ1dHRvbnNcIiAqbmdJZj1cIihwcm9kdWN0Py5pdGVtSW1hZ2VzPy5sZW5ndGggfHwgMCkgPiAxXCI+XG4gICAgICA8ZGl2PjxtYXQtaWNvbiAoY2xpY2spPVwiY2hhbmdlSW1hZ2UocHJvZHVjdCwgJ1BSRVYnKVwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPjwvZGl2PlxuICAgICAgPGRpdj48bWF0LWljb24gKGNsaWNrKT1cImNoYW5nZUltYWdlKHByb2R1Y3QsICdORVhUJylcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicC0yIGgtNDBcIiAoY2xpY2spPVwiZ29Ub1Byb2R1Y3REZXRhaWwocHJvZHVjdClcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRyaW0tdGV4dCBjb2xvclwiPnt7cHJvZHVjdC5uYW1lfX08L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImJvdHRvbVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtLTFcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvclwiICpuZ0lmPVwicHJvZHVjdD8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZSAmJiBwcm9kdWN0LnByaWNlLmRpc2NvdW50ZWRQcmljZSA+IDBcIj48c3BhblxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJjdXJyZW5jeVwiPjwvc3Bhbj4ge3twcm9kdWN0Py5wcmljZT8uZGlzY291bnRlZFByaWNlID8/IDB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydzdHJpa2UtdGhyb3VnaCcgOiBwcm9kdWN0Py5wcmljZT8uZGlzY291bnRlZFByaWNlICYmIHByb2R1Y3QucHJpY2UuZGlzY291bnRlZFByaWNlID4gMCB9XCI+PHNwYW5cbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY3VycmVuY3lcIj48L3NwYW4+IHt7cHJvZHVjdD8ucHJpY2U/LnNlbGxpbmdQcmljZSA/PyAwfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LXJhdGluZyBkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCIgKm5nSWY9XCJwcm9kdWN0Py5hdmVyYWdlUmF0aW5nXCI+XG4gICAgICAgIDxwLXJhdGluZyBbKG5nTW9kZWwpXT1cInByb2R1Y3QuYXZlcmFnZVJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbC1yYXRpbmdzXCI+e3tcbiAgICAgICAgICBnZXRSYXRpbmdzKHByb2R1Y3Q/LnRvdGFsUmV2aWV3Q291bnQpfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFkZC10by1jYXJ0XCIgW3N0eWxlLmJvcmRlckNvbG9yXT1cImRhdGEuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiZGF0YT8uY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnanVzdGlmeS1jb250ZW50LWJldHdlZW4gcC0wIGQtZmxleCc6IHByb2R1Y3QucXVhbnRpdHksICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogIXByb2R1Y3QucXVhbnRpdHl9XCJcbiAgICAgICAgKGNsaWNrKT1cInJlbW92ZURlZmF1bHQoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZHVjdD8uaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcm9kdWN0LnF1YW50aXR5XCI+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ0FERCcpXCIgW3N0eWxlLmNvbG9yXT1cImRhdGEuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxuICAgICAgICAgICAgICBBZGQgdG8gQ2FydDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9kdWN0LnF1YW50aXR5XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1YW50aXR5LWJ0blwiIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ1NVQlNUUkFDVCcpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZGF0YS5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhLnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj4tPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWFudGl0eVwiIFtzdHlsZS5jb2xvcl09XCJkYXRhLnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e3Byb2R1Y3QucXVhbnRpdHl9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVhbnRpdHktYnRuXCIgKGNsaWNrKT1cImFkZEl0ZW1Ub0NhcnQoJGV2ZW50LCBwcm9kdWN0LCAnQUREJylcIlxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldFN1cHBvcnRpbmdDb2xvcihkYXRhLnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IpXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGEuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPis8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXByb2R1Y3Q/Lml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9ja1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+bm90aWZpY2F0aW9uX2ltcG9ydGFudDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5Ob3RpZnk8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIDxuZy10ZW1wbGF0ZSAjbG9hZGluZ1NjcmVlbj5cbiAgPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJmaWx0ZXJMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcbiAgICAgICAgICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxuICAgICAgICAgICdyaWdodCc6ICc1cHgnXG4gICAgICAgIH1cIiAvPlxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hbGwtcHJvZHVjdC1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3NtYWxsLXByb2R1Y3QtbGlzdGluZy9zbWFsbC1wcm9kdWN0LWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc21hbGwtcHJvZHVjdC1saXN0aW5nL3NtYWxsLXByb2R1Y3QtbGlzdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWdCN0MsTUFBTSxPQUFPLDRCQUE0QjtJQUV2QyxZQUNtQixXQUF3QixFQUN4QixNQUFjO1FBRGQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUd6QixjQUFTLEdBQTBCLElBQUksQ0FBQztRQUl2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LElBQUksT0FBTyxFQUFDLENBQUM7WUFDdEQsT0FBTyxDQUFDLFdBQVcsR0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2hELENBQUM7YUFDSSxJQUFHLFdBQVcsR0FBRyxPQUFPLEVBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsV0FBVyxHQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakQsQ0FBQzthQUNHLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQzs4R0F2SVUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsK1BDM0J6QyxtbklBaUVrQixrdkREaERkLFlBQVksaU9BQ1osT0FBTywySUFDUCxxQkFBcUIscUhBQ3JCLGNBQWMsZ0ZBQ2QsWUFBWSx3VEFDWixXQUFXOzsyRkFLRiw0QkFBNEI7a0JBZHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLE9BQU87d0JBQ1AscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osV0FBVztxQkFDWjtxR0FZUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEl0ZW1WYXJpYW50LCBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCVVNJTkVTU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEltYWdlTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW1hZ2UtbG9hZGluZy9pbWFnZS1sb2FkaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJhdGluZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmF0aW5nJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXNtYWxsLXByb2R1Y3QtbGlzdGluZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgSW1hZ2VMb2FkaW5nQ29tcG9uZW50LFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICBSYXRpbmdNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYWxsLXByb2R1Y3QtbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NtYWxsLXByb2R1Y3QtbGlzdGluZy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hbGxQcm9kdWN0TGlzdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIFVTRVJfQ0FSVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwcm9kdWN0ITogUHJvZHVjdDtcclxuICBASW5wdXQoKSBkYXRhPzogYW55O1xyXG4gIEBJbnB1dCgpIGlzU2Nyb2xsYWJsZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaXNDYXRlZ29yeVByb2R1Y3RMaXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaW5kZXghOm51bWJlclxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBhZGRJdGVtVG9DYXJ0KGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50LCBwcm9kdWN0OiBQcm9kdWN0LCB0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnKSB7XHJcbiAgICAvLyBpZiAodGhpcy5pc0l0ZW1PdXRPZlN0b2NrKHByb2R1Y3QpKSB7XHJcbiAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0NhcnQnLCBkZXRhaWw6ICdJdGVtIGlzIG5vdCBhdmFpbGFibGUgYXMgb2Ygbm93LiBXZSB3aWxsIG5vdGlmeSB5b3Ugb25jZSBhdmFpbGFibGUnIH0pO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKCFwcm9kdWN0Py5xdWFudGl0eSlcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSA9IDA7XHJcbiAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICBwcm9kdWN0LnF1YW50aXR5ICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcHJvZHVjdC5xdWFudGl0eSAtPSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9kdWN0Py5pdGVtVmFyaWFudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KHByb2R1Y3QsIHByb2R1Y3QudmFyaWVudElkKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuYWRkSXRlbVRvQ2FydChwcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQocHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICBsZXQgaXNQcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS52YXJpZW50SWQgPT0gcHJvZHVjdC52YXJpZW50SWQpIHtcclxuICAgICAgICAgIGl0ZW0ucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgICAgaXNQcmVzZW50ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGlmICghaXNQcmVzZW50KVxyXG4gICAgICAgIHRoaXMuVVNFUl9DQVJUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXMocHJvZHVjdCwgcHJvZHVjdC52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSBwcm9kdWN0LnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZURlZmF1bHQoZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbVZhcmllbnQocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkOiBzdHJpbmcpOiBJdGVtVmFyaWFudCB8IG51bGwge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gbnVsbDtcclxuICAgIHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCkgPT4ge1xyXG4gICAgICBpZiAodmFyaWVudC52YXJpYW50SWQgPT0gdmFyaWVudElkKVxyXG4gICAgICAgIHNlbGVjdGVkVmFyaWVudCA9IHZhcmllbnQ7XHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZFZhcmllbnQ7XHJcbiAgfVxyXG4gIGdldFBlcmNlbnRhZ2UocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgcmV0dXJuICgoKHByb2R1Y3Q/LnByaWNlPy5zZWxsaW5nUHJpY2UgLSBwcm9kdWN0Py5wcmljZT8uZGlzY291bnRlZFByaWNlKSAvIHByb2R1Y3Q/LnByaWNlPy5zZWxsaW5nUHJpY2UpICogMTAwKS50b0ZpeGVkKDApO1xyXG4gIH1cclxuICBnb1RvUHJvZHVjdERldGFpbChwcm9kdWN0OiBQcm9kdWN0KSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYGRldGFpbHNgXSwgeyBxdWVyeVBhcmFtczogeyBpZDogcHJvZHVjdC5pdGVtSWQgfSB9KTtcclxuICB9XHJcbiAgZ2V0U3VwcG9ydGluZ0NvbG9yKGNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGhleCA9IGNvbG9yO1xyXG4gICAgaWYgKCFoZXgpXHJcbiAgICAgIHJldHVybiBjb2xvcjtcclxuICAgIGhleCA9IGhleC5yZXBsYWNlKC9eIy8sICcnKTtcclxuXHJcbiAgICBsZXQgYmlnaW50ID0gcGFyc2VJbnQoaGV4LCAxNik7XHJcbiAgICBsZXQgciA9IChiaWdpbnQgPj4gMTYpICYgMjU1O1xyXG4gICAgbGV0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xyXG4gICAgbGV0IGIgPSBiaWdpbnQgJiAyNTU7XHJcblxyXG4gICAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sIDAuNClgO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbmN5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQlVTSU5FU1NfQ09OU1RBTlRTLkNVUlJFTkNZO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdEltYWdlcyhwcm9kdWN0OiBhbnkpIHtcclxuICAgIGlmKCFwcm9kdWN0WydjdXJyZW50SW1hZ2VJbmRleCddKVxyXG4gICAgICBwcm9kdWN0WydjdXJyZW50SW1hZ2VJbmRleCddID0gMDtcclxuXHJcbiAgICBsZXQgaW1hZ2VJbmRleDpudW1iZXIgPSBwcm9kdWN0WydjdXJyZW50SW1hZ2VJbmRleCddICUgcHJvZHVjdD8uWydpdGVtSW1hZ2VzJ10/Lmxlbmd0aDtcclxuICAgIHJldHVybiBwcm9kdWN0Py5bJ2l0ZW1JbWFnZXMnXT8uW2ltYWdlSW5kZXhdPy5pbWdVcmxcclxuICB9XHJcblxyXG4gIGltYWdlSW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIGFzeW5jIGNoYW5nZUltYWdlKHByb2R1Y3Q6IGFueSwgYWN0aW9uOiAnUFJFVicgfCAnTkVYVCcpIHtcclxuICAgIHRoaXMuaW1hZ2VJbmRleCA9IHRoaXMuaW5kZXg7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwKSk7XHJcblxyXG4gICAgaWYoYWN0aW9uID09PSAnTkVYVCcpIHtcclxuICAgICAgcHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXSsrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXS0tO1xyXG5cclxuICAgICAgaWYocHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXSA8IDApXHJcbiAgICAgICAgcHJvZHVjdFsnY3VycmVudEltYWdlSW5kZXgnXSA9IHByb2R1Y3Q/LlsnaXRlbUltYWdlcyddPy5sZW5ndGggLSAxO1xyXG4gICAgfVxyXG4gICAgICB0aGlzLmltYWdlSW5kZXggPSAtMTtcclxuICB9XHJcbiAgZ2V0UmF0aW5ncyhub29mcmF0aW5ncyA6IGFueSl7XHJcbiAgICBpZihub29mcmF0aW5ncyA+PSAxMDAwICYmIG5vb2ZyYXRpbmdzIDw9IDEwMDAwKXtcclxuICAgICAgcmV0dXJuIChub29mcmF0aW5ncy8xMDAwKS50b0ZpeGVkKDEpICsgXCJLK1wiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihub29mcmF0aW5ncyA+IDEwMDAwICYmIG5vb2ZyYXRpbmdzIDw9IDEwMDAwMCl7XHJcbiAgICAgIHJldHVybiAobm9vZnJhdGluZ3MvMTAwMDApLnRvRml4ZWQoMSkgKyBcIksrXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKG5vb2ZyYXRpbmdzID4gMTAwMDAwICYmIG5vb2ZyYXRpbmdzIDw9IDEwMDAwMDApe1xyXG4gICAgICByZXR1cm4gKG5vb2ZyYXRpbmdzLzEwMDAwMCkudG9GaXhlZCgxKSArIFwiTCtcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYobm9vZnJhdGluZ3MgPiAxMDAwMDAwKXtcclxuICAgICAgcmV0dXJuIChub29mcmF0aW5ncy8xMDAwMDAwKS50b0ZpeGVkKDEpICsgXCJNK1wiO1xyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgcmV0dXJuIG5vb2ZyYXRpbmdzO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicHJvZHVjdCBob3Zlci1lZmZlY3RcIiBbbmdDbGFzc109XCJ7J3dpZHRoJyA6IGlzU2Nyb2xsYWJsZSwgJ2FkanVzdEhlaWdodFdpZHRoJzogaXNDYXRlZ29yeVByb2R1Y3RMaXN0fVwiXHJcbiAgW3N0eWxlLm9wYWNpdHldPVwicHJvZHVjdD8uaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrID09IDAgPyAwLjUgOiAxXCIgW2F0dHIuc3R5bGVdPVwiY3VzdG9tQ2xhc3NcIj5cclxuICA8ZGl2IGNsYXNzPVwicHJvZC1pbWdcIiBbY2xhc3MuZmFkZS1vdXRdPVwiaW1hZ2VJbmRleCA9PSBpbmRleFwiPlxyXG4gICAgPGltYWdlLWxvYWRpbmcgW2ltYWdlVXJsXT1cImdldFByb2R1Y3RJbWFnZXMocHJvZHVjdClcIiBbaGFzaF09XCJwcm9kdWN0Lml0ZW1JbWFnZXM/LlswXT8uYmx1cmhhc2hcIlxyXG4gICAgICAoY2xpY2spPVwiZ29Ub1Byb2R1Y3REZXRhaWwocHJvZHVjdClcIiBbdGhlbWVdPVwiZGF0YT8uc3R5bGVzPy50aGVtZVwiPjwvaW1hZ2UtbG9hZGluZz5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXNjb3VudFwiIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiXHJcbiAgICAgIFtzaW1wb0NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIiAqbmdJZj1cImdldFBlcmNlbnRhZ2UocHJvZHVjdCkgPiAnMCdcIj57e2dldFBlcmNlbnRhZ2UocHJvZHVjdCl9fSVcclxuICAgICAgb2ZmPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtYnV0dG9uc1wiICpuZ0lmPVwiKHByb2R1Y3Q/Lml0ZW1JbWFnZXM/Lmxlbmd0aCB8fCAwKSA+IDFcIj5cclxuICAgICAgPGRpdj48bWF0LWljb24gKGNsaWNrKT1cImNoYW5nZUltYWdlKHByb2R1Y3QsICdQUkVWJylcIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj48L2Rpdj5cclxuICAgICAgPGRpdj48bWF0LWljb24gKGNsaWNrKT1cImNoYW5nZUltYWdlKHByb2R1Y3QsICdORVhUJylcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicC0yIGgtNDBcIiAoY2xpY2spPVwiZ29Ub1Byb2R1Y3REZXRhaWwocHJvZHVjdClcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwidHJpbS10ZXh0IGNvbG9yXCI+e3twcm9kdWN0Lm5hbWV9fTwvc3Bhbj5cclxuICAgIDxkaXYgY2xhc3M9XCJib3R0b21cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtLTFcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbG9yXCIgKm5nSWY9XCJwcm9kdWN0Py5wcmljZT8uZGlzY291bnRlZFByaWNlICYmIHByb2R1Y3QucHJpY2UuZGlzY291bnRlZFByaWNlID4gMFwiPjxzcGFuXHJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY3VycmVuY3lcIj48L3NwYW4+IHt7cHJvZHVjdD8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZSA/PyAwfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvclwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3N0cmlrZS10aHJvdWdoJyA6IHByb2R1Y3Q/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UgJiYgcHJvZHVjdC5wcmljZS5kaXNjb3VudGVkUHJpY2UgPiAwIH1cIj48c3BhblxyXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImN1cnJlbmN5XCI+PC9zcGFuPiB7e3Byb2R1Y3Q/LnByaWNlPy5zZWxsaW5nUHJpY2UgPz8gMH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctcmF0aW5nIGQtZmxleCBnYXAtMiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiAqbmdJZj1cInByb2R1Y3Q/LmF2ZXJhZ2VSYXRpbmdcIj5cclxuICAgICAgICA8cC1yYXRpbmcgWyhuZ01vZGVsKV09XCJwcm9kdWN0LmF2ZXJhZ2VSYXRpbmdcIiBbY2FuY2VsXT1cImZhbHNlXCIgW3JlYWRvbmx5XT1cInRydWVcIiAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbC1yYXRpbmdzXCI+e3tcclxuICAgICAgICAgIGdldFJhdGluZ3MocHJvZHVjdD8udG90YWxSZXZpZXdDb3VudCl9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFkZC10by1jYXJ0XCIgW3N0eWxlLmJvcmRlckNvbG9yXT1cImRhdGEuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiZGF0YT8uY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwLTAgZC1mbGV4JzogcHJvZHVjdC5xdWFudGl0eSwgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiAhcHJvZHVjdC5xdWFudGl0eX1cIlxyXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVEZWZhdWx0KCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZHVjdD8uaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXByb2R1Y3QucXVhbnRpdHlcIj5cclxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydCgkZXZlbnQsIHByb2R1Y3QsICdBREQnKVwiIFtzdHlsZS5jb2xvcl09XCJkYXRhLnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICBBZGQgdG8gQ2FydDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvZHVjdC5xdWFudGl0eVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1YW50aXR5LWJ0blwiIChjbGljayk9XCJhZGRJdGVtVG9DYXJ0KCRldmVudCwgcHJvZHVjdCwgJ1NVQlNUUkFDVCcpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImdldFN1cHBvcnRpbmdDb2xvcihkYXRhLnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YS5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+LTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWFudGl0eVwiIFtzdHlsZS5jb2xvcl09XCJkYXRhLnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj57e3Byb2R1Y3QucXVhbnRpdHl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWFudGl0eS1idG5cIiAoY2xpY2spPVwiYWRkSXRlbVRvQ2FydCgkZXZlbnQsIHByb2R1Y3QsICdBREQnKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJnZXRTdXBwb3J0aW5nQ29sb3IoZGF0YS5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGEuc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPis8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXByb2R1Y3Q/Lml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9ja1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDBcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm5vdGlmaWNhdGlvbl9pbXBvcnRhbnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5Ob3RpZnk8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8bmctdGVtcGxhdGUgI2xvYWRpbmdTY3JlZW4+XHJcbiAgPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJmaWx0ZXJMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXHJcbiAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAgICAgICAgICdwb3NpdGlvbic6ICdyZWxhdGl2ZScsXHJcbiAgICAgICAgICAncmlnaHQnOiAnNXB4J1xyXG4gICAgICAgIH1cIiAvPlxyXG48L25nLXRlbXBsYXRlPiAtLT4iXX0=
@@ -3,6 +3,7 @@ import BaseSection from '../../../sections/BaseSection';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { AnimationDirective } from '../../../directive/animation-directive';
5
5
  import { BackgroundDirective } from '../../../directive/background-directive';
6
+ import { CornerDirective } from '../../../directive/corner-directive';
6
7
  import { SimpoComponentModule } from '../../../components/index';
7
8
  import { HoverDirective } from '../../../directive/hover-element-directive';
8
9
  import { ButtonDirectiveDirective } from '../../../directive/button-directive.directive';
@@ -10,7 +11,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
10
11
  import { MatIcon } from '@angular/material/icon';
11
12
  import { ContentFitDirective } from '../../../directive/content-fit-directive';
12
13
  import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
13
- import { ButtonEditorDirective } from '../../../directive/button-editor.directive';
14
+ import { ButtonEditorDirective } from '@simpo-ui/directive/button-editor.directive';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "../../../services/rest.service";
16
17
  import * as i2 from "@angular/router";
@@ -102,10 +103,10 @@ export class StoreListComponent extends BaseSection {
102
103
  }
103
104
  }
104
105
  }
105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoreListComponent, deps: [{ token: i1.RestService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StoreListComponent, isStandalone: true, selector: "simpo-store-list", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\n <ng-container *ngIf=\"!loader\">\n <div class=\"store-header mb-3\">\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? \"Stores in \" +\n pincode :\n \"Find a Store Near You\"}}\n </div>\n <div class=\"sub-text\">\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? 'We have ' +\n totalCount\n + ' stores in this locality, scroll down to view the stores\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\n and\n we look forward to serving you.' }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"loader\">\n <div class=\"sub-text\">\n <ngx-skeleton-loader [theme]=\"{\n width: '35%',\n height: '3vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </div>\n <div class=\"sub-text w-75\">\n <ngx-skeleton-loader [theme]=\"{\n width: '35%',\n height: '2vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </div>\n </ng-container>\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\n [class.error-border]=\"error\">\n <div class=\"d-flex align-items-center w-90\">\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\n </div>\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\n [style.backgroundColor]=\"data?.styles?.background?.color\"\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false\" />\n </div>\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\n </div>\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode (Ex:500088)</span>\n </div>\n <div class=\"bottom-container row w-75 mx-auto mt-3\">\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\n </div>\n <ng-container *ngIf=\"loader\">\n <div class=\"sub-text w-100 text-center\">\n <ngx-skeleton-loader [theme]=\"{\n width: '35%',\n height: '6vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </div>\n </ng-container>\n <div class=\"bottom-sub-text mb-3 w-100 f-20\"> {{ submit && showMessage == true && pincode &&\n pincode.toString().length == 6 ? \"Showing \" + totalCount + \" Stores in \" + pincode :\n \"Showing All Stores\"}}</div>\n <ng-container *ngIf=\"!loader;else loaderScreen\">\n <div class=\"col-4 p-2\" style=\"border-radius: 12px; border: none;\"\n *ngFor=\"let ele of storesList; let i = index\">\n <div class=\"card-body p-4 h-100 position-relative\">\n <div class=\"d-flex justify-content-between align-items-start mb-3\">\n <div>\n <h5 class=\"card-title fw-bold mb-1\">{{ele?.name}}</h5>\n </div>\n </div>\n <div class=\"mb-3\">\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.address}},</p>\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.city}},\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},</p>\n <p class=\"mb-0\">Phone-<span\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.phone}}</span></p>\n </div>\n <div class=\"mb-5\">\n <p class=\"mb-0\" [style.color]=\"data?.styles?.background?.accentColor\">STORE HOURS -\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\n </p>\n </div>\n <div class=\"d-flex gap-3 align-items-center card-bottom\">\n <div class=\"rounded-circle d-flex align-items-center justify-content-center\"\n style=\"width: 40px; height: 30px; background-color: #25d366;\"\n (click)=\"openWhatsapp(ele?.phone)\">\n <i class=\"fab fa-whatsapp text-white fs-5\"></i>\n </div>\n <!-- <button class=\"btn flex-fill py-2 fw-semibold\"\n style=\"background-color: #e8e3ff; color: #6b46c1; border: none; border-radius: 25px;font-size: 12px !important;\">\n BOOK A VISIT\n </button> -->\n <!-- <button class=\"btn flex-fill py-2 fw-semibold text-white\"\n style=\"background: linear-gradient(135deg, #a855f7, #ec4899); border: none; border-radius: 25px;font-size: 12px !important;\"\n (click)=\"viewStore(ele.storeId)\">\n VIEW STORE\n </button> -->\n <button class=\"btn\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\" [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.storeId)\">{{button?.content?.label}}</button>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #loaderScreen>\n <div class=\"row\">\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\n <ngx-skeleton-loader class=\"col-4\" [theme]=\"{\n width: '100%',\n height: '40vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px}.location-container input{border:unset;appearance:unset;outline:unset;font-size:13px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{border:1px solid;border-radius:18px;height:100%}.cdk-virtual-scroll-viewport{display:unset}.cdk-virtual-scroll-content-wrapper{position:unset!important}.card-bottom{position:absolute;bottom:8px;left:25px;width:90%}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }] }); }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: StoreListComponent, deps: [{ token: i1.RestService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: StoreListComponent, isStandalone: true, selector: "simpo-store-list", inputs: { data: "data", edit: "edit", customClass: "customClass", delete: "delete", index: "index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\r\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <ng-container *ngIf=\"!loader\">\r\n <div class=\"store-header mb-3\">\r\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? \"Stores in \" +\r\n pincode :\r\n \"Find a Store Near You\"}}\r\n </div>\r\n <div class=\"sub-text\">\r\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? 'We have ' +\r\n totalCount\r\n + ' stores in this locality, scroll down to view the stores\r\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\r\n and\r\n we look forward to serving you.' }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '3vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text w-75\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '2vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\r\n [class.error-border]=\"error\">\r\n <div class=\"d-flex align-items-center w-90\">\r\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\r\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\r\n [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\r\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false\" />\r\n </div>\r\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\r\n </div>\r\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode (Ex:500088)</span>\r\n </div>\r\n <div class=\"bottom-container row w-75 mx-auto mt-3\">\r\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\r\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\r\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\r\n </div>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text w-100 text-center\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '6vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"bottom-sub-text mb-3 w-100 f-20\"> {{ submit && showMessage == true && pincode &&\r\n pincode.toString().length == 6 ? \"Showing \" + totalCount + \" Stores in \" + pincode :\r\n \"Showing All Stores\"}}</div>\r\n <ng-container *ngIf=\"!loader;else loaderScreen\">\r\n <div class=\"col-4 p-2\" style=\"border-radius: 12px; border: none;\"\r\n *ngFor=\"let ele of storesList; let i = index\">\r\n <div class=\"card-body p-4 h-100 position-relative\">\r\n <div class=\"d-flex justify-content-between align-items-start mb-3\">\r\n <div>\r\n <h5 class=\"card-title fw-bold mb-1\">{{ele?.name}}</h5>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.address}},</p>\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.city}},\r\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},</p>\r\n <p class=\"mb-0\">Phone-<span\r\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.phone}}</span></p>\r\n </div>\r\n <div class=\"mb-5\">\r\n <p class=\"mb-0\" [style.color]=\"data?.styles?.background?.accentColor\">STORE HOURS -\r\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\r\n </p>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center card-bottom\">\r\n <div class=\"rounded-circle d-flex align-items-center justify-content-center\"\r\n style=\"width: 40px; height: 30px; background-color: #25d366;\"\r\n (click)=\"openWhatsapp(ele?.phone)\">\r\n <i class=\"fab fa-whatsapp text-white fs-5\"></i>\r\n </div>\r\n <!-- <button class=\"btn flex-fill py-2 fw-semibold\"\r\n style=\"background-color: #e8e3ff; color: #6b46c1; border: none; border-radius: 25px;font-size: 12px !important;\">\r\n BOOK A VISIT\r\n </button> -->\r\n <!-- <button class=\"btn flex-fill py-2 fw-semibold text-white\"\r\n style=\"background: linear-gradient(135deg, #a855f7, #ec4899); border: none; border-radius: 25px;font-size: 12px !important;\"\r\n (click)=\"viewStore(ele.storeId)\">\r\n VIEW STORE\r\n </button> -->\r\n <button class=\"btn\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\" [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.storeId)\">{{button?.content?.label}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #loaderScreen>\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\r\n <ngx-skeleton-loader class=\"col-4\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px}.location-container input{border:unset;appearance:unset;outline:unset;font-size:13px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{border:1px solid;border-radius:18px;height:100%}.cdk-virtual-scroll-viewport{display:unset}.cdk-virtual-scroll-content-wrapper{position:unset!important}.card-bottom{position:absolute;bottom:8px;left:25px;width:90%}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "component", type: i7.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "ngmodule", type: NgxSkeletonLoaderModule }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId"] }] }); }
107
108
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StoreListComponent, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: StoreListComponent, decorators: [{
109
110
  type: Component,
110
111
  args: [{ selector: 'simpo-store-list', standalone: true, imports: [CommonModule,
111
112
  FormsModule,
@@ -114,12 +115,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
114
115
  SimpoComponentModule,
115
116
  AnimationDirective,
116
117
  BackgroundDirective,
118
+ CornerDirective,
117
119
  HoverDirective,
118
120
  ButtonDirectiveDirective,
119
121
  ContentFitDirective,
120
122
  NgxSkeletonLoaderModule,
121
123
  ButtonEditorDirective
122
- ], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\n <ng-container *ngIf=\"!loader\">\n <div class=\"store-header mb-3\">\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? \"Stores in \" +\n pincode :\n \"Find a Store Near You\"}}\n </div>\n <div class=\"sub-text\">\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? 'We have ' +\n totalCount\n + ' stores in this locality, scroll down to view the stores\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\n and\n we look forward to serving you.' }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"loader\">\n <div class=\"sub-text\">\n <ngx-skeleton-loader [theme]=\"{\n width: '35%',\n height: '3vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </div>\n <div class=\"sub-text w-75\">\n <ngx-skeleton-loader [theme]=\"{\n width: '35%',\n height: '2vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </div>\n </ng-container>\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\n [class.error-border]=\"error\">\n <div class=\"d-flex align-items-center w-90\">\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\n </div>\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\n [style.backgroundColor]=\"data?.styles?.background?.color\"\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false\" />\n </div>\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\n </div>\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode (Ex:500088)</span>\n </div>\n <div class=\"bottom-container row w-75 mx-auto mt-3\">\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\n </div>\n <ng-container *ngIf=\"loader\">\n <div class=\"sub-text w-100 text-center\">\n <ngx-skeleton-loader [theme]=\"{\n width: '35%',\n height: '6vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </div>\n </ng-container>\n <div class=\"bottom-sub-text mb-3 w-100 f-20\"> {{ submit && showMessage == true && pincode &&\n pincode.toString().length == 6 ? \"Showing \" + totalCount + \" Stores in \" + pincode :\n \"Showing All Stores\"}}</div>\n <ng-container *ngIf=\"!loader;else loaderScreen\">\n <div class=\"col-4 p-2\" style=\"border-radius: 12px; border: none;\"\n *ngFor=\"let ele of storesList; let i = index\">\n <div class=\"card-body p-4 h-100 position-relative\">\n <div class=\"d-flex justify-content-between align-items-start mb-3\">\n <div>\n <h5 class=\"card-title fw-bold mb-1\">{{ele?.name}}</h5>\n </div>\n </div>\n <div class=\"mb-3\">\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.address}},</p>\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.city}},\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},</p>\n <p class=\"mb-0\">Phone-<span\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.phone}}</span></p>\n </div>\n <div class=\"mb-5\">\n <p class=\"mb-0\" [style.color]=\"data?.styles?.background?.accentColor\">STORE HOURS -\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\n </p>\n </div>\n <div class=\"d-flex gap-3 align-items-center card-bottom\">\n <div class=\"rounded-circle d-flex align-items-center justify-content-center\"\n style=\"width: 40px; height: 30px; background-color: #25d366;\"\n (click)=\"openWhatsapp(ele?.phone)\">\n <i class=\"fab fa-whatsapp text-white fs-5\"></i>\n </div>\n <!-- <button class=\"btn flex-fill py-2 fw-semibold\"\n style=\"background-color: #e8e3ff; color: #6b46c1; border: none; border-radius: 25px;font-size: 12px !important;\">\n BOOK A VISIT\n </button> -->\n <!-- <button class=\"btn flex-fill py-2 fw-semibold text-white\"\n style=\"background: linear-gradient(135deg, #a855f7, #ec4899); border: none; border-radius: 25px;font-size: 12px !important;\"\n (click)=\"viewStore(ele.storeId)\">\n VIEW STORE\n </button> -->\n <button class=\"btn\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\" [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.storeId)\">{{button?.content?.label}}</button>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #loaderScreen>\n <div class=\"row\">\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\n <ngx-skeleton-loader class=\"col-4\" [theme]=\"{\n width: '100%',\n height: '40vh',\n 'border-radius': '12px',\n }\"></ngx-skeleton-loader>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </div>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px}.location-container input{border:unset;appearance:unset;outline:unset;font-size:13px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{border:1px solid;border-radius:18px;height:100%}.cdk-virtual-scroll-viewport{display:unset}.cdk-virtual-scroll-content-wrapper{position:unset!important}.card-bottom{position:absolute;bottom:8px;left:25px;width:90%}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
124
+ ], template: "<div class=\"total-container position-relative\" simpoHover (hovering)=\"showEditTabs($event)\" [id]=\"data?.id\">\r\n <div class=\"main-container\" [simpoAnimation]=\"styles?.animation\" [id]=\"data?.id\">\r\n <div class=\"top-section w-100 d-flex align-items-center justify-content-center text-center flex-column\"\r\n [simpoBackground]=\"styles?.background\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\">\r\n <ng-container *ngIf=\"!loader\">\r\n <div class=\"store-header mb-3\">\r\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? \"Stores in \" +\r\n pincode :\r\n \"Find a Store Near You\"}}\r\n </div>\r\n <div class=\"sub-text\">\r\n {{ submit && showMessage == true && pincode && pincode.toString().length == 6 ? 'We have ' +\r\n totalCount\r\n + ' stores in this locality, scroll down to view the stores\r\n and browse the designs available.' : 'Locate a store near you \u2014 our presence is expanding every day,\r\n and\r\n we look forward to serving you.' }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '3vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n <div class=\"sub-text w-75\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '2vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"location-container d-flex align-items-center justify-content-between w-25\"\r\n [class.error-border]=\"error\">\r\n <div class=\"d-flex align-items-center w-90\">\r\n <div class=\"d-flex mx-1\"><mat-icon class=\"d-flex align-items-center justify-content-center f-20\"\r\n [style.color]=\"data?.styles?.background?.accentColor\">gps_fixed</mat-icon>\r\n </div>\r\n <input type=\"number\" placeholder=\"Pin Code\" [(ngModel)]=\"pincode\" class=\"w-90\"\r\n [style.backgroundColor]=\"data?.styles?.background?.color\"\r\n [style.color]=\"getTextColor(data?.styles?.background?.color)\"\r\n (ngModelChange)=\"pincode.toString().length != 6 ? submit = false : error = false\" />\r\n </div>\r\n <div (click)=\"getDataWithPincode()\" class=\"f-13 cursor-pointer\">Submit</div>\r\n </div>\r\n <span class=\"f-12 w-25 text-start mt-2\" *ngIf=\"error\" [style.color]=\"'#dc3545'\">Invalid Pincode (Ex:500088)</span>\r\n </div>\r\n <div class=\"bottom-container row w-75 mx-auto mt-3\">\r\n <div class=\"w-100 d-flex align-items-center justify-content-center mb-3\"\r\n *ngIf=\"submit && showMessage == false && pincode && pincode.toString().length ==6 && !loader\">\r\n <div class=\"text-center not-available-text\">We are not available in this location currently</div>\r\n </div>\r\n <ng-container *ngIf=\"loader\">\r\n <div class=\"sub-text w-100 text-center\">\r\n <ngx-skeleton-loader [theme]=\"{\r\n width: '35%',\r\n height: '6vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </ng-container>\r\n <div class=\"bottom-sub-text mb-3 w-100 f-20\"> {{ submit && showMessage == true && pincode &&\r\n pincode.toString().length == 6 ? \"Showing \" + totalCount + \" Stores in \" + pincode :\r\n \"Showing All Stores\"}}</div>\r\n <ng-container *ngIf=\"!loader;else loaderScreen\">\r\n <div class=\"col-4 p-2\" style=\"border-radius: 12px; border: none;\"\r\n *ngFor=\"let ele of storesList; let i = index\">\r\n <div class=\"card-body p-4 h-100 position-relative\">\r\n <div class=\"d-flex justify-content-between align-items-start mb-3\">\r\n <div>\r\n <h5 class=\"card-title fw-bold mb-1\">{{ele?.name}}</h5>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.address}},</p>\r\n <p class=\"mb-1 text-dark fw-medium\">{{ele?.addressDetails?.city}},\r\n {{ele?.addressDetails?.state}},{{ele?.addressDetails?.pincode}},</p>\r\n <p class=\"mb-0\">Phone-<span\r\n [style.color]=\"data?.styles?.background?.accentColor\">{{ele?.phone}}</span></p>\r\n </div>\r\n <div class=\"mb-5\">\r\n <p class=\"mb-0\" [style.color]=\"data?.styles?.background?.accentColor\">STORE HOURS -\r\n {{getTime(ele?.storeHours,'OPEN')}} to {{getTime(ele?.storeHours,'CLOSE')}}\r\n </p>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-center card-bottom\">\r\n <div class=\"rounded-circle d-flex align-items-center justify-content-center\"\r\n style=\"width: 40px; height: 30px; background-color: #25d366;\"\r\n (click)=\"openWhatsapp(ele?.phone)\">\r\n <i class=\"fab fa-whatsapp text-white fs-5\"></i>\r\n </div>\r\n <!-- <button class=\"btn flex-fill py-2 fw-semibold\"\r\n style=\"background-color: #e8e3ff; color: #6b46c1; border: none; border-radius: 25px;font-size: 12px !important;\">\r\n BOOK A VISIT\r\n </button> -->\r\n <!-- <button class=\"btn flex-fill py-2 fw-semibold text-white\"\r\n style=\"background: linear-gradient(135deg, #a855f7, #ec4899); border: none; border-radius: 25px;font-size: 12px !important;\"\r\n (click)=\"viewStore(ele.storeId)\">\r\n VIEW STORE\r\n </button> -->\r\n <button class=\"btn\" [buttonData]=\"button?.content\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\" [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\" [appButtonEditor]=\"edit ?? false\" [buttonId]=\"button?.id ?? ''\" (click)=\"viewStore(ele.storeId)\">{{button?.content?.label}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-template #loaderScreen>\r\n <div class=\"row\">\r\n <ng-container *ngFor=\"let ele of [1,2,3,4,5,6]\">\r\n <ngx-skeleton-loader class=\"col-4\" [theme]=\"{\r\n width: '100%',\r\n height: '40vh',\r\n 'border-radius': '12px',\r\n }\"></ngx-skeleton-loader>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</div>", styles: [".hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.store-header{font-size:27px;font-weight:700}.sub-text{font-size:16px;width:35%;margin-bottom:15px}.location-container{border:1px solid;padding:8px;border-radius:12px}.location-container input{border:unset;appearance:unset;outline:unset;font-size:13px}.not-available-text{color:#ff5151;font-weight:600;border-radius:22px;text-align:center;padding:12px;background:#ff51511a;width:35%}.f-20{font-size:20px}.f-13{font-size:13px}.w-90{width:90%}.card-body{border:1px solid;border-radius:18px;height:100%}.cdk-virtual-scroll-viewport{display:unset}.cdk-virtual-scroll-content-wrapper{position:unset!important}.card-bottom{position:absolute;bottom:8px;left:25px;width:90%}.error-border{border:2px solid #dc3545!important}.f-12{font-size:12px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
123
125
  }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.Router }], propDecorators: { data: [{
124
126
  type: Input
125
127
  }], edit: [{
@@ -131,4 +133,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
131
133
  }], index: [{
132
134
  type: Input
133
135
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9zdG9yZS1saXN0L3N0b3JlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc3RvcmUtbGlzdC9zdG9yZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7OztBQXdC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QUFFLENBQUM7Z0JBQzdCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNuQixPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUE7Z0JBQ3hCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUE7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBakdVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlNQ3ZDL0IseWpRQWtJTSwrN0JEM0dNLFlBQVksNlZBQ3BCLFdBQVcsZ3hCQUNYLG1CQUFtQiwrQkFDbkIsT0FBTywwSUFDUCxvQkFBb0Isb2hCQUNwQixrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FDbkIsY0FBYyxnRkFDZCx3QkFBd0Isc0lBQ3hCLG1CQUFtQixrRkFDbkIsdUJBQXVCLCtCQUN2QixxQkFBcUI7OzRGQUtaLGtCQUFrQjtrQkFuQjlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVk7d0JBQ3BCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIscUJBQXFCO3FCQUN0QjtxR0FNUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nTW9kdWxlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XG5pbXBvcnQgeyBTdG9yZUxpc3RNb2RhbCwgU3RvcmVMaXN0U3R5bGVNb2RlbCB9IGZyb20gJy4vc3RvcmUtbGlzdC5tb2RhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5neFNrZWxldG9uTG9hZGVyTW9kdWxlIH0gZnJvbSAnbmd4LXNrZWxldG9uLWxvYWRlcic7XG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tc3RvcmUtbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxuICAgIEhvdmVyRGlyZWN0aXZlLFxuICAgIEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSxcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxuICAgIE5neFNrZWxldG9uTG9hZGVyTW9kdWxlLFxuICAgIEJ1dHRvbkVkaXRvckRpcmVjdGl2ZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RvcmUtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zdG9yZS1saXN0LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JlTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcblxuICBASW5wdXQoKSBkYXRhPzogU3RvcmVMaXN0TW9kYWxcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XG4gIHBhZ2VObzogbnVtYmVyID0gMDtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGNhcmRTaXplOiBudW1iZXIgPSA1MDtcblxuXG4gIHN0eWxlcz86IFN0b3JlTGlzdFN0eWxlTW9kZWw7XG4gIGJ1dHRvbj86IEJ1dHRvbk1vZGVsXG4gIFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XG4gICAgdGhpcy5nZXRTdG9yZURldGFpbHMoKTtcbiAgICB0aGlzLmJ1dHRvbiA9IHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zWzBdO1xuXG4gIH1cbiAgc3RvcmVzTGlzdDogYW55ID0gW107XG4gIHBpbmNvZGU6IGFueTtcbiAgc3RvcmVQYXlsb2FkOiBhbnkgPSB7XG4gICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSA/PyBcIlwiLFxuICAgIHBhZ2VObzogMCxcbiAgICBwYWdlU2l6ZTogMTVcbiAgfVxuICBnZXREYXRhV2l0aFBpbmNvZGUoKSB7XG4gICAgaWYgKHRoaXMucGluY29kZS50b1N0cmluZygpLmxlbmd0aCAhPSA2KSB7XG4gICAgICB0aGlzLmVycm9yID0gdHJ1ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0b3JlUGF5bG9hZC5waW5jb2RlID0gdGhpcy5waW5jb2RlO1xuICAgIHRoaXMuZ2V0U3RvcmVEZXRhaWxzKCk7XG4gIH1cbiAgc2hvd01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcbiAgc3VibWl0OiBib29sZWFuID0gZmFsc2U7XG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBnZXRTdG9yZURldGFpbHMoKSB7XG4gICAgdGhpcy5zdWJtaXQgPSB0cnVlO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbFN0b3Jlcyh0aGlzLnN0b3JlUGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zdG9yZXNMaXN0ID0gcmVzPy5kYXRhPy5kYXRhO1xuICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzPy5kYXRhPy5jb3VudDtcbiAgICAgIGlmICh0aGlzLnBpbmNvZGU/LnRvU3RyaW5nKCkubGVuZ3RoID09IDYpXG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2UgPSByZXM/LmRhdGE/LnN0b3JlUHJlc2VudDtcbiAgICAgIHRoaXMuc3RvcmVQYXlsb2FkLnBhZ2VObysrO1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2VcbiAgICAgIH0pXG4gIH1cbiAgZ2V0VGV4dENvbG9yKGJnQ29sb3I6IGFueSkge1xuICAgIGlmIChiZ0NvbG9yKSB7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7IC8vIEFkanVzdCB0aGlzIHRocmVzaG9sZCBhcyBuZWVkZWRcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDEsIDMpLCAxNik7XG4gICAgICBjb25zdCBnID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgzLCA1KSwgMTYpO1xuICAgICAgY29uc3QgYiA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoNSwgNyksIDE2KTtcbiAgICAgIGNvbnN0IGJyaWdodG5lc3MgPSAociAqIDI5OSArIGcgKiA1ODcgKyBiICogMTE0KSAvIDEwMDA7XG5cbiAgICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xuICAgIH1cbiAgICByZXR1cm4gXCIjZmZmZmZmO1wiXG4gIH1cbiAgb3BlbldoYXRzYXBwKHBob25lOiBzdHJpbmcpIHtcbiAgICBpZiAocGhvbmUpIHtcbiAgICAgIGNvbnN0IHdoYXRzYXBwVXJsID0gYGh0dHBzOi8vd2EubWUvJHtwaG9uZX1gO1xuICAgICAgd2luZG93Lm9wZW4od2hhdHNhcHBVcmwsICdfYmxhbmsnKTtcbiAgICB9XG4gIH1cbiAgdmlld1N0b3JlKHN0b3JlSWQ6IHN0cmluZykge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N0b3JlJ10sIHsgcXVlcnlQYXJhbXM6IHsgc3RvcmVJZDogc3RvcmVJZCB9IH0pO1xuICB9XG4gIGdldFRpbWUoc3RvcmVIb3VyczogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF5TmFtZSA9IHRvZGF5LnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7IHdlZWtkYXk6ICdsb25nJyB9KS50b1VwcGVyQ2FzZSgpO1xuICAgIGZvciAobGV0IGVsZSBvZiBzdG9yZUhvdXJzKSB7XG4gICAgICBpZiAoZWxlLmRheU9mV2VlayA9PSBkYXlOYW1lKSB7XG4gICAgICAgIGlmICh0eXBlID09ICdPUEVOJykge1xuICAgICAgICAgIHJldHVybiBlbGUub3BlbmluZ1RpbWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZWxlLmNsb3NpbmdUaW1lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0b3RhbC1jb250YWluZXIgcG9zaXRpb24tcmVsYXRpdmVcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIFtpZF09XCJkYXRhPy5pZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXNlY3Rpb24gdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIGZsZXgtY29sdW1uXCJcbiAgICAgICAgICAgIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1oZWFkZXIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT0gNiA/IFwiU3RvcmVzIGluIFwiICtcbiAgICAgICAgICAgICAgICAgICAgcGluY29kZSA6XG4gICAgICAgICAgICAgICAgICAgIFwiRmluZCBhIFN0b3JlIE5lYXIgWW91XCJ9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT0gNiA/ICdXZSBoYXZlICcgK1xuICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50XG4gICAgICAgICAgICAgICAgICAgICsgJyBzdG9yZXMgaW4gdGhpcyBsb2NhbGl0eSwgc2Nyb2xsIGRvd24gdG8gdmlldyB0aGUgc3RvcmVzXG4gICAgICAgICAgICAgICAgICAgIGFuZCBicm93c2UgdGhlIGRlc2lnbnMgYXZhaWxhYmxlLicgOiAnTG9jYXRlIGEgc3RvcmUgbmVhciB5b3Ug4oCUIG91ciBwcmVzZW5jZSBpcyBleHBhbmRpbmcgZXZlcnkgZGF5LFxuICAgICAgICAgICAgICAgICAgICBhbmRcbiAgICAgICAgICAgICAgICAgICAgd2UgbG9vayBmb3J3YXJkIHRvIHNlcnZpbmcgeW91LicgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBbdGhlbWVdPVwie1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMzUlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICczdmgnLFxuICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHctNzVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcbiAgICAgICAgICAgICAgICB3aWR0aDogJzM1JScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMnZoJyxcbiAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxuICAgICAgICAgICAgICAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9jYXRpb24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0yNVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHctOTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteC0xXCI+PG1hdC1pY29uIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGYtMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Z3BzX2ZpeGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJQaW4gQ29kZVwiIFsobmdNb2RlbCldPVwicGluY29kZVwiIGNsYXNzPVwidy05MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwaW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9IDYgPyBzdWJtaXQgPSBmYWxzZSA6IGVycm9yID0gZmFsc2VcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdldERhdGFXaXRoUGluY29kZSgpXCIgY2xhc3M9XCJmLTEzIGN1cnNvci1wb2ludGVyXCI+U3VibWl0PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZi0xMiB3LTI1IHRleHQtc3RhcnQgbXQtMlwiICpuZ0lmPVwiZXJyb3JcIiBbc3R5bGUuY29sb3JdPVwiJyNkYzM1NDUnXCI+SW52YWxpZCBQaW5jb2RlIChFeDo1MDAwODgpPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1jb250YWluZXIgcm93IHctNzUgbXgtYXV0byBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1iLTNcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0ICYmIHNob3dNZXNzYWdlID09IGZhbHNlICYmIHBpbmNvZGUgJiYgcGluY29kZS50b1N0cmluZygpLmxlbmd0aCA9PTYgJiYgIWxvYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBub3QtYXZhaWxhYmxlLXRleHRcIj5XZSBhcmUgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGxvY2F0aW9uIGN1cnJlbnRseTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHctMTAwIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIFt0aGVtZV09XCJ7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICczNSUnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzZ2aCcsXG4gICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICAgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1zdWItdGV4dCBtYi0zIHctMTAwIGYtMjBcIj4ge3sgc3VibWl0ICYmIHNob3dNZXNzYWdlID09IHRydWUgJiYgcGluY29kZSAmJlxuICAgICAgICAgICAgICAgIHBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT0gNiA/IFwiU2hvd2luZyBcIiArIHRvdGFsQ291bnQgKyBcIiBTdG9yZXMgaW4gXCIgKyBwaW5jb2RlIDpcbiAgICAgICAgICAgICAgICBcIlNob3dpbmcgQWxsIFN0b3Jlc1wifX08L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyO2Vsc2UgbG9hZGVyU2NyZWVuXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHAtMlwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTJweDsgYm9yZGVyOiBub25lO1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGUgb2Ygc3RvcmVzTGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtNCBoLTEwMCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1zdGFydCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZSBmdy1ib2xkIG1iLTFcIj57e2VsZT8ubmFtZX19PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTEgdGV4dC1kYXJrIGZ3LW1lZGl1bVwiPnt7ZWxlPy5hZGRyZXNzRGV0YWlscz8uYWRkcmVzc319LDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTEgdGV4dC1kYXJrIGZ3LW1lZGl1bVwiPnt7ZWxlPy5hZGRyZXNzRGV0YWlscz8uY2l0eX19LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2VsZT8uYWRkcmVzc0RldGFpbHM/LnN0YXRlfX0se3tlbGU/LmFkZHJlc3NEZXRhaWxzPy5waW5jb2RlfX0sPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPlBob25lLTxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPnt7ZWxlPy5waG9uZX19PC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlNUT1JFIEhPVVJTIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRUaW1lKGVsZT8uc3RvcmVIb3VycywnT1BFTicpfX0gdG8ge3tnZXRUaW1lKGVsZT8uc3RvcmVIb3VycywnQ0xPU0UnKX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWNlbnRlciBjYXJkLWJvdHRvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA0MHB4OyBoZWlnaHQ6IDMwcHg7IGJhY2tncm91bmQtY29sb3I6ICMyNWQzNjY7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5XaGF0c2FwcChlbGU/LnBob25lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhYiBmYS13aGF0c2FwcCB0ZXh0LXdoaXRlIGZzLTVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtZmlsbCBweS0yIGZ3LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlOGUzZmY7IGNvbG9yOiAjNmI0NmMxOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDI1cHg7Zm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQk9PSyBBIFZJU0lUXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtZmlsbCBweS0yIGZ3LXNlbWlib2xkIHRleHQtd2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNhODU1ZjcsICNlYzQ4OTkpOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDI1cHg7Zm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdTdG9yZShlbGUuc3RvcmVJZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklFVyBTVE9SRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgW2J1dHRvbkRhdGFdPVwiYnV0dG9uPy5jb250ZW50XCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRJbmZvXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZFwiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiIFtidXR0b25JZF09XCJidXR0b24/LmlkID8/ICcnXCIgKGNsaWNrKT1cInZpZXdTdG9yZShlbGUuc3RvcmVJZClcIj57e2J1dHRvbj8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRlclNjcmVlbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZSBvZiBbMSwyLDMsNCw1LDZdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjbGFzcz1cImNvbC00XCIgW3RoZW1lXT1cIntcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzQwdmgnLFxuICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxuICAgICAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2Vjb21tZXJjZS9zZWN0aW9ucy9zdG9yZS1saXN0L3N0b3JlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvc3RvcmUtbGlzdC9zdG9yZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRy9FLE9BQU8sRUFBOEIsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVB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RSxDQUFDO1lBQzNCLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ25CLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQTtnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQTtnQkFDeEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0FqR1Usa0JBQWtCO2tHQUFsQixrQkFBa0IseU1DekMvQiw2elFBa0lNLCs3QkQxR00sWUFBWSw2VkFDcEIsV0FBVyxneEJBQ1gsbUJBQW1CLCtCQUNuQixPQUFPLDBJQUNQLG9CQUFvQixvaEJBQ3BCLGtCQUFrQix5RkFDbEIsbUJBQW1CLDBHQUVuQixjQUFjLGdGQUNkLHdCQUF3QixzSUFDeEIsbUJBQW1CLGtGQUNuQix1QkFBdUIsK0JBQ3ZCLHFCQUFxQjs7MkZBS1osa0JBQWtCO2tCQXBCOUIsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWTt3QkFDcEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1Asb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLHFCQUFxQjtxQkFDdEI7cUdBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBOZ01vZHVsZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IFN0b3JlTGlzdE1vZGFsLCBTdG9yZUxpc3RTdHlsZU1vZGVsIH0gZnJvbSAnLi9zdG9yZS1saXN0Lm1vZGFsJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOZ3hTa2VsZXRvbkxvYWRlckNvbXBvbmVudCwgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUgfSBmcm9tICduZ3gtc2tlbGV0b24tbG9hZGVyJztcclxuaW1wb3J0IHsgQnV0dG9uRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnQHNpbXBvLXVpL2RpcmVjdGl2ZS9idXR0b24tZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1zdG9yZS1saXN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgTmd4U2tlbGV0b25Mb2FkZXJNb2R1bGUsXHJcbiAgICBCdXR0b25FZGl0b3JEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdG9yZS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RvcmUtbGlzdC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG5cclxuICBASW5wdXQoKSBkYXRhPzogU3RvcmVMaXN0TW9kYWxcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBwYWdlTm86IG51bWJlciA9IDA7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2FyZFNpemU6IG51bWJlciA9IDUwO1xyXG5cclxuXHJcbiAgc3R5bGVzPzogU3RvcmVMaXN0U3R5bGVNb2RlbDtcclxuICBidXR0b24/OiBCdXR0b25Nb2RlbFxyXG4gIFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmdldFN0b3JlRGV0YWlscygpO1xyXG4gICAgdGhpcy5idXR0b24gPSB0aGlzLmRhdGE/LmFjdGlvbj8uYnV0dG9uc1swXTtcclxuXHJcbiAgfVxyXG4gIHN0b3Jlc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHBpbmNvZGU6IGFueTtcclxuICBzdG9yZVBheWxvYWQ6IGFueSA9IHtcclxuICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCJcIixcclxuICAgIHBhZ2VObzogMCxcclxuICAgIHBhZ2VTaXplOiAxNVxyXG4gIH1cclxuICBnZXREYXRhV2l0aFBpbmNvZGUoKSB7XHJcbiAgICBpZiAodGhpcy5waW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9IDYpIHtcclxuICAgICAgdGhpcy5lcnJvciA9IHRydWVcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdG9yZVBheWxvYWQucGluY29kZSA9IHRoaXMucGluY29kZTtcclxuICAgIHRoaXMuZ2V0U3RvcmVEZXRhaWxzKCk7XHJcbiAgfVxyXG4gIHNob3dNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcclxuICBzdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldFN0b3JlRGV0YWlscygpIHtcclxuICAgIHRoaXMuc3VibWl0ID0gdHJ1ZTtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0QWxsU3RvcmVzKHRoaXMuc3RvcmVQYXlsb2FkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmVzTGlzdCA9IHJlcz8uZGF0YT8uZGF0YTtcclxuICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzPy5kYXRhPy5jb3VudDtcclxuICAgICAgaWYgKHRoaXMucGluY29kZT8udG9TdHJpbmcoKS5sZW5ndGggPT0gNilcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlID0gcmVzPy5kYXRhPy5zdG9yZVByZXNlbnQ7XHJcbiAgICAgIHRoaXMuc3RvcmVQYXlsb2FkLnBhZ2VObysrO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlXHJcbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGdldFRleHRDb2xvcihiZ0NvbG9yOiBhbnkpIHtcclxuICAgIGlmIChiZ0NvbG9yKSB7XHJcbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDEzMDsgLy8gQWRqdXN0IHRoaXMgdGhyZXNob2xkIGFzIG5lZWRlZFxyXG4gICAgICBjb25zdCByID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgICBjb25zdCBnID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgzLCA1KSwgMTYpO1xyXG4gICAgICBjb25zdCBiID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSg1LCA3KSwgMTYpO1xyXG4gICAgICBjb25zdCBicmlnaHRuZXNzID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xyXG5cclxuICAgICAgcmV0dXJuIGJyaWdodG5lc3MgPiB0aHJlc2hvbGQgPyAnIzAwMDAwMCcgOiAnI2ZmZmZmZic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCIjZmZmZmZmO1wiXHJcbiAgfVxyXG4gIG9wZW5XaGF0c2FwcChwaG9uZTogc3RyaW5nKSB7XHJcbiAgICBpZiAocGhvbmUpIHtcclxuICAgICAgY29uc3Qgd2hhdHNhcHBVcmwgPSBgaHR0cHM6Ly93YS5tZS8ke3Bob25lfWA7XHJcbiAgICAgIHdpbmRvdy5vcGVuKHdoYXRzYXBwVXJsLCAnX2JsYW5rJyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHZpZXdTdG9yZShzdG9yZUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N0b3JlJ10sIHsgcXVlcnlQYXJhbXM6IHsgc3RvcmVJZDogc3RvcmVJZCB9IH0pO1xyXG4gIH1cclxuICBnZXRUaW1lKHN0b3JlSG91cnM6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBkYXlOYW1lID0gdG9kYXkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHsgd2Vla2RheTogJ2xvbmcnIH0pLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBmb3IgKGxldCBlbGUgb2Ygc3RvcmVIb3Vycykge1xyXG4gICAgICBpZiAoZWxlLmRheU9mV2VlayA9PSBkYXlOYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gJ09QRU4nKSB7XHJcbiAgICAgICAgICByZXR1cm4gZWxlLm9wZW5pbmdUaW1lXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBlbGUuY2xvc2luZ1RpbWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCIgW2lkXT1cImRhdGE/LmlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250YWluZXJcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXNlY3Rpb24gdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIGZsZXgtY29sdW1uXCJcclxuICAgICAgICAgICAgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1oZWFkZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHN1Ym1pdCAmJiBzaG93TWVzc2FnZSA9PSB0cnVlICYmIHBpbmNvZGUgJiYgcGluY29kZS50b1N0cmluZygpLmxlbmd0aCA9PSA2ID8gXCJTdG9yZXMgaW4gXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgIHBpbmNvZGUgOlxyXG4gICAgICAgICAgICAgICAgICAgIFwiRmluZCBhIFN0b3JlIE5lYXIgWW91XCJ9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzdWJtaXQgJiYgc2hvd01lc3NhZ2UgPT0gdHJ1ZSAmJiBwaW5jb2RlICYmIHBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT0gNiA/ICdXZSBoYXZlICcgK1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnRcclxuICAgICAgICAgICAgICAgICAgICArICcgc3RvcmVzIGluIHRoaXMgbG9jYWxpdHksIHNjcm9sbCBkb3duIHRvIHZpZXcgdGhlIHN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgIGFuZCBicm93c2UgdGhlIGRlc2lnbnMgYXZhaWxhYmxlLicgOiAnTG9jYXRlIGEgc3RvcmUgbmVhciB5b3Ug4oCUIG91ciBwcmVzZW5jZSBpcyBleHBhbmRpbmcgZXZlcnkgZGF5LFxyXG4gICAgICAgICAgICAgICAgICAgIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIHdlIGxvb2sgZm9yd2FyZCB0byBzZXJ2aW5nIHlvdS4nIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIFt0aGVtZV09XCJ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzM1JScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICczdmgnLFxyXG4gICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMnB4JyxcclxuICAgICAgICAgICAgICAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQgdy03NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIFt0aGVtZV09XCJ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzM1JScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcydmgnLFxyXG4gICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMnB4JyxcclxuICAgICAgICAgICAgICAgICB9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9jYXRpb24tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0yNVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTkwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBteC0xXCI+PG1hdC1pY29uIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGYtMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5ncHNfZml4ZWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJQaW4gQ29kZVwiIFsobmdNb2RlbCldPVwicGluY29kZVwiIGNsYXNzPVwidy05MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5jb2xvcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwaW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9IDYgPyBzdWJtaXQgPSBmYWxzZSA6IGVycm9yID0gZmFsc2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnZXREYXRhV2l0aFBpbmNvZGUoKVwiIGNsYXNzPVwiZi0xMyBjdXJzb3ItcG9pbnRlclwiPlN1Ym1pdDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmLTEyIHctMjUgdGV4dC1zdGFydCBtdC0yXCIgKm5nSWY9XCJlcnJvclwiIFtzdHlsZS5jb2xvcl09XCInI2RjMzU0NSdcIj5JbnZhbGlkIFBpbmNvZGUgKEV4OjUwMDA4OCk8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1jb250YWluZXIgcm93IHctNzUgbXgtYXV0byBtdC0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItM1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInN1Ym1pdCAmJiBzaG93TWVzc2FnZSA9PSBmYWxzZSAmJiBwaW5jb2RlICYmIHBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT02ICYmICFsb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBub3QtYXZhaWxhYmxlLXRleHRcIj5XZSBhcmUgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGxvY2F0aW9uIGN1cnJlbnRseTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0IHctMTAwIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5neC1za2VsZXRvbi1sb2FkZXIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMzUlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogJzZ2aCcsXHJcbiAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxyXG4gICAgICAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tc3ViLXRleHQgbWItMyB3LTEwMCBmLTIwXCI+IHt7IHN1Ym1pdCAmJiBzaG93TWVzc2FnZSA9PSB0cnVlICYmIHBpbmNvZGUgJiZcclxuICAgICAgICAgICAgICAgIHBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT0gNiA/IFwiU2hvd2luZyBcIiArIHRvdGFsQ291bnQgKyBcIiBTdG9yZXMgaW4gXCIgKyBwaW5jb2RlIDpcclxuICAgICAgICAgICAgICAgIFwiU2hvd2luZyBBbGwgU3RvcmVzXCJ9fTwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlcjtlbHNlIGxvYWRlclNjcmVlblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHAtMlwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTJweDsgYm9yZGVyOiBub25lO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVsZSBvZiBzdG9yZXNMaXN0OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTQgaC0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1zdGFydCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cImNhcmQtdGl0bGUgZnctYm9sZCBtYi0xXCI+e3tlbGU/Lm5hbWV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTEgdGV4dC1kYXJrIGZ3LW1lZGl1bVwiPnt7ZWxlPy5hZGRyZXNzRGV0YWlscz8uYWRkcmVzc319LDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMSB0ZXh0LWRhcmsgZnctbWVkaXVtXCI+e3tlbGU/LmFkZHJlc3NEZXRhaWxzPy5jaXR5fX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbGU/LmFkZHJlc3NEZXRhaWxzPy5zdGF0ZX19LHt7ZWxlPy5hZGRyZXNzRGV0YWlscz8ucGluY29kZX19LDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPlBob25lLTxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tlbGU/LnBob25lfX08L3NwYW4+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+U1RPUkUgSE9VUlMgLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0VGltZShlbGU/LnN0b3JlSG91cnMsJ09QRU4nKX19IHRvIHt7Z2V0VGltZShlbGU/LnN0b3JlSG91cnMsJ0NMT1NFJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXIgY2FyZC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDQwcHg7IGhlaWdodDogMzBweDsgYmFja2dyb3VuZC1jb2xvcjogIzI1ZDM2NjtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuV2hhdHNhcHAoZWxlPy5waG9uZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhYiBmYS13aGF0c2FwcCB0ZXh0LXdoaXRlIGZzLTVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBmbGV4LWZpbGwgcHktMiBmdy1zZW1pYm9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlOGUzZmY7IGNvbG9yOiAjNmI0NmMxOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDI1cHg7Zm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09LIEEgVklTSVRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtZmlsbCBweS0yIGZ3LXNlbWlib2xkIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2E4NTVmNywgI2VjNDg5OSk7IGJvcmRlcjogbm9uZTsgYm9yZGVyLXJhZGl1czogMjVweDtmb250LXNpemU6IDEycHggIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3U3RvcmUoZWxlLnN0b3JlSWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklFVyBTVE9SRVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIFtidXR0b25EYXRhXT1cImJ1dHRvbj8uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24/LnN0eWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgW2J1dHRvbklkXT1cImJ1dHRvbj8uaWQgPz8gJydcIiAoY2xpY2spPVwidmlld1N0b3JlKGVsZS5zdG9yZUlkKVwiPnt7YnV0dG9uPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRlclNjcmVlbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgWzEsMiwzLDQsNSw2XVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjbGFzcz1cImNvbC00XCIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICc0MHZoJyxcclxuICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTJweCcsXHJcbiAgICAgICAgICAgICAgICAgfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbGlzdC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3N0b3JlLWxpc3Qvc3RvcmUtbGlzdC5tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uTW9kZWwsIEJhbm5lclN0eWxlc01vZGVsIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlTGlzdE1vZGFsIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHNlY3Rpb25UeXBlOiBzdHJpbmc7XG4gICAgc2VjdGlvbk5hbWU6IHN0cmluZztcbiAgICBjb250ZW50OiB7fTtcbiAgICBzdHlsZXM6IFN0b3JlTGlzdFN0eWxlTW9kZWw7XG4gICAgYWN0aW9uOiBBY3Rpb25Nb2RlbDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVMaXN0U3R5bGVNb2RlbCBleHRlbmRzIEJhbm5lclN0eWxlc01vZGVse1xufSAiXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtbGlzdC5tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3N0b3JlLWxpc3Qvc3RvcmUtbGlzdC5tb2RhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uTW9kZWwsIEJhbm5lclN0eWxlc01vZGVsIH0gZnJvbSBcIi4uLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdG9yZUxpc3RNb2RhbCB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgc2VjdGlvblR5cGU6IHN0cmluZztcclxuICAgIHNlY3Rpb25OYW1lOiBzdHJpbmc7XHJcbiAgICBjb250ZW50OiB7fTtcclxuICAgIHN0eWxlczogU3RvcmVMaXN0U3R5bGVNb2RlbDtcclxuICAgIGFjdGlvbjogQWN0aW9uTW9kZWw7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTdG9yZUxpc3RTdHlsZU1vZGVsIGV4dGVuZHMgQmFubmVyU3R5bGVzTW9kZWx7XHJcbn0gIl19