@posiwise/admin-module 0.0.3

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 (283) hide show
  1. package/README.md +7 -0
  2. package/assets/scss/_bootstrap_modules.scss +40 -0
  3. package/assets/scss/_custom-bootstrap.scss +13 -0
  4. package/assets/scss/_dashboard.scss +31 -0
  5. package/assets/scss/_dynamic-styles.scss +534 -0
  6. package/assets/scss/_plugins.scss +3 -0
  7. package/assets/scss/_public-pages.scss +7 -0
  8. package/assets/scss/_shared.scss +3 -0
  9. package/assets/scss/_variables.scss +5 -0
  10. package/assets/scss/common/landing-page-a/landing-page-style-1.scss +670 -0
  11. package/assets/scss/common/landing-page-b/banner.scss +141 -0
  12. package/assets/scss/common/landing-page-b/contact-us.scss +167 -0
  13. package/assets/scss/common/landing-page-b/explainer.scss +75 -0
  14. package/assets/scss/common/landing-page-b/explainer2.scss +35 -0
  15. package/assets/scss/common/landing-page-b/header.scss +56 -0
  16. package/assets/scss/common/landing-page-b/landing-page-style-2.scss +20 -0
  17. package/assets/scss/custom-bootstrap/_badge.scss +468 -0
  18. package/assets/scss/custom-bootstrap/_bootstrap_variables.scss +30 -0
  19. package/assets/scss/custom-bootstrap/_buttons.scss +84 -0
  20. package/assets/scss/custom-bootstrap/_card.scss +319 -0
  21. package/assets/scss/custom-bootstrap/_carousel.scss +6 -0
  22. package/assets/scss/custom-bootstrap/_form_select.scss +7 -0
  23. package/assets/scss/custom-bootstrap/_forms.scss +337 -0
  24. package/assets/scss/custom-bootstrap/_links.scss +7 -0
  25. package/assets/scss/custom-bootstrap/_modal.scss +16 -0
  26. package/assets/scss/custom-bootstrap/_navbar.scss +42 -0
  27. package/assets/scss/custom-bootstrap/_popover.scss +10 -0
  28. package/assets/scss/custom-bootstrap/_progress.scss +12 -0
  29. package/assets/scss/custom-bootstrap/_reboot.scss +93 -0
  30. package/assets/scss/custom-bootstrap/_type.scss +202 -0
  31. package/assets/scss/dashboard/_admin.scss +15 -0
  32. package/assets/scss/dashboard/_animations.scss +20 -0
  33. package/assets/scss/dashboard/_bootstrap-social.scss +641 -0
  34. package/assets/scss/dashboard/_chat.scss +250 -0
  35. package/assets/scss/dashboard/_coming-soon.scss +34 -0
  36. package/assets/scss/dashboard/_components.scss +229 -0
  37. package/assets/scss/dashboard/_email.scss +184 -0
  38. package/assets/scss/dashboard/_fixed-navbar.scss +18 -0
  39. package/assets/scss/dashboard/_gallery.scss +1201 -0
  40. package/assets/scss/dashboard/_helper.scss +736 -0
  41. package/assets/scss/dashboard/_horizontal-timeline.scss +314 -0
  42. package/assets/scss/dashboard/_icons.scss +107 -0
  43. package/assets/scss/dashboard/_layout.scss +23 -0
  44. package/assets/scss/dashboard/_misc.scss +220 -0
  45. package/assets/scss/dashboard/_notifications.scss +27 -0
  46. package/assets/scss/dashboard/_palette.scss +308 -0
  47. package/assets/scss/dashboard/_profile.scss +36 -0
  48. package/assets/scss/dashboard/_responsive.scss +209 -0
  49. package/assets/scss/dashboard/_search.scss +33 -0
  50. package/assets/scss/dashboard/_select.scss +16 -0
  51. package/assets/scss/dashboard/_sidebar-content.scss +632 -0
  52. package/assets/scss/dashboard/_tables.scss +17 -0
  53. package/assets/scss/dashboard/_tabs.scss +151 -0
  54. package/assets/scss/dashboard/_ui-switch.scss +6 -0
  55. package/assets/scss/dashboard/_upload.scss +249 -0
  56. package/assets/scss/dashboard/_utilities.scss +105 -0
  57. package/assets/scss/dashboard/_vertical-timeline.scss +1261 -0
  58. package/assets/scss/dashboard/mixins/_buttons.scss +78 -0
  59. package/assets/scss/dashboard/mixins/_colors.scss +29 -0
  60. package/assets/scss/dashboard/mixins/_custom.scss +34 -0
  61. package/assets/scss/dashboard/mixins/_shadows.scss +62 -0
  62. package/assets/scss/dashboard/mixins/_type.scss +16 -0
  63. package/assets/scss/dashboard/mixins/_typography.scss +29 -0
  64. package/assets/scss/dashboard/mixins/_utilities.scss +129 -0
  65. package/assets/scss/dashboard/mixins/_vendor-prefixes.scss +71 -0
  66. package/assets/scss/plugins/_plugin-nouislider.scss +199 -0
  67. package/assets/scss/plugins/_toastr.scss +71 -0
  68. package/assets/scss/plugins/perfect-scrollbar/_main.scss +3 -0
  69. package/assets/scss/plugins/perfect-scrollbar/_mixins.scss +135 -0
  70. package/assets/scss/plugins/perfect-scrollbar/_ps-custom.scss +134 -0
  71. package/assets/scss/plugins/perfect-scrollbar/_themes.scss +23 -0
  72. package/assets/scss/plugins/perfect-scrollbar/_variables.scss +19 -0
  73. package/assets/scss/public-pages/_buttons.scss +136 -0
  74. package/assets/scss/public-pages/_input-fields.scss +29 -0
  75. package/assets/scss/public-pages/_layout.scss +108 -0
  76. package/assets/scss/public-pages/mixins/_buttons.scss +28 -0
  77. package/assets/scss/shared/_modal.scss +28 -0
  78. package/assets/scss/shared/_prime-ng-tables.scss +107 -0
  79. package/assets/scss/shared/_prime-ng.scss +5100 -0
  80. package/assets/scss/variables/_app-colors-variables.scss +760 -0
  81. package/assets/scss/variables/_branding-variables.scss +93 -0
  82. package/assets/scss/variables/_dashboard-variables.scss +96 -0
  83. package/assets/scss/variables/_generic-variables.scss +33 -0
  84. package/assets/scss/variables/_landing-page-new-variables.scss +11 -0
  85. package/assets/scss/variables/_primeng-variables.scss +190 -0
  86. package/esm2020/admin-module.mjs +5 -0
  87. package/esm2020/index.mjs +85 -0
  88. package/esm2020/lib/admin-guard.service.mjs +44 -0
  89. package/esm2020/lib/admin-module.routing.mjs +706 -0
  90. package/esm2020/lib/admin.module.mjs +328 -0
  91. package/esm2020/lib/admin.service.mjs +411 -0
  92. package/esm2020/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +86 -0
  93. package/esm2020/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +72 -0
  94. package/esm2020/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +26 -0
  95. package/esm2020/lib/components/config/global-config-details/global-config-details.component.mjs +61 -0
  96. package/esm2020/lib/components/config/global-config-list/global-config-list.component.mjs +86 -0
  97. package/esm2020/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +24 -0
  98. package/esm2020/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +96 -0
  99. package/esm2020/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +24 -0
  100. package/esm2020/lib/components/credentials/credentials/credentials.component.mjs +81 -0
  101. package/esm2020/lib/components/credentials/credentials-details/credentials-details.component.mjs +70 -0
  102. package/esm2020/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +31 -0
  103. package/esm2020/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +87 -0
  104. package/esm2020/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +82 -0
  105. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +214 -0
  106. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +86 -0
  107. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +56 -0
  108. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +83 -0
  109. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +124 -0
  110. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +83 -0
  111. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +84 -0
  112. package/esm2020/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +83 -0
  113. package/esm2020/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +85 -0
  114. package/esm2020/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +24 -0
  115. package/esm2020/lib/components/faqs/faqs-list/faqs-list.component.mjs +289 -0
  116. package/esm2020/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +24 -0
  117. package/esm2020/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +80 -0
  118. package/esm2020/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +95 -0
  119. package/esm2020/lib/components/generic/generic-insight/generic-insight.component.mjs +11 -0
  120. package/esm2020/lib/components/generic/generic-misc/generic-misc.component.mjs +73 -0
  121. package/esm2020/lib/components/generic/generic-tabs/generic-tabs.component.mjs +31 -0
  122. package/esm2020/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +97 -0
  123. package/esm2020/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +24 -0
  124. package/esm2020/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +88 -0
  125. package/esm2020/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +77 -0
  126. package/esm2020/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +236 -0
  127. package/esm2020/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +73 -0
  128. package/esm2020/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +30 -0
  129. package/esm2020/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +167 -0
  130. package/esm2020/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +97 -0
  131. package/esm2020/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +38 -0
  132. package/esm2020/lib/components/permissions/permissions-details/permissions-details.component.mjs +83 -0
  133. package/esm2020/lib/components/permissions/permissions-list/permissions-list.component.mjs +76 -0
  134. package/esm2020/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +31 -0
  135. package/esm2020/lib/components/permissions/role-details/role-details.component.mjs +117 -0
  136. package/esm2020/lib/components/permissions/roles-list/roles-list.component.mjs +83 -0
  137. package/esm2020/lib/components/products/product-details/product-details.component.mjs +305 -0
  138. package/esm2020/lib/components/products/products-insight/products-insight.component.mjs +46 -0
  139. package/esm2020/lib/components/products/products-list/products-list.component.mjs +142 -0
  140. package/esm2020/lib/components/products/products-tabs/products-tabs.component.mjs +28 -0
  141. package/esm2020/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +55 -0
  142. package/esm2020/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +122 -0
  143. package/esm2020/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +125 -0
  144. package/esm2020/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +174 -0
  145. package/esm2020/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +210 -0
  146. package/esm2020/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +60 -0
  147. package/esm2020/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +98 -0
  148. package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +100 -0
  149. package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +48 -0
  150. package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +18 -0
  151. package/esm2020/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +48 -0
  152. package/esm2020/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +301 -0
  153. package/esm2020/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +35 -0
  154. package/esm2020/lib/components/tags/tags-category/tags-category.component.mjs +125 -0
  155. package/esm2020/lib/components/tags/tags-list/tags-list.component.mjs +139 -0
  156. package/esm2020/lib/components/tags/tags-tabs/tags-tabs.component.mjs +32 -0
  157. package/esm2020/lib/components/tips/tip-detail/tip-detail.component.mjs +75 -0
  158. package/esm2020/lib/components/tips/tips-list/tips-list.component.mjs +46 -0
  159. package/esm2020/lib/components/tips/tips-tabs/tips-tabs.component.mjs +25 -0
  160. package/esm2020/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +101 -0
  161. package/esm2020/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +93 -0
  162. package/esm2020/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +89 -0
  163. package/esm2020/lib/components/tracking/events/events.component.mjs +89 -0
  164. package/esm2020/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +49 -0
  165. package/esm2020/lib/components/tracking/versions/versions.component.mjs +100 -0
  166. package/esm2020/lib/components/users/user-details/user-details.component.mjs +148 -0
  167. package/esm2020/lib/components/users/users-insight/users-insight.component.mjs +38 -0
  168. package/esm2020/lib/components/users/users-list/users-list.component.mjs +312 -0
  169. package/esm2020/lib/components/users/users-tabs/users-tabs.component.mjs +32 -0
  170. package/esm2020/lib/shared/interface/contact-us.interface.mjs +2 -0
  171. package/esm2020/lib/shared/interface/credential.interface.mjs +2 -0
  172. package/esm2020/lib/shared/interface/domain-config.interface.mjs +2 -0
  173. package/esm2020/lib/shared/interface/feedback-question.interface.mjs +2 -0
  174. package/esm2020/lib/shared/interface/global-config.interface.mjs +2 -0
  175. package/esm2020/lib/shared/interface/login-notification.interface.mjs +2 -0
  176. package/esm2020/lib/shared/interface/newsletter.interface.mjs +2 -0
  177. package/esm2020/lib/shared/interface/permission.interface.mjs +2 -0
  178. package/esm2020/lib/shared/interface/privacy-tos.interface.mjs +2 -0
  179. package/esm2020/lib/shared/interface/tip.interface.mjs +2 -0
  180. package/esm2020/lib/shared/interface/tracking.interface.mjs +2 -0
  181. package/esm2020/lib/shared/models/admin.model.mjs +337 -0
  182. package/esm2020/lib/shared/routers/routers.mjs +27 -0
  183. package/fesm2015/admin-module.mjs +7762 -0
  184. package/fesm2015/admin-module.mjs.map +1 -0
  185. package/fesm2020/admin-module.mjs +7767 -0
  186. package/fesm2020/admin-module.mjs.map +1 -0
  187. package/index.d.ts +82 -0
  188. package/lib/admin-guard.service.d.ts +14 -0
  189. package/lib/admin-module.routing.d.ts +7 -0
  190. package/lib/admin.module.d.ts +98 -0
  191. package/lib/admin.service.d.ts +145 -0
  192. package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +51 -0
  193. package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +24 -0
  194. package/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.d.ts +9 -0
  195. package/lib/components/config/global-config-details/global-config-details.component.d.ts +25 -0
  196. package/lib/components/config/global-config-list/global-config-list.component.d.ts +51 -0
  197. package/lib/components/config/global-config-tabs/global-config-tabs.component.d.ts +7 -0
  198. package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +28 -0
  199. package/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.d.ts +7 -0
  200. package/lib/components/credentials/credentials/credentials.component.d.ts +49 -0
  201. package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +25 -0
  202. package/lib/components/credentials/credentials-tab/credentials-tab.component.d.ts +8 -0
  203. package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +52 -0
  204. package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +28 -0
  205. package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +67 -0
  206. package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +49 -0
  207. package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +44 -0
  208. package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +49 -0
  209. package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +54 -0
  210. package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +49 -0
  211. package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +49 -0
  212. package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +49 -0
  213. package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +50 -0
  214. package/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.d.ts +7 -0
  215. package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +63 -0
  216. package/lib/components/faqs/faqs-tabs/faqs-tabs.component.d.ts +7 -0
  217. package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +51 -0
  218. package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +56 -0
  219. package/lib/components/generic/generic-insight/generic-insight.component.d.ts +5 -0
  220. package/lib/components/generic/generic-misc/generic-misc.component.d.ts +16 -0
  221. package/lib/components/generic/generic-tabs/generic-tabs.component.d.ts +7 -0
  222. package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +53 -0
  223. package/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.d.ts +7 -0
  224. package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +50 -0
  225. package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +49 -0
  226. package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +77 -0
  227. package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +26 -0
  228. package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +15 -0
  229. package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +69 -0
  230. package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +52 -0
  231. package/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.d.ts +9 -0
  232. package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +51 -0
  233. package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +48 -0
  234. package/lib/components/permissions/permissions-tabs/permissions-tabs.component.d.ts +8 -0
  235. package/lib/components/permissions/role-details/role-details.component.d.ts +32 -0
  236. package/lib/components/permissions/roles-list/roles-list.component.d.ts +50 -0
  237. package/lib/components/products/product-details/product-details.component.d.ts +64 -0
  238. package/lib/components/products/products-insight/products-insight.component.d.ts +21 -0
  239. package/lib/components/products/products-list/products-list.component.d.ts +65 -0
  240. package/lib/components/products/products-tabs/products-tabs.component.d.ts +8 -0
  241. package/lib/components/products/users-list-for-product/users-list-for-product.component.d.ts +22 -0
  242. package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +29 -0
  243. package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +31 -0
  244. package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +43 -0
  245. package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +69 -0
  246. package/lib/components/subscriptions/subscription-products/subscription-products.component.d.ts +50 -0
  247. package/lib/components/subscriptions/subscription-users/subscription-users.component.d.ts +57 -0
  248. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +40 -0
  249. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +22 -0
  250. package/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.d.ts +6 -0
  251. package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +22 -0
  252. package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +93 -0
  253. package/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.d.ts +8 -0
  254. package/lib/components/tags/tags-category/tags-category.component.d.ts +32 -0
  255. package/lib/components/tags/tags-list/tags-list.component.d.ts +33 -0
  256. package/lib/components/tags/tags-tabs/tags-tabs.component.d.ts +9 -0
  257. package/lib/components/tips/tip-detail/tip-detail.component.d.ts +21 -0
  258. package/lib/components/tips/tips-list/tips-list.component.d.ts +41 -0
  259. package/lib/components/tips/tips-tabs/tips-tabs.component.d.ts +9 -0
  260. package/lib/components/tracking/ahoy-events/ahoy-events.component.d.ts +35 -0
  261. package/lib/components/tracking/ahoy-messages/ahoy-messages.component.d.ts +28 -0
  262. package/lib/components/tracking/ahoy-visits/ahoy-visits.component.d.ts +28 -0
  263. package/lib/components/tracking/events/events.component.d.ts +28 -0
  264. package/lib/components/tracking/tracking-tabs/tracking-tabs.component.d.ts +8 -0
  265. package/lib/components/tracking/versions/versions.component.d.ts +34 -0
  266. package/lib/components/users/user-details/user-details.component.d.ts +33 -0
  267. package/lib/components/users/users-insight/users-insight.component.d.ts +17 -0
  268. package/lib/components/users/users-list/users-list.component.d.ts +94 -0
  269. package/lib/components/users/users-tabs/users-tabs.component.d.ts +11 -0
  270. package/lib/shared/interface/contact-us.interface.d.ts +16 -0
  271. package/lib/shared/interface/credential.interface.d.ts +37 -0
  272. package/lib/shared/interface/domain-config.interface.d.ts +120 -0
  273. package/lib/shared/interface/feedback-question.interface.d.ts +10 -0
  274. package/lib/shared/interface/global-config.interface.d.ts +11 -0
  275. package/lib/shared/interface/login-notification.interface.d.ts +15 -0
  276. package/lib/shared/interface/newsletter.interface.d.ts +44 -0
  277. package/lib/shared/interface/permission.interface.d.ts +10 -0
  278. package/lib/shared/interface/privacy-tos.interface.d.ts +12 -0
  279. package/lib/shared/interface/tip.interface.d.ts +15 -0
  280. package/lib/shared/interface/tracking.interface.d.ts +105 -0
  281. package/lib/shared/models/admin.model.d.ts +29 -0
  282. package/lib/shared/routers/routers.d.ts +25 -0
  283. package/package.json +49 -0
@@ -0,0 +1,312 @@
1
+ import { ChangeDetectorRef, Component, Injector, ViewChild } from '@angular/core';
2
+ import { AdminService } from '../../../admin.service';
3
+ import { ROUTERS } from '../../../shared/routers/routers';
4
+ import { PAGE_SIZE } from '@posiwise/common-utilities';
5
+ import { AppBaseComponent } from '@posiwise/app-base-component';
6
+ import { PasswordValidationComponent } from '@posiwise/shared-components';
7
+ import { HelperService } from '@posiwise/helper-service';
8
+ import { ProductService, WindowService, PermissionService, AuthService, CustomToastService } from '@posiwise/common-services';
9
+ import { NavigationEnd } from '@angular/router';
10
+ import { Subject, takeUntil } from 'rxjs';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../../admin.service";
13
+ import * as i2 from "@posiwise/common-services";
14
+ import * as i3 from "primeng/table";
15
+ import * as i4 from "primeng/api";
16
+ import * as i5 from "primeng/tooltip";
17
+ import * as i6 from "@angular/common";
18
+ import * as i7 from "@posiwise/shared-components";
19
+ import * as i8 from "@angular/router";
20
+ import * as i9 from "@posiwise/directives";
21
+ import * as i10 from "@ng-bootstrap/ng-bootstrap";
22
+ import * as i11 from "@angular/forms";
23
+ import * as i12 from "@ngneat/transloco";
24
+ import * as i13 from "@posiwise/pipes";
25
+ export class UserListComponent extends AppBaseComponent {
26
+ constructor(adminService, toastr, productService, injector, authService, cdr, windowService) {
27
+ super(injector);
28
+ this.adminService = adminService;
29
+ this.toastr = toastr;
30
+ this.productService = productService;
31
+ this.authService = authService;
32
+ this.cdr = cdr;
33
+ this.windowService = windowService;
34
+ this.users = [];
35
+ this.searchText = '';
36
+ this.allUsers = [];
37
+ this.loading = true;
38
+ this.searchOptions = [
39
+ {
40
+ label: 'Role',
41
+ value: 'role'
42
+ },
43
+ {
44
+ label: 'Product',
45
+ value: 'product'
46
+ },
47
+ {
48
+ label: 'Feature Key',
49
+ value: 'feature_key'
50
+ }
51
+ ];
52
+ this.searchDataSource = [];
53
+ this.page = 1;
54
+ this.routers = ROUTERS;
55
+ this.masterProductId = this.appConfig.master_subscription.product_id;
56
+ this.featureKeysList = [];
57
+ this.filterByProducts = [];
58
+ this.filterByRoles = [];
59
+ this.filterByFeatureKeys = [];
60
+ this.criteria = [];
61
+ this.getTableState();
62
+ }
63
+ ngOnInit() {
64
+ this.subscriptionId = PermissionService.selectedSubscription?.id;
65
+ this.chatPermission = `${PermissionService.selectedProduct.permission}.${PermissionService.selectedProduct.feature_key}`;
66
+ this.getRoles();
67
+ this.getProducts();
68
+ this.userStore().subscribe(response => {
69
+ this.currentUser = response;
70
+ });
71
+ }
72
+ getTableState() {
73
+ this.localStorage.getItem$('user-list-state').subscribe(result => {
74
+ const res = JSON.parse(result);
75
+ this.searchText = res?.searchText || '';
76
+ if (res?.selectedOption?.value) {
77
+ this.selectedOption = res?.selectedOption;
78
+ this.filterSource = [this.selectedOption?.value];
79
+ }
80
+ if (res?.searchDataSource?.length) {
81
+ this.searchDataSource = res?.searchDataSource || [];
82
+ }
83
+ if (res?.selectedOption?.value === 'feature_key') {
84
+ this.criteria = res?.filterByFeatureKeys || [];
85
+ }
86
+ if (res?.selectedOption?.value === 'product') {
87
+ this.criteria = res?.filterByProducts || [];
88
+ }
89
+ if (res?.selectedOption?.value === 'role') {
90
+ this.criteria = res?.filterByRoles || [];
91
+ }
92
+ this.filterByFeatureKeys = res?.filterByFeatureKeys || [];
93
+ this.filterByProducts = res?.filterByProducts || [];
94
+ this.filterByRoles = res?.filterByRoles || [];
95
+ });
96
+ }
97
+ ngAfterViewChecked() {
98
+ this.cdr.detectChanges();
99
+ }
100
+ onLazyLoad(event) {
101
+ const pageDetails = HelperService.onTableLazyLoad(event);
102
+ this.page = pageDetails.page;
103
+ this.getUsers({
104
+ page: this.page,
105
+ page_size: PAGE_SIZE,
106
+ order_by: pageDetails.sortField,
107
+ order_direction: pageDetails.sortOrder,
108
+ search: this.searchText
109
+ });
110
+ }
111
+ getRoles() {
112
+ this.adminService.getRoles({}, this.subscriptionId).subscribe(response => {
113
+ this.allRoles = response.roles.map(item => {
114
+ return {
115
+ label: item.name,
116
+ value: item.id
117
+ };
118
+ });
119
+ });
120
+ }
121
+ getProducts() {
122
+ this.productService
123
+ .getProducts({
124
+ master_product_id: this.masterProductId,
125
+ subscription_id: this.subscriptionId
126
+ })
127
+ .subscribe(resp => {
128
+ if (resp.products) {
129
+ this.productList = resp.products.map(element => {
130
+ return {
131
+ value: element.id,
132
+ label: element.name
133
+ };
134
+ });
135
+ this.featureKeysList = resp.products.map(element => {
136
+ return {
137
+ value: element.feature_key,
138
+ label: element.feature_key
139
+ };
140
+ });
141
+ this.productList.unshift({
142
+ label: 'None',
143
+ value: null
144
+ });
145
+ }
146
+ });
147
+ }
148
+ getUsers(paging) {
149
+ const params = {
150
+ product_ids: this.filterByProducts.join() || '',
151
+ role_ids: this.filterByRoles.join() || '',
152
+ feature_keys: this.filterByFeatureKeys.join() || '',
153
+ subscription_id: this.subscriptionId
154
+ };
155
+ this.adminService.getUsers(paging, params).subscribe(response => {
156
+ this.users = response.users;
157
+ this.allUsers = [...this.users];
158
+ this.totalRecords = response.object_count;
159
+ this.loading = false;
160
+ });
161
+ }
162
+ onSearchOptionChange($event) {
163
+ this.criteria = [];
164
+ this.selectedOption = this.searchOptions.find(x => x.value === $event.value[0]);
165
+ if (this.selectedOption && this.selectedOption.value === 'role') {
166
+ this.searchDataSource = this.allRoles;
167
+ }
168
+ else if (this.selectedOption && this.selectedOption.value === 'product') {
169
+ this.searchDataSource = this.productList;
170
+ }
171
+ else if (this.selectedOption && this.selectedOption.value === 'feature_key') {
172
+ this.searchDataSource = this.featureKeysList;
173
+ }
174
+ else {
175
+ this.searchDataSource = [];
176
+ this.clearFilters();
177
+ this.getUsers({
178
+ page: this.page,
179
+ page_size: PAGE_SIZE
180
+ });
181
+ }
182
+ }
183
+ clearFilters() {
184
+ this.filterByProducts = [];
185
+ this.filterByFeatureKeys = [];
186
+ this.filterByRoles = [];
187
+ }
188
+ onSearchCriteria(evt) {
189
+ this.clearFilters();
190
+ if (this.selectedOption.value === 'role') {
191
+ this.onRoleChange(evt);
192
+ }
193
+ else if (this.selectedOption.value === 'product') {
194
+ this.onProductChange(evt);
195
+ }
196
+ else if (this.selectedOption.value === 'feature_key') {
197
+ this.onFeatureKeyChange(evt);
198
+ }
199
+ else {
200
+ this.searchDataSource = [];
201
+ }
202
+ }
203
+ onRoleChange(event) {
204
+ this.clearFilters();
205
+ this.filterByRoles = event.value;
206
+ this.getUsers({
207
+ page: this.page,
208
+ page_size: PAGE_SIZE
209
+ });
210
+ }
211
+ onProductChange(event) {
212
+ this.clearFilters();
213
+ this.filterByProducts = event.value;
214
+ this.getUsers({
215
+ page: this.page,
216
+ page_size: PAGE_SIZE
217
+ });
218
+ }
219
+ onFeatureKeyChange(event) {
220
+ this.clearFilters();
221
+ this.filterByFeatureKeys = event.value;
222
+ this.getUsers({
223
+ page: this.page,
224
+ page_size: PAGE_SIZE
225
+ });
226
+ }
227
+ onDelete(user) {
228
+ this.userToDelete = user;
229
+ this.passwordValidationModalForUserDelete.open();
230
+ }
231
+ deleteUser(_evnt) {
232
+ this.adminService
233
+ .deleteUser(this.userToDelete.id, this.subscriptionId)
234
+ .subscribe(() => {
235
+ this.users = this.users.filter(x => x.id !== this.userToDelete.id);
236
+ this.toastr.success(this.translation.translate('Admin.Users.DeletedMessage'));
237
+ this.getUsers({
238
+ page: this.page,
239
+ page_size: PAGE_SIZE
240
+ });
241
+ })
242
+ .add(() => {
243
+ this.userToDelete = null;
244
+ });
245
+ }
246
+ onImpersonate(user) {
247
+ this.userToImpersonate = user;
248
+ this.passwordValidationModalForImpersonate.open();
249
+ }
250
+ onUserImpersonation(_event) {
251
+ this.authService.platform$.subscribe(res => {
252
+ const platform = res;
253
+ this.authService
254
+ .impersonateUser({
255
+ email: this.userToImpersonate.email,
256
+ subscription_id: PermissionService.selectedSubscription.id,
257
+ phonegap: platform !== 'browser'
258
+ })
259
+ .subscribe(_ => {
260
+ this.toast.success(`You're now being logged in as another user...`);
261
+ // wait for 2 sec before redirecting user to home page
262
+ setTimeout(() => {
263
+ this.windowService.replaceUrl('/home');
264
+ }, 2000);
265
+ });
266
+ });
267
+ }
268
+ ngOnDestroy() {
269
+ const val = {
270
+ searchText: this.searchText,
271
+ filterByFeatureKeys: this.filterByFeatureKeys,
272
+ filterByRoles: this.filterByRoles,
273
+ filterByProducts: this.filterByProducts,
274
+ selectedOption: this.selectedOption,
275
+ searchDataSource: this.searchDataSource
276
+ };
277
+ localStorage.setItem('user-list-state', JSON.stringify(val));
278
+ const notifier = new Subject();
279
+ this.router.events.pipe(takeUntil(notifier)).subscribe(event => {
280
+ if (event instanceof NavigationEnd) {
281
+ if (!event.urlAfterRedirects.includes('/user')) {
282
+ this.localStorage.removeItem$('user-list-state');
283
+ notifier.next('');
284
+ }
285
+ }
286
+ });
287
+ super.ngOnDestroy();
288
+ }
289
+ disable2fa(id) {
290
+ this.remove2faUserId = id;
291
+ this.passwordValidationModalForRemove2fa.open();
292
+ }
293
+ remove2fa(_event) {
294
+ this.adminService.remove2fa(this.remove2faUserId, this.subscriptionId).subscribe();
295
+ }
296
+ }
297
+ UserListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UserListComponent, deps: [{ token: i1.AdminService }, { token: i2.CustomToastService }, { token: i2.ProductService }, { token: i0.Injector }, { token: i2.AuthService }, { token: i0.ChangeDetectorRef }, { token: i2.WindowService }], target: i0.ɵɵFactoryTarget.Component });
298
+ UserListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: UserListComponent, selector: "pw-admin-user-list", viewQueries: [{ propertyName: "passwordValidationModalForUserDelete", first: true, predicate: ["passwordValidationModalForUserDelete"], descendants: true }, { propertyName: "passwordValidationModalForImpersonate", first: true, predicate: ["passwordValidationModalForImpersonate"], descendants: true }, { propertyName: "passwordValidationModalForRemove2fa", first: true, predicate: ["passwordValidationModalForRemove2fa"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 create-user d-flex justify-content-between align-items-center my-3\">\n <h2 class=\"card-title p-0 float-start\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create User\n </a>\n </div>\n</div>\n<div class=\"primeng-datatable-container mt-0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"users\"\n [paginator]=\"true\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [responsive]=\"true\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"col-4\"\n *ngIf=\"selectedOption\">\n <p-multiSelect [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event)\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Select {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search User...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sortIcon field=\"id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sortIcon field=\"first_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sortIcon field=\"last_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sortIcon field=\"email\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sortIcon field=\"slug\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sortIcon field=\"encrypted_password\"></p-sortIcon>\n </th>\n\n <th scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sortIcon field=\"sessions_last_month\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sortIcon field=\"signed_up_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n <span *ngIf=\"user?.alpha\"\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"user?.beta\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n <span *ngIf=\"user?.current_sign_in_at;else lastSignin\">\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n <ng-template #lastSignin>\n {{ user.last_sign_in_at | dateFormat }}\n </ng-template>\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Impersonate this user\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows\"\n (click)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n <li ngbTooltip=\"Disable 2fa\"\n (click)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <ng-template [ngIf]=\"currentUser && user.id !== currentUser.id\">\n <li ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <li ngbTooltip=\"Edit\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\n<!-- password validaton modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validaton modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.search-input input{width:100%}.w-150{width:150px}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.alpha-beta{font-size:14px}\n"], dependencies: [{ kind: "component", type: i3.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i3.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.PasswordValidationComponent, selector: "pw-password-validation", outputs: ["successEvent"] }, { kind: "directive", type: i8.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i9.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i10.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i11.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: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i13.DateFormatPipe, name: "dateFormat" }] });
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UserListComponent, decorators: [{
300
+ type: Component,
301
+ args: [{ selector: 'pw-admin-user-list', template: "<div class=\"row\">\n <div class=\"col-12 create-user d-flex justify-content-between align-items-center my-3\">\n <h2 class=\"card-title p-0 float-start\">Users</h2>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n id=\"btn-create\"\n *rbacAllow=\"'SuperAdmin'\"\n [routerLink]=\"[routers.usersDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create User\n </a>\n </div>\n</div>\n<div class=\"primeng-datatable-container mt-0\">\n <div class=\"user-management-table table-responsive\">\n <p-table #dt\n [value]=\"users\"\n [paginator]=\"true\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [responsive]=\"true\"\n [totalRecords]=\"totalRecords\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter\">\n <div class=\"col-sm-4\">\n <p-multiSelect [options]=\"searchOptions\"\n (onChange)=\"onSearchOptionChange($event)\"\n placeholder=\"Filter users by role, product, or feature\"\n [selectionLimit]=\"1\"\n [(ngModel)]=\"filterSource\"\n [showToggleAll]=\"true\"\n [showHeader]=\"true\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"col-4\"\n *ngIf=\"selectedOption\">\n <p-multiSelect [options]=\"searchDataSource\"\n (onChange)=\"onSearchCriteria($event)\"\n [showToggleAll]=\"true\"\n [(ngModel)]=\"criteria\"\n [showHeader]=\"true\"\n placeholder=\"Select {{ selectedOption.value }}s\"\n maxSelectedLabels=\"2\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search User...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"id\">\n {{ 'Admin.Users.Id' | transloco }}\n <p-sortIcon field=\"id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"first_name\">\n {{ 'Label.FirstName' | transloco }}\n <p-sortIcon field=\"first_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_name\">\n {{ 'Label.LastName' | transloco }}\n <p-sortIcon field=\"last_name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"email\">\n {{ 'Label.Email' | transloco }}\n <p-sortIcon field=\"email\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"slug\">\n {{ 'Admin.Users.Slug' | transloco }}\n <p-sortIcon field=\"slug\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"encrypted_password\">\n {{ 'Admin.Users.EmailConfirm' | transloco }}\n <p-sortIcon field=\"encrypted_password\"></p-sortIcon>\n </th>\n\n <th scope=\"true\"\n pSortableColumn=\"sessions_last_month\">\n {{ 'Admin.Subscriptions.SessionsTotalLastMonth' | transloco }}\n <p-sortIcon field=\"sessions_last_month\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"last_sign_in_at\">\n {{ 'Admin.Users.LastLogin' | transloco }}\n <p-sortIcon field=\"last_sign_in_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"signed_up_at\">\n {{ 'Admin.Users.RegisteredOn' | transloco }}\n <p-sortIcon field=\"signed_up_at\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n class=\"actions-list-four\">\n {{ 'Label.Actions' | transloco }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-user>\n <tr>\n <td data-head=\"id\"> {{ user.id }}</td>\n <td data-head=\"First Name\"><a [routerLink]=\"['/members', user.slug]\">{{ user.first_name }}</a></td>\n <td data-head=\"Last Name\">{{ user.last_name }}\n <span *ngIf=\"user?.alpha\"\n [pTooltip]=\"'Admin.Users.Tooltip.AlphaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-a alpha-beta text-warning\"></i>\n </span>\n <span class=\"ms-2\"\n *ngIf=\"user?.beta\"\n [pTooltip]=\"'Admin.Users.Tooltip.BetaIcon'|transloco\"\n tooltipPosition=\"top\">\n <i class=\"fa-regular fa-square-b alpha-beta text-primary\" ></i>\n </span>\n </td>\n <td data-head=\"Email\">{{ user.email }}</td>\n <td data-head=\"Slug\">{{ user.slug }}</td>\n <td data-head=\"Email Confirm\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: user?.has_password\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ user?.has_password ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"S/m #\">\n <span [ngClass]=\"{\n 'text-danger fw-bold': user?.sessions_last_month < 3\n }\">{{ user?.sessions_last_month }}</span>\n </td>\n <td data-head=\"Last Login\">\n <span *ngIf=\"user?.current_sign_in_at;else lastSignin\">\n {{ user.current_sign_in_at | dateFormat }}\n </span>\n <ng-template #lastSignin>\n {{ user.last_sign_in_at | dateFormat }}\n </ng-template>\n </td>\n <td data-head=\"Registered On\">{{ user.signed_up_at | dateFormat }}</td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Impersonate this user\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fas fa-people-arrows\"\n (click)=\"onImpersonate(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <ng-template [ngIf]=\"user?.enable_two_factor_authenticator\">\n <li ngbTooltip=\"Disable 2fa\"\n (click)=\"disable2fa(user?.id)\"\n *rbacAllow=\"'Pages.Alpha'\"\n class=\"me-2 me-sm-3\">\n <i class=\"fa fa-lock\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <ng-template [ngIf]=\"currentUser && user.id !== currentUser.id\">\n <li ngbTooltip=\"Message\"\n *rbacAllow=\"chatPermission\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"['/message']\"\n [fragment]=\"user.slug\">\n <i class=\"fa fa-comments cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ng-template>\n <li ngbTooltip=\"Edit\"\n *rbacAllow=\"'Pages.Admin.Users.Edit'\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.usersDetails + user.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n *rbacAllow=\"'Pages.Admin.Users.Delete'\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(user)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <span class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ totalRecords }}</span>\n </div>\n</div>\n<!-- password validation modal for delete user -->\n<pw-password-validation #passwordValidationModalForUserDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n</pw-password-validation>\n<!-- password validaton modal for impersonate -->\n<pw-password-validation #passwordValidationModalForImpersonate\n (successEvent)=\"onUserImpersonation($event)\">\n</pw-password-validation>\n<!-- password validaton modal for remove2fa -->\n<pw-password-validation #passwordValidationModalForRemove2fa\n (successEvent)=\"remove2fa($event)\">\n</pw-password-validation>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.search-input input{width:100%}.w-150{width:150px}@media (min-width: 767px){.table-responsive td,.table-responsive th{font-size:11px!important}}.alpha-beta{font-size:14px}\n"] }]
302
+ }], ctorParameters: function () { return [{ type: i1.AdminService }, { type: i2.CustomToastService }, { type: i2.ProductService }, { type: i0.Injector }, { type: i2.AuthService }, { type: i0.ChangeDetectorRef }, { type: i2.WindowService }]; }, propDecorators: { passwordValidationModalForUserDelete: [{
303
+ type: ViewChild,
304
+ args: ['passwordValidationModalForUserDelete', { static: false }]
305
+ }], passwordValidationModalForImpersonate: [{
306
+ type: ViewChild,
307
+ args: ['passwordValidationModalForImpersonate', { static: false }]
308
+ }], passwordValidationModalForRemove2fa: [{
309
+ type: ViewChild,
310
+ args: ['passwordValidationModalForRemove2fa', { static: false }]
311
+ }] } });
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMtbGlzdC91c2Vycy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy91c2Vycy91c2Vycy1saXN0L3VzZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUNILGNBQWMsRUFDZCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxrQkFBa0IsRUFDckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU8xQyxNQUFNLE9BQU8saUJBQ1QsU0FBUSxnQkFBZ0I7SUEyRXhCLFlBQ1ksWUFBMEIsRUFDMUIsTUFB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QUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsbUNBQW1DLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFNO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkYsQ0FBQzs7OEdBalZRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDZnQkNsQzlCLDJ6U0FtT0E7MkZEak1hLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxvQkFBb0I7OFFBUzlCLG9DQUFvQztzQkFEbkMsU0FBUzt1QkFBQyxzQ0FBc0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXBFLHFDQUFxQztzQkFEcEMsU0FBUzt1QkFBQyx1Q0FBdUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXJFLG1DQUFtQztzQkFEbEMsU0FBUzt1QkFBQyxxQ0FBcUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGF6eUxvYWRFdmVudCwgU2VsZWN0SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHsgQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4uc2VydmljZSc7XG5pbXBvcnQgeyBST1VURVJTIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3JvdXRlcnMvcm91dGVycyc7XG5pbXBvcnQgeyBQQUdFX1NJWkUgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRpb25Db21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2Uvc2hhcmVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUGFnaW5nIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBQcm9kdWN0U2VydmljZSxcbiAgICBXaW5kb3dTZXJ2aWNlLFxuICAgIFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIEF1dGhTZXJ2aWNlLFxuICAgIEN1c3RvbVRvYXN0U2VydmljZVxufSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXNlcnZpY2VzJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctYWRtaW4tdXNlci1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlcnMtbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJMaXN0Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIEBWaWV3Q2hpbGQoJ3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZTogUGFzc3dvcmRWYWxpZGF0aW9uQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgncGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JJbXBlcnNvbmF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHBhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9ySW1wZXJzb25hdGU6IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yUmVtb3ZlMmZhJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JSZW1vdmUyZmE6IFBhc3N3b3JkVmFsaWRhdGlvbkNvbXBvbmVudDtcblxuICAgIHRvdGFsUmVjb3JkczogbnVtYmVyO1xuXG4gICAgdXNlcnM6IFVzZXJbXSA9IFtdO1xuXG4gICAgYWxsUm9sZXM6IFNlbGVjdEl0ZW1bXTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIGFsbFVzZXJzOiBVc2VyW10gPSBbXTtcblxuICAgIHByb2R1Y3RMaXN0OiBTZWxlY3RJdGVtW107XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIHNlYXJjaE9wdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUm9sZScsXG4gICAgICAgICAgICB2YWx1ZTogJ3JvbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnUHJvZHVjdCcsXG4gICAgICAgICAgICB2YWx1ZTogJ3Byb2R1Y3QnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRmVhdHVyZSBLZXknLFxuICAgICAgICAgICAgdmFsdWU6ICdmZWF0dXJlX2tleSdcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBzZWFyY2hEYXRhU291cmNlID0gW107XG5cbiAgICBzZWxlY3RlZE9wdGlvbjogU2VsZWN0SXRlbTtcblxuICAgIGN1cnJlbnRVc2VyOiBVc2VyO1xuXG4gICAgcHJpdmF0ZSBwYWdlID0gMTtcblxuICAgIHJvdXRlcnMgPSBST1VURVJTO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIG1hc3RlclByb2R1Y3RJZCA9IHRoaXMuYXBwQ29uZmlnLm1hc3Rlcl9zdWJzY3JpcHRpb24ucHJvZHVjdF9pZDtcblxuICAgIGZlYXR1cmVLZXlzTGlzdCA9IFtdO1xuXG4gICAgcHJpdmF0ZSBmaWx0ZXJCeVByb2R1Y3RzID0gW107XG5cbiAgICBwcml2YXRlIGZpbHRlckJ5Um9sZXMgPSBbXTtcblxuICAgIGZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcblxuICAgIHByaXZhdGUgdXNlclRvRGVsZXRlOiBVc2VyO1xuXG4gICAgY2hhdFBlcm1pc3Npb246IHN0cmluZztcblxuICAgIHVzZXJUb0ltcGVyc29uYXRlOiBVc2VyO1xuXG4gICAgcmVtb3ZlMmZhVXNlcklkOiBudW1iZXI7XG5cbiAgICBmaWx0ZXJTb3VyY2U6IGFueTtcblxuICAgIGNyaXRlcmlhID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IEN1c3RvbVRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAgICAgdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgIHRoaXMuY2hhdFBlcm1pc3Npb24gPSBgJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3QucGVybWlzc2lvbn0uJHtQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFByb2R1Y3QuZmVhdHVyZV9rZXl9YDtcbiAgICAgICAgdGhpcy5nZXRSb2xlcygpO1xuICAgICAgICB0aGlzLmdldFByb2R1Y3RzKCk7XG5cbiAgICAgICAgdGhpcy51c2VyU3RvcmUoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlciA9IHJlc3BvbnNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRUYWJsZVN0YXRlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgndXNlci1saXN0LXN0YXRlJykuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSByZXM/LnNlYXJjaFRleHQgfHwgJyc7XG4gICAgICAgICAgICBpZiAocmVzPy5zZWxlY3RlZE9wdGlvbj8udmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gcmVzPy5zZWxlY3RlZE9wdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNvdXJjZSA9IFt0aGlzLnNlbGVjdGVkT3B0aW9uPy52YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzPy5zZWFyY2hEYXRhU291cmNlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFTb3VyY2UgPSByZXM/LnNlYXJjaERhdGFTb3VyY2UgfHwgW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzPy5zZWxlY3RlZE9wdGlvbj8udmFsdWUgPT09ICdmZWF0dXJlX2tleScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyaXRlcmlhID0gcmVzPy5maWx0ZXJCeUZlYXR1cmVLZXlzIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlcz8uc2VsZWN0ZWRPcHRpb24/LnZhbHVlID09PSAncHJvZHVjdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyaXRlcmlhID0gcmVzPy5maWx0ZXJCeVByb2R1Y3RzIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlcz8uc2VsZWN0ZWRPcHRpb24/LnZhbHVlID09PSAncm9sZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyaXRlcmlhID0gcmVzPy5maWx0ZXJCeVJvbGVzIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzID0gcmVzPy5maWx0ZXJCeUZlYXR1cmVLZXlzIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJCeVByb2R1Y3RzID0gcmVzPy5maWx0ZXJCeVByb2R1Y3RzIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gcmVzPy5maWx0ZXJCeVJvbGVzIHx8IFtdO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkxhenlMb2FkKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VEZXRhaWxzID0gSGVscGVyU2VydmljZS5vblRhYmxlTGF6eUxvYWQoZXZlbnQpO1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlRGV0YWlscy5wYWdlO1xuICAgICAgICB0aGlzLmdldFVzZXJzKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgb3JkZXJfYnk6IHBhZ2VEZXRhaWxzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIG9yZGVyX2RpcmVjdGlvbjogcGFnZURldGFpbHMuc29ydE9yZGVyLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb2xlcygpIHtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2UuZ2V0Um9sZXMoe30sIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFJvbGVzID0gcmVzcG9uc2Uucm9sZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtLmlkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2R1Y3RzKCkge1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0UHJvZHVjdHMoe1xuICAgICAgICAgICAgICAgIG1hc3Rlcl9wcm9kdWN0X2lkOiB0aGlzLm1hc3RlclByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25faWQ6IHRoaXMuc3Vic2NyaXB0aW9uSWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwLnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdExpc3QgPSByZXNwLnByb2R1Y3RzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGVsZW1lbnQubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZUtleXNMaXN0ID0gcmVzcC5wcm9kdWN0cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbGVtZW50LmZlYXR1cmVfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RMaXN0LnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdOb25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VXNlcnMocGFnaW5nOiBQYWdpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgcHJvZHVjdF9pZHM6IHRoaXMuZmlsdGVyQnlQcm9kdWN0cy5qb2luKCkgfHwgJycsXG4gICAgICAgICAgICByb2xlX2lkczogdGhpcy5maWx0ZXJCeVJvbGVzLmpvaW4oKSB8fCAnJyxcbiAgICAgICAgICAgIGZlYXR1cmVfa2V5czogdGhpcy5maWx0ZXJCeUZlYXR1cmVLZXlzLmpvaW4oKSB8fCAnJyxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogdGhpcy5zdWJzY3JpcHRpb25JZFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXRVc2VycyhwYWdpbmcsIHBhcmFtcykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlcnMgPSByZXNwb25zZS51c2VycztcbiAgICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSBbLi4udGhpcy51c2Vyc107XG4gICAgICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlYXJjaE9wdGlvbkNoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jcml0ZXJpYSA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5zZWFyY2hPcHRpb25zLmZpbmQoeCA9PiB4LnZhbHVlID09PSAkZXZlbnQudmFsdWVbMF0pO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSAncm9sZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YVNvdXJjZSA9IHRoaXMuYWxsUm9sZXM7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSAncHJvZHVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YVNvdXJjZSA9IHRoaXMucHJvZHVjdExpc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSAnZmVhdHVyZV9rZXknKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaERhdGFTb3VyY2UgPSB0aGlzLmZlYXR1cmVLZXlzTGlzdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YVNvdXJjZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlcnMoe1xuICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQnlQcm9kdWN0cyA9IFtdO1xuICAgICAgICB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMgPSBbXTtcbiAgICAgICAgdGhpcy5maWx0ZXJCeVJvbGVzID0gW107XG4gICAgfVxuXG4gICAgb25TZWFyY2hDcml0ZXJpYShldnQpIHtcbiAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb24udmFsdWUgPT09ICdyb2xlJykge1xuICAgICAgICAgICAgdGhpcy5vblJvbGVDaGFuZ2UoZXZ0KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uLnZhbHVlID09PSAncHJvZHVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMub25Qcm9kdWN0Q2hhbmdlKGV2dCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbi52YWx1ZSA9PT0gJ2ZlYXR1cmVfa2V5Jykge1xuICAgICAgICAgICAgdGhpcy5vbkZlYXR1cmVLZXlDaGFuZ2UoZXZ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGF0YVNvdXJjZSA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Sb2xlQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xlYXJGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyQnlSb2xlcyA9IGV2ZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmdldFVzZXJzKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUHJvZHVjdENoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgICAgICB0aGlzLmZpbHRlckJ5UHJvZHVjdHMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRmVhdHVyZUtleUNoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgICAgICB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZSh1c2VyOiBVc2VyKSB7XG4gICAgICAgIHRoaXMudXNlclRvRGVsZXRlID0gdXNlcjtcbiAgICAgICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclVzZXJEZWxldGUub3BlbigpO1xuICAgIH1cblxuICAgIGRlbGV0ZVVzZXIoX2V2bnQpIHtcbiAgICAgICAgdGhpcy5hZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGVVc2VyKHRoaXMudXNlclRvRGVsZXRlLmlkLCB0aGlzLnN1YnNjcmlwdGlvbklkKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlcnMuZmlsdGVyKHggPT4geC5pZCAhPT0gdGhpcy51c2VyVG9EZWxldGUuaWQpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3ModGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLlVzZXJzLkRlbGV0ZWRNZXNzYWdlJykpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRVc2Vycyh7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJUb0RlbGV0ZSA9IG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkltcGVyc29uYXRlKHVzZXI6IFVzZXIpIHtcbiAgICAgICAgdGhpcy51c2VyVG9JbXBlcnNvbmF0ZSA9IHVzZXI7XG4gICAgICAgIHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JJbXBlcnNvbmF0ZS5vcGVuKCk7XG4gICAgfVxuXG4gICAgb25Vc2VySW1wZXJzb25hdGlvbihfZXZlbnQpIHtcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5wbGF0Zm9ybSQuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuaW1wZXJzb25hdGVVc2VyKHtcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IHRoaXMudXNlclRvSW1wZXJzb25hdGUuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZDogUGVybWlzc2lvblNlcnZpY2Uuc2VsZWN0ZWRTdWJzY3JpcHRpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgIHBob25lZ2FwOiBwbGF0Zm9ybSAhPT0gJ2Jyb3dzZXInXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoYFlvdSdyZSBub3cgYmVpbmcgbG9nZ2VkIGluIGFzIGFub3RoZXIgdXNlci4uLmApO1xuICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IGZvciAyIHNlYyBiZWZvcmUgcmVkaXJlY3RpbmcgdXNlciB0byBob21lIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2UucmVwbGFjZVVybCgnL2hvbWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCB2YWwgPSB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQsXG4gICAgICAgICAgICBmaWx0ZXJCeUZlYXR1cmVLZXlzOiB0aGlzLmZpbHRlckJ5RmVhdHVyZUtleXMsXG4gICAgICAgICAgICBmaWx0ZXJCeVJvbGVzOiB0aGlzLmZpbHRlckJ5Um9sZXMsXG4gICAgICAgICAgICBmaWx0ZXJCeVByb2R1Y3RzOiB0aGlzLmZpbHRlckJ5UHJvZHVjdHMsXG4gICAgICAgICAgICBzZWxlY3RlZE9wdGlvbjogdGhpcy5zZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICAgIHNlYXJjaERhdGFTb3VyY2U6IHRoaXMuc2VhcmNoRGF0YVNvdXJjZVxuICAgICAgICB9O1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1saXN0LXN0YXRlJywgSlNPTi5zdHJpbmdpZnkodmFsKSk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWVyID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKG5vdGlmaWVyKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLmluY2x1ZGVzKCcvdXNlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0kKCd1c2VyLWxpc3Qtc3RhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubmV4dCgnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBkaXNhYmxlMmZhKGlkOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUyZmFVc2VySWQgPSBpZDtcbiAgICAgICAgdGhpcy5wYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclJlbW92ZTJmYS5vcGVuKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlMmZhKF9ldmVudCkge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5yZW1vdmUyZmEodGhpcy5yZW1vdmUyZmFVc2VySWQsIHRoaXMuc3Vic2NyaXB0aW9uSWQpLnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBjcmVhdGUtdXNlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG15LTNcIj5cbiAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBmbG9hdC1zdGFydFwiPlVzZXJzPC9oMj5cbiAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeSBmbG9hdC1lbmRcIlxuICAgICAgaWQ9XCJidG4tY3JlYXRlXCJcbiAgICAgICpyYmFjQWxsb3c9XCInU3VwZXJBZG1pbidcIlxuICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMudXNlcnNEZXRhaWxzICsgJ2FkZCddXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBDcmVhdGUgVXNlclxuICAgIDwvYT5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwcmltZW5nLWRhdGF0YWJsZS1jb250YWluZXIgbXQtMFwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1tYW5hZ2VtZW50LXRhYmxlIHRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICA8cC10YWJsZSAjZHRcbiAgICAgIFt2YWx1ZV09XCJ1c2Vyc1wiXG4gICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgW2xhenldPVwidHJ1ZVwiXG4gICAgICBbcm93c109XCJQQUdFX1NJWkVcIlxuICAgICAgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXG4gICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgIFtmaWx0ZXJEZWxheV09XCIxMDAwXCJcbiAgICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgICBbY3VzdG9tU29ydF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWZpbHRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxuICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwic2VhcmNoT3B0aW9uc1wiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblNlYXJjaE9wdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgdXNlcnMgYnkgcm9sZSwgcHJvZHVjdCwgb3IgZmVhdHVyZVwiXG4gICAgICAgICAgICAgIFtzZWxlY3Rpb25MaW1pdF09XCIxXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJTb3VyY2VcIlxuICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkT3B0aW9uXCI+XG4gICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJzZWFyY2hEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uU2VhcmNoQ3JpdGVyaWEoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cInRydWVcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyaXRlcmlhXCJcbiAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHt7IHNlbGVjdGVkT3B0aW9uLnZhbHVlIH19c1wiXG4gICAgICAgICAgICAgIG1heFNlbGVjdGVkTGFiZWxzPVwiMlwiXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggbXQtMiBtZS0yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBVc2VyLi4uXCJcbiAgICAgICAgICAgICAgZGF0YS1jeT1cInVzZXItc2VhcmNoXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwid2QtOTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImlkXCI+XG4gICAgICAgICAgICB7eyAnQWRtaW4uVXNlcnMuSWQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImlkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJmaXJzdF9uYW1lXCI+XG4gICAgICAgICAgICB7eyAnTGFiZWwuRmlyc3ROYW1lJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJmaXJzdF9uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJsYXN0X25hbWVcIj5cbiAgICAgICAgICAgIHt7ICdMYWJlbC5MYXN0TmFtZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwibGFzdF9uYW1lXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJlbWFpbFwiPlxuICAgICAgICAgICAge3sgJ0xhYmVsLkVtYWlsJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJlbWFpbFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwic2x1Z1wiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLlNsdWcnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNsdWdcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImVuY3J5cHRlZF9wYXNzd29yZFwiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLkVtYWlsQ29uZmlybScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiZW5jcnlwdGVkX3Bhc3N3b3JkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInNlc3Npb25zX2xhc3RfbW9udGhcIj5cbiAgICAgICAgICAgIHt7ICdBZG1pbi5TdWJzY3JpcHRpb25zLlNlc3Npb25zVG90YWxMYXN0TW9udGgnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNlc3Npb25zX2xhc3RfbW9udGhcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImxhc3Rfc2lnbl9pbl9hdFwiPlxuICAgICAgICAgICAge3sgJ0FkbWluLlVzZXJzLkxhc3RMb2dpbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwibGFzdF9zaWduX2luX2F0XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJzaWduZWRfdXBfYXRcIj5cbiAgICAgICAgICAgIHt7ICdBZG1pbi5Vc2Vycy5SZWdpc3RlcmVkT24nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInNpZ25lZF91cF9hdFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWxpc3QtZm91clwiPlxuICAgICAgICAgICAge3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICAgIGxldC11c2VyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cImlkXCI+IHt7IHVzZXIuaWQgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJGaXJzdCBOYW1lXCI+PGEgW3JvdXRlckxpbmtdPVwiWycvbWVtYmVycycsIHVzZXIuc2x1Z11cIj57eyB1c2VyLmZpcnN0X25hbWUgfX08L2E+PC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTGFzdCBOYW1lXCI+e3sgdXNlci5sYXN0X25hbWUgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidXNlcj8uYWxwaGFcIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiJ0FkbWluLlVzZXJzLlRvb2x0aXAuQWxwaGFJY29uJ3x0cmFuc2xvY29cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXNxdWFyZS1hIGFscGhhLWJldGEgdGV4dC13YXJuaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyPy5iZXRhXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidBZG1pbi5Vc2Vycy5Ub29sdGlwLkJldGFJY29uJ3x0cmFuc2xvY29cIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXNxdWFyZS1iIGFscGhhLWJldGEgdGV4dC1wcmltYXJ5XCIgPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJFbWFpbFwiPnt7IHVzZXIuZW1haWwgfX08L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJTbHVnXCI+e3sgdXNlci5zbHVnIH19PC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiRW1haWwgQ29uZmlybVwiPlxuICAgICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHVzZXI/Lmhhc19wYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IHVzZXI/Lmhhc19wYXNzd29yZCA/ICdZZXMnIDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJTL20gI1wiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtZGFuZ2VyIGZ3LWJvbGQnOiB1c2VyPy5zZXNzaW9uc19sYXN0X21vbnRoIDwgM1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3sgdXNlcj8uc2Vzc2lvbnNfbGFzdF9tb250aCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJMYXN0IExvZ2luXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInVzZXI/LmN1cnJlbnRfc2lnbl9pbl9hdDtlbHNlIGxhc3RTaWduaW5cIj5cbiAgICAgICAgICAgICAge3sgdXNlci5jdXJyZW50X3NpZ25faW5fYXQgIHwgZGF0ZUZvcm1hdCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsYXN0U2lnbmluPlxuICAgICAgICAgICAgICB7eyB1c2VyLmxhc3Rfc2lnbl9pbl9hdCB8IGRhdGVGb3JtYXQgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUmVnaXN0ZXJlZCBPblwiPnt7IHVzZXIuc2lnbmVkX3VwX2F0IHwgZGF0ZUZvcm1hdCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZVwiPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkltcGVyc29uYXRlIHRoaXMgdXNlclwiXG4gICAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BbHBoYSdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhcyBmYS1wZW9wbGUtYXJyb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JbXBlcnNvbmF0ZSh1c2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ1c2VyPy5lbmFibGVfdHdvX2ZhY3Rvcl9hdXRoZW50aWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEaXNhYmxlIDJmYVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGlzYWJsZTJmYSh1c2VyPy5pZClcIlxuICAgICAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BbHBoYSdcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtbG9ja1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY3VycmVudFVzZXIgJiYgdXNlci5pZCAhPT0gY3VycmVudFVzZXIuaWRcIj5cbiAgICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIk1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cImNoYXRQZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21lc3NhZ2UnXVwiXG4gICAgICAgICAgICAgICAgICBbZnJhZ21lbnRdPVwidXNlci5zbHVnXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvbW1lbnRzIGN0YTEtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkVkaXRcIlxuICAgICAgICAgICAgICAgICpyYmFjQWxsb3c9XCInUGFnZXMuQWRtaW4uVXNlcnMuRWRpdCdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy51c2Vyc0RldGFpbHMgKyB1c2VyLmlkXVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgICAqcmJhY0FsbG93PVwiJ1BhZ2VzLkFkbWluLlVzZXJzLkRlbGV0ZSdcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKHVzZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10YWJsZT5cbiAgICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyB0b3RhbFJlY29yZHMgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRpb24gbW9kYWwgZm9yIGRlbGV0ZSB1c2VyIC0tPlxuPHB3LXBhc3N3b3JkLXZhbGlkYXRpb24gI3Bhc3N3b3JkVmFsaWRhdGlvbk1vZGFsRm9yVXNlckRlbGV0ZVxuICAoc3VjY2Vzc0V2ZW50KT1cImRlbGV0ZVVzZXIoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPHA+e3sgJ1VzZXIuQWNjb3VudC5NZXNzYWdlLkFjdGlvbkNhbk5vdFVuZG9uZScgfCB0cmFuc2xvY28gfX08L3A+XG4gICAgICA8cD57eyAnVXNlci5BY2NvdW50Lk1lc3NhZ2UuQ29uZmlybVBhc3N3b3JkJyB8IHRyYW5zbG9jbyB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3B3LXBhc3N3b3JkLXZhbGlkYXRpb24+XG48IS0tIHBhc3N3b3JkIHZhbGlkYXRvbiBtb2RhbCBmb3IgaW1wZXJzb25hdGUgLS0+XG48cHctcGFzc3dvcmQtdmFsaWRhdGlvbiAjcGFzc3dvcmRWYWxpZGF0aW9uTW9kYWxGb3JJbXBlcnNvbmF0ZVxuICAoc3VjY2Vzc0V2ZW50KT1cIm9uVXNlckltcGVyc29uYXRpb24oJGV2ZW50KVwiPlxuPC9wdy1wYXNzd29yZC12YWxpZGF0aW9uPlxuPCEtLSBwYXNzd29yZCB2YWxpZGF0b24gbW9kYWwgZm9yIHJlbW92ZTJmYSAtLT5cbjxwdy1wYXNzd29yZC12YWxpZGF0aW9uICNwYXNzd29yZFZhbGlkYXRpb25Nb2RhbEZvclJlbW92ZTJmYVxuICAoc3VjY2Vzc0V2ZW50KT1cInJlbW92ZTJmYSgkZXZlbnQpXCI+XG48L3B3LXBhc3N3b3JkLXZhbGlkYXRpb24+XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Component } from '@angular/core';
2
+ import { PermissionService } from '@posiwise/common-services';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@posiwise/common-services";
5
+ import * as i2 from "@posiwise/shared-components";
6
+ export class UserTabComponent {
7
+ constructor(permission) {
8
+ this.permission = permission;
9
+ this.items = [
10
+ {
11
+ id: 'users',
12
+ label: 'Users',
13
+ icon: 'fa fa-fw fa-user-cog',
14
+ routerLink: ['/admin/users/list'],
15
+ visible: this.permission.evaluatePermissions('Pages.Admin.Users.Edit || Pages.Admin.Users.Create')
16
+ },
17
+ {
18
+ id: 'insight',
19
+ label: 'Insight',
20
+ icon: 'fa fa-fw fa-signature',
21
+ routerLink: ['/admin/users/insight']
22
+ }
23
+ ];
24
+ }
25
+ }
26
+ UserTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UserTabComponent, deps: [{ token: i1.PermissionService }], target: i0.ɵɵFactoryTarget.Component });
27
+ UserTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: UserTabComponent, selector: "pw-users-management", ngImport: i0, template: `<pw-tabs [items]="items"></pw-tabs>`, isInline: true, styles: [".search-input input{width:100%}\n"], dependencies: [{ kind: "component", type: i2.PwTabsComponent, selector: "pw-tabs", inputs: ["items", "withSubscription"] }] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: UserTabComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'pw-users-management', template: `<pw-tabs [items]="items"></pw-tabs>`, styles: [".search-input input{width:100%}\n"] }]
31
+ }], ctorParameters: function () { return [{ type: i1.PermissionService }]; } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvdXNlcnMvdXNlcnMtdGFicy91c2Vycy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFFakQsVUFBSyxHQUFlO1lBQ2hCO2dCQUNJLEVBQUUsRUFBRSxPQUFPO2dCQUNYLEtBQUssRUFBRSxPQUFPO2dCQUNkLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FDeEMsb0RBQW9ELENBQ3ZEO2FBQ0o7WUFDRDtnQkFDSSxFQUFFLEVBQUUsU0FBUztnQkFDYixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsVUFBVSxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDdkM7U0FDSixDQUFDO0lBbEJrRCxDQUFDOzs2R0FENUMsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsMkRBSGYscUNBQXFDOzJGQUd0QyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0kscUJBQXFCLFlBQ3JCLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctdXNlcnMtbWFuYWdlbWVudCcsXG4gICAgdGVtcGxhdGU6IGA8cHctdGFicyBbaXRlbXNdPVwiaXRlbXNcIj48L3B3LXRhYnM+YCxcbiAgICBzdHlsZVVybHM6IFsnLi91c2Vycy10YWJzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlclRhYkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uU2VydmljZSkge31cblxuICAgIGl0ZW1zOiBNZW51SXRlbVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ3VzZXJzJyxcbiAgICAgICAgICAgIGxhYmVsOiAnVXNlcnMnLFxuICAgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZ3IGZhLXVzZXItY29nJyxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL2FkbWluL3VzZXJzL2xpc3QnXSxcbiAgICAgICAgICAgIHZpc2libGU6IHRoaXMucGVybWlzc2lvbi5ldmFsdWF0ZVBlcm1pc3Npb25zKFxuICAgICAgICAgICAgICAgICdQYWdlcy5BZG1pbi5Vc2Vycy5FZGl0IHx8IFBhZ2VzLkFkbWluLlVzZXJzLkNyZWF0ZSdcbiAgICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdpbnNpZ2h0JyxcbiAgICAgICAgICAgIGxhYmVsOiAnSW5zaWdodCcsXG4gICAgICAgICAgICBpY29uOiAnZmEgZmEtZncgZmEtc2lnbmF0dXJlJyxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL2FkbWluL3VzZXJzL2luc2lnaHQnXVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIHZpZXc6IGFueVtdO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC11cy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvY29udGFjdC11cy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBDb250YWN0VXMge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZDogbnVtYmVyO1xuICAgIGNsb3NlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0VXNSZXNwb25zZSB7XG4gICAgY29udGFjdF9yZXF1ZXN0OiBDb250YWN0VXNbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvY3JlZGVudGlhbC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3JlZGVudGlhbCB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgaXNfdmlzaWJsZTogYm9vbGVhbjtcbiAgICBpc19yZXF1aXJlZDogYm9vbGVhbjtcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxSZXNwb25zZSB7XG4gICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uQ3JlZGVudGlhbERldGFpbCB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBzdWJzY3JpcHRpb25faWQ6IG51bWJlcjtcbiAgICBjcmVkZW50aWFsX2lkOiBudW1iZXI7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBTdWJzY3JpcHRpb25DcmVkZW50aWFsIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyO1xuICAgIGNyZWRlbnRpYWxfaWQ6IG51bWJlcjtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGNyZWRlbnRpYWw6IENyZWRlbnRpYWw7XG4gICAgc3Vic2NyaXB0aW9uOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uQ3JlZGVudGlhbFJlc3BvbnNlIHtcbiAgICBzdWJzY3JpcHRpb25fY3JlZGVudGlhbHM6IFN1YnNjcmlwdGlvbkNyZWRlbnRpYWxbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvZG9tYWluLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBMb2dvIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICB2ZXJzaW9uXzIwMHgyMDA6IHsgdXJsOiBzdHJpbmcgfTtcbiAgICB2ZXJzaW9uXzEwMHgxMDA6IHsgdXJsOiBzdHJpbmcgfTtcbiAgICB2ZXJzaW9uXzUweDUwOiB7IHVybDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9tYWluQ29uZmlnIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBob3N0X25hbWU6IHN0cmluZztcbiAgICBpbnRlcm5hbF9wYXRoOiBzdHJpbmc7XG4gICAgc2hhcmRfbmFtZTogc3RyaW5nO1xuICAgIHNoYXJkX3VybDogc3RyaW5nO1xuICAgIGNvbXBhbnlfbmFtZTogc3RyaW5nO1xuICAgIGNvbXBhbnlfa2V5d29yZHM6IHN0cmluZztcbiAgICBjb21wYW55X2Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgY29tcGFueV9lbWFpbDogc3RyaW5nO1xuICAgIGNvbXBhbnlfdXJsOiBzdHJpbmc7XG4gICAgY29tcGFueV9waG9uZV9udW1iZXI6IHN0cmluZztcbiAgICBjb21wYW55X2NvdW50cnk6IHN0cmluZztcbiAgICBjb21wYW55X2FkZHJlc3M6IHN0cmluZztcbiAgICBjb21wYW55X2NpdHk6IHN0cmluZztcbiAgICBjb21wYW55X2NpdHlfY29kZTogc3RyaW5nO1xuICAgIGNvbXBhbnlfdmF0X251bWJlcjogc3RyaW5nO1xuICAgIGNvbXBhbnlfZmF2aWNvbl9wYXRoOiBzdHJpbmc7XG4gICAgdHdpdHRlcl9zZW9fY2FyZDogc3RyaW5nO1xuICAgIHR3aXR0ZXJfc2VvX3NpdGU6IHN0cmluZztcbiAgICB0d2l0dGVyX3Nlb19jcmVhdG9yOiBzdHJpbmc7XG4gICAgbWFzdGVyX3N1YnNjcmlwdGlvbl9wcm9kdWN0X2lkOiBudW1iZXI7XG4gICAgbWFzdGVyX3N1YnNjcmlwdGlvbl9pZDogbnVtYmVyO1xuICAgIGNhbl9yZWdpc3Rlcl90aHJvdWdoX21haW5fcGFnZTogYm9vbGVhbjtcbiAgICBtYWluX3Rvc19pZDogbnVtYmVyO1xuICAgIHNvY2lhbF9sb2dpbl9lbmFibGVkOiBib29sZWFuO1xuICAgIGlzX3Byb2R1Y3RfZG9tYWluOiBib29sZWFuO1xuICAgIGJsb2dfZmVhdHVyZV9rZXk6IHN0cmluZztcbiAgICBjcm1fc3Vic2NyaXB0aW9uX2lkOiBudW1iZXI7XG4gICAgY3JtX3NvdXJjZV9pZDogbnVtYmVyO1xuICAgIGNybV9wcm9kdWN0X2lkOiBudW1iZXI7XG4gICAgaW50ZWdyYXRpb25zX2RyaWZ0X2NvZGU6IHN0cmluZztcbiAgICBpbnRlZ3JhdGlvbnNfZmJfYXBwX2lkOiBzdHJpbmc7XG4gICAgaW50ZWdyYXRpb25zX2NhcHRjaGFfa2V5OiBzdHJpbmc7XG4gICAgaW50ZWdyYXRpb25zX2NhcHRjaGFfa2V5X1YyOiBzdHJpbmc7XG4gICAgaW50ZWdyYXRpb25zX2dvb2dsZV9hbmFseXRpY3M6IHN0cmluZztcbiAgICBpbnRlZ3JhdGlvbnNfZ29vZ2xlX2FwaV9rZXk6IHN0cmluZztcbiAgICBpbnRlZ3JhdGlvbnNfc2VudHJ5X2NvbmZpZ19kbnM6IHN0cmluZztcbiAgICBvYXV0aF9sb2dpbl9nb29nbGVfY2xpZW50X2lkOiBzdHJpbmc7XG4gICAgb2F1dGhfbG9naW5fZmFjZWJvb2tfY2xpZW50X2lkOiBzdHJpbmc7XG4gICAgb2F1dGhfbG9naW5fbGlua2VkaW5fY2xpZW50X2lkOiBzdHJpbmc7XG4gICAgb2F1dGhfbG9naW5fbWljcm9zb2Z0X2NsaWVudF9pZDogc3RyaW5nO1xuICAgIGNvbXBhbnlfdGl0bGU6IHN0cmluZztcbiAgICBjb21wYW55X2hlYWRlcjogc3RyaW5nO1xuICAgIGxpbmtlZGluX3VybDogc3RyaW5nO1xuICAgIHR3aXR0ZXJfdXJsOiBzdHJpbmc7XG4gICAgZmFjZWJvb2tfdXJsOiBzdHJpbmc7XG4gICAgeW91dHViZV91cmw6IHN0cmluZztcbiAgICBmcmVlbWl1bV9qb2luX21lc3NhZ2U6IHN0cmluZztcbiAgICBmcmVlbWl1bV9wcm9kdWN0X2lkOiBudW1iZXI7XG4gICAgdHJpYWxfam9pbl9tZXNzYWdlOiBzdHJpbmc7XG4gICAgdHJpYWxfcHJvZHVjdF9pZDogbnVtYmVyO1xuICAgIGxvZ29fbWFpbjogTG9nbztcbiAgICBsb2dvX21haW5fZGFyazogTG9nbztcbiAgICBsb2dvX21haW5fY29udHJhc3Q6IExvZ287XG4gICAgY29sb3JfY29kZV9maXJzdDogc3RyaW5nO1xuICAgIGNvbG9yX2NvZGVfc2Vjb25kOiBzdHJpbmc7XG4gICAgY29sb3JfY29kZV90aGlyZDogc3RyaW5nO1xuICAgIGNvbG9yX2NvZGVfdGl0bGVzOiBzdHJpbmc7XG4gICAgY29sb3JfY29kZV90ZXh0OiBzdHJpbmc7XG4gICAgY29sb3JfY29kZV90YWJzX2JnOiBzdHJpbmc7XG4gICAgY29sb3JfY29kZV90YWJzX3RleHQ6IHN0cmluZztcbiAgICBjb2xvcl9jb2RlX3NpZGViYXJfYmc6IHN0cmluZztcbiAgICBjb2xvcl9jb2RlX3NpZGViYXJfdGV4dDogc3RyaW5nO1xuICAgIHRyaWFsX2ltYWdlOiBMb2dvO1xuICAgIHRyaWFsX2ltYWdlMjogTG9nbztcbiAgICB0cmlhbF9pbWFnZV9iZzogTG9nbztcbiAgICB0cmlhbF92aWRlb191cmw6IG51bGw7XG4gICAgdHJpYWxfYm9va19kZW1vX3VybDogc3RyaW5nO1xuICAgIHRyaWFsX2NybV9zb3VyY2VfaWQ6IG51bWJlcjtcbiAgICB0cmlhbF9wZGZfc291cmNlX2lkOiBudW1iZXI7XG4gICAgZnJlZW1pdW1faW1hZ2U6IExvZ287XG4gICAgZnJlZW1pdW1faW1hZ2UyOiBMb2dvO1xuICAgIGZyZWVtaXVtX2ltYWdlX2JnOiBMb2dvO1xuICAgIGZyZWVtaXVtX3ZpZGVvX3VybDogc3RyaW5nO1xuICAgIGZyZWVtaXVtX2Jvb2tfZGVtb191cmw6IHN0cmluZztcbiAgICBmcmVlbWl1bV9jcm1fc291cmNlX2lkOiBudW1iZXI7XG4gICAgZnJlZW1pdW1fcGRmX3NvdXJjZV9pZDogbnVtYmVyO1xuICAgIGNzX2ltYWdlOiBMb2dvO1xuICAgIGNzX2ltYWdlMjogTG9nbztcbiAgICBjc19pbWFnZV9iZzogTG9nbztcbiAgICBjc192aWRlb191cmw6IHN0cmluZztcbiAgICBjc19ib29rX2RlbW9fdXJsOiBzdHJpbmc7XG4gICAgY3NfY3JtX3NvdXJjZV9pZDogbnVtYmVyO1xuICAgIGNzX3BkZl9zb3VyY2VfaWQ6IG51bWJlcjtcbiAgICBjc19qb2luX21lc3NhZ2U6IHN0cmluZztcbiAgICBjc19wcm9kdWN0X2lkOiBudW1iZXI7XG4gICAgbG9nb19zcXVhcmVkX21haW46IExvZ287XG4gICAgbG9nb19zcXVhcmVkX2Rhcms6IExvZ287XG4gICAgbG9nb19zcXVhcmVkX2NvbnRyYXN0OiBMb2dvO1xuICAgIGNzX3BkZl9pbWFnZTogTG9nbztcbiAgICB0cmlhbF9wZGZfaW1hZ2U6IExvZ287XG4gICAgZnJlZW1pdW1fcGRmX2ltYWdlOiBMb2dvO1xuICAgIGZyZWVtaXVtX2ltYWdlX2JnMjogTG9nbztcbiAgICB0cmlhbF9pbWFnZV9iZzI6IExvZ287XG4gICAgY3NfaW1hZ2VfYmcyOiBMb2dvO1xuICAgIGZyZWVtaXVtX3BkZl9kb3dubG9hZF90ZXh0OiBzdHJpbmc7XG4gICAgdHJpYWxfcGRmX2Rvd25sb2FkX3RleHQ6IHN0cmluZztcbiAgICBjc19wZGZfZG93bmxvYWRfdGV4dDogc3RyaW5nO1xuICAgIG5vdGlmeV9sb2dpbnM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9tYWluQ29uZmlnUmVzcG9uc2Uge1xuICAgIGRvbWFpbnM6IERvbWFpbkNvbmZpZ1tdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2stcXVlc3Rpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL2ZlZWRiYWNrLXF1ZXN0aW9uLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGZWVkYmFja1F1ZXN0aW9uIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrUXVlc3Rpb25SZXNwb25zZSB7XG4gICAgZmVlZGJhY2tfcXVlc3Rpb25zOiBGZWVkYmFja1F1ZXN0aW9uW107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvZ2xvYmFsLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsQ29uZmlnIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZWZhdWx0OiBib29sZWFuO1xuICAgIGZpZWxkX3R5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxDb25maWdSZXNwb25zZSB7XG4gICAgZ2xvYmFsX2NvbmZpZ3M6IEdsb2JhbENvbmZpZ1tdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tbm90aWZpY2F0aW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvc2hhcmVkL2ludGVyZmFjZS9sb2dpbi1ub3RpZmljYXRpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgTG9naW5Ob3RpZmljYXRpb24ge1xuICAgIGlkOiBudW1iZXI7XG4gICAgYm9keTogc3RyaW5nO1xuICAgIG5vdGlmaWNhdGlvbl90eXBlOiBzdHJpbmc7XG4gICAgdmlzaWJsZV91bnRpbDogc3RyaW5nO1xuICAgIHZpc2libGVfZnJvbTogc3RyaW5nO1xuICAgIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyO1xuICAgIGZlYXR1cmVfa2V5czogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5Ob3RpZmljYXRpb25SZXNwb25zZSB7XG4gICAgbm90aWZpY2F0aW9uczogTG9naW5Ob3RpZmljYXRpb25bXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3c2xldHRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvbmV3c2xldHRlci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmV3c0xldHRlciB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlOiBib29sZWFuO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld3NMZXR0ZXJSZXNwb25zZSB7XG4gICAgbmV3c2xldHRlcnM6IE5ld3NMZXR0ZXJbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV3c0xldHRlclVzZXJSZXNwb25zZSB7XG4gICAgbmV3c2xldHRlcl91c2VyczogYW55W107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ld3NMZXR0ZXJJdGVtIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5ld3NsZXR0ZXJfaWQ6IG51bWJlcjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGJvZHk6IHN0cmluZztcbiAgICBtYWluX3RhZ19pZDogbnVtYmVyO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbGF0aXR1ZGU6IHN0cmluZztcbiAgICBsb25naXR1ZGU6IHN0cmluZztcbiAgICBpc19zZW50OiBib29sZWFuO1xuICAgIGlzX3B1c2hlZDogYm9vbGVhbjtcbiAgICBzZW5kX3VudGlsOiBzdHJpbmc7XG4gICAgcHJldmlvdXNfbmV3c2xldHRlcl9pdGVtX2lkOiBudW1iZXI7XG4gICAgZGF5c190b193YWl0X2Zyb21fcHJldmlvdXNfbmV3c2xldHRlcjogbnVtYmVyO1xuICAgIHNlbmRfYXQ6IHN0cmluZztcbiAgICBwcm9kdWN0X2lkczogbnVtYmVyW107XG4gICAgZmVhdHVyZV9rZXlzOiBhbnlbXTtcbiAgICBvbmx5X25ld191c2VyczogYm9vbGVhbjtcbiAgICB0YWdzOiBhbnlbXTtcbiAgICBuZXdzbGV0dGVyX25hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRhZ19jYXRlZ29yeV9pZDogbnVtYmVyO1xuICAgIHRhZ190eXBlOiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL3NoYXJlZC9pbnRlcmZhY2UvcGVybWlzc2lvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvbiB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25SZXNwb25zZSB7XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmFjeS10b3MuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL3ByaXZhY3ktdG9zLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBQcml2YWN5VG9zIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHByaXZhY3k6IHN0cmluZztcbiAgICB0b3M6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhY3lUb3NSZXNwb25zZSB7XG4gICAgcHJvZHVjdF9wcml2YWN5X3NlcnZpY2VzOiBQcml2YWN5VG9zW107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvc2hhcmVkL2ludGVyZmFjZS90aXAuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgVGlwIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVsZXRlZF9hdDogc3RyaW5nO1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgaW5zdHJ1Y3Rpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlwUmVzcG9uc2Uge1xuICAgIHRpcHM6IFRpcFtdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlL3RyYWNraW5nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5nIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuaW50ZXJmYWNlIEFob3lFdmVudCB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB1c2VyX2lkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByb3BlcnRpZXM6IFBhZ2luZztcbiAgICB0aW1lOiBzdHJpbmc7XG4gICAgdmlzaXRfaWQ6IG51bWJlcjtcbiAgICB1c2VyOiBVc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFob3lFdmVudFJlc3BvbnNlIHtcbiAgICBldmVudHM6IEFob3lFdmVudFtdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEFob3lNZXNzYWdlIHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgdG86IHN0cmluZztcbiAgICB1c2VyX2lkOiBudW1iZXI7XG4gICAgdXNlcl90eXBlOiBzdHJpbmc7XG4gICAgbWFpbGVyOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIHV0bV9zb3VyY2U6IHN0cmluZztcbiAgICB1dG1fbWVkaXVtOiBzdHJpbmc7XG4gICAgdXRtX3Rlcm06IHN0cmluZztcbiAgICB1dG1fY29udGVudDogc3RyaW5nO1xuICAgIHV0bV9jYW1wYWlnbjogc3RyaW5nO1xuICAgIHNlbnRfYXQ6IHN0cmluZztcbiAgICBvcGVuZWRfYXQ6IHN0cmluZztcbiAgICBjbGlja2VkX2F0OiBzdHJpbmc7XG4gICAgb3Blbl9jb3VudDogbnVtYmVyO1xuICAgIGNsaWNrX2NvdW50OiBudW1iZXI7XG4gICAgdXNlcjogVXNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaG95TWVzc2FnZVJlc3BvbnNlIHtcbiAgICBtZXNzYWdlczogQWhveU1lc3NhZ2VbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBBaG95VmlzaXQge1xuICAgIGlkOiBudW1iZXI7XG4gICAgdmlzaXRfdG9rZW46IHN0cmluZztcbiAgICB2aXNpdG9yX3Rva2VuOiBzdHJpbmc7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIGlwOiBzdHJpbmc7XG4gICAgdXNlcl9hZ2VudDogc3RyaW5nO1xuICAgIHJlZmVycmVyOiBzdHJpbmc7XG4gICAgcmVmZXJyaW5nX2RvbWFpbjogc3RyaW5nO1xuICAgIGxhbmRpbmdfcGFnZTogc3RyaW5nO1xuICAgIGJyb3dzZXI6IHN0cmluZztcbiAgICBvczogc3RyaW5nO1xuICAgIGRldmljZV90eXBlOiBzdHJpbmc7XG4gICAgY291bnRyeTogc3RyaW5nO1xuICAgIHJlZ2lvbjogc3RyaW5nO1xuICAgIGNpdHk6IHN0cmluZztcbiAgICBwb3N0YWxfY29kZTogc3RyaW5nO1xuICAgIGxhdGl0dWRlOiBzdHJpbmc7XG4gICAgbG9uZ2l0dWRlOiBzdHJpbmc7XG4gICAgdXRtX3NvdXJjZTogc3RyaW5nO1xuICAgIHV0bV9tZWRpdW06IHN0cmluZztcbiAgICB1dG1fdGVybTogc3RyaW5nO1xuICAgIHV0bV9jb250ZW50OiBzdHJpbmc7XG4gICAgdXRtX2NhbXBhaWduOiBzdHJpbmc7XG4gICAgc3RhcnRlZF9hdDogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgdXNlcjogVXNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaG95VmlzaXRSZXNwb25zZSB7XG4gICAgdmlzaXRzOiBBaG95VmlzaXRbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUcmFja0V2ZW50IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICByZWxhdGVkX2VudGl0eV9pZDogbnVtYmVyO1xuICAgIHJlbGF0ZWRfZW50aXR5X3R5cGU6IHN0cmluZztcbiAgICBldmVudF90eXBlOiBzdHJpbmc7XG4gICAgY3JlYXRlZF9hdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRfYXQ6IHN0cmluZztcbiAgICB1c2VyOiBVc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRSZXNwb25zZSB7XG4gICAgZXZlbnRzOiBUcmFja0V2ZW50W107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQWhveVZlcnNpb24ge1xuICAgIGl0ZW1faWQ6IG51bWJlcjtcbiAgICBpdGVtX3R5cGU6IHN0cmluZztcbiAgICBldmVudDogc3RyaW5nO1xuICAgIG9iamVjdDogYW55O1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgd2hvZHVubml0OiBudW1iZXI7XG4gICAgYXV0aG9yOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWhveVZlcnNpb25SZXNwb25zZSB7XG4gICAgdmVyc2lvbnM6IEFob3lWZXJzaW9uW107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuIl19