@tuki-io/tuki-widgets 0.0.219-dev.56 → 0.0.219-dev.57

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 (246) hide show
  1. package/README.md +24 -24
  2. package/esm2020/contact-center/cc-import/cc-import.module.mjs +1 -1
  3. package/esm2020/contact-center/cc-import/cc-import.service.mjs +1 -1
  4. package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +3 -3
  5. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +3 -3
  6. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +1 -1
  7. package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +1 -1
  8. package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +1 -1
  9. package/esm2020/contact-center/cc-import/types/cc-import.mjs +1 -1
  10. package/esm2020/contact-center/cc-import/types/uccx.mjs +1 -1
  11. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +1 -1
  12. package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
  13. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +3 -3
  14. package/esm2020/contact-center/public-api.mjs +1 -1
  15. package/esm2020/contact-center/shared/api.endpoints.mjs +1 -1
  16. package/esm2020/contact-center/shared/components/card/card.component.mjs +3 -3
  17. package/esm2020/contact-center/shared/dcp-api.service.mjs +1 -1
  18. package/esm2020/contact-center/shared/shared.module.mjs +1 -1
  19. package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
  20. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
  21. package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
  22. package/esm2020/lib/widgets.component.mjs +9 -9
  23. package/esm2020/lib/widgets.module.mjs +1 -1
  24. package/esm2020/lib/widgets.service.mjs +1 -1
  25. package/esm2020/locations/public-api.mjs +1 -1
  26. package/esm2020/locations/src/app.constants.mjs +1 -1
  27. package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +3 -3
  28. package/esm2020/locations/src/locations.component.mjs +3 -3
  29. package/esm2020/locations/src/locations.module.mjs +1 -1
  30. package/esm2020/locations/src/material.module.mjs +1 -1
  31. package/esm2020/locations/src/services/api.service.mjs +1 -1
  32. package/esm2020/locations/src/services/locations.service.mjs +1 -1
  33. package/esm2020/locations/src/types/location.mjs +1 -1
  34. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +3 -3
  35. package/esm2020/meetings/public-api.mjs +1 -1
  36. package/esm2020/meetings/src/app.constants.mjs +1 -1
  37. package/esm2020/meetings/src/components/live-meetings/live-meeting/live-meeting.component.mjs +3 -3
  38. package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +3 -3
  39. package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +3 -3
  40. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +3 -3
  41. package/esm2020/meetings/src/material.module.mjs +1 -1
  42. package/esm2020/meetings/src/meetings.component.mjs +3 -3
  43. package/esm2020/meetings/src/meetings.module.mjs +1 -1
  44. package/esm2020/meetings/src/services/api.service.mjs +1 -1
  45. package/esm2020/meetings/src/services/live-meetings.service.mjs +1 -1
  46. package/esm2020/meetings/src/services/meeting-spaces.service.mjs +1 -1
  47. package/esm2020/meetings/src/types/live-meeting.mjs +1 -1
  48. package/esm2020/meetings/src/types/meeting-space.mjs +1 -1
  49. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +3 -3
  50. package/esm2020/public-api.mjs +1 -1
  51. package/esm2020/user-creation/src/app.constants.mjs +1 -1
  52. package/esm2020/user-creation/src/classes/notification.mjs +1 -1
  53. package/esm2020/user-creation/src/classes/site.mjs +1 -1
  54. package/esm2020/user-creation/src/environments/environment.mjs +1 -1
  55. package/esm2020/user-creation/src/interfaces/user-creation-wizard.interfaces.mjs +1 -1
  56. package/esm2020/user-creation/src/shared/components/notification/notification.component.mjs +3 -3
  57. package/esm2020/user-creation/src/shared/pipes/truncate.pipe.mjs +1 -1
  58. package/esm2020/user-creation/src/shared/services/notification.service.mjs +1 -1
  59. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +1 -1
  60. package/esm2020/user-creation/src/shared/services/utils.mjs +1 -1
  61. package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +3 -3
  62. package/esm2020/user-creation/src/utils/build-savable-end-user.mjs +1 -1
  63. package/esm2020/user-creation/src/utils/device-default-prefix.mjs +1 -1
  64. package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +1 -1
  65. package/esm2020/user-creation/src/utils/device-name-validation.mjs +1 -1
  66. package/esm2020/user-creation/src/utils/model.mjs +1 -1
  67. package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +1 -1
  68. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +3 -3
  69. package/esm2020/user-device-manage/public-api.mjs +1 -1
  70. package/esm2020/user-device-manage/src/app.constants.mjs +1 -1
  71. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +3 -3
  72. package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
  73. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  74. package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +1 -1
  75. package/esm2020/user-device-manage/src/classes/line-association.mjs +1 -1
  76. package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +1 -1
  77. package/esm2020/user-device-manage/src/classes/line-directory.mjs +1 -1
  78. package/esm2020/user-device-manage/src/classes/line.mjs +1 -1
  79. package/esm2020/user-device-manage/src/classes/notification.mjs +1 -1
  80. package/esm2020/user-device-manage/src/classes/recording-options.mjs +1 -1
  81. package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
  82. package/esm2020/user-device-manage/src/classes/site-defaults.mjs +1 -1
  83. package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +1 -1
  84. package/esm2020/user-device-manage/src/classes/types.mjs +1 -1
  85. package/esm2020/user-device-manage/src/common-functions.mjs +1 -1
  86. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +3 -3
  87. package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +3 -3
  88. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +3 -3
  89. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
  90. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +1 -1
  91. package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
  92. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +3 -3
  93. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +3 -3
  94. package/esm2020/user-device-manage/src/environments/environment.mjs +1 -1
  95. package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +1 -1
  96. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  97. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +3 -3
  98. package/esm2020/user-device-manage/src/material.module.mjs +1 -1
  99. package/esm2020/user-device-manage/src/notifications/notification.component.mjs +3 -3
  100. package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
  101. package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
  102. package/esm2020/user-device-manage/src/services/device.service.mjs +1 -1
  103. package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
  104. package/esm2020/user-device-manage/src/services/line.service.mjs +1 -1
  105. package/esm2020/user-device-manage/src/services/notification.service.mjs +1 -1
  106. package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +1 -1
  107. package/esm2020/user-device-manage/src/services/site-settings.service.mjs +1 -1
  108. package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +1 -1
  109. package/esm2020/user-device-manage/src/services/user.service.mjs +1 -1
  110. package/esm2020/user-device-manage/src/services/utils.service.mjs +1 -1
  111. package/esm2020/user-device-manage/src/services/validation.service.mjs +1 -1
  112. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
  113. package/esm2020/user-manage/public-api.mjs +1 -1
  114. package/esm2020/user-manage/src/app.constants.mjs +2 -1
  115. package/esm2020/user-manage/src/classes/device.mjs +1 -1
  116. package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
  117. package/esm2020/user-manage/src/classes/line-association.mjs +1 -1
  118. package/esm2020/user-manage/src/classes/line-call-info-display.mjs +1 -1
  119. package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
  120. package/esm2020/user-manage/src/classes/line.mjs +1 -1
  121. package/esm2020/user-manage/src/classes/notification.mjs +1 -1
  122. package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
  123. package/esm2020/user-manage/src/classes/recording-options.mjs +1 -1
  124. package/esm2020/user-manage/src/classes/simplified-user.mjs +15 -2
  125. package/esm2020/user-manage/src/classes/table-data.mjs +1 -1
  126. package/esm2020/user-manage/src/classes/translation-pattern.mjs +1 -1
  127. package/esm2020/user-manage/src/classes/user-list.mjs +1 -1
  128. package/esm2020/user-manage/src/common-functions.mjs +1 -1
  129. package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
  130. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
  131. package/esm2020/user-manage/src/environments/environment.mjs +1 -1
  132. package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +1 -1
  133. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +9 -5
  134. package/esm2020/user-manage/src/material.module.mjs +14 -7
  135. package/esm2020/user-manage/src/notifications/notification.component.mjs +3 -3
  136. package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +1 -1
  137. package/esm2020/user-manage/src/services/api.service.mjs +1 -1
  138. package/esm2020/user-manage/src/services/dcp-api.service.mjs +1 -1
  139. package/esm2020/user-manage/src/services/dns.service.mjs +1 -1
  140. package/esm2020/user-manage/src/services/line.service.mjs +1 -1
  141. package/esm2020/user-manage/src/services/notification.service.mjs +1 -1
  142. package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +1 -1
  143. package/esm2020/user-manage/src/services/site-settings.service.mjs +11 -4
  144. package/esm2020/user-manage/src/services/sorting-utils.service.mjs +1 -1
  145. package/esm2020/user-manage/src/services/user.service.mjs +30 -1
  146. package/esm2020/user-manage/src/services/utils.service.mjs +1 -1
  147. package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +3 -3
  148. package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
  149. package/esm2020/user-manage/src/user-manage-widget.component.mjs +42 -26
  150. package/esm2020/user-manage/src/user-manage.module.mjs +5 -2
  151. package/esm2020/user-manage/src/user-summary/user-summary.component.mjs +30 -0
  152. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
  153. package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +3 -3
  154. package/esm2020/users-list/public-api.mjs +1 -1
  155. package/esm2020/users-list/src/app.constants.mjs +1 -1
  156. package/esm2020/users-list/src/classes/app-location.mjs +1 -1
  157. package/esm2020/users-list/src/classes/device.mjs +1 -1
  158. package/esm2020/users-list/src/classes/line.mjs +1 -1
  159. package/esm2020/users-list/src/classes/move-user.mjs +1 -1
  160. package/esm2020/users-list/src/classes/notification.mjs +1 -1
  161. package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
  162. package/esm2020/users-list/src/classes/table-data.mjs +1 -1
  163. package/esm2020/users-list/src/classes/user-list.mjs +1 -1
  164. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.mjs +3 -3
  165. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.mjs +3 -3
  166. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +3 -3
  167. package/esm2020/users-list/src/services/api-webex.service.mjs +1 -1
  168. package/esm2020/users-list/src/services/api.service.mjs +1 -1
  169. package/esm2020/users-list/src/services/dns.service.mjs +1 -1
  170. package/esm2020/users-list/src/services/events-communication.service.mjs +1 -1
  171. package/esm2020/users-list/src/services/notification.service.mjs +1 -1
  172. package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +1 -1
  173. package/esm2020/users-list/src/services/site-settings.service.mjs +1 -1
  174. package/esm2020/users-list/src/services/user.service.mjs +1 -1
  175. package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +3 -3
  176. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
  177. package/esm2020/users-list/src/utils/common-functions.mjs +1 -1
  178. package/esm2020/users-list/src/utils/notifications/notification.component.mjs +3 -3
  179. package/esm2020/users-list/src/utils/utils.service.mjs +1 -1
  180. package/esm2020/workspaces/public-api.mjs +1 -1
  181. package/esm2020/workspaces/src/app.constants.mjs +1 -1
  182. package/esm2020/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.mjs +3 -3
  183. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +3 -3
  184. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +3 -3
  185. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +3 -3
  186. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +3 -3
  187. package/esm2020/workspaces/src/material.module.mjs +1 -1
  188. package/esm2020/workspaces/src/services/api-webex.service.mjs +1 -1
  189. package/esm2020/workspaces/src/services/api.service.mjs +1 -1
  190. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +1 -1
  191. package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +1 -1
  192. package/esm2020/workspaces/src/services/workspaces.service.mjs +1 -1
  193. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  194. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +3 -3
  195. package/esm2020/workspaces/src/utils/device-icon.mjs +1 -1
  196. package/esm2020/workspaces/src/utils/workspace-name.mjs +1 -1
  197. package/esm2020/workspaces/src/workspaces.component.mjs +8 -8
  198. package/esm2020/workspaces/src/workspaces.module.mjs +1 -1
  199. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +8 -8
  200. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  201. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +20 -20
  202. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  203. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +6 -6
  204. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  205. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +12 -12
  206. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  207. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +6 -6
  208. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  209. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +24 -24
  210. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  211. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +165 -61
  212. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  213. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +12 -12
  214. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  215. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +19 -19
  216. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  217. package/fesm2015/tuki-io-tuki-widgets.mjs +8 -8
  218. package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -1
  219. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +8 -8
  220. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  221. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +20 -20
  222. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  223. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +6 -6
  224. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  225. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +12 -12
  226. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  227. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +6 -6
  228. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  229. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +24 -24
  230. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  231. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +155 -55
  232. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  233. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +12 -12
  234. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  235. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +19 -19
  236. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  237. package/fesm2020/tuki-io-tuki-widgets.mjs +8 -8
  238. package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -1
  239. package/package.json +1 -1
  240. package/user-manage/src/app.constants.d.ts +1 -0
  241. package/user-manage/src/classes/simplified-user.d.ts +6 -0
  242. package/user-manage/src/material.module.d.ts +2 -1
  243. package/user-manage/src/services/user.service.d.ts +11 -0
  244. package/user-manage/src/user-manage-widget.component.d.ts +4 -0
  245. package/user-manage/src/user-manage.module.d.ts +9 -8
  246. package/user-manage/src/user-summary/user-summary.component.d.ts +10 -0
package/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # Widgets
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project widgets` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project widgets`.
8
- > Note: Don't forget to add `--project widgets` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build widgets` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build widgets`, go to the dist folder `cd dist/widgets` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test widgets` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # Widgets
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project widgets` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project widgets`.
8
+ > Note: Don't forget to add `--project widgets` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build widgets` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build widgets`, go to the dist folder `cd dist/widgets` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test widgets` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
42
42
  ]
43
43
  }]
44
44
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY2MtaW1wb3J0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ25JLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDOztBQW1CdEksTUFBTSxPQUFPLGNBQWM7OzRHQUFkLGNBQWM7NkdBQWQsY0FBYyxpQkFmbkIsaUNBQWlDO1FBQ2pDLGtDQUFrQyxhQUdsQyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsWUFBWSxhQUdaLGlDQUFpQztRQUNqQyxrQ0FBa0M7NkdBRzdCLGNBQWMsWUFYbkIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLFlBQVk7NEZBT1AsY0FBYztrQkFqQjFCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLGlDQUFpQzt3QkFDakMsa0NBQWtDO3FCQUNyQztvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixZQUFZO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDTCxpQ0FBaUM7d0JBQ2pDLGtDQUFrQztxQkFDckM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTdGVwcGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XG5pbXBvcnQgeyBOZ0FwZXhjaGFydHNNb2R1bGUgfSBmcm9tICduZy1hcGV4Y2hhcnRzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEltcG9ydENvbnRhY3RDZW50ZXJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItcGFuZWwvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBvcnRDb250YWN0Q2VudGVyV2l6YXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBJbXBvcnRDb250YWN0Q2VudGVyUGFuZWxDb21wb25lbnQsXG4gICAgICAgIEltcG9ydENvbnRhY3RDZW50ZXJXaXphcmRDb21wb25lbnRcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgICAgICBOZ0FwZXhjaGFydHNNb2R1bGUsXG4gICAgICAgIE1hdFN0ZXBwZXJNb2R1bGUsXG4gICAgICAgIFNoYXJlZE1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBJbXBvcnRDb250YWN0Q2VudGVyUGFuZWxDb21wb25lbnQsXG4gICAgICAgIEltcG9ydENvbnRhY3RDZW50ZXJXaXphcmRDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENjSW1wb3J0TW9kdWxlIHsgfVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY2MtaW1wb3J0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ25JLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDOztBQW1CdEksTUFBTSxPQUFPLGNBQWM7OzRHQUFkLGNBQWM7NkdBQWQsY0FBYyxpQkFmbkIsaUNBQWlDO1FBQ2pDLGtDQUFrQyxhQUdsQyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsWUFBWSxhQUdaLGlDQUFpQztRQUNqQyxrQ0FBa0M7NkdBRzdCLGNBQWMsWUFYbkIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLFlBQVk7NEZBT1AsY0FBYztrQkFqQjFCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLGlDQUFpQzt3QkFDakMsa0NBQWtDO3FCQUNyQztvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixZQUFZO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDTCxpQ0FBaUM7d0JBQ2pDLGtDQUFrQztxQkFDckM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IE5nQXBleGNoYXJ0c01vZHVsZSB9IGZyb20gJ25nLWFwZXhjaGFydHMnO1xyXG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XHJcbmltcG9ydCB7IEltcG9ydENvbnRhY3RDZW50ZXJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItcGFuZWwvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEltcG9ydENvbnRhY3RDZW50ZXJXaXphcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgSW1wb3J0Q29udGFjdENlbnRlclBhbmVsQ29tcG9uZW50LFxyXG4gICAgICAgIEltcG9ydENvbnRhY3RDZW50ZXJXaXphcmRDb21wb25lbnRcclxuICAgIF0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICAgICAgTmdBcGV4Y2hhcnRzTW9kdWxlLFxyXG4gICAgICAgIE1hdFN0ZXBwZXJNb2R1bGUsXHJcbiAgICAgICAgU2hhcmVkTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIEltcG9ydENvbnRhY3RDZW50ZXJQYW5lbENvbXBvbmVudCxcclxuICAgICAgICBJbXBvcnRDb250YWN0Q2VudGVyV2l6YXJkQ29tcG9uZW50XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDY0ltcG9ydE1vZHVsZSB7IH1cclxuIl19
@@ -225,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
225
225
  providedIn: 'root'
226
226
  }]
227
227
  }] });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtaW1wb3J0L2NjLWltcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXRGLE9BQU8sRUFDSCxrQkFBa0IsRUFNckIsTUFBTSxjQUFjLENBQUM7O0FBRXRCLHlGQUF5RjtBQUN6RixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFLNUIsTUFBTSxPQUFPLGVBQWU7SUFINUI7UUFJcUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhEOzs7Ozs7V0FNRztRQUNILGdCQUFXLEdBQUcsSUFBSSxDQUFDO0tBa1F0QjtJQWhRRyxRQUFRLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFL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QyxDQUFDLGNBQWMsQ0FBQztTQUMzRjtRQUVELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFM0UsT0FBTyxRQUFRLEVBQUUsTUFBTSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLG9CQUFvQixDQUFDLFdBQTRCO1FBQ3JELE1BQU0sS0FBSyxHQUFJLFdBQStDLENBQUMsa0JBQWtCLENBQUM7UUFFbEYsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxpQkFBaUIsQ0FBQztTQUM1QjtRQUNELElBQUksS0FBSyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsRUFBRTtZQUM5QyxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUNELElBQUksS0FBSyxJQUFJLHdCQUF3QixDQUFDLGNBQWMsRUFBRTtZQUNsRCxPQUFPLGlCQUFpQixDQUFDO1NBQzVCO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVPLE9BQU8sQ0FBSSxLQUFjO1FBQzdCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQzs7NkdBNVFRLGVBQWU7aUhBQWYsZUFBZSxjQUZaLE1BQU07NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRlbGF5LCBmb3JrSm9pbiwgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9zaGFyZWQvYXBpLmVuZHBvaW50cyc7XG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IERjcEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZGNwLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IENPTVBBVElCSUxJVFlfVEhSRVNIT0xEUywgT1ZFUlZJRVdfRU5USVRZX0dST1VQUyB9IGZyb20gJy4vY29uc3RhbnRzL2NjLWltcG9ydC5jb25zdGFudHMnO1xuaW1wb3J0IHsgbW9ja0NvbnRhY3RDZW50ZXJFbnRpdGllcywgbW9ja0NvbnRhY3RDZW50ZXJzIH0gZnJvbSAnLi9tb2NrL2NjLWltcG9ydC5tb2NrJztcbmltcG9ydCB7XG4gICAgQ29udGFjdENlbnRlcixcbiAgICBDb250YWN0Q2VudGVyQ29tcGF0aWJpbGl0eVN0YXR1cyxcbiAgICBDb250YWN0Q2VudGVyRW50aXRpZXMsXG4gICAgQ29udGFjdENlbnRlckVudGl0eUdyb3VwLFxuICAgIEltcG9ydFJlc3VsdFxufSBmcm9tICcuL3R5cGVzL2NjLWltcG9ydCc7XG5pbXBvcnQge1xuICAgIENBTExfRkxPV19NSUdSQVRFRCxcbiAgICBDYWxsRmxvd01pZ3JhdGlvblN0YXR1cyxcbiAgICBVY2N4QXBwbGljYXRpb24sXG4gICAgVWNjeEJhdGNoLFxuICAgIFVjY3hJdGVtLFxuICAgIFVjY3hJdGVtc1dyYXBwZXJcbn0gZnJvbSAnLi90eXBlcy91Y2N4JztcblxuLyoqIFNpbXVsYXRlZCBuZXR3b3JrIGxhdGVuY3kgZm9yIHRoZSBtb2NrIHJlc3BvbnNlcywgc28gbG9hZGluZyBzdGF0ZXMgYXJlIGV4ZXJjaXNlZC4gKi9cbmNvbnN0IE1PQ0tfTEFURU5DWV9NUyA9IDMwMDtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDY0ltcG9ydFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBpID0gaW5qZWN0KEFQSVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGNwQXBpID0gaW5qZWN0KERjcEFwaVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogQW5zd2VyIGV2ZXJ5dGhpbmcgZnJvbSBgbW9jay9jYy1pbXBvcnQubW9jay50c2AgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBiYWNrZW5kLlxuICAgICAqXG4gICAgICogTm90ZSB0aGlzIGlzIGFsbC1vci1ub3RoaW5nOiB3aXRoIGl0IG9mZiwgdGhlIGNvbnRhY3QtY2VudGVyIGxpc3QsIHRoZSBlbnRpdHlcbiAgICAgKiBvdmVydmlldyBhbmQgdGhlIGltcG9ydCBhbGwgaGl0IHJlYWwgZW5kcG9pbnRzLiBDb21wYXRpYmlsaXR5IHNjb3JpbmcgaXMgdGhlXG4gICAgICogZXhjZXB0aW9uIC0gc2VlIHtAbGluayByZXNvbHZlQ29tcGF0aWJpbGl0eX0uXG4gICAgICovXG4gICAgdXNlTW9ja0RhdGEgPSB0cnVlO1xuXG4gICAgc2V0VG9rZW4odG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmFwaS50b2tlbiA9IHRva2VuO1xuICAgICAgICB0aGlzLmRjcEFwaS50b2tlbiA9IHRva2VuO1xuICAgIH1cblxuICAgIHNldEhvc3QoaG9zdDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXBpLmFwaVVybCA9IGhvc3Q7XG4gICAgfVxuXG4gICAgLyoqIEJhc2UgVVJMIG9mIHRoZSBkY3AgaG9zdCwgd2hpY2ggc2VydmVzIHRoZSBVQ0NYIGFwcGxpY2F0aW9uIGxpc3QuICovXG4gICAgc2V0RGNwSG9zdChkY3BIb3N0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kY3BBcGkuYXBpVXJsID0gZGNwSG9zdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVyeSBVQ0NYIGNvbnRhY3QgY2VudGVyIFR1a2kgY2FuIGltcG9ydC5cbiAgICAgKlxuICAgICAqIEEgXCJjb250YWN0IGNlbnRlclwiIGlzIGEgVUNDWCBhcHBsaWNhdGlvbi4gVGhlIGxpc3QgY29tZXMgZnJvbSB0aGUgZGNwXG4gICAgICogYXBwbGljYXRpb24gY2FjaGU7IHdoZXRoZXIgZWFjaCBvbmUgaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpcyBqb2luZWQgb24gZnJvbVxuICAgICAqIHRoZSBwZXItQUVGLXNjcmlwdCBjYWxsLWZsb3cgbWlncmF0aW9uIHN0YXRlcy5cbiAgICAgKi9cbiAgICBmZXRjaENvbnRhY3RDZW50ZXJzKGN1c3RvbWVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q29udGFjdENlbnRlcltdPiB7XG4gICAgICAgIGlmICh0aGlzLnVzZU1vY2tEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobW9ja0NvbnRhY3RDZW50ZXJzKCkpLnBpcGUoZGVsYXkoTU9DS19MQVRFTkNZX01TKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oe1xuICAgICAgICAgICAgYXBwbGljYXRpb25zOiB0aGlzLmRjcEFwaS5mZXRjaChBUEkuVUNDWC5BUFBMSUNBVElPTl9OQU1FUyhjdXN0b21lcklkKSksXG4gICAgICAgICAgICBjYWxsRmxvd3M6IHRoaXMuYXBpLmZldGNoKEFQSS5VQ0NYLkNBTExfRkxPV19NSUdSQVRJT05fU1RBVFVTRVMoY3VzdG9tZXJJZCkpXG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHsgYXBwbGljYXRpb25zLCBjYWxsRmxvd3MgfSkgPT4gdGhpcy50b0NvbnRhY3RDZW50ZXJzKFxuICAgICAgICAgICAgICAgIHRoaXMuYXNBcnJheTxVY2N4QXBwbGljYXRpb24+KGFwcGxpY2F0aW9ucyksXG4gICAgICAgICAgICAgICAgdGhpcy5hc0FycmF5PENhbGxGbG93TWlncmF0aW9uU3RhdHVzPihjYWxsRmxvd3MpXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpY2F0aW9uLWNlbnRyaWMgZW50aXR5IGJyZWFrZG93bjogZXZlcnl0aGluZyBUdWtpIHdpbGwgY3JlYXRlIG9uIGltcG9ydC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhpcyBvbmx5IGV2ZXIgcmV0dXJucyBlbnRpdGllcyB0aGUgYmFja2VuZCBoYXMgYWN0dWFsbHkgbGlua2VkIHRvIHRoZVxuICAgICAqIGFwcGxpY2F0aW9uLiBXaGVyZSB0aGF0IGxpbmthZ2UgaXMgbWlzc2luZyB0aGUgZ3JvdXBzIGNvbWUgYmFjayBlbXB0eSByYXRoZXJcbiAgICAgKiB0aGFuIHBhZGRlZCB3aXRoIHVucmVsYXRlZCBlbnRpdGllcyBvZiB0aGUgcmlnaHQgdHlwZS5cbiAgICAgKi9cbiAgICBmZXRjaENvbnRhY3RDZW50ZXJFbnRpdGllcyhjdXN0b21lcklkOiBudW1iZXIsIGNvbnRhY3RDZW50ZXI6IENvbnRhY3RDZW50ZXIpOiBPYnNlcnZhYmxlPENvbnRhY3RDZW50ZXJFbnRpdGllcz4ge1xuICAgICAgICBpZiAodGhpcy51c2VNb2NrRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG1vY2tDb250YWN0Q2VudGVyRW50aXRpZXMoY29udGFjdENlbnRlcikpLnBpcGUoZGVsYXkoTU9DS19MQVRFTkNZX01TKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEFwcGxpY2F0aW9uSXRlbXMoY3VzdG9tZXJJZCwgY29udGFjdENlbnRlci5hcHBsaWNhdGlvbk5hbWUpLnBpcGUoXG4gICAgICAgICAgICBtYXAoaXRlbXMgPT4gKHtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklkOiBjb250YWN0Q2VudGVyLmFwcGxpY2F0aW9uSWQsXG4gICAgICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmdyb3VwRW50aXRpZXMoaXRlbXMpXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLaWNrcyBvZmYgdGhlIFVDQ1ggLT4gV2ViZXggQ29udGFjdCBDZW50ZXIgaW1wb3J0IG9mIG9uZSBjb250YWN0IGNlbnRlciwgYXMgYVxuICAgICAqIHNpbmdsZSBtaWdyYXRpb24gdW5pdDogZXZlcnkgZW50aXR5IG9mIHRoZSBhcHBsaWNhdGlvbiBnb2VzIGluIG9uZSByZXF1ZXN0LlxuICAgICAqXG4gICAgICogVGhlIGVuZHBvaW50IGlzIHN5bmNocm9ub3VzIGFuZCBhbnN3ZXJzIHdpdGggYW4gWExTWCB0cmFja2VyIHJhdGhlciB0aGFuIGEgam9iXG4gICAgICogaWQgLSBleGVjdXRpb24gYW5kIHByb2dyZXNzIHRyYWNraW5nIGFyZSBkZWZpbmVkIGluIGEgc2VwYXJhdGUgdGlja2V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNpdGVJZCAgICAgcmVxdWlyZWQgYnkgdGhlIGJhY2tlbmQgd2hlbiBhIFJlc291cmNlIEdyb3VwIGlzIGluIHNjb3BlLlxuICAgICAqIEBwYXJhbSBsb2NhdGlvbklkIHJlcXVpcmVkIGJ5IHRoZSBiYWNrZW5kIHdoZW4gYSBUcmlnZ2VyIGlzIGluIHNjb3BlLlxuICAgICAqL1xuICAgIGltcG9ydENvbnRhY3RDZW50ZXIoXG4gICAgICAgIGN1c3RvbWVySWQ6IG51bWJlcixcbiAgICAgICAgYXBwbGljYXRpb25JZDogc3RyaW5nLFxuICAgICAgICBzaXRlSWQ/OiBzdHJpbmcsXG4gICAgICAgIGxvY2F0aW9uSWQ/OiBzdHJpbmdcbiAgICApOiBPYnNlcnZhYmxlPEltcG9ydFJlc3VsdD4ge1xuICAgICAgICBpZiAodGhpcy51c2VNb2NrRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mPEltcG9ydFJlc3VsdD4oeyBhcHBsaWNhdGlvbklkLCBhY2NlcHRlZDogdHJ1ZSB9KS5waXBlKGRlbGF5KE1PQ0tfTEFURU5DWV9NUykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hBcHBsaWNhdGlvbkl0ZW1zKGN1c3RvbWVySWQsIGFwcGxpY2F0aW9uSWQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQ6IFVjY3hJdGVtc1dyYXBwZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIHVjY3hJdGVtc0xpc3Q6IGl0ZW1zLmxlbmd0aCA/IFtpdGVtcy5tYXAoaXRlbSA9PiAoeyAuLi5pdGVtLCBtaWdyYXRlOiB0cnVlIH0pKV0gOiBbXVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChcbiAgICAgICAgICAgICAgICAgICAgQVBJLlVDQ1guTUlHUkFURShjdXN0b21lcklkKSxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgICAgICAgICAgeyBzaXRlSWQsIGxvY2F0aW9uSWQgfSxcbiAgICAgICAgICAgICAgICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKChyZXBvcnQ6IEJsb2IpID0+ICh7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25JZCxcbiAgICAgICAgICAgICAgICBhY2NlcHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXBvcnQ6IHJlcG9ydCBpbnN0YW5jZW9mIEJsb2IgPyByZXBvcnQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZXJ5IFVDQ1ggZW50aXR5IGJlbG9uZ2luZyB0byBvbmUgYXBwbGljYXRpb24sIGdhdGhlcmVkIGFjcm9zcyB0aGUgYmF0Y2hlcy5cbiAgICAgKlxuICAgICAqIFVDQ1ggYmF0Y2hlcyBob2xkIG9uZSBlbnRpdHkgdHlwZSBlYWNoLCBzbyB0aGlzIHJlYWRzIHRoZW0gYWxsIGFuZCBrZWVwcyB0aGVcbiAgICAgKiBpdGVtcyB3aG9zZSBgYXBwbGljYXRpb25OYW1lYCBtYXRjaGVzLiBUaGUgbmFycm93aW5nIGlzIGRvbmUgaGVyZSByYXRoZXIgdGhhblxuICAgICAqIHRocm91Z2ggdGhlIGVuZHBvaW50J3Mgb3duIGBhcHBsaWNhdGlvbk5hbWVgIHBhcmFtIGJlY2F1c2UgdGhhdCBwYXJhbSBhbnN3ZXJzXG4gICAgICogYFtdYCBvbiBkZXYyIGV2ZW4gZm9yIGl0ZW1zIHRoYXQgcGxhaW5seSBjYXJyeSB0aGUgbmFtZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoQXBwbGljYXRpb25JdGVtcyhjdXN0b21lcklkOiBudW1iZXIsIGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxVY2N4SXRlbVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5mZXRjaChBUEkuVUNDWC5CQVRDSEVTKGN1c3RvbWVySWQpKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYXRjaGVzID0gdGhpcy5hc0FycmF5PFVjY3hCYXRjaD4ocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIGlmICghYmF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mPFVjY3hJdGVtW10+KFtdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oYmF0Y2hlcy5tYXAoYmF0Y2ggPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGkuZmV0Y2goQVBJLlVDQ1guQkFUQ0hfSVRFTVMoY3VzdG9tZXJJZCwgYmF0Y2guaWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKCh3cmFwcGVyOiBVY2N4SXRlbXNXcmFwcGVyKSA9PiB0aGlzLmZsYXR0ZW5JdGVtcyh3cmFwcGVyKSkpXG4gICAgICAgICAgICAgICAgKSkucGlwZShtYXAocGVyQmF0Y2ggPT4gdGhpcy5kZWR1cGVJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgcGVyQmF0Y2guZmxhdCgpLmZpbHRlcihpdGVtID0+IGl0ZW0uYXBwbGljYXRpb25OYW1lID09PSBhcHBsaWNhdGlvbk5hbWUpXG4gICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIGl0ZW1zIGVuZHBvaW50IG5lc3RzIGl0ZW1zIG9uZSBsZXZlbDsgb2xkZXIgcmVzcG9uc2VzIGNvbWUgYmFjayBmbGF0LiAqL1xuICAgIHByaXZhdGUgZmxhdHRlbkl0ZW1zKHdyYXBwZXI6IFVjY3hJdGVtc1dyYXBwZXIgfCBudWxsKTogVWNjeEl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gd3JhcHBlcj8udWNjeEl0ZW1zTGlzdCA/PyBbXTtcbiAgICAgICAgY29uc3QgZmxhdHRlbmVkID0gQXJyYXkuaXNBcnJheShpdGVtc1swXSlcbiAgICAgICAgICAgID8gKGl0ZW1zIGFzIFVjY3hJdGVtW11bXSkuZmxhdCgpXG4gICAgICAgICAgICA6IChpdGVtcyBhcyB1bmtub3duIGFzIFVjY3hJdGVtW10pO1xuICAgICAgICByZXR1cm4gZmxhdHRlbmVkLmZpbHRlcihCb29sZWFuKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIHNhbWUgZW50aXR5IGNhbiBiZSBjYXJyaWVkIGJ5IG1vcmUgdGhhbiBvbmUgYmF0Y2guICovXG4gICAgcHJpdmF0ZSBkZWR1cGVJdGVtcyhpdGVtczogVWNjeEl0ZW1bXSk6IFVjY3hJdGVtW10ge1xuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBgJHtpdGVtLnR5cGV9Ojoke2l0ZW0ubmFtZX06OiR7aXRlbS5zb3VyY2VVQ0NYSXB9YDtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2Vlbi5hZGQoa2V5KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwRW50aXRpZXMoaXRlbXM6IFVjY3hJdGVtW10pOiBDb250YWN0Q2VudGVyRW50aXR5R3JvdXBbXSB7XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcbiAgICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gcmVtYWluaW5nLmdldChpdGVtLnR5cGUpID8/IFtdO1xuICAgICAgICAgICAgbmFtZXMucHVzaChpdGVtLm5hbWUpO1xuICAgICAgICAgICAgcmVtYWluaW5nLnNldChpdGVtLnR5cGUsIG5hbWVzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBzOiBDb250YWN0Q2VudGVyRW50aXR5R3JvdXBbXSA9IE9WRVJWSUVXX0VOVElUWV9HUk9VUFMubWFwKGdyb3VwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbGxlY3RlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGdyb3VwLnR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGVkLnB1c2goLi4uKHJlbWFpbmluZy5nZXQodHlwZSkgPz8gW10pKTtcbiAgICAgICAgICAgICAgICByZW1haW5pbmcuZGVsZXRlKHR5cGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogZ3JvdXAubGFiZWwsIGl0ZW1zOiBjb2xsZWN0ZWQgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQW55dGhpbmcgdGhlIGJhY2tlbmQgcmV0dXJuZWQgdGhhdCBoYXMgbm8gZ3JvdXAgb2YgaXRzIG93biBrZWVwcyBpdHMgcmF3XG4gICAgICAgIC8vIHR5cGUgYXMgYSBsYWJlbCwgcmF0aGVyIHRoYW4gYmVpbmcgZHJvcHBlZCBmcm9tIHRoZSBvdmVydmlldy5cbiAgICAgICAgcmVtYWluaW5nLmZvckVhY2goKG5hbWVzLCB0eXBlKSA9PiBncm91cHMucHVzaCh7IGxhYmVsOiB0eXBlLCBpdGVtczogbmFtZXMgfSkpO1xuXG4gICAgICAgIHJldHVybiBncm91cHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b0NvbnRhY3RDZW50ZXJzKFxuICAgICAgICBhcHBsaWNhdGlvbnM6IFVjY3hBcHBsaWNhdGlvbltdLFxuICAgICAgICBjYWxsRmxvd3M6IENhbGxGbG93TWlncmF0aW9uU3RhdHVzW11cbiAgICApOiBDb250YWN0Q2VudGVyW10ge1xuICAgICAgICByZXR1cm4gYXBwbGljYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKGFwcGxpY2F0aW9uID0+ICEhYXBwbGljYXRpb24/Lm5hbWUpXG4gICAgICAgICAgICAubWFwKGFwcGxpY2F0aW9uID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1Y2N4SXAgPSBhcHBsaWNhdGlvbi51Y2N4Py5ob3N0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdE5hbWUgPSB0aGlzLnRvU2NyaXB0TmFtZShhcHBsaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcGF0aWJpbGl0eVN0YXR1cyA9IHRoaXMucmVzb2x2ZUNvbXBhdGliaWxpdHkoYXBwbGljYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFjdENlbnRlcjogQ29udGFjdENlbnRlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVUNDWCBpZGVudGlmaWVzIGFuIGFwcGxpY2F0aW9uIGJ5IG5hbWUgLSBpdCBpcyB3aGF0IHRoZSBlbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVjb3JkcyBsaW5rIGJhY2sgdG8gLSBzbyBpdCBkb3VibGVzIGFzIHRoZSB3aWRnZXQncyBrZXkuXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSWQ6IGFwcGxpY2F0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZTogYXBwbGljYXRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdWNjeElwLFxuICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5U3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICBtaWdyYXRpb25TdGF0ZTogdGhpcy5yZXNvbHZlTWlncmF0aW9uU3RhdGUoYXBwbGljYXRpb24sIHNjcmlwdE5hbWUsIHVjY3hJcCwgY2FsbEZsb3dzKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gUGVyIHRoZSB0aWNrZXQsIFwicmVxdWlyZXMgcmV2aWV3XCIgaXMgZXhhY3RseSB0aGUgc2V0IHRoYXQgY2FuIGdvXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIGVpdGhlciBkZXN0aW5hdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJBc3Npc3RDYXBhYmxlOiBjb21wYXRpYmlsaXR5U3RhdHVzID09PSAncmVxdWlyZXMtcmV2aWV3J1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFjdENlbnRlcjtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBVQ0NYIHdyYXBzIHRoZSBiYWNraW5nIHNjcmlwdCBhcyBgU0NSSVBUW0Zvby5hZWZdYDsgdGhlIHdpZGdldCBzaG93cyBgRm9vLmFlZmAuICovXG4gICAgcHJpdmF0ZSB0b1NjcmlwdE5hbWUoYXBwbGljYXRpb246IFVjY3hBcHBsaWNhdGlvbik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGFwcGxpY2F0aW9uLnNjcmlwdE5hbWUgPz8gYXBwbGljYXRpb24uYWVmRmlsZXM/LlswXSA/PyAnJztcbiAgICAgICAgcmV0dXJuIHJhdy5yZXBsYWNlKC9eU0NSSVBUXFxbKC4qKVxcXSQvLCAnJDEnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIFR1a2kgaGFzIGFscmVhZHkgaW1wb3J0ZWQgdGhpcyBjb250YWN0IGNlbnRlci5cbiAgICAgKlxuICAgICAqIFRoZSBhcHBsaWNhdGlvbiByZWNvcmQgY2FycmllcyBpdHMgb3duIGBtaWdyYXRpb25TdGF0dXNgLCBidXQgaXQgaXMgbnVsbFxuICAgICAqIHRocm91Z2hvdXQgZGV2Miwgc28gdGhpcyBmYWxscyBiYWNrIHRvIHRoZSBwZXItQUVGLXNjcmlwdCBjYWxsLWZsb3cgc3RhdGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNvbHZlTWlncmF0aW9uU3RhdGUoXG4gICAgICAgIGFwcGxpY2F0aW9uOiBVY2N4QXBwbGljYXRpb24sXG4gICAgICAgIHNjcmlwdE5hbWU6IHN0cmluZyxcbiAgICAgICAgdWNjeElwOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIGNhbGxGbG93czogQ2FsbEZsb3dNaWdyYXRpb25TdGF0dXNbXVxuICAgICk6IENvbnRhY3RDZW50ZXJbJ21pZ3JhdGlvblN0YXRlJ10ge1xuICAgICAgICBpZiAoYXBwbGljYXRpb24ubWlncmF0aW9uU3RhdHVzKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbGljYXRpb24ubWlncmF0aW9uU3RhdHVzID09PSBDQUxMX0ZMT1dfTUlHUkFURUQgPyAnbWlncmF0ZWQnIDogJ25vdC1taWdyYXRlZCc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYWxsRmxvdyA9IGNhbGxGbG93cy5maW5kKGZsb3cgPT5cbiAgICAgICAgICAgIGZsb3cuc2NyaXB0TmFtZSA9PT0gc2NyaXB0TmFtZSAmJiAoIXVjY3hJcCB8fCBmbG93LnVjY3hJcCA9PT0gdWNjeElwKSk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGxGbG93Py5zdGF0dXMgPT09IENBTExfRkxPV19NSUdSQVRFRCA/ICdtaWdyYXRlZCcgOiAnbm90LW1pZ3JhdGVkJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUdXJucyBhbiBBRUYgY29tcGF0aWJpbGl0eSBzY29yZSBpbnRvIGEgc3RhdHVzLlxuICAgICAqXG4gICAgICogVGhlIHNjb3JpbmcgQVBJIGRvZXMgbm90IGV4aXN0IHlldCAtIHRoZSBBRUYgc3RlcCBtYXBwaW5nIGlzIHN0aWxsIGEgcGVuZGluZ1xuICAgICAqIGlucHV0IG9uIHRoZSB0aWNrZXQgLSBzbyB3aGVuIHRoZSBiYWNrZW5kIHNlbmRzIG5vIHNjb3JlIGV2ZXJ5IGNvbnRhY3QgY2VudGVyXG4gICAgICogZmFsbHMgYmFjayB0byBcInJlcXVpcmVzIHJldmlld1wiOiB0aGUgc3RhdHVzIHRoYXQgb2ZmZXJzIGJvdGggZGVzdGluYXRpb25zIGFuZFxuICAgICAqIGNsYWltcyBub3RoaW5nIGFib3V0IGNvbXBhdGliaWxpdHkgd2UgaGF2ZSBub3QgYWN0dWFsbHkgbWVhc3VyZWQuXG4gICAgICpcbiAgICAgKiBPbmNlIHRoZSBiYWNrZW5kIHJldHVybnMgYGNvbXBhdGliaWxpdHlTY29yZWAsIHRoZSB0aHJlc2hvbGRzIGJlbG93IHRha2Ugb3ZlclxuICAgICAqIHdpdGggbm8gZnVydGhlciBjaGFuZ2UgaGVyZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc29sdmVDb21wYXRpYmlsaXR5KGFwcGxpY2F0aW9uOiBVY2N4QXBwbGljYXRpb24pOiBDb250YWN0Q2VudGVyQ29tcGF0aWJpbGl0eVN0YXR1cyB7XG4gICAgICAgIGNvbnN0IHNjb3JlID0gKGFwcGxpY2F0aW9uIGFzIHsgY29tcGF0aWJpbGl0eVNjb3JlPzogbnVtYmVyIH0pLmNvbXBhdGliaWxpdHlTY29yZTtcblxuICAgICAgICBpZiAodHlwZW9mIHNjb3JlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuICdyZXF1aXJlcy1yZXZpZXcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY29yZSA+PSBDT01QQVRJQklMSVRZX1RIUkVTSE9MRFMubWlncmF0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuICdtaWdyYXRhYmxlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NvcmUgPj0gQ09NUEFUSUJJTElUWV9USFJFU0hPTERTLnJlcXVpcmVzUmV2aWV3KSB7XG4gICAgICAgICAgICByZXR1cm4gJ3JlcXVpcmVzLXJldmlldyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd1bnN1cHBvcnRlZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc0FycmF5PFQ+KHZhbHVlOiB1bmtub3duKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgYXMgVFtdIDogW107XG4gICAgfVxufVxuIl19
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtaW1wb3J0L2NjLWltcG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXRGLE9BQU8sRUFDSCxrQkFBa0IsRUFNckIsTUFBTSxjQUFjLENBQUM7O0FBRXRCLHlGQUF5RjtBQUN6RixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFLNUIsTUFBTSxPQUFPLGVBQWU7SUFINUI7UUFJcUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhEOzs7Ozs7V0FNRztRQUNILGdCQUFXLEdBQUcsSUFBSSxDQUFDO0tBa1F0QjtJQWhRRyxRQUFRLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFL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QyxDQUFDLGNBQWMsQ0FBQztTQUMzRjtRQUVELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFM0UsT0FBTyxRQUFRLEVBQUUsTUFBTSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLG9CQUFvQixDQUFDLFdBQTRCO1FBQ3JELE1BQU0sS0FBSyxHQUFJLFdBQStDLENBQUMsa0JBQWtCLENBQUM7UUFFbEYsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxpQkFBaUIsQ0FBQztTQUM1QjtRQUNELElBQUksS0FBSyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsRUFBRTtZQUM5QyxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUNELElBQUksS0FBSyxJQUFJLHdCQUF3QixDQUFDLGNBQWMsRUFBRTtZQUNsRCxPQUFPLGlCQUFpQixDQUFDO1NBQzVCO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVPLE9BQU8sQ0FBSSxLQUFjO1FBQzdCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQzs7NkdBNVFRLGVBQWU7aUhBQWYsZUFBZSxjQUZaLE1BQU07NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVsYXksIGZvcmtKb2luLCBtYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vc2hhcmVkL2FwaS5lbmRwb2ludHMnO1xyXG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGNwQXBpU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9kY3AtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDT01QQVRJQklMSVRZX1RIUkVTSE9MRFMsIE9WRVJWSUVXX0VOVElUWV9HUk9VUFMgfSBmcm9tICcuL2NvbnN0YW50cy9jYy1pbXBvcnQuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgbW9ja0NvbnRhY3RDZW50ZXJFbnRpdGllcywgbW9ja0NvbnRhY3RDZW50ZXJzIH0gZnJvbSAnLi9tb2NrL2NjLWltcG9ydC5tb2NrJztcclxuaW1wb3J0IHtcclxuICAgIENvbnRhY3RDZW50ZXIsXHJcbiAgICBDb250YWN0Q2VudGVyQ29tcGF0aWJpbGl0eVN0YXR1cyxcclxuICAgIENvbnRhY3RDZW50ZXJFbnRpdGllcyxcclxuICAgIENvbnRhY3RDZW50ZXJFbnRpdHlHcm91cCxcclxuICAgIEltcG9ydFJlc3VsdFxyXG59IGZyb20gJy4vdHlwZXMvY2MtaW1wb3J0JztcclxuaW1wb3J0IHtcclxuICAgIENBTExfRkxPV19NSUdSQVRFRCxcclxuICAgIENhbGxGbG93TWlncmF0aW9uU3RhdHVzLFxyXG4gICAgVWNjeEFwcGxpY2F0aW9uLFxyXG4gICAgVWNjeEJhdGNoLFxyXG4gICAgVWNjeEl0ZW0sXHJcbiAgICBVY2N4SXRlbXNXcmFwcGVyXHJcbn0gZnJvbSAnLi90eXBlcy91Y2N4JztcclxuXHJcbi8qKiBTaW11bGF0ZWQgbmV0d29yayBsYXRlbmN5IGZvciB0aGUgbW9jayByZXNwb25zZXMsIHNvIGxvYWRpbmcgc3RhdGVzIGFyZSBleGVyY2lzZWQuICovXHJcbmNvbnN0IE1PQ0tfTEFURU5DWV9NUyA9IDMwMDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2NJbXBvcnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBpID0gaW5qZWN0KEFQSVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkY3BBcGkgPSBpbmplY3QoRGNwQXBpU2VydmljZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbnN3ZXIgZXZlcnl0aGluZyBmcm9tIGBtb2NrL2NjLWltcG9ydC5tb2NrLnRzYCBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIGJhY2tlbmQuXHJcbiAgICAgKlxyXG4gICAgICogTm90ZSB0aGlzIGlzIGFsbC1vci1ub3RoaW5nOiB3aXRoIGl0IG9mZiwgdGhlIGNvbnRhY3QtY2VudGVyIGxpc3QsIHRoZSBlbnRpdHlcclxuICAgICAqIG92ZXJ2aWV3IGFuZCB0aGUgaW1wb3J0IGFsbCBoaXQgcmVhbCBlbmRwb2ludHMuIENvbXBhdGliaWxpdHkgc2NvcmluZyBpcyB0aGVcclxuICAgICAqIGV4Y2VwdGlvbiAtIHNlZSB7QGxpbmsgcmVzb2x2ZUNvbXBhdGliaWxpdHl9LlxyXG4gICAgICovXHJcbiAgICB1c2VNb2NrRGF0YSA9IHRydWU7XHJcblxyXG4gICAgc2V0VG9rZW4odG9rZW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYXBpLnRva2VuID0gdG9rZW47XHJcbiAgICAgICAgdGhpcy5kY3BBcGkudG9rZW4gPSB0b2tlbjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRIb3N0KGhvc3Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYXBpLmFwaVVybCA9IGhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEJhc2UgVVJMIG9mIHRoZSBkY3AgaG9zdCwgd2hpY2ggc2VydmVzIHRoZSBVQ0NYIGFwcGxpY2F0aW9uIGxpc3QuICovXHJcbiAgICBzZXREY3BIb3N0KGRjcEhvc3Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGNwQXBpLmFwaVVybCA9IGRjcEhvc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVyeSBVQ0NYIGNvbnRhY3QgY2VudGVyIFR1a2kgY2FuIGltcG9ydC5cclxuICAgICAqXHJcbiAgICAgKiBBIFwiY29udGFjdCBjZW50ZXJcIiBpcyBhIFVDQ1ggYXBwbGljYXRpb24uIFRoZSBsaXN0IGNvbWVzIGZyb20gdGhlIGRjcFxyXG4gICAgICogYXBwbGljYXRpb24gY2FjaGU7IHdoZXRoZXIgZWFjaCBvbmUgaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpcyBqb2luZWQgb24gZnJvbVxyXG4gICAgICogdGhlIHBlci1BRUYtc2NyaXB0IGNhbGwtZmxvdyBtaWdyYXRpb24gc3RhdGVzLlxyXG4gICAgICovXHJcbiAgICBmZXRjaENvbnRhY3RDZW50ZXJzKGN1c3RvbWVySWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q29udGFjdENlbnRlcltdPiB7XHJcbiAgICAgICAgaWYgKHRoaXMudXNlTW9ja0RhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKG1vY2tDb250YWN0Q2VudGVycygpKS5waXBlKGRlbGF5KE1PQ0tfTEFURU5DWV9NUykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHtcclxuICAgICAgICAgICAgYXBwbGljYXRpb25zOiB0aGlzLmRjcEFwaS5mZXRjaChBUEkuVUNDWC5BUFBMSUNBVElPTl9OQU1FUyhjdXN0b21lcklkKSksXHJcbiAgICAgICAgICAgIGNhbGxGbG93czogdGhpcy5hcGkuZmV0Y2goQVBJLlVDQ1guQ0FMTF9GTE9XX01JR1JBVElPTl9TVEFUVVNFUyhjdXN0b21lcklkKSlcclxuICAgICAgICB9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKHsgYXBwbGljYXRpb25zLCBjYWxsRmxvd3MgfSkgPT4gdGhpcy50b0NvbnRhY3RDZW50ZXJzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hc0FycmF5PFVjY3hBcHBsaWNhdGlvbj4oYXBwbGljYXRpb25zKSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYXNBcnJheTxDYWxsRmxvd01pZ3JhdGlvblN0YXR1cz4oY2FsbEZsb3dzKVxyXG4gICAgICAgICAgICApKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcHBsaWNhdGlvbi1jZW50cmljIGVudGl0eSBicmVha2Rvd246IGV2ZXJ5dGhpbmcgVHVraSB3aWxsIGNyZWF0ZSBvbiBpbXBvcnQuXHJcbiAgICAgKlxyXG4gICAgICogTm90ZSB0aGlzIG9ubHkgZXZlciByZXR1cm5zIGVudGl0aWVzIHRoZSBiYWNrZW5kIGhhcyBhY3R1YWxseSBsaW5rZWQgdG8gdGhlXHJcbiAgICAgKiBhcHBsaWNhdGlvbi4gV2hlcmUgdGhhdCBsaW5rYWdlIGlzIG1pc3NpbmcgdGhlIGdyb3VwcyBjb21lIGJhY2sgZW1wdHkgcmF0aGVyXHJcbiAgICAgKiB0aGFuIHBhZGRlZCB3aXRoIHVucmVsYXRlZCBlbnRpdGllcyBvZiB0aGUgcmlnaHQgdHlwZS5cclxuICAgICAqL1xyXG4gICAgZmV0Y2hDb250YWN0Q2VudGVyRW50aXRpZXMoY3VzdG9tZXJJZDogbnVtYmVyLCBjb250YWN0Q2VudGVyOiBDb250YWN0Q2VudGVyKTogT2JzZXJ2YWJsZTxDb250YWN0Q2VudGVyRW50aXRpZXM+IHtcclxuICAgICAgICBpZiAodGhpcy51c2VNb2NrRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YobW9ja0NvbnRhY3RDZW50ZXJFbnRpdGllcyhjb250YWN0Q2VudGVyKSkucGlwZShkZWxheShNT0NLX0xBVEVOQ1lfTVMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoQXBwbGljYXRpb25JdGVtcyhjdXN0b21lcklkLCBjb250YWN0Q2VudGVyLmFwcGxpY2F0aW9uTmFtZSkucGlwZShcclxuICAgICAgICAgICAgbWFwKGl0ZW1zID0+ICh7XHJcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklkOiBjb250YWN0Q2VudGVyLmFwcGxpY2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICBncm91cHM6IHRoaXMuZ3JvdXBFbnRpdGllcyhpdGVtcylcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEtpY2tzIG9mZiB0aGUgVUNDWCAtPiBXZWJleCBDb250YWN0IENlbnRlciBpbXBvcnQgb2Ygb25lIGNvbnRhY3QgY2VudGVyLCBhcyBhXHJcbiAgICAgKiBzaW5nbGUgbWlncmF0aW9uIHVuaXQ6IGV2ZXJ5IGVudGl0eSBvZiB0aGUgYXBwbGljYXRpb24gZ29lcyBpbiBvbmUgcmVxdWVzdC5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgZW5kcG9pbnQgaXMgc3luY2hyb25vdXMgYW5kIGFuc3dlcnMgd2l0aCBhbiBYTFNYIHRyYWNrZXIgcmF0aGVyIHRoYW4gYSBqb2JcclxuICAgICAqIGlkIC0gZXhlY3V0aW9uIGFuZCBwcm9ncmVzcyB0cmFja2luZyBhcmUgZGVmaW5lZCBpbiBhIHNlcGFyYXRlIHRpY2tldC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc2l0ZUlkICAgICByZXF1aXJlZCBieSB0aGUgYmFja2VuZCB3aGVuIGEgUmVzb3VyY2UgR3JvdXAgaXMgaW4gc2NvcGUuXHJcbiAgICAgKiBAcGFyYW0gbG9jYXRpb25JZCByZXF1aXJlZCBieSB0aGUgYmFja2VuZCB3aGVuIGEgVHJpZ2dlciBpcyBpbiBzY29wZS5cclxuICAgICAqL1xyXG4gICAgaW1wb3J0Q29udGFjdENlbnRlcihcclxuICAgICAgICBjdXN0b21lcklkOiBudW1iZXIsXHJcbiAgICAgICAgYXBwbGljYXRpb25JZDogc3RyaW5nLFxyXG4gICAgICAgIHNpdGVJZD86IHN0cmluZyxcclxuICAgICAgICBsb2NhdGlvbklkPzogc3RyaW5nXHJcbiAgICApOiBPYnNlcnZhYmxlPEltcG9ydFJlc3VsdD4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVzZU1vY2tEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZjxJbXBvcnRSZXN1bHQ+KHsgYXBwbGljYXRpb25JZCwgYWNjZXB0ZWQ6IHRydWUgfSkucGlwZShkZWxheShNT0NLX0xBVEVOQ1lfTVMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoQXBwbGljYXRpb25JdGVtcyhjdXN0b21lcklkLCBhcHBsaWNhdGlvbklkKS5waXBlKFxyXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZDogVWNjeEl0ZW1zV3JhcHBlciA9IHtcclxuICAgICAgICAgICAgICAgICAgICB1Y2N4SXRlbXNMaXN0OiBpdGVtcy5sZW5ndGggPyBbaXRlbXMubWFwKGl0ZW0gPT4gKHsgLi4uaXRlbSwgbWlncmF0ZTogdHJ1ZSB9KSldIDogW11cclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgQVBJLlVDQ1guTUlHUkFURShjdXN0b21lcklkKSxcclxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgc2l0ZUlkLCBsb2NhdGlvbklkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbWFwKChyZXBvcnQ6IEJsb2IpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgYWNjZXB0ZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnQ6IHJlcG9ydCBpbnN0YW5jZW9mIEJsb2IgPyByZXBvcnQgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZXJ5IFVDQ1ggZW50aXR5IGJlbG9uZ2luZyB0byBvbmUgYXBwbGljYXRpb24sIGdhdGhlcmVkIGFjcm9zcyB0aGUgYmF0Y2hlcy5cclxuICAgICAqXHJcbiAgICAgKiBVQ0NYIGJhdGNoZXMgaG9sZCBvbmUgZW50aXR5IHR5cGUgZWFjaCwgc28gdGhpcyByZWFkcyB0aGVtIGFsbCBhbmQga2VlcHMgdGhlXHJcbiAgICAgKiBpdGVtcyB3aG9zZSBgYXBwbGljYXRpb25OYW1lYCBtYXRjaGVzLiBUaGUgbmFycm93aW5nIGlzIGRvbmUgaGVyZSByYXRoZXIgdGhhblxyXG4gICAgICogdGhyb3VnaCB0aGUgZW5kcG9pbnQncyBvd24gYGFwcGxpY2F0aW9uTmFtZWAgcGFyYW0gYmVjYXVzZSB0aGF0IHBhcmFtIGFuc3dlcnNcclxuICAgICAqIGBbXWAgb24gZGV2MiBldmVuIGZvciBpdGVtcyB0aGF0IHBsYWlubHkgY2FycnkgdGhlIG5hbWUuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmV0Y2hBcHBsaWNhdGlvbkl0ZW1zKGN1c3RvbWVySWQ6IG51bWJlciwgYXBwbGljYXRpb25OYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVjY3hJdGVtW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZmV0Y2goQVBJLlVDQ1guQkFUQ0hFUyhjdXN0b21lcklkKSkucGlwZShcclxuICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmFzQXJyYXk8VWNjeEJhdGNoPihyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWJhdGNoZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mPFVjY3hJdGVtW10+KFtdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oYmF0Y2hlcy5tYXAoYmF0Y2ggPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwaS5mZXRjaChBUEkuVUNDWC5CQVRDSF9JVEVNUyhjdXN0b21lcklkLCBiYXRjaC5pZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgod3JhcHBlcjogVWNjeEl0ZW1zV3JhcHBlcikgPT4gdGhpcy5mbGF0dGVuSXRlbXMod3JhcHBlcikpKVxyXG4gICAgICAgICAgICAgICAgKSkucGlwZShtYXAocGVyQmF0Y2ggPT4gdGhpcy5kZWR1cGVJdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICBwZXJCYXRjaC5mbGF0KCkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5hcHBsaWNhdGlvbk5hbWUgPT09IGFwcGxpY2F0aW9uTmFtZSlcclxuICAgICAgICAgICAgICAgICkpKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgaXRlbXMgZW5kcG9pbnQgbmVzdHMgaXRlbXMgb25lIGxldmVsOyBvbGRlciByZXNwb25zZXMgY29tZSBiYWNrIGZsYXQuICovXHJcbiAgICBwcml2YXRlIGZsYXR0ZW5JdGVtcyh3cmFwcGVyOiBVY2N4SXRlbXNXcmFwcGVyIHwgbnVsbCk6IFVjY3hJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gd3JhcHBlcj8udWNjeEl0ZW1zTGlzdCA/PyBbXTtcclxuICAgICAgICBjb25zdCBmbGF0dGVuZWQgPSBBcnJheS5pc0FycmF5KGl0ZW1zWzBdKVxyXG4gICAgICAgICAgICA/IChpdGVtcyBhcyBVY2N4SXRlbVtdW10pLmZsYXQoKVxyXG4gICAgICAgICAgICA6IChpdGVtcyBhcyB1bmtub3duIGFzIFVjY3hJdGVtW10pO1xyXG4gICAgICAgIHJldHVybiBmbGF0dGVuZWQuZmlsdGVyKEJvb2xlYW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBUaGUgc2FtZSBlbnRpdHkgY2FuIGJlIGNhcnJpZWQgYnkgbW9yZSB0aGFuIG9uZSBiYXRjaC4gKi9cclxuICAgIHByaXZhdGUgZGVkdXBlSXRlbXMoaXRlbXM6IFVjY3hJdGVtW10pOiBVY2N4SXRlbVtdIHtcclxuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7aXRlbS50eXBlfTo6JHtpdGVtLm5hbWV9Ojoke2l0ZW0uc291cmNlVUNDWElwfWA7XHJcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2Vlbi5hZGQoa2V5KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBncm91cEVudGl0aWVzKGl0ZW1zOiBVY2N4SXRlbVtdKTogQ29udGFjdENlbnRlckVudGl0eUdyb3VwW10ge1xyXG4gICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IHJlbWFpbmluZy5nZXQoaXRlbS50eXBlKSA/PyBbXTtcclxuICAgICAgICAgICAgbmFtZXMucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICByZW1haW5pbmcuc2V0KGl0ZW0udHlwZSwgbmFtZXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBncm91cHM6IENvbnRhY3RDZW50ZXJFbnRpdHlHcm91cFtdID0gT1ZFUlZJRVdfRU5USVRZX0dST1VQUy5tYXAoZ3JvdXAgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0ZWQ6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIGdyb3VwLnR5cGVzLmZvckVhY2godHlwZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0ZWQucHVzaCguLi4ocmVtYWluaW5nLmdldCh0eXBlKSA/PyBbXSkpO1xyXG4gICAgICAgICAgICAgICAgcmVtYWluaW5nLmRlbGV0ZSh0eXBlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBncm91cC5sYWJlbCwgaXRlbXM6IGNvbGxlY3RlZCB9O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBBbnl0aGluZyB0aGUgYmFja2VuZCByZXR1cm5lZCB0aGF0IGhhcyBubyBncm91cCBvZiBpdHMgb3duIGtlZXBzIGl0cyByYXdcclxuICAgICAgICAvLyB0eXBlIGFzIGEgbGFiZWwsIHJhdGhlciB0aGFuIGJlaW5nIGRyb3BwZWQgZnJvbSB0aGUgb3ZlcnZpZXcuXHJcbiAgICAgICAgcmVtYWluaW5nLmZvckVhY2goKG5hbWVzLCB0eXBlKSA9PiBncm91cHMucHVzaCh7IGxhYmVsOiB0eXBlLCBpdGVtczogbmFtZXMgfSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gZ3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9Db250YWN0Q2VudGVycyhcclxuICAgICAgICBhcHBsaWNhdGlvbnM6IFVjY3hBcHBsaWNhdGlvbltdLFxyXG4gICAgICAgIGNhbGxGbG93czogQ2FsbEZsb3dNaWdyYXRpb25TdGF0dXNbXVxyXG4gICAgKTogQ29udGFjdENlbnRlcltdIHtcclxuICAgICAgICByZXR1cm4gYXBwbGljYXRpb25zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoYXBwbGljYXRpb24gPT4gISFhcHBsaWNhdGlvbj8ubmFtZSlcclxuICAgICAgICAgICAgLm1hcChhcHBsaWNhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1Y2N4SXAgPSBhcHBsaWNhdGlvbi51Y2N4Py5ob3N0O1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IHRoaXMudG9TY3JpcHROYW1lKGFwcGxpY2F0aW9uKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBhdGliaWxpdHlTdGF0dXMgPSB0aGlzLnJlc29sdmVDb21wYXRpYmlsaXR5KGFwcGxpY2F0aW9uKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWN0Q2VudGVyOiBDb250YWN0Q2VudGVyID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVDQ1ggaWRlbnRpZmllcyBhbiBhcHBsaWNhdGlvbiBieSBuYW1lIC0gaXQgaXMgd2hhdCB0aGUgZW50aXR5XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVjb3JkcyBsaW5rIGJhY2sgdG8gLSBzbyBpdCBkb3VibGVzIGFzIHRoZSB3aWRnZXQncyBrZXkuXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JZDogYXBwbGljYXRpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU6IGFwcGxpY2F0aW9uLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB1Y2N4SXAsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eVN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICBtaWdyYXRpb25TdGF0ZTogdGhpcy5yZXNvbHZlTWlncmF0aW9uU3RhdGUoYXBwbGljYXRpb24sIHNjcmlwdE5hbWUsIHVjY3hJcCwgY2FsbEZsb3dzKSxcclxuICAgICAgICAgICAgICAgICAgICAvLyBQZXIgdGhlIHRpY2tldCwgXCJyZXF1aXJlcyByZXZpZXdcIiBpcyBleGFjdGx5IHRoZSBzZXQgdGhhdCBjYW4gZ29cclxuICAgICAgICAgICAgICAgICAgICAvLyB0byBlaXRoZXIgZGVzdGluYXRpb24uXHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJBc3Npc3RDYXBhYmxlOiBjb21wYXRpYmlsaXR5U3RhdHVzID09PSAncmVxdWlyZXMtcmV2aWV3J1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGFjdENlbnRlcjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFVDQ1ggd3JhcHMgdGhlIGJhY2tpbmcgc2NyaXB0IGFzIGBTQ1JJUFRbRm9vLmFlZl1gOyB0aGUgd2lkZ2V0IHNob3dzIGBGb28uYWVmYC4gKi9cclxuICAgIHByaXZhdGUgdG9TY3JpcHROYW1lKGFwcGxpY2F0aW9uOiBVY2N4QXBwbGljYXRpb24pOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJhdyA9IGFwcGxpY2F0aW9uLnNjcmlwdE5hbWUgPz8gYXBwbGljYXRpb24uYWVmRmlsZXM/LlswXSA/PyAnJztcclxuICAgICAgICByZXR1cm4gcmF3LnJlcGxhY2UoL15TQ1JJUFRcXFsoLiopXFxdJC8sICckMScpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciBUdWtpIGhhcyBhbHJlYWR5IGltcG9ydGVkIHRoaXMgY29udGFjdCBjZW50ZXIuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIGFwcGxpY2F0aW9uIHJlY29yZCBjYXJyaWVzIGl0cyBvd24gYG1pZ3JhdGlvblN0YXR1c2AsIGJ1dCBpdCBpcyBudWxsXHJcbiAgICAgKiB0aHJvdWdob3V0IGRldjIsIHNvIHRoaXMgZmFsbHMgYmFjayB0byB0aGUgcGVyLUFFRi1zY3JpcHQgY2FsbC1mbG93IHN0YXRlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlc29sdmVNaWdyYXRpb25TdGF0ZShcclxuICAgICAgICBhcHBsaWNhdGlvbjogVWNjeEFwcGxpY2F0aW9uLFxyXG4gICAgICAgIHNjcmlwdE5hbWU6IHN0cmluZyxcclxuICAgICAgICB1Y2N4SXA6IHN0cmluZyB8IHVuZGVmaW5lZCxcclxuICAgICAgICBjYWxsRmxvd3M6IENhbGxGbG93TWlncmF0aW9uU3RhdHVzW11cclxuICAgICk6IENvbnRhY3RDZW50ZXJbJ21pZ3JhdGlvblN0YXRlJ10ge1xyXG4gICAgICAgIGlmIChhcHBsaWNhdGlvbi5taWdyYXRpb25TdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFwcGxpY2F0aW9uLm1pZ3JhdGlvblN0YXR1cyA9PT0gQ0FMTF9GTE9XX01JR1JBVEVEID8gJ21pZ3JhdGVkJyA6ICdub3QtbWlncmF0ZWQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2FsbEZsb3cgPSBjYWxsRmxvd3MuZmluZChmbG93ID0+XHJcbiAgICAgICAgICAgIGZsb3cuc2NyaXB0TmFtZSA9PT0gc2NyaXB0TmFtZSAmJiAoIXVjY3hJcCB8fCBmbG93LnVjY3hJcCA9PT0gdWNjeElwKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjYWxsRmxvdz8uc3RhdHVzID09PSBDQUxMX0ZMT1dfTUlHUkFURUQgPyAnbWlncmF0ZWQnIDogJ25vdC1taWdyYXRlZCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUdXJucyBhbiBBRUYgY29tcGF0aWJpbGl0eSBzY29yZSBpbnRvIGEgc3RhdHVzLlxyXG4gICAgICpcclxuICAgICAqIFRoZSBzY29yaW5nIEFQSSBkb2VzIG5vdCBleGlzdCB5ZXQgLSB0aGUgQUVGIHN0ZXAgbWFwcGluZyBpcyBzdGlsbCBhIHBlbmRpbmdcclxuICAgICAqIGlucHV0IG9uIHRoZSB0aWNrZXQgLSBzbyB3aGVuIHRoZSBiYWNrZW5kIHNlbmRzIG5vIHNjb3JlIGV2ZXJ5IGNvbnRhY3QgY2VudGVyXHJcbiAgICAgKiBmYWxscyBiYWNrIHRvIFwicmVxdWlyZXMgcmV2aWV3XCI6IHRoZSBzdGF0dXMgdGhhdCBvZmZlcnMgYm90aCBkZXN0aW5hdGlvbnMgYW5kXHJcbiAgICAgKiBjbGFpbXMgbm90aGluZyBhYm91dCBjb21wYXRpYmlsaXR5IHdlIGhhdmUgbm90IGFjdHVhbGx5IG1lYXN1cmVkLlxyXG4gICAgICpcclxuICAgICAqIE9uY2UgdGhlIGJhY2tlbmQgcmV0dXJucyBgY29tcGF0aWJpbGl0eVNjb3JlYCwgdGhlIHRocmVzaG9sZHMgYmVsb3cgdGFrZSBvdmVyXHJcbiAgICAgKiB3aXRoIG5vIGZ1cnRoZXIgY2hhbmdlIGhlcmUuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVzb2x2ZUNvbXBhdGliaWxpdHkoYXBwbGljYXRpb246IFVjY3hBcHBsaWNhdGlvbik6IENvbnRhY3RDZW50ZXJDb21wYXRpYmlsaXR5U3RhdHVzIHtcclxuICAgICAgICBjb25zdCBzY29yZSA9IChhcHBsaWNhdGlvbiBhcyB7IGNvbXBhdGliaWxpdHlTY29yZT86IG51bWJlciB9KS5jb21wYXRpYmlsaXR5U2NvcmU7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2Ygc2NvcmUgIT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAncmVxdWlyZXMtcmV2aWV3JztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNjb3JlID49IENPTVBBVElCSUxJVFlfVEhSRVNIT0xEUy5taWdyYXRhYmxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnbWlncmF0YWJsZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY29yZSA+PSBDT01QQVRJQklMSVRZX1RIUkVTSE9MRFMucmVxdWlyZXNSZXZpZXcpIHtcclxuICAgICAgICAgICAgcmV0dXJuICdyZXF1aXJlcy1yZXZpZXcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzQXJyYXk8VD4odmFsdWU6IHVua25vd24pOiBUW10ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIGFzIFRbXSA6IFtdO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -124,10 +124,10 @@ export class ImportContactCenterPanelComponent {
124
124
  }
125
125
  }
126
126
  ImportContactCenterPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImportContactCenterPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
127
- ImportContactCenterPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImportContactCenterPanelComponent, selector: "cc-import-contact-center-panel", inputs: { customerId: "customerId", host: "host", dcpHost: "dcpHost", token: "token", useMockData: "useMockData" }, outputs: { importRequested: "importRequested" }, usesOnChanges: true, ngImport: i0, template: "<tk-card [title]=\"title\" [dense]=\"true\">\n <ng-container ngProjectAs=\"card-title-adornment\">\n <span class=\"cc-import-panel__info\" [matTooltip]=\"tooltip\">\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\n </span>\n </ng-container>\n\n <ng-container ngProjectAs=\"card-content\">\n <div class=\"cc-import-panel__body\" *ngIf=\"!loading && !error; else panelState\">\n <div class=\"cc-import-panel__chart\">\n <apx-chart\n [series]=\"chartOptions.series\"\n [chart]=\"chartOptions.chart\"\n [labels]=\"chartOptions.labels\"\n [colors]=\"chartOptions.colors\"\n [legend]=\"chartOptions.legend\"\n [plotOptions]=\"chartOptions.plotOptions\"\n [dataLabels]=\"chartOptions.dataLabels\"\n [tooltip]=\"chartOptions.tooltip\"\n [states]=\"chartOptions.states\"\n ></apx-chart>\n <div class=\"cc-import-panel__chart-center\">\n <span class=\"cc-import-panel__chart-total\">{{ total | number }}</span>\n <span class=\"cc-import-panel__chart-caption\">Contact Center</span>\n </div>\n </div>\n\n <ul class=\"cc-import-panel__legend\">\n <li class=\"cc-import-panel__legend-item\" *ngFor=\"let segment of segments\">\n <span class=\"cc-import-panel__legend-marker\" [style.backgroundColor]=\"segment.color\"></span>\n <span class=\"cc-import-panel__legend-label\">{{ segment.label }}</span>\n <span class=\"cc-import-panel__info\" [matTooltip]=\"segment.tooltip\">\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\n </span>\n <span class=\"cc-import-panel__legend-value\">{{ segment.count | number }} ({{ segment.percentage }}%)</span>\n </li>\n </ul>\n </div>\n\n <ng-template #panelState>\n <div class=\"cc-import-panel__state\" *ngIf=\"loading\">Loading contact centers\u2026</div>\n <div class=\"cc-import-panel__state cc-import-panel__state--error\" *ngIf=\"!loading && error\">\n Unable to load contact centers.\n </div>\n </ng-template>\n\n <div class=\"cc-import-panel__actions\">\n <button\n type=\"button\"\n class=\"cc-import-panel__button\"\n [disabled]=\"loading || error\"\n (click)=\"onImport()\"\n >\n Import\n </button>\n </div>\n </ng-container>\n</tk-card>\n\n<ng-template #infoIcon>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"1.2\" />\n <path d=\"M8 7.2v4\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.85\" fill=\"currentColor\" />\n </svg>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;box-sizing:border-box;font-family:Inter,Inter,sans-serif}.cc-import-panel__info{display:inline-flex;align-items:center;color:#636363;cursor:help}.cc-import-panel__body{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;width:100%}.cc-import-panel__chart{position:relative;width:150px;height:150px;flex-shrink:0}.cc-import-panel__chart-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.cc-import-panel__chart-total{font-size:1.625rem;line-height:1.1;color:#252525}.cc-import-panel__chart-caption{font-size:.6875rem;color:#636363}.cc-import-panel__legend{display:flex;flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;min-width:17.5rem;flex:1}.cc-import-panel__legend-item{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#636363}.cc-import-panel__legend-marker{width:10px;height:10px;border-radius:2px;flex-shrink:0}.cc-import-panel__legend-label{color:#252525}.cc-import-panel__legend-value{margin-left:auto;white-space:nowrap}.cc-import-panel__state{font-size:.875rem;color:#636363}.cc-import-panel__state--error{color:#bc1e1b}.cc-import-panel__actions{display:flex;margin-top:auto}.cc-import-panel__button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;cursor:pointer;white-space:nowrap}.cc-import-panel__button:hover:not(:disabled){background:#ededed}.cc-import-panel__button:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}@media (max-width: 560px){.cc-import-panel__legend{min-width:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ChartComponent, selector: "apx-chart", inputs: ["chart", "annotations", "colors", "dataLabels", "series", "stroke", "labels", "legend", "markers", "noData", "fill", "tooltip", "plotOptions", "responsive", "xaxis", "yaxis", "forecastDataPoints", "grid", "states", "title", "subtitle", "theme", "autoUpdateSeries"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.CardComponent, selector: "tk-card", inputs: ["title", "dense"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] });
127
+ ImportContactCenterPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImportContactCenterPanelComponent, selector: "cc-import-contact-center-panel", inputs: { customerId: "customerId", host: "host", dcpHost: "dcpHost", token: "token", useMockData: "useMockData" }, outputs: { importRequested: "importRequested" }, usesOnChanges: true, ngImport: i0, template: "<tk-card [title]=\"title\" [dense]=\"true\">\r\n <ng-container ngProjectAs=\"card-title-adornment\">\r\n <span class=\"cc-import-panel__info\" [matTooltip]=\"tooltip\">\r\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"card-content\">\r\n <div class=\"cc-import-panel__body\" *ngIf=\"!loading && !error; else panelState\">\r\n <div class=\"cc-import-panel__chart\">\r\n <apx-chart\r\n [series]=\"chartOptions.series\"\r\n [chart]=\"chartOptions.chart\"\r\n [labels]=\"chartOptions.labels\"\r\n [colors]=\"chartOptions.colors\"\r\n [legend]=\"chartOptions.legend\"\r\n [plotOptions]=\"chartOptions.plotOptions\"\r\n [dataLabels]=\"chartOptions.dataLabels\"\r\n [tooltip]=\"chartOptions.tooltip\"\r\n [states]=\"chartOptions.states\"\r\n ></apx-chart>\r\n <div class=\"cc-import-panel__chart-center\">\r\n <span class=\"cc-import-panel__chart-total\">{{ total | number }}</span>\r\n <span class=\"cc-import-panel__chart-caption\">Contact Center</span>\r\n </div>\r\n </div>\r\n\r\n <ul class=\"cc-import-panel__legend\">\r\n <li class=\"cc-import-panel__legend-item\" *ngFor=\"let segment of segments\">\r\n <span class=\"cc-import-panel__legend-marker\" [style.backgroundColor]=\"segment.color\"></span>\r\n <span class=\"cc-import-panel__legend-label\">{{ segment.label }}</span>\r\n <span class=\"cc-import-panel__info\" [matTooltip]=\"segment.tooltip\">\r\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\r\n </span>\r\n <span class=\"cc-import-panel__legend-value\">{{ segment.count | number }} ({{ segment.percentage }}%)</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <ng-template #panelState>\r\n <div class=\"cc-import-panel__state\" *ngIf=\"loading\">Loading contact centers\u2026</div>\r\n <div class=\"cc-import-panel__state cc-import-panel__state--error\" *ngIf=\"!loading && error\">\r\n Unable to load contact centers.\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"cc-import-panel__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"cc-import-panel__button\"\r\n [disabled]=\"loading || error\"\r\n (click)=\"onImport()\"\r\n >\r\n Import\r\n </button>\r\n </div>\r\n </ng-container>\r\n</tk-card>\r\n\r\n<ng-template #infoIcon>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\r\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"1.2\" />\r\n <path d=\"M8 7.2v4\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"5\" r=\"0.85\" fill=\"currentColor\" />\r\n </svg>\r\n</ng-template>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;box-sizing:border-box;font-family:Inter,Inter,sans-serif}.cc-import-panel__info{display:inline-flex;align-items:center;color:#636363;cursor:help}.cc-import-panel__body{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;width:100%}.cc-import-panel__chart{position:relative;width:150px;height:150px;flex-shrink:0}.cc-import-panel__chart-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.cc-import-panel__chart-total{font-size:1.625rem;line-height:1.1;color:#252525}.cc-import-panel__chart-caption{font-size:.6875rem;color:#636363}.cc-import-panel__legend{display:flex;flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;min-width:17.5rem;flex:1}.cc-import-panel__legend-item{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#636363}.cc-import-panel__legend-marker{width:10px;height:10px;border-radius:2px;flex-shrink:0}.cc-import-panel__legend-label{color:#252525}.cc-import-panel__legend-value{margin-left:auto;white-space:nowrap}.cc-import-panel__state{font-size:.875rem;color:#636363}.cc-import-panel__state--error{color:#bc1e1b}.cc-import-panel__actions{display:flex;margin-top:auto}.cc-import-panel__button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;cursor:pointer;white-space:nowrap}.cc-import-panel__button:hover:not(:disabled){background:#ededed}.cc-import-panel__button:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}@media (max-width: 560px){.cc-import-panel__legend{min-width:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ChartComponent, selector: "apx-chart", inputs: ["chart", "annotations", "colors", "dataLabels", "series", "stroke", "labels", "legend", "markers", "noData", "fill", "tooltip", "plotOptions", "responsive", "xaxis", "yaxis", "forecastDataPoints", "grid", "states", "title", "subtitle", "theme", "autoUpdateSeries"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.CardComponent, selector: "tk-card", inputs: ["title", "dense"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] });
128
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImportContactCenterPanelComponent, decorators: [{
129
129
  type: Component,
130
- args: [{ selector: 'cc-import-contact-center-panel', template: "<tk-card [title]=\"title\" [dense]=\"true\">\n <ng-container ngProjectAs=\"card-title-adornment\">\n <span class=\"cc-import-panel__info\" [matTooltip]=\"tooltip\">\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\n </span>\n </ng-container>\n\n <ng-container ngProjectAs=\"card-content\">\n <div class=\"cc-import-panel__body\" *ngIf=\"!loading && !error; else panelState\">\n <div class=\"cc-import-panel__chart\">\n <apx-chart\n [series]=\"chartOptions.series\"\n [chart]=\"chartOptions.chart\"\n [labels]=\"chartOptions.labels\"\n [colors]=\"chartOptions.colors\"\n [legend]=\"chartOptions.legend\"\n [plotOptions]=\"chartOptions.plotOptions\"\n [dataLabels]=\"chartOptions.dataLabels\"\n [tooltip]=\"chartOptions.tooltip\"\n [states]=\"chartOptions.states\"\n ></apx-chart>\n <div class=\"cc-import-panel__chart-center\">\n <span class=\"cc-import-panel__chart-total\">{{ total | number }}</span>\n <span class=\"cc-import-panel__chart-caption\">Contact Center</span>\n </div>\n </div>\n\n <ul class=\"cc-import-panel__legend\">\n <li class=\"cc-import-panel__legend-item\" *ngFor=\"let segment of segments\">\n <span class=\"cc-import-panel__legend-marker\" [style.backgroundColor]=\"segment.color\"></span>\n <span class=\"cc-import-panel__legend-label\">{{ segment.label }}</span>\n <span class=\"cc-import-panel__info\" [matTooltip]=\"segment.tooltip\">\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\n </span>\n <span class=\"cc-import-panel__legend-value\">{{ segment.count | number }} ({{ segment.percentage }}%)</span>\n </li>\n </ul>\n </div>\n\n <ng-template #panelState>\n <div class=\"cc-import-panel__state\" *ngIf=\"loading\">Loading contact centers\u2026</div>\n <div class=\"cc-import-panel__state cc-import-panel__state--error\" *ngIf=\"!loading && error\">\n Unable to load contact centers.\n </div>\n </ng-template>\n\n <div class=\"cc-import-panel__actions\">\n <button\n type=\"button\"\n class=\"cc-import-panel__button\"\n [disabled]=\"loading || error\"\n (click)=\"onImport()\"\n >\n Import\n </button>\n </div>\n </ng-container>\n</tk-card>\n\n<ng-template #infoIcon>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"1.2\" />\n <path d=\"M8 7.2v4\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.85\" fill=\"currentColor\" />\n </svg>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;box-sizing:border-box;font-family:Inter,Inter,sans-serif}.cc-import-panel__info{display:inline-flex;align-items:center;color:#636363;cursor:help}.cc-import-panel__body{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;width:100%}.cc-import-panel__chart{position:relative;width:150px;height:150px;flex-shrink:0}.cc-import-panel__chart-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.cc-import-panel__chart-total{font-size:1.625rem;line-height:1.1;color:#252525}.cc-import-panel__chart-caption{font-size:.6875rem;color:#636363}.cc-import-panel__legend{display:flex;flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;min-width:17.5rem;flex:1}.cc-import-panel__legend-item{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#636363}.cc-import-panel__legend-marker{width:10px;height:10px;border-radius:2px;flex-shrink:0}.cc-import-panel__legend-label{color:#252525}.cc-import-panel__legend-value{margin-left:auto;white-space:nowrap}.cc-import-panel__state{font-size:.875rem;color:#636363}.cc-import-panel__state--error{color:#bc1e1b}.cc-import-panel__actions{display:flex;margin-top:auto}.cc-import-panel__button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;cursor:pointer;white-space:nowrap}.cc-import-panel__button:hover:not(:disabled){background:#ededed}.cc-import-panel__button:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}@media (max-width: 560px){.cc-import-panel__legend{min-width:0}}\n"] }]
130
+ args: [{ selector: 'cc-import-contact-center-panel', template: "<tk-card [title]=\"title\" [dense]=\"true\">\r\n <ng-container ngProjectAs=\"card-title-adornment\">\r\n <span class=\"cc-import-panel__info\" [matTooltip]=\"tooltip\">\r\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"card-content\">\r\n <div class=\"cc-import-panel__body\" *ngIf=\"!loading && !error; else panelState\">\r\n <div class=\"cc-import-panel__chart\">\r\n <apx-chart\r\n [series]=\"chartOptions.series\"\r\n [chart]=\"chartOptions.chart\"\r\n [labels]=\"chartOptions.labels\"\r\n [colors]=\"chartOptions.colors\"\r\n [legend]=\"chartOptions.legend\"\r\n [plotOptions]=\"chartOptions.plotOptions\"\r\n [dataLabels]=\"chartOptions.dataLabels\"\r\n [tooltip]=\"chartOptions.tooltip\"\r\n [states]=\"chartOptions.states\"\r\n ></apx-chart>\r\n <div class=\"cc-import-panel__chart-center\">\r\n <span class=\"cc-import-panel__chart-total\">{{ total | number }}</span>\r\n <span class=\"cc-import-panel__chart-caption\">Contact Center</span>\r\n </div>\r\n </div>\r\n\r\n <ul class=\"cc-import-panel__legend\">\r\n <li class=\"cc-import-panel__legend-item\" *ngFor=\"let segment of segments\">\r\n <span class=\"cc-import-panel__legend-marker\" [style.backgroundColor]=\"segment.color\"></span>\r\n <span class=\"cc-import-panel__legend-label\">{{ segment.label }}</span>\r\n <span class=\"cc-import-panel__info\" [matTooltip]=\"segment.tooltip\">\r\n <ng-container *ngTemplateOutlet=\"infoIcon\"></ng-container>\r\n </span>\r\n <span class=\"cc-import-panel__legend-value\">{{ segment.count | number }} ({{ segment.percentage }}%)</span>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <ng-template #panelState>\r\n <div class=\"cc-import-panel__state\" *ngIf=\"loading\">Loading contact centers\u2026</div>\r\n <div class=\"cc-import-panel__state cc-import-panel__state--error\" *ngIf=\"!loading && error\">\r\n Unable to load contact centers.\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"cc-import-panel__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"cc-import-panel__button\"\r\n [disabled]=\"loading || error\"\r\n (click)=\"onImport()\"\r\n >\r\n Import\r\n </button>\r\n </div>\r\n </ng-container>\r\n</tk-card>\r\n\r\n<ng-template #infoIcon>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\r\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke=\"currentColor\" stroke-width=\"1.2\" />\r\n <path d=\"M8 7.2v4\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\r\n <circle cx=\"8\" cy=\"5\" r=\"0.85\" fill=\"currentColor\" />\r\n </svg>\r\n</ng-template>\r\n", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;box-sizing:border-box;font-family:Inter,Inter,sans-serif}.cc-import-panel__info{display:inline-flex;align-items:center;color:#636363;cursor:help}.cc-import-panel__body{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;width:100%}.cc-import-panel__chart{position:relative;width:150px;height:150px;flex-shrink:0}.cc-import-panel__chart-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.cc-import-panel__chart-total{font-size:1.625rem;line-height:1.1;color:#252525}.cc-import-panel__chart-caption{font-size:.6875rem;color:#636363}.cc-import-panel__legend{display:flex;flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;min-width:17.5rem;flex:1}.cc-import-panel__legend-item{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#636363}.cc-import-panel__legend-marker{width:10px;height:10px;border-radius:2px;flex-shrink:0}.cc-import-panel__legend-label{color:#252525}.cc-import-panel__legend-value{margin-left:auto;white-space:nowrap}.cc-import-panel__state{font-size:.875rem;color:#636363}.cc-import-panel__state--error{color:#bc1e1b}.cc-import-panel__actions{display:flex;margin-top:auto}.cc-import-panel__button{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;background:#fff;border:1px solid rgba(0,0,0,.5019607843);border-radius:6.25rem;font-family:inherit;font-size:.875rem;font-weight:500;color:#000000f2;cursor:pointer;white-space:nowrap}.cc-import-panel__button:hover:not(:disabled){background:#ededed}.cc-import-panel__button:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}@media (max-width: 560px){.cc-import-panel__legend{min-width:0}}\n"] }]
131
131
  }], propDecorators: { customerId: [{
132
132
  type: Input
133
133
  }], host: [{
@@ -141,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
141
141
  }], importRequested: [{
142
142
  type: Output
143
143
  }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItcGFuZWwvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItcGFuZWwvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUgsT0FBTyxFQUFnQixVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7QUFlbEk7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlDQUFpQztJQUw5QztRQVdJLGlFQUFpRTtRQUN4RCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUU1Qjs7OztXQUlHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUUvQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUdsRCxVQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFDM0Is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c0JBQWIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9JLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGV4Q2hhcnQsIEFwZXhEYXRhTGFiZWxzLCBBcGV4TGVnZW5kLCBBcGV4Tm9uQXhpc0NoYXJ0U2VyaWVzLCBBcGV4UGxvdE9wdGlvbnMsIEFwZXhTdGF0ZXMsIEFwZXhUb29sdGlwIH0gZnJvbSAnbmctYXBleGNoYXJ0cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGNhdGNoRXJyb3IsIGZpbmFsaXplLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2NJbXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2MtaW1wb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ0hBUlRfQ09MT1JTLCBJTVBPUlRfUEFORUxfU0xJQ0VTLCBJTVBPUlRfUEFORUxfVElUTEUsIElNUE9SVF9QQU5FTF9UT09MVElQIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NjLWltcG9ydC5jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29udGFjdENlbnRlciwgSW1wb3J0UGFuZWxTZWdtZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvY2MtaW1wb3J0JztcblxuaW50ZXJmYWNlIFBhbmVsQ2hhcnRPcHRpb25zIHtcbiAgICBzZXJpZXM6IEFwZXhOb25BeGlzQ2hhcnRTZXJpZXM7XG4gICAgY2hhcnQ6IEFwZXhDaGFydDtcbiAgICBsYWJlbHM6IHN0cmluZ1tdO1xuICAgIGNvbG9yczogc3RyaW5nW107XG4gICAgbGVnZW5kOiBBcGV4TGVnZW5kO1xuICAgIHBsb3RPcHRpb25zOiBBcGV4UGxvdE9wdGlvbnM7XG4gICAgZGF0YUxhYmVsczogQXBleERhdGFMYWJlbHM7XG4gICAgdG9vbHRpcDogQXBleFRvb2x0aXA7XG4gICAgc3RhdGVzOiBBcGV4U3RhdGVzO1xufVxuXG4vKipcbiAqIFwiSW1wb3J0IENvbnRhY3QgY2VudGVyXCIgcGFuZWw6IGhvdyBtYW55IFVDQ1ggY29udGFjdCBjZW50ZXJzIHdlcmUgZGV0ZWN0ZWQsIGhvdyBtYW55XG4gKiBoYXZlIGJlZW4gaW1wb3J0ZWQsIGFuZCBhbiBJbXBvcnQgYnV0dG9uIHRoYXQgYXNrcyB0aGUgaG9zdCB0byBvcGVuIHRoZSBpbXBvcnQgd2l6YXJkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NjLWltcG9ydC1jb250YWN0LWNlbnRlci1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltcG9ydC1jb250YWN0LWNlbnRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wb3J0Q29udGFjdENlbnRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgY3VzdG9tZXJJZCE6IG51bWJlcjtcbiAgICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xuICAgIC8qKiBCYXNlIFVSTCBvZiB0aGUgZGNwIGhvc3QsIHdoaWNoIHNlcnZlcyB0aGUgVUNDWCBhcHBsaWNhdGlvbiBsaXN0LiAqL1xuICAgIEBJbnB1dCgpIGRjcEhvc3QhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XG4gICAgLyoqIFNlcnZlIG1vY2sgZGF0YSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIFVDQ1ggbWlncmF0aW9uIEFQSS4gKi9cbiAgICBASW5wdXQoKSB1c2VNb2NrRGF0YSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBBc2tlZCBmb3IgdGhlIGltcG9ydCB3aXphcmQsIGNhcnJ5aW5nIHRoZSBjb250YWN0IGNlbnRlcnMgYWxyZWFkeSBsb2FkZWQgaGVyZSBzb1xuICAgICAqIHRoZSB3aXphcmQgb3BlbnMgd2l0aG91dCByZWZldGNoaW5nIHRoZW0uIFRoZSBob3N0IHJlbmRlcnNcbiAgICAgKiBgY2MtaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZGAgYXMgYSBwYWdlIGluIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBpbXBvcnRSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRhY3RDZW50ZXJbXT4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2NJbXBvcnRTZXJ2aWNlID0gaW5qZWN0KENjSW1wb3J0U2VydmljZSk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICByZWFkb25seSB0aXRsZSA9IElNUE9SVF9QQU5FTF9USVRMRTtcbiAgICByZWFkb25seSB0b29sdGlwID0gSU1QT1JUX1BBTkVMX1RPT0xUSVA7XG5cbiAgICBzZWdtZW50czogSW1wb3J0UGFuZWxTZWdtZW50W10gPSBbXTtcbiAgICBjaGFydE9wdGlvbnMhOiBQYW5lbENoYXJ0T3B0aW9ucztcbiAgICB0b3RhbCA9IDA7XG4gICAgbG9hZGluZyA9IGZhbHNlO1xuICAgIGVycm9yID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGNvbnRhY3RDZW50ZXJzOiBDb250YWN0Q2VudGVyW10gPSBbXTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBSZW5kZXIgYW4gZW1wdHkgZG9udXQgdXAgZnJvbnQgc28gdGhlIHRlbXBsYXRlIG5ldmVyIHJlYWRzIHVuc2V0IGNoYXJ0IG9wdGlvbnMsXG4gICAgICAgIC8vIGluY2x1ZGluZyB3aGVuIGxvYWQoKSBiYWlscyBvdXQgYmVjYXVzZSB0aGUgd2lkZ2V0IGhhcyBubyBjcmVkZW50aWFscyB5ZXQuXG4gICAgICAgIHRoaXMuYnVpbGRWaWV3TW9kZWwoKTtcbiAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWxvYWRUcmlnZ2VycyA9IFsnY3VzdG9tZXJJZCcsICdob3N0JywgJ2RjcEhvc3QnLCAndG9rZW4nLCAndXNlTW9ja0RhdGEnXTtcbiAgICAgICAgaWYgKHJlbG9hZFRyaWdnZXJzLnNvbWUoaW5wdXQgPT4gY2hhbmdlc1tpbnB1dF0gJiYgIWNoYW5nZXNbaW5wdXRdLmZpcnN0Q2hhbmdlKSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgb25JbXBvcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW1wb3J0UmVxdWVzdGVkLmVtaXQodGhpcy5jb250YWN0Q2VudGVycyk7XG4gICAgfVxuXG4gICAgLyoqIENhbGwgYWZ0ZXIgYW4gaW1wb3J0IGhhcyBydW4gc28gdGhlIGRvbnV0IHBpY2tzIHVwIHRoZSBuZXcgY291bnRzLiAqL1xuICAgIHJlZnJlc2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VzdG9tZXJJZCA9IE51bWJlcih0aGlzLmN1c3RvbWVySWQpO1xuICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS51c2VNb2NrRGF0YSA9IHRoaXMudXNlTW9ja0RhdGE7XG5cbiAgICAgICAgaWYgKCF0aGlzLnVzZU1vY2tEYXRhICYmICghY3VzdG9tZXJJZCB8fCAhdGhpcy50b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhvc3QpIHtcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLnNldEhvc3QodGhpcy5ob3N0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kY3BIb3N0KSB7XG4gICAgICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS5zZXREY3BIb3N0KHRoaXMuZGNwSG9zdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLnNldFRva2VuKHRoaXMudG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY2NJbXBvcnRTZXJ2aWNlLmZldGNoQ29udGFjdENlbnRlcnMoY3VzdG9tZXJJZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gbG9hZCB0aGUgY29udGFjdCBjZW50ZXJzJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mPENvbnRhY3RDZW50ZXJbXT4oW10pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShjb250YWN0Q2VudGVycyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q2VudGVycyA9IGNvbnRhY3RDZW50ZXJzO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRWaWV3TW9kZWwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRWaWV3TW9kZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudG90YWwgPSB0aGlzLmNvbnRhY3RDZW50ZXJzLmxlbmd0aDtcblxuICAgICAgICB0aGlzLnNlZ21lbnRzID0gSU1QT1JUX1BBTkVMX1NMSUNFUy5tYXAoc2xpY2UgPT4ge1xuICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLmNvbnRhY3RDZW50ZXJzLmZpbHRlcihzbGljZS5tYXRjaCkubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogc2xpY2UubGFiZWwsXG4gICAgICAgICAgICAgICAgY29sb3I6IHNsaWNlLmNvbG9yLFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHNsaWNlLnRvb2x0aXAsXG4gICAgICAgICAgICAgICAgY291bnQsXG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy50b3RhbCA+IDAgPyBNYXRoLnJvdW5kKChjb3VudCAvIHRoaXMudG90YWwpICogMTAwKSA6IDBcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2hhcnRPcHRpb25zID0gdGhpcy5idWlsZENoYXJ0T3B0aW9ucygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRDaGFydE9wdGlvbnMoKTogUGFuZWxDaGFydE9wdGlvbnMge1xuICAgICAgICBjb25zdCBjaGFydGVkID0gdGhpcy5zZWdtZW50cy5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50LmNvdW50ID4gMCk7XG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSBjaGFydGVkLmxlbmd0aCA9PT0gMDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2VyaWVzOiBpc0VtcHR5ID8gWzFdIDogY2hhcnRlZC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LmNvdW50KSxcbiAgICAgICAgICAgIGxhYmVsczogaXNFbXB0eSA/IFsnTm8gY29udGFjdCBjZW50ZXJzJ10gOiBjaGFydGVkLm1hcChzZWdtZW50ID0+IHNlZ21lbnQubGFiZWwpLFxuICAgICAgICAgICAgY29sb3JzOiBpc0VtcHR5ID8gW0NIQVJUX0NPTE9SUy53ZWJleENvbnRhY3RDZW50ZXJdIDogY2hhcnRlZC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LmNvbG9yKSxcbiAgICAgICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2RvbnV0JyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1MCxcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUwLFxuICAgICAgICAgICAgICAgIHNwYXJrbGluZTogeyBlbmFibGVkOiB0cnVlIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZWdlbmQ6IHsgc2hvdzogZmFsc2UgfSxcbiAgICAgICAgICAgIHBsb3RPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcGllOiB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZE9uQ2xpY2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBkb251dDogeyBzaXplOiAnNzIlJyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGFMYWJlbHM6IHsgZW5hYmxlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHsgZW5hYmxlZDogIWlzRW1wdHkgfSxcbiAgICAgICAgICAgIHN0YXRlczoge1xuICAgICAgICAgICAgICAgIGFjdGl2ZTogeyBmaWx0ZXI6IHsgdHlwZTogJ25vbmUnLCB2YWx1ZTogMCB9IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGstY2FyZCBbdGl0bGVdPVwidGl0bGVcIiBbZGVuc2VdPVwidHJ1ZVwiPlxuICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiY2FyZC10aXRsZS1hZG9ybm1lbnRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9faW5mb1wiIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmZvSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cImNhcmQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2JvZHlcIiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvcjsgZWxzZSBwYW5lbFN0YXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19jaGFydFwiPlxuICAgICAgICA8YXB4LWNoYXJ0XG4gICAgICAgICAgW3Nlcmllc109XCJjaGFydE9wdGlvbnMuc2VyaWVzXCJcbiAgICAgICAgICBbY2hhcnRdPVwiY2hhcnRPcHRpb25zLmNoYXJ0XCJcbiAgICAgICAgICBbbGFiZWxzXT1cImNoYXJ0T3B0aW9ucy5sYWJlbHNcIlxuICAgICAgICAgIFtjb2xvcnNdPVwiY2hhcnRPcHRpb25zLmNvbG9yc1wiXG4gICAgICAgICAgW2xlZ2VuZF09XCJjaGFydE9wdGlvbnMubGVnZW5kXCJcbiAgICAgICAgICBbcGxvdE9wdGlvbnNdPVwiY2hhcnRPcHRpb25zLnBsb3RPcHRpb25zXCJcbiAgICAgICAgICBbZGF0YUxhYmVsc109XCJjaGFydE9wdGlvbnMuZGF0YUxhYmVsc1wiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiY2hhcnRPcHRpb25zLnRvb2x0aXBcIlxuICAgICAgICAgIFtzdGF0ZXNdPVwiY2hhcnRPcHRpb25zLnN0YXRlc1wiXG4gICAgICAgID48L2FweC1jaGFydD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fY2hhcnQtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2NoYXJ0LXRvdGFsXCI+e3sgdG90YWwgfCBudW1iZXIgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2NoYXJ0LWNhcHRpb25cIj5Db250YWN0IENlbnRlcjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHVsIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19sZWdlbmRcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19sZWdlbmQtaXRlbVwiICpuZ0Zvcj1cImxldCBzZWdtZW50IG9mIHNlZ21lbnRzXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2xlZ2VuZC1tYXJrZXJcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInNlZ21lbnQuY29sb3JcIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2xlZ2VuZC1sYWJlbFwiPnt7IHNlZ21lbnQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2luZm9cIiBbbWF0VG9vbHRpcF09XCJzZWdtZW50LnRvb2x0aXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmZvSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fbGVnZW5kLXZhbHVlXCI+e3sgc2VnbWVudC5jb3VudCB8IG51bWJlciB9fSAoe3sgc2VnbWVudC5wZXJjZW50YWdlIH19JSk8L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNwYW5lbFN0YXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fc3RhdGVcIiAqbmdJZj1cImxvYWRpbmdcIj5Mb2FkaW5nIGNvbnRhY3QgY2VudGVyc+KApjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fc3RhdGUgY2MtaW1wb3J0LXBhbmVsX19zdGF0ZS0tZXJyb3JcIiAqbmdJZj1cIiFsb2FkaW5nICYmIGVycm9yXCI+XG4gICAgICAgIFVuYWJsZSB0byBsb2FkIGNvbnRhY3QgY2VudGVycy5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcgfHwgZXJyb3JcIlxuICAgICAgICAoY2xpY2spPVwib25JbXBvcnQoKVwiXG4gICAgICA+XG4gICAgICAgIEltcG9ydFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC90ay1jYXJkPlxuXG48bmctdGVtcGxhdGUgI2luZm9JY29uPlxuICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjYuNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIC8+XG4gICAgPHBhdGggZD1cIk04IDcuMnY0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjVcIiByPVwiMC44NVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItcGFuZWwvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItcGFuZWwvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUgsT0FBTyxFQUFnQixVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7QUFlbEk7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlDQUFpQztJQUw5QztRQVdJLGlFQUFpRTtRQUN4RCxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUU1Qjs7OztXQUlHO1FBQ08sb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUUvQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUdsRCxVQUFLLEdBQUcsa0JBQWtCLENBQUM7UUFDM0Is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c0JBQWIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9JLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwZXhDaGFydCwgQXBleERhdGFMYWJlbHMsIEFwZXhMZWdlbmQsIEFwZXhOb25BeGlzQ2hhcnRTZXJpZXMsIEFwZXhQbG90T3B0aW9ucywgQXBleFN0YXRlcywgQXBleFRvb2x0aXAgfSBmcm9tICduZy1hcGV4Y2hhcnRzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2NJbXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2MtaW1wb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDSEFSVF9DT0xPUlMsIElNUE9SVF9QQU5FTF9TTElDRVMsIElNUE9SVF9QQU5FTF9USVRMRSwgSU1QT1JUX1BBTkVMX1RPT0xUSVAgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY2MtaW1wb3J0LmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbnRhY3RDZW50ZXIsIEltcG9ydFBhbmVsU2VnbWVudCB9IGZyb20gJy4uLy4uL3R5cGVzL2NjLWltcG9ydCc7XHJcblxyXG5pbnRlcmZhY2UgUGFuZWxDaGFydE9wdGlvbnMge1xyXG4gICAgc2VyaWVzOiBBcGV4Tm9uQXhpc0NoYXJ0U2VyaWVzO1xyXG4gICAgY2hhcnQ6IEFwZXhDaGFydDtcclxuICAgIGxhYmVsczogc3RyaW5nW107XHJcbiAgICBjb2xvcnM6IHN0cmluZ1tdO1xyXG4gICAgbGVnZW5kOiBBcGV4TGVnZW5kO1xyXG4gICAgcGxvdE9wdGlvbnM6IEFwZXhQbG90T3B0aW9ucztcclxuICAgIGRhdGFMYWJlbHM6IEFwZXhEYXRhTGFiZWxzO1xyXG4gICAgdG9vbHRpcDogQXBleFRvb2x0aXA7XHJcbiAgICBzdGF0ZXM6IEFwZXhTdGF0ZXM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBcIkltcG9ydCBDb250YWN0IGNlbnRlclwiIHBhbmVsOiBob3cgbWFueSBVQ0NYIGNvbnRhY3QgY2VudGVycyB3ZXJlIGRldGVjdGVkLCBob3cgbWFueVxyXG4gKiBoYXZlIGJlZW4gaW1wb3J0ZWQsIGFuZCBhbiBJbXBvcnQgYnV0dG9uIHRoYXQgYXNrcyB0aGUgaG9zdCB0byBvcGVuIHRoZSBpbXBvcnQgd2l6YXJkLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NjLWltcG9ydC1jb250YWN0LWNlbnRlci1wYW5lbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LWNvbnRhY3QtY2VudGVyLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2ltcG9ydC1jb250YWN0LWNlbnRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXBvcnRDb250YWN0Q2VudGVyUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG4gICAgLyoqIEJhc2UgVVJMIG9mIHRoZSBkY3AgaG9zdCwgd2hpY2ggc2VydmVzIHRoZSBVQ0NYIGFwcGxpY2F0aW9uIGxpc3QuICovXHJcbiAgICBASW5wdXQoKSBkY3BIb3N0ITogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XHJcbiAgICAvKiogU2VydmUgbW9jayBkYXRhIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgVUNDWCBtaWdyYXRpb24gQVBJLiAqL1xyXG4gICAgQElucHV0KCkgdXNlTW9ja0RhdGEgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXNrZWQgZm9yIHRoZSBpbXBvcnQgd2l6YXJkLCBjYXJyeWluZyB0aGUgY29udGFjdCBjZW50ZXJzIGFscmVhZHkgbG9hZGVkIGhlcmUgc29cclxuICAgICAqIHRoZSB3aXphcmQgb3BlbnMgd2l0aG91dCByZWZldGNoaW5nIHRoZW0uIFRoZSBob3N0IHJlbmRlcnNcclxuICAgICAqIGBjYy1pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkYCBhcyBhIHBhZ2UgaW4gcmVzcG9uc2UuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBpbXBvcnRSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRhY3RDZW50ZXJbXT4oKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNjSW1wb3J0U2VydmljZSA9IGluamVjdChDY0ltcG9ydFNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgcmVhZG9ubHkgdGl0bGUgPSBJTVBPUlRfUEFORUxfVElUTEU7XHJcbiAgICByZWFkb25seSB0b29sdGlwID0gSU1QT1JUX1BBTkVMX1RPT0xUSVA7XHJcblxyXG4gICAgc2VnbWVudHM6IEltcG9ydFBhbmVsU2VnbWVudFtdID0gW107XHJcbiAgICBjaGFydE9wdGlvbnMhOiBQYW5lbENoYXJ0T3B0aW9ucztcclxuICAgIHRvdGFsID0gMDtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIGVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSBjb250YWN0Q2VudGVyczogQ29udGFjdENlbnRlcltdID0gW107XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmVuZGVyIGFuIGVtcHR5IGRvbnV0IHVwIGZyb250IHNvIHRoZSB0ZW1wbGF0ZSBuZXZlciByZWFkcyB1bnNldCBjaGFydCBvcHRpb25zLFxyXG4gICAgICAgIC8vIGluY2x1ZGluZyB3aGVuIGxvYWQoKSBiYWlscyBvdXQgYmVjYXVzZSB0aGUgd2lkZ2V0IGhhcyBubyBjcmVkZW50aWFscyB5ZXQuXHJcbiAgICAgICAgdGhpcy5idWlsZFZpZXdNb2RlbCgpO1xyXG4gICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCByZWxvYWRUcmlnZ2VycyA9IFsnY3VzdG9tZXJJZCcsICdob3N0JywgJ2RjcEhvc3QnLCAndG9rZW4nLCAndXNlTW9ja0RhdGEnXTtcclxuICAgICAgICBpZiAocmVsb2FkVHJpZ2dlcnMuc29tZShpbnB1dCA9PiBjaGFuZ2VzW2lucHV0XSAmJiAhY2hhbmdlc1tpbnB1dF0uZmlyc3RDaGFuZ2UpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkltcG9ydCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmltcG9ydFJlcXVlc3RlZC5lbWl0KHRoaXMuY29udGFjdENlbnRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBDYWxsIGFmdGVyIGFuIGltcG9ydCBoYXMgcnVuIHNvIHRoZSBkb251dCBwaWNrcyB1cCB0aGUgbmV3IGNvdW50cy4gKi9cclxuICAgIHJlZnJlc2goKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsb2FkKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVySWQgPSBOdW1iZXIodGhpcy5jdXN0b21lcklkKTtcclxuICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS51c2VNb2NrRGF0YSA9IHRoaXMudXNlTW9ja0RhdGE7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy51c2VNb2NrRGF0YSAmJiAoIWN1c3RvbWVySWQgfHwgIXRoaXMudG9rZW4pKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhvc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2Uuc2V0SG9zdCh0aGlzLmhvc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kY3BIb3N0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLnNldERjcEhvc3QodGhpcy5kY3BIb3N0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2Uuc2V0VG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNjSW1wb3J0U2VydmljZS5mZXRjaENvbnRhY3RDZW50ZXJzKGN1c3RvbWVySWQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGxvYWQgdGhlIGNvbnRhY3QgY2VudGVycycsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Y8Q29udGFjdENlbnRlcltdPihbXSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoY29udGFjdENlbnRlcnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWN0Q2VudGVycyA9IGNvbnRhY3RDZW50ZXJzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZFZpZXdNb2RlbCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkVmlld01vZGVsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudG90YWwgPSB0aGlzLmNvbnRhY3RDZW50ZXJzLmxlbmd0aDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWdtZW50cyA9IElNUE9SVF9QQU5FTF9TTElDRVMubWFwKHNsaWNlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLmNvbnRhY3RDZW50ZXJzLmZpbHRlcihzbGljZS5tYXRjaCkubGVuZ3RoO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHNsaWNlLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6IHNsaWNlLmNvbG9yLFxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogc2xpY2UudG9vbHRpcCxcclxuICAgICAgICAgICAgICAgIGNvdW50LFxyXG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy50b3RhbCA+IDAgPyBNYXRoLnJvdW5kKChjb3VudCAvIHRoaXMudG90YWwpICogMTAwKSA6IDBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5jaGFydE9wdGlvbnMgPSB0aGlzLmJ1aWxkQ2hhcnRPcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZENoYXJ0T3B0aW9ucygpOiBQYW5lbENoYXJ0T3B0aW9ucyB7XHJcbiAgICAgICAgY29uc3QgY2hhcnRlZCA9IHRoaXMuc2VnbWVudHMuZmlsdGVyKHNlZ21lbnQgPT4gc2VnbWVudC5jb3VudCA+IDApO1xyXG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSBjaGFydGVkLmxlbmd0aCA9PT0gMDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2VyaWVzOiBpc0VtcHR5ID8gWzFdIDogY2hhcnRlZC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LmNvdW50KSxcclxuICAgICAgICAgICAgbGFiZWxzOiBpc0VtcHR5ID8gWydObyBjb250YWN0IGNlbnRlcnMnXSA6IGNoYXJ0ZWQubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5sYWJlbCksXHJcbiAgICAgICAgICAgIGNvbG9yczogaXNFbXB0eSA/IFtDSEFSVF9DT0xPUlMud2ViZXhDb250YWN0Q2VudGVyXSA6IGNoYXJ0ZWQubWFwKHNlZ21lbnQgPT4gc2VnbWVudC5jb2xvciksXHJcbiAgICAgICAgICAgIGNoYXJ0OiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnZG9udXQnLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxNTAsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMTUwLFxyXG4gICAgICAgICAgICAgICAgc3BhcmtsaW5lOiB7IGVuYWJsZWQ6IHRydWUgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBsZWdlbmQ6IHsgc2hvdzogZmFsc2UgfSxcclxuICAgICAgICAgICAgcGxvdE9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIHBpZToge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZE9uQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRvbnV0OiB7IHNpemU6ICc3MiUnIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGF0YUxhYmVsczogeyBlbmFibGVkOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICB0b29sdGlwOiB7IGVuYWJsZWQ6ICFpc0VtcHR5IH0sXHJcbiAgICAgICAgICAgIHN0YXRlczoge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZlOiB7IGZpbHRlcjogeyB0eXBlOiAnbm9uZScsIHZhbHVlOiAwIH0gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8dGstY2FyZCBbdGl0bGVdPVwidGl0bGVcIiBbZGVuc2VdPVwidHJ1ZVwiPlxyXG4gIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJjYXJkLXRpdGxlLWFkb3JubWVudFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2luZm9cIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmZvSWNvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiY2FyZC1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19ib2R5XCIgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3I7IGVsc2UgcGFuZWxTdGF0ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19jaGFydFwiPlxyXG4gICAgICAgIDxhcHgtY2hhcnRcclxuICAgICAgICAgIFtzZXJpZXNdPVwiY2hhcnRPcHRpb25zLnNlcmllc1wiXHJcbiAgICAgICAgICBbY2hhcnRdPVwiY2hhcnRPcHRpb25zLmNoYXJ0XCJcclxuICAgICAgICAgIFtsYWJlbHNdPVwiY2hhcnRPcHRpb25zLmxhYmVsc1wiXHJcbiAgICAgICAgICBbY29sb3JzXT1cImNoYXJ0T3B0aW9ucy5jb2xvcnNcIlxyXG4gICAgICAgICAgW2xlZ2VuZF09XCJjaGFydE9wdGlvbnMubGVnZW5kXCJcclxuICAgICAgICAgIFtwbG90T3B0aW9uc109XCJjaGFydE9wdGlvbnMucGxvdE9wdGlvbnNcIlxyXG4gICAgICAgICAgW2RhdGFMYWJlbHNdPVwiY2hhcnRPcHRpb25zLmRhdGFMYWJlbHNcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiY2hhcnRPcHRpb25zLnRvb2x0aXBcIlxyXG4gICAgICAgICAgW3N0YXRlc109XCJjaGFydE9wdGlvbnMuc3RhdGVzXCJcclxuICAgICAgICA+PC9hcHgtY2hhcnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fY2hhcnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9fY2hhcnQtdG90YWxcIj57eyB0b3RhbCB8IG51bWJlciB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19jaGFydC1jYXB0aW9uXCI+Q29udGFjdCBDZW50ZXI8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHVsIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19sZWdlbmRcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2xlZ2VuZC1pdGVtXCIgKm5nRm9yPVwibGV0IHNlZ21lbnQgb2Ygc2VnbWVudHNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19sZWdlbmQtbWFya2VyXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzZWdtZW50LmNvbG9yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2xlZ2VuZC1sYWJlbFwiPnt7IHNlZ21lbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNjLWltcG9ydC1wYW5lbF9faW5mb1wiIFttYXRUb29sdGlwXT1cInNlZ21lbnQudG9vbHRpcFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5mb0ljb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19sZWdlbmQtdmFsdWVcIj57eyBzZWdtZW50LmNvdW50IHwgbnVtYmVyIH19ICh7eyBzZWdtZW50LnBlcmNlbnRhZ2UgfX0lKTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNwYW5lbFN0YXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19zdGF0ZVwiICpuZ0lmPVwibG9hZGluZ1wiPkxvYWRpbmcgY29udGFjdCBjZW50ZXJz4oCmPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX3N0YXRlIGNjLWltcG9ydC1wYW5lbF9fc3RhdGUtLWVycm9yXCIgKm5nSWY9XCIhbG9hZGluZyAmJiBlcnJvclwiPlxyXG4gICAgICAgIFVuYWJsZSB0byBsb2FkIGNvbnRhY3QgY2VudGVycy5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtcGFuZWxfX2FjdGlvbnNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwiY2MtaW1wb3J0LXBhbmVsX19idXR0b25cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8IGVycm9yXCJcclxuICAgICAgICAoY2xpY2spPVwib25JbXBvcnQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICBJbXBvcnRcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC90ay1jYXJkPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbmZvSWNvbj5cclxuICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjhcIiByPVwiNi41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgLz5cclxuICAgIDxwYXRoIGQ9XCJNOCA3LjJ2NFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxyXG4gICAgPGNpcmNsZSBjeD1cIjhcIiBjeT1cIjVcIiByPVwiMC44NVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxyXG4gIDwvc3ZnPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=