@hmcts/rpx-xui-common-lib 2.1.7-angular-upgrade-11 → 2.1.7-javascript-void

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 (361) hide show
  1. package/README.md +1 -1
  2. package/esm2022/hmcts-rpx-xui-common-lib.mjs +5 -0
  3. package/esm2022/lib/components/accessibility/accessibility.component.mjs +833 -0
  4. package/esm2022/lib/components/checkbox-list/checkbox-list.component.mjs +232 -0
  5. package/esm2022/lib/components/contact-details/contact-details.component.mjs +123 -0
  6. package/esm2022/lib/components/cookie-banner/cookie-banner.component.mjs +151 -0
  7. package/esm2022/lib/components/due-date/due-date.component.mjs +141 -0
  8. package/esm2022/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +80 -0
  9. package/esm2022/lib/components/find-location/find-location.component.mjs +220 -0
  10. package/esm2022/lib/components/find-person/find-person.component.mjs +234 -0
  11. package/esm2022/lib/components/find-service/find-service.component.mjs +193 -0
  12. package/esm2022/lib/components/find-task-name/find-task-name.component.mjs +200 -0
  13. package/esm2022/lib/components/generic-filter/generic-filter-utils.mjs +21 -0
  14. package/esm2022/lib/components/generic-filter/generic-filter.component.mjs +1224 -0
  15. package/esm2022/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +56 -0
  16. package/esm2022/lib/components/invite-user-form/invite-user-form.component.mjs +51 -0
  17. package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
  18. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
  19. package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
  20. package/esm2022/lib/components/public_api.mjs +39 -0
  21. package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
  22. package/esm2022/lib/components/search-location/search-location.component.mjs +240 -0
  23. package/esm2022/lib/components/search-service/search-service.component.mjs +94 -0
  24. package/esm2022/lib/components/search-venue/search-venue.component.mjs +188 -0
  25. package/esm2022/lib/components/selected-case/selected-case.component.mjs +381 -0
  26. package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
  27. package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
  28. package/esm2022/lib/components/service-message/service-message.component.mjs +62 -0
  29. package/esm2022/lib/components/service-messages/service-messages.component.mjs +167 -0
  30. package/esm2022/lib/components/share-case/share-case.component.mjs +427 -0
  31. package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
  32. package/esm2022/lib/components/tab/tab.component.mjs +40 -0
  33. package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
  34. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
  35. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
  36. package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
  37. package/esm2022/lib/components/user-details/user-details.component.mjs +276 -0
  38. package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
  39. package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
  40. package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
  41. package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
  42. package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
  43. package/esm2022/lib/directives/let/let.directive.mjs +29 -0
  44. package/esm2022/lib/exui-common-lib.module.mjs +313 -0
  45. package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
  46. package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
  47. package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +127 -0
  48. package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
  49. package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
  50. package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
  51. package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
  52. package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
  53. package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
  54. package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
  55. package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
  56. package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
  57. package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
  58. package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
  59. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +2 -0
  60. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
  61. package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
  62. package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
  63. package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
  64. package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
  65. package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
  66. package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
  67. package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
  68. package/esm2022/lib/gov-ui/gov-ui.service.mjs +14 -0
  69. package/esm2022/lib/gov-ui/models/checkboxes-model.mjs +2 -0
  70. package/{esm2015/lib/gov-ui/models/gov-ui-config-model.js → esm2022/lib/gov-ui/models/gov-ui-config-model.mjs} +1 -1
  71. package/{esm2015/lib/gov-ui/models/public_api.js → esm2022/lib/gov-ui/models/public_api.mjs} +1 -2
  72. package/esm2022/lib/gov-ui/models/radio-buttons.model.mjs +2 -0
  73. package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
  74. package/{esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js → esm2022/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs} +1 -1
  75. package/{esm2015/lib/gov-ui/validators/date.validator.js → esm2022/lib/gov-ui/validators/date.validator.mjs} +1 -1
  76. package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
  77. package/esm2022/lib/models/address-message.enum.mjs +11 -0
  78. package/esm2022/lib/models/address-option.model.mjs +21 -0
  79. package/esm2022/lib/models/address.model.mjs +4 -0
  80. package/{esm2015/lib/models/contact-details.model.js → esm2022/lib/models/contact-details.model.mjs} +1 -1
  81. package/esm2022/lib/models/feature-user.mjs +5 -0
  82. package/esm2022/lib/models/filter.model.mjs +3 -0
  83. package/esm2022/lib/models/index.mjs +19 -0
  84. package/esm2022/lib/models/location.model.mjs +7 -0
  85. package/esm2022/lib/models/person.model.mjs +21 -0
  86. package/{esm2015/lib/models/public_api.js → esm2022/lib/models/public_api.mjs} +2 -1
  87. package/{esm2015/lib/models/search-options.model.js → esm2022/lib/models/search-options.model.mjs} +1 -1
  88. package/esm2022/lib/models/service-message.model.mjs +2 -0
  89. package/esm2022/lib/models/task-name.model.mjs +2 -0
  90. package/esm2022/lib/models/user-access-type.model.mjs +2 -0
  91. package/esm2022/lib/models/user-details.model.mjs +2 -0
  92. package/esm2022/lib/pipes/capitalize/capitalize.pipe.mjs +15 -0
  93. package/esm2022/lib/pipes/index.mjs +2 -0
  94. package/esm2022/lib/services/address/address-parser.mjs +76 -0
  95. package/esm2022/lib/services/address/address-type.enum.mjs +7 -0
  96. package/esm2022/lib/services/address/address.service.mjs +55 -0
  97. package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
  98. package/esm2022/lib/services/cookie/cookie.service.mjs +48 -0
  99. package/esm2022/lib/services/feature-toggle/feature-toggle.guard.mjs +37 -0
  100. package/esm2022/lib/services/feature-toggle/feature-toggle.service.mjs +33 -0
  101. package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +70 -0
  102. package/esm2022/lib/services/filter/filter.service.mjs +95 -0
  103. package/esm2022/lib/services/find-person/find-person.service.mjs +92 -0
  104. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +73 -0
  105. package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +85 -0
  106. package/{esm2015/lib/services/loading/loading.service.js → esm2022/lib/services/loading/loading.service.mjs} +8 -6
  107. package/esm2022/lib/services/locations/location.service.mjs +38 -0
  108. package/{esm2015/lib/services/manage-session/manage-session.services.js → esm2022/lib/services/manage-session/manage-session.services.mjs} +8 -10
  109. package/esm2022/lib/services/public-api.mjs +18 -0
  110. package/esm2022/lib/services/ref-data/index.mjs +4 -0
  111. package/esm2022/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +2 -0
  112. package/esm2022/lib/services/ref-data/models/ref-data-region.model.mjs +2 -0
  113. package/esm2022/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +2 -0
  114. package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
  115. package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
  116. package/esm2022/lib/services/role-guard/role.guard.mjs +43 -0
  117. package/esm2022/lib/services/role-guard/role.service.mjs +22 -0
  118. package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
  119. package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
  120. package/esm2022/lib/services/timeout-notifications/timeout-notifications.service.mjs +103 -0
  121. package/{esm2015/public-api.js → esm2022/public-api.mjs} +2 -1
  122. package/fesm2022/hmcts-rpx-xui-common-lib.mjs +10386 -0
  123. package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  124. package/index.d.ts +5 -0
  125. package/lib/components/accessibility/accessibility.component.d.ts +7 -1
  126. package/lib/components/checkbox-list/checkbox-list.component.d.ts +8 -2
  127. package/lib/components/contact-details/contact-details.component.d.ts +3 -0
  128. package/lib/components/cookie-banner/cookie-banner.component.d.ts +5 -1
  129. package/lib/components/due-date/due-date.component.d.ts +8 -2
  130. package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +3 -0
  131. package/lib/components/find-location/find-location.component.d.ts +12 -6
  132. package/lib/components/find-person/find-person.component.d.ts +5 -2
  133. package/lib/components/find-service/find-service.component.d.ts +24 -9
  134. package/lib/components/find-task-name/find-task-name.component.d.ts +44 -0
  135. package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
  136. package/lib/components/generic-filter/generic-filter.component.d.ts +25 -6
  137. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +3 -0
  138. package/lib/components/invite-user-form/invite-user-form.component.d.ts +3 -0
  139. package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +3 -0
  140. package/lib/components/loading-spinner/loading-spinner.component.d.ts +8 -1
  141. package/lib/components/pagination/pagination.component.d.ts +3 -0
  142. package/lib/components/public_api.d.ts +6 -0
  143. package/lib/components/search-judicials/search-judicials.component.d.ts +3 -0
  144. package/lib/components/search-location/search-location.component.d.ts +25 -20
  145. package/lib/components/search-service/search-service.component.d.ts +16 -9
  146. package/lib/components/search-venue/search-venue.component.d.ts +3 -1
  147. package/lib/components/selected-case/selected-case.component.d.ts +3 -0
  148. package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +3 -0
  149. package/lib/components/selected-case-list/selected-case-list.component.d.ts +3 -0
  150. package/lib/components/service-message/service-message.component.d.ts +9 -4
  151. package/lib/components/service-messages/service-messages.component.d.ts +15 -5
  152. package/lib/components/share-case/share-case.component.d.ts +4 -0
  153. package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +3 -0
  154. package/lib/components/tab/tab.component.d.ts +3 -0
  155. package/lib/components/tc-confirm/tc-confirm.component.d.ts +3 -0
  156. package/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.d.ts +3 -0
  157. package/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.d.ts +3 -0
  158. package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +3 -0
  159. package/lib/components/user-details/user-details.component.d.ts +4 -0
  160. package/lib/components/user-list/user-list.component.d.ts +3 -0
  161. package/lib/components/user-select/user-select.component.d.ts +5 -3
  162. package/lib/components/write-address/write-address.component.d.ts +45 -0
  163. package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +16 -0
  164. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +3 -0
  165. package/lib/directives/let/let.directive.d.ts +3 -0
  166. package/lib/exui-common-lib.module.d.ts +83 -4
  167. package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +3 -0
  168. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +17 -5
  169. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +3 -0
  170. package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +3 -0
  171. package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +3 -0
  172. package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +3 -0
  173. package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +3 -0
  174. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +4 -2
  175. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +4 -0
  176. package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +3 -0
  177. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +5 -2
  178. package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +3 -0
  179. package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +3 -0
  180. package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +3 -0
  181. package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
  182. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +7 -2
  183. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +3 -0
  184. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +3 -0
  185. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +6 -3
  186. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +3 -0
  187. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +3 -0
  188. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +3 -0
  189. package/lib/gov-ui/directives/remove-host.directive.d.ts +3 -0
  190. package/lib/gov-ui/gov-ui.service.d.ts +3 -0
  191. package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
  192. package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
  193. package/lib/gov-ui/models/public_api.d.ts +0 -1
  194. package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
  195. package/lib/models/address-message.enum.d.ts +9 -0
  196. package/lib/models/address-option.model.d.ts +9 -0
  197. package/lib/models/address.model.d.ts +9 -0
  198. package/lib/models/contact-details.model.d.ts +4 -0
  199. package/lib/models/feature-user.d.ts +4 -6
  200. package/lib/models/filter.model.d.ts +42 -9
  201. package/lib/models/index.d.ts +4 -0
  202. package/lib/models/location.model.d.ts +12 -12
  203. package/lib/models/person.model.d.ts +5 -3
  204. package/lib/models/public_api.d.ts +1 -0
  205. package/lib/models/search-options.model.d.ts +1 -1
  206. package/lib/models/service-message.model.d.ts +8 -0
  207. package/lib/models/task-name.model.d.ts +4 -0
  208. package/lib/models/user-access-type.model.d.ts +6 -0
  209. package/lib/models/user-details.model.d.ts +2 -0
  210. package/lib/pipes/capitalize/capitalize.pipe.d.ts +7 -0
  211. package/lib/pipes/index.d.ts +1 -0
  212. package/lib/services/address/address-parser.d.ts +17 -0
  213. package/lib/services/address/address-type.enum.d.ts +5 -0
  214. package/lib/services/address/address.service.d.ts +15 -0
  215. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +3 -0
  216. package/lib/services/cookie/cookie.service.d.ts +3 -0
  217. package/lib/services/feature-toggle/feature-toggle.guard.d.ts +8 -2
  218. package/lib/services/feature-toggle/feature-toggle.service.d.ts +4 -0
  219. package/lib/services/feature-toggle/launch-darkly.service.d.ts +14 -10
  220. package/lib/services/filter/filter.service.d.ts +6 -0
  221. package/lib/services/find-person/find-person.service.d.ts +5 -2
  222. package/lib/services/google-analytics/google-analytics.service.d.ts +4 -1
  223. package/lib/services/google-tag-manager/google-tag-manager.service.d.ts +5 -1
  224. package/lib/services/loading/loading.service.d.ts +3 -0
  225. package/lib/services/locations/location.service.d.ts +4 -1
  226. package/lib/services/manage-session/manage-session.services.d.ts +3 -0
  227. package/lib/services/public-api.d.ts +2 -0
  228. package/lib/services/ref-data/index.d.ts +3 -0
  229. package/lib/services/ref-data/models/ref-data-htmcs-service.model.d.ts +13 -0
  230. package/lib/services/ref-data/models/ref-data-region.model.d.ts +4 -0
  231. package/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.d.ts +8 -0
  232. package/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.d.ts +18 -0
  233. package/lib/services/ref-data/ref-data.service.d.ts +17 -0
  234. package/lib/services/role-guard/role.guard.d.ts +7 -3
  235. package/lib/services/role-guard/role.service.d.ts +8 -4
  236. package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +3 -0
  237. package/lib/services/task-name/task-name.service.d.ts +17 -0
  238. package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +8 -2
  239. package/package.json +21 -11
  240. package/public-api.d.ts +1 -0
  241. package/bundles/hmcts-rpx-xui-common-lib.umd.js +0 -5141
  242. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +0 -1
  243. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +0 -2
  244. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +0 -1
  245. package/esm2015/hmcts-rpx-xui-common-lib.js +0 -70
  246. package/esm2015/lib/components/accessibility/accessibility.component.js +0 -14
  247. package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +0 -177
  248. package/esm2015/lib/components/contact-details/contact-details.component.js +0 -17
  249. package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +0 -68
  250. package/esm2015/lib/components/due-date/due-date.component.js +0 -115
  251. package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -28
  252. package/esm2015/lib/components/find-location/find-location.component.js +0 -124
  253. package/esm2015/lib/components/find-person/find-person.component.js +0 -118
  254. package/esm2015/lib/components/find-service/find-service.component.js +0 -31
  255. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +0 -21
  256. package/esm2015/lib/components/generic-filter/generic-filter.component.js +0 -387
  257. package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -27
  258. package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +0 -25
  259. package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -25
  260. package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +0 -18
  261. package/esm2015/lib/components/pagination/pagination.component.js +0 -28
  262. package/esm2015/lib/components/public_api.js +0 -33
  263. package/esm2015/lib/components/search-judicials/search-judicials.component.js +0 -126
  264. package/esm2015/lib/components/search-location/search-location.component.js +0 -133
  265. package/esm2015/lib/components/search-service/search-service.component.js +0 -31
  266. package/esm2015/lib/components/search-venue/search-venue.component.js +0 -123
  267. package/esm2015/lib/components/selected-case/selected-case.component.js +0 -158
  268. package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -36
  269. package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +0 -49
  270. package/esm2015/lib/components/service-message/service-message.component.js +0 -22
  271. package/esm2015/lib/components/service-messages/service-messages.component.js +0 -48
  272. package/esm2015/lib/components/share-case/share-case.component.js +0 -205
  273. package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +0 -34
  274. package/esm2015/lib/components/tab/tab.component.js +0 -21
  275. package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +0 -22
  276. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -13
  277. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -13
  278. package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -16
  279. package/esm2015/lib/components/user-details/user-details.component.js +0 -41
  280. package/esm2015/lib/components/user-list/user-list.component.js +0 -33
  281. package/esm2015/lib/components/user-select/user-select.component.js +0 -58
  282. package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +0 -42
  283. package/esm2015/lib/directives/let/let.directive.js +0 -30
  284. package/esm2015/lib/exui-common-lib.module.js +0 -160
  285. package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -31
  286. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -21
  287. package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -64
  288. package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -22
  289. package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -28
  290. package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -35
  291. package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -23
  292. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -34
  293. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -21
  294. package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -33
  295. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -21
  296. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -27
  297. package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -39
  298. package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -27
  299. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -23
  300. package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -48
  301. package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -19
  302. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -41
  303. package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +0 -28
  304. package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -23
  305. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -15
  306. package/esm2015/lib/gov-ui/directives/remove-host.directive.js +0 -29
  307. package/esm2015/lib/gov-ui/gov-ui.service.js +0 -13
  308. package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -2
  309. package/esm2015/lib/gov-ui/models/checkboxes-model.js +0 -2
  310. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +0 -2
  311. package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +0 -22
  312. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +0 -22
  313. package/esm2015/lib/gov-ui/validators/radio-group.validator.js +0 -15
  314. package/esm2015/lib/models/feature-user.js +0 -5
  315. package/esm2015/lib/models/filter.model.js +0 -3
  316. package/esm2015/lib/models/index.js +0 -15
  317. package/esm2015/lib/models/location.model.js +0 -7
  318. package/esm2015/lib/models/person.model.js +0 -19
  319. package/esm2015/lib/models/user-details.model.js +0 -2
  320. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +0 -157
  321. package/esm2015/lib/services/cookie/cookie.service.js +0 -47
  322. package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +0 -35
  323. package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +0 -27
  324. package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +0 -59
  325. package/esm2015/lib/services/filter/filter.service.js +0 -64
  326. package/esm2015/lib/services/find-person/find-person.service.js +0 -106
  327. package/esm2015/lib/services/google-analytics/google-analytics.service.js +0 -68
  328. package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +0 -71
  329. package/esm2015/lib/services/locations/location.service.js +0 -39
  330. package/esm2015/lib/services/public-api.js +0 -16
  331. package/esm2015/lib/services/role-guard/role.guard.js +0 -37
  332. package/esm2015/lib/services/role-guard/role.service.js +0 -20
  333. package/esm2015/lib/services/session-storage/session-storage.service.js +0 -41
  334. package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +0 -94
  335. package/fesm2015/hmcts-rpx-xui-common-lib.js +0 -4174
  336. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +0 -1
  337. package/hmcts-rpx-xui-common-lib.d.ts +0 -69
  338. package/hmcts-rpx-xui-common-lib.metadata.json +0 -1
  339. package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
  340. package/lib/gov-ui/models/isession-storage.interface.d.ts +0 -4
  341. package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +0 -6
  342. /package/{esm2015/lib/components/index.js → esm2022/lib/components/index.mjs} +0 -0
  343. /package/{esm2015/lib/directives/index.js → esm2022/lib/directives/index.mjs} +0 -0
  344. /package/{esm2015/lib/directives/public-api.js → esm2022/lib/directives/public-api.mjs} +0 -0
  345. /package/{esm2015/lib/gov-ui/components/index.js → esm2022/lib/gov-ui/components/index.mjs} +0 -0
  346. /package/{esm2015/lib/gov-ui/components/public_api.js → esm2022/lib/gov-ui/components/public_api.mjs} +0 -0
  347. /package/{esm2015/lib/gov-ui/index.js → esm2022/lib/gov-ui/index.mjs} +0 -0
  348. /package/{esm2015/lib/gov-ui/models/error-messages-model.js → esm2022/lib/gov-ui/models/error-messages-model.mjs} +0 -0
  349. /package/{esm2015/lib/gov-ui/models/index.js → esm2022/lib/gov-ui/models/index.mjs} +0 -0
  350. /package/{esm2015/lib/gov-ui/public_api.js → esm2022/lib/gov-ui/public_api.mjs} +0 -0
  351. /package/{esm2015/lib/gov-ui/validators/index.js → esm2022/lib/gov-ui/validators/index.mjs} +0 -0
  352. /package/{esm2015/lib/gov-ui/validators/public_api.js → esm2022/lib/gov-ui/validators/public_api.mjs} +0 -0
  353. /package/{esm2015/lib/models/case-share.model.js → esm2022/lib/models/case-share.model.mjs} +0 -0
  354. /package/{esm2015/lib/models/due-date.model.js → esm2022/lib/models/due-date.model.mjs} +0 -0
  355. /package/{esm2015/lib/models/idle-config.model.js → esm2022/lib/models/idle-config.model.mjs} +0 -0
  356. /package/{esm2015/lib/models/pagination.model.js → esm2022/lib/models/pagination.model.mjs} +0 -0
  357. /package/{esm2015/lib/models/tcDocument.model.js → esm2022/lib/models/tcDocument.model.mjs} +0 -0
  358. /package/{esm2015/lib/models/timeout-notification.model.js → esm2022/lib/models/timeout-notification.model.mjs} +0 -0
  359. /package/{esm2015/lib/models/user.model.js → esm2022/lib/models/user.model.mjs} +0 -0
  360. /package/{esm2015/lib/services/index.js → esm2022/lib/services/index.mjs} +0 -0
  361. /package/{esm2015/lib/window.js → esm2022/lib/window.mjs} +0 -0
@@ -0,0 +1,381 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { CaseSharingStateService } from '../../services/case-sharing-state/case-sharing-state.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/case-sharing-state/case-sharing-state.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "rpx-xui-translation";
8
+ function SelectedCaseComponent_button_10_Template(rf, ctx) { if (rf & 1) {
9
+ const _r1 = i0.ɵɵgetCurrentView();
10
+ i0.ɵɵelementStart(0, "button", 14);
11
+ i0.ɵɵlistener("click", function SelectedCaseComponent_button_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDeselect(ctx_r1.sharedCase)); });
12
+ i0.ɵɵtext(1);
13
+ i0.ɵɵpipe(2, "rpxTranslate");
14
+ i0.ɵɵelementEnd();
15
+ } if (rf & 2) {
16
+ const ctx_r1 = i0.ɵɵnextContext();
17
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("btn-deselect-case"));
18
+ i0.ɵɵadvance();
19
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "Deselect case"), " ");
20
+ } }
21
+ function SelectedCaseComponent_div_17_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵelementStart(0, "div", 15)(1, "span", 16);
23
+ i0.ɵɵtext(2);
24
+ i0.ɵɵpipe(3, "rpxTranslate");
25
+ i0.ɵɵelementEnd()();
26
+ } if (rf & 2) {
27
+ const ctx_r1 = i0.ɵɵnextContext();
28
+ i0.ɵɵadvance();
29
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("access-info-no-user"));
30
+ i0.ɵɵadvance();
31
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "No users from your organisation currently have access to this case."), " ");
32
+ } }
33
+ function SelectedCaseComponent_div_18_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "div", 15)(1, "span", 16);
35
+ i0.ɵɵtext(2);
36
+ i0.ɵɵpipe(3, "rpxTranslate");
37
+ i0.ɵɵelementEnd()();
38
+ } if (rf & 2) {
39
+ const ctx_r1 = i0.ɵɵnextContext();
40
+ i0.ɵɵadvance();
41
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("access-info-has-users"));
42
+ i0.ɵɵadvance();
43
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "Users from your organisation with access to this case."), " ");
44
+ } }
45
+ function SelectedCaseComponent_table_19_tr_16_a_8_Template(rf, ctx) { if (rf & 1) {
46
+ const _r3 = i0.ɵɵgetCurrentView();
47
+ i0.ɵɵelementStart(0, "a", 30);
48
+ i0.ɵɵlistener("click", function SelectedCaseComponent_table_19_tr_16_a_8_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const user_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.onRemove(user_r4, ctx_r1.sharedCase); return i0.ɵɵresetView($event.preventDefault()); });
49
+ i0.ɵɵtext(1);
50
+ i0.ɵɵpipe(2, "rpxTranslate");
51
+ i0.ɵɵelementStart(3, "span", 31);
52
+ i0.ɵɵtext(4);
53
+ i0.ɵɵpipe(5, "rpxTranslate");
54
+ i0.ɵɵelementEnd()();
55
+ } if (rf & 2) {
56
+ const user_r4 = i0.ɵɵnextContext().$implicit;
57
+ i0.ɵɵadvance();
58
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 3, "Remove"), " ");
59
+ i0.ɵɵadvance(3);
60
+ i0.ɵɵtextInterpolate2("", user_r4.firstName + " " + user_r4.lastName, " ", i0.ɵɵpipeBind1(5, 5, "from case"), "");
61
+ } }
62
+ function SelectedCaseComponent_table_19_tr_16_a_10_Template(rf, ctx) { if (rf & 1) {
63
+ const _r5 = i0.ɵɵgetCurrentView();
64
+ i0.ɵɵelementStart(0, "a", 30);
65
+ i0.ɵɵlistener("click", function SelectedCaseComponent_table_19_tr_16_a_10_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const user_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.onCancel(user_r4, ctx_r1.sharedCase); return i0.ɵɵresetView($event.preventDefault()); });
66
+ i0.ɵɵtext(1);
67
+ i0.ɵɵpipe(2, "rpxTranslate");
68
+ i0.ɵɵelementStart(3, "span", 31);
69
+ i0.ɵɵtext(4);
70
+ i0.ɵɵpipe(5, "rpxTranslate");
71
+ i0.ɵɵpipe(6, "rpxTranslate");
72
+ i0.ɵɵelementEnd()();
73
+ } if (rf & 2) {
74
+ const user_r4 = i0.ɵɵnextContext().$implicit;
75
+ i0.ɵɵadvance();
76
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 4, "Cancel"), " ");
77
+ i0.ɵɵadvance(3);
78
+ i0.ɵɵtextInterpolate3("", i0.ɵɵpipeBind1(5, 6, "adding"), " ", user_r4.firstName + " " + user_r4.lastName, " ", i0.ɵɵpipeBind1(6, 8, "to case"), "");
79
+ } }
80
+ function SelectedCaseComponent_table_19_tr_16_span_13_Template(rf, ctx) { if (rf & 1) {
81
+ i0.ɵɵelementStart(0, "span", 32);
82
+ i0.ɵɵtext(1);
83
+ i0.ɵɵpipe(2, "rpxTranslate");
84
+ i0.ɵɵelementEnd();
85
+ } if (rf & 2) {
86
+ i0.ɵɵadvance();
87
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "To be removed"));
88
+ } }
89
+ function SelectedCaseComponent_table_19_tr_16_span_15_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵelementStart(0, "span", 33);
91
+ i0.ɵɵtext(1);
92
+ i0.ɵɵpipe(2, "rpxTranslate");
93
+ i0.ɵɵelementEnd();
94
+ } if (rf & 2) {
95
+ i0.ɵɵadvance();
96
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "To be added"));
97
+ } }
98
+ function SelectedCaseComponent_table_19_tr_16_Template(rf, ctx) { if (rf & 1) {
99
+ i0.ɵɵelementStart(0, "tr", 19)(1, "td", 25);
100
+ i0.ɵɵpipe(2, "async");
101
+ i0.ɵɵtext(3);
102
+ i0.ɵɵelementEnd();
103
+ i0.ɵɵelementStart(4, "td", 25);
104
+ i0.ɵɵpipe(5, "async");
105
+ i0.ɵɵtext(6);
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵelementStart(7, "td", 26);
108
+ i0.ɵɵtemplate(8, SelectedCaseComponent_table_19_tr_16_a_8_Template, 6, 7, "a", 27);
109
+ i0.ɵɵpipe(9, "async");
110
+ i0.ɵɵtemplate(10, SelectedCaseComponent_table_19_tr_16_a_10_Template, 7, 10, "a", 27);
111
+ i0.ɵɵpipe(11, "async");
112
+ i0.ɵɵelementEnd();
113
+ i0.ɵɵelementStart(12, "td", 26);
114
+ i0.ɵɵtemplate(13, SelectedCaseComponent_table_19_tr_16_span_13_Template, 3, 3, "span", 28);
115
+ i0.ɵɵpipe(14, "async");
116
+ i0.ɵɵtemplate(15, SelectedCaseComponent_table_19_tr_16_span_15_Template, 3, 3, "span", 29);
117
+ i0.ɵɵpipe(16, "async");
118
+ i0.ɵɵelementEnd()();
119
+ } if (rf & 2) {
120
+ const user_r4 = ctx.$implicit;
121
+ const idx_r6 = ctx.index;
122
+ const ctx_r1 = i0.ɵɵnextContext(2);
123
+ i0.ɵɵadvance();
124
+ i0.ɵɵpropertyInterpolate1("id", "user-full-name-", ctx_r1.userIdSetter(i0.ɵɵpipeBind1(2, 10, ctx_r1.canCancel(ctx_r1.sharedCase.caseId, user_r4)), idx_r6), "");
125
+ i0.ɵɵadvance(2);
126
+ i0.ɵɵtextInterpolate(user_r4.firstName + " " + user_r4.lastName);
127
+ i0.ɵɵadvance();
128
+ i0.ɵɵpropertyInterpolate1("id", "user-email-", ctx_r1.userIdSetter(i0.ɵɵpipeBind1(5, 12, ctx_r1.canCancel(ctx_r1.sharedCase.caseId, user_r4)), idx_r6), "");
129
+ i0.ɵɵadvance(2);
130
+ i0.ɵɵtextInterpolate(user_r4.email);
131
+ i0.ɵɵadvance(2);
132
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(9, 14, ctx_r1.canRemove(ctx_r1.sharedCase.caseId, user_r4)));
133
+ i0.ɵɵadvance(2);
134
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 16, ctx_r1.canCancel(ctx_r1.sharedCase.caseId, user_r4)));
135
+ i0.ɵɵadvance(3);
136
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(14, 18, ctx_r1.isToBeRemoved(ctx_r1.sharedCase.caseId, user_r4)));
137
+ i0.ɵɵadvance(2);
138
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(16, 20, ctx_r1.isToBeAdded(ctx_r1.sharedCase.caseId, user_r4)));
139
+ } }
140
+ function SelectedCaseComponent_table_19_Template(rf, ctx) { if (rf & 1) {
141
+ i0.ɵɵelementStart(0, "table", 17)(1, "thead", 18)(2, "tr", 19)(3, "th", 20);
142
+ i0.ɵɵtext(4);
143
+ i0.ɵɵpipe(5, "rpxTranslate");
144
+ i0.ɵɵelementEnd();
145
+ i0.ɵɵelementStart(6, "th", 20);
146
+ i0.ɵɵtext(7);
147
+ i0.ɵɵpipe(8, "rpxTranslate");
148
+ i0.ɵɵelementEnd();
149
+ i0.ɵɵelementStart(9, "th", 21);
150
+ i0.ɵɵtext(10);
151
+ i0.ɵɵpipe(11, "rpxTranslate");
152
+ i0.ɵɵelementEnd();
153
+ i0.ɵɵelementStart(12, "th", 22);
154
+ i0.ɵɵtext(13);
155
+ i0.ɵɵpipe(14, "rpxTranslate");
156
+ i0.ɵɵelementEnd()()();
157
+ i0.ɵɵelementStart(15, "tbody", 23);
158
+ i0.ɵɵtemplate(16, SelectedCaseComponent_table_19_tr_16_Template, 17, 22, "tr", 24);
159
+ i0.ɵɵelementEnd()();
160
+ } if (rf & 2) {
161
+ const ctx_r1 = i0.ɵɵnextContext();
162
+ i0.ɵɵadvance(3);
163
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("name-heading"));
164
+ i0.ɵɵadvance();
165
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 10, "Name"));
166
+ i0.ɵɵadvance(2);
167
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("email-heading"));
168
+ i0.ɵɵadvance();
169
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 12, "Email address"));
170
+ i0.ɵɵadvance(2);
171
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("action-heading"));
172
+ i0.ɵɵadvance();
173
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 14, "Actions"));
174
+ i0.ɵɵadvance(2);
175
+ i0.ɵɵpropertyInterpolate("id", ctx_r1.buildElementId("label-heading"));
176
+ i0.ɵɵadvance();
177
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 16, "Status"));
178
+ i0.ɵɵadvance(3);
179
+ i0.ɵɵproperty("ngForOf", ctx_r1.combinedSortedShares)("ngForTrackBy", ctx_r1.trackByUserId);
180
+ } }
181
+ export class SelectedCaseComponent {
182
+ constructor(stateService) {
183
+ this.stateService = stateService;
184
+ this.opened = false;
185
+ this.unselect = new EventEmitter();
186
+ this.synchronizeStore = new EventEmitter();
187
+ }
188
+ ngOnInit() {
189
+ this.shareCases$ = this.stateService.state;
190
+ this.shareCases$.subscribe(shareCases => this.shareCases = shareCases);
191
+ }
192
+ ngOnChanges(changes) {
193
+ if (changes.sharedCase) {
194
+ const sharedWith = this.sharedCase.sharedWith ? this.sharedCase.sharedWith : [];
195
+ const pendingShares = this.sharedCase.pendingShares ? this.sharedCase.pendingShares : [];
196
+ this.combinedSortedShares = this.combineAndSortShares(sharedWith, pendingShares);
197
+ }
198
+ }
199
+ onDeselect(c) {
200
+ this.unselect.emit(c);
201
+ }
202
+ trackByUserId(user) {
203
+ return user.idamId;
204
+ }
205
+ canRemove(caseId, user) {
206
+ return this.shareCases$.pipe(map(cases => {
207
+ if (this.removeUserFromCaseToggleOn) {
208
+ for (const aCase of cases) {
209
+ if (aCase.caseId === caseId) {
210
+ if (aCase.pendingUnshares && aCase.pendingUnshares.some(u => u.idamId === user.idamId)) {
211
+ return false;
212
+ }
213
+ if (aCase.sharedWith && aCase.sharedWith.some(u => u.idamId === user.idamId)) {
214
+ return true;
215
+ }
216
+ }
217
+ }
218
+ }
219
+ return false;
220
+ }));
221
+ }
222
+ canCancel(caseId, user) {
223
+ return this.shareCases$.pipe(map(cases => {
224
+ for (const aCase of cases) {
225
+ if (aCase.caseId === caseId) {
226
+ if (aCase.pendingShares && aCase.pendingShares.some(u => u.idamId === user.idamId)) {
227
+ return true;
228
+ }
229
+ if (aCase.pendingUnshares && aCase.pendingUnshares.some(u => u.idamId === user.idamId)) {
230
+ return true;
231
+ }
232
+ return false;
233
+ }
234
+ }
235
+ }));
236
+ }
237
+ isToBeRemoved(caseId, user) {
238
+ return this.shareCases$.pipe(map(cases => {
239
+ for (const aCase of cases) {
240
+ if (aCase.caseId === caseId) {
241
+ return aCase.pendingUnshares && aCase.pendingUnshares.some(u => u.idamId === user.idamId);
242
+ }
243
+ }
244
+ }));
245
+ }
246
+ isToBeAdded(caseId, user) {
247
+ return this.shareCases$.pipe(map(cases => {
248
+ for (const aCase of cases) {
249
+ if (aCase.caseId === caseId) {
250
+ return aCase.pendingShares && aCase.pendingShares.some(u => u.idamId === user.idamId);
251
+ }
252
+ }
253
+ }));
254
+ }
255
+ onRemove(user, sharedCase) {
256
+ this.stateService.requestUnshare(user, sharedCase.caseId);
257
+ this.synchronizeStore.emit(this.shareCases);
258
+ }
259
+ onCancel(user, sharedCase) {
260
+ this.stateService.requestCancel(sharedCase.caseId, user);
261
+ this.synchronizeStore.emit(this.shareCases);
262
+ }
263
+ showNoUsersAccessInfo() {
264
+ // A user is added to a case
265
+ if (this.sharedCase.pendingShares) {
266
+ if (this.sharedCase.pendingShares.length > 0) {
267
+ return false;
268
+ }
269
+ }
270
+ // A case has 0 users with access to it
271
+ if (this.sharedCase.sharedWith) {
272
+ if (this.sharedCase.sharedWith.length === 0) {
273
+ return true;
274
+ }
275
+ }
276
+ // Access to the last user is removed
277
+ if (this.sharedCase.sharedWith && this.sharedCase.pendingUnshares) {
278
+ if (this.sharedCase.pendingUnshares.length > 0
279
+ && this.sharedCase.sharedWith.length === this.sharedCase.pendingUnshares.length) {
280
+ return true;
281
+ }
282
+ }
283
+ return false;
284
+ }
285
+ showUserHasAccessInfo() {
286
+ return !this.showNoUsersAccessInfo();
287
+ }
288
+ showUserAccessTable() {
289
+ if (this.sharedCase.pendingShares) {
290
+ if (this.sharedCase.pendingShares.length > 0) {
291
+ return true;
292
+ }
293
+ }
294
+ if (this.sharedCase.sharedWith) {
295
+ if (this.sharedCase.sharedWith.length > 0) {
296
+ return true;
297
+ }
298
+ }
299
+ return false;
300
+ }
301
+ combineAndSortShares(sharedWith, pendingShares) {
302
+ return [
303
+ ...sharedWith,
304
+ ...pendingShares
305
+ ].sort((user1, user2) => {
306
+ return user1.firstName.toLowerCase() > user2.firstName.toLowerCase() ? 1 : (user2.firstName.toLowerCase() > user1.firstName.toLowerCase() ? -1 : 0);
307
+ });
308
+ }
309
+ userIdSetter(isPending, id) {
310
+ return isPending ? `pendingShares-${id}` : `${id}`;
311
+ }
312
+ buildElementId(elementName) {
313
+ return `${elementName}-${this.sharedCase.caseId}`;
314
+ }
315
+ static { this.ɵfac = function SelectedCaseComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SelectedCaseComponent)(i0.ɵɵdirectiveInject(i1.CaseSharingStateService)); }; }
316
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectedCaseComponent, selectors: [["xuilib-selected-case"]], inputs: { sharedCase: "sharedCase", selectedUser: "selectedUser", opened: "opened", removeUserFromCaseToggleOn: "removeUserFromCaseToggleOn", caseCount: "caseCount" }, outputs: { unselect: "unselect", synchronizeStore: "synchronizeStore" }, features: [i0.ɵɵNgOnChangesFeature], decls: 20, vars: 20, consts: [[1, "govuk-accordion__section", 3, "id"], [1, "govuk-grid-row", "govuk-case-header"], [1, "govuk-grid-column-three-quarters"], [1, "govuk-case-title", 3, "id"], [1, "govuk-case-sub-title", 3, "id"], [1, "govuk-grid-column-ten-percent"], ["class", "govuk-button hmcts-button--secondary", "title", "Deselect case", 3, "id", "click", 4, "ngIf"], [1, "govuk-accordion__section-header", "govuk-grid-column-ten-percent"], [1, "govuk-accordion__section-heading"], ["type", "button", "aria-expanded", "false", 1, "govuk-accordion__section-button", 3, "id", "title"], ["aria-hidden", "true", 1, "govuk-accordion__icon"], [1, "govuk-accordion__section-content", 3, "id"], ["class", "govuk-grid-row", 4, "ngIf"], ["class", "govuk-table", 4, "ngIf"], ["title", "Deselect case", 1, "govuk-button", "hmcts-button--secondary", 3, "click", "id"], [1, "govuk-grid-row"], [1, "govuk-div-align-left", 3, "id"], [1, "govuk-table"], [1, "govuk-table__head"], [1, "govuk-table__row"], ["scope", "col", 1, "govuk-table__header", "govuk-table-column-header", 3, "id"], ["scope", "col", 1, "govuk-table__header", "govuk-table-column-actions", 3, "id"], ["scope", "col", 1, "govuk-table__header", "govuk-table-column-label", 3, "id"], [1, "govuk-table__body"], ["class", "govuk-table__row", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "govuk-table__cell", 3, "id"], [1, "govuk-table__cell"], ["href", "#", 3, "click", 4, "ngIf"], ["class", "hmcts-badge hmcts-badge--red", 4, "ngIf"], ["class", "hmcts-badge", 4, "ngIf"], ["href", "#", 3, "click"], [1, "govuk-visually-hidden"], [1, "hmcts-badge", "hmcts-badge--red"], [1, "hmcts-badge"]], template: function SelectedCaseComponent_Template(rf, ctx) { if (rf & 1) {
317
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3", 3);
318
+ i0.ɵɵtext(4);
319
+ i0.ɵɵpipe(5, "rpxTranslate");
320
+ i0.ɵɵelementEnd();
321
+ i0.ɵɵelementStart(6, "h3", 4);
322
+ i0.ɵɵtext(7);
323
+ i0.ɵɵpipe(8, "rpxTranslate");
324
+ i0.ɵɵelementEnd()();
325
+ i0.ɵɵelementStart(9, "div", 5);
326
+ i0.ɵɵtemplate(10, SelectedCaseComponent_button_10_Template, 3, 4, "button", 6);
327
+ i0.ɵɵelementEnd();
328
+ i0.ɵɵelementStart(11, "div", 7)(12, "div", 8)(13, "button", 9);
329
+ i0.ɵɵpipe(14, "rpxTranslate");
330
+ i0.ɵɵelement(15, "span", 10);
331
+ i0.ɵɵelementEnd()()()();
332
+ i0.ɵɵelementStart(16, "div", 11);
333
+ i0.ɵɵtemplate(17, SelectedCaseComponent_div_17_Template, 4, 4, "div", 12)(18, SelectedCaseComponent_div_18_Template, 4, 4, "div", 12)(19, SelectedCaseComponent_table_19_Template, 17, 18, "table", 13);
334
+ i0.ɵɵelementEnd()();
335
+ } if (rf & 2) {
336
+ i0.ɵɵpropertyInterpolate("id", ctx.buildElementId("govuk-accordion__section"));
337
+ i0.ɵɵadvance(3);
338
+ i0.ɵɵpropertyInterpolate("id", ctx.buildElementId("case-title"));
339
+ i0.ɵɵadvance();
340
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 14, ctx.sharedCase.caseTitle));
341
+ i0.ɵɵadvance(2);
342
+ i0.ɵɵpropertyInterpolate("id", ctx.buildElementId("case-id"));
343
+ i0.ɵɵadvance();
344
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 16, ctx.sharedCase.caseId));
345
+ i0.ɵɵadvance(3);
346
+ i0.ɵɵproperty("ngIf", ctx.caseCount > 1);
347
+ i0.ɵɵadvance(3);
348
+ i0.ɵɵpropertyInterpolate("id", ctx.buildElementId("accordion-with-summary-sections-heading"));
349
+ i0.ɵɵproperty("title", i0.ɵɵpipeBind1(14, 18, "Expand or Collapse"));
350
+ i0.ɵɵattribute("aria-controls", "accordion-with-summary-sections-content" + ctx.buildElementId("accordion-with-summary-sections-heading"));
351
+ i0.ɵɵadvance(3);
352
+ i0.ɵɵpropertyInterpolate("id", ctx.buildElementId("accordion-with-summary-sections-content"));
353
+ i0.ɵɵattribute("aria-labelledby", ctx.buildElementId("accordion-with-summary-sections-heading"));
354
+ i0.ɵɵadvance();
355
+ i0.ɵɵproperty("ngIf", ctx.showNoUsersAccessInfo());
356
+ i0.ɵɵadvance();
357
+ i0.ɵɵproperty("ngIf", ctx.showUserHasAccessInfo());
358
+ i0.ɵɵadvance();
359
+ i0.ɵɵproperty("ngIf", ctx.showUserAccessTable());
360
+ } }, dependencies: [i2.NgForOf, i2.NgIf, i2.AsyncPipe, i3.RpxTranslatePipe], styles: [".govuk-case-header[_ngcontent-%COMP%]{border-top:1px solid #bfc1c3}.govuk-case-title[_ngcontent-%COMP%]{font-family:nta,Arial,sans-serif;font-size:24px;color:#005ea5;font-weight:700;padding-left:0}.govuk-case-sub-title[_ngcontent-%COMP%]{font-family:nta,Arial,sans-serif;font-size:1rem!important;color:#6f777b;font-weight:400;padding-left:0}.govuk-grid-row[_ngcontent-%COMP%]{margin-left:0;margin-right:0}.govuk-grid-column-three-quarters[_ngcontent-%COMP%]{padding-top:5px;padding-left:0}.govuk-grid-column-twenty-percent[_ngcontent-%COMP%]{box-sizing:border-box;padding-top:10px;width:20%;float:left}.govuk-grid-column-ten-percent[_ngcontent-%COMP%]{box-sizing:border-box;padding-top:10px;width:10%;float:left}.govuk-grid-column-five-percent[_ngcontent-%COMP%]{box-sizing:border-box;padding-top:15px;width:5%;float:left}.govuk-table-column-header[_ngcontent-%COMP%]{width:38%}.govuk-table-column-actions[_ngcontent-%COMP%], .govuk-table-column-label[_ngcontent-%COMP%]{width:12%}.govuk-div-align-left[_ngcontent-%COMP%]{font-family:nta,Arial,sans-serif;font-size:1.1875rem!important;line-height:1.31579!important;text-align:left;margin-bottom:20px;padding-left:0;color:#0b0c0c}.govuk-accordion__section-header[_ngcontent-%COMP%]{border-top:0}.govuk-accordion__section-content[_ngcontent-%COMP%]{padding-top:0}.govuk-accordion__section-heading[_ngcontent-%COMP%], .govuk-accordion__section-button[_ngcontent-%COMP%]{border-top:0}"] }); }
361
+ }
362
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SelectedCaseComponent, [{
363
+ type: Component,
364
+ args: [{ selector: 'xuilib-selected-case', template: "<div id=\"{{buildElementId('govuk-accordion__section')}}\" class=\"govuk-accordion__section\">\r\n <div class=\"govuk-grid-row govuk-case-header\">\r\n <div class=\"govuk-grid-column-three-quarters\">\r\n <h3 id=\"{{buildElementId('case-title')}}\" class=\"govuk-case-title\">{{ sharedCase.caseTitle | rpxTranslate }}</h3>\r\n <h3 id=\"{{buildElementId('case-id')}}\" class=\"govuk-case-sub-title\">{{ sharedCase.caseId | rpxTranslate }}</h3>\r\n </div>\r\n <div class=\"govuk-grid-column-ten-percent\">\r\n <button *ngIf=\"caseCount > 1\"\r\n id=\"{{buildElementId('btn-deselect-case')}}\"\r\n class=\"govuk-button hmcts-button--secondary\"\r\n (click)=\"onDeselect(sharedCase)\" title=\"Deselect case\">\r\n {{'Deselect case' | rpxTranslate}}\r\n </button>\r\n </div>\r\n <div class=\"govuk-accordion__section-header govuk-grid-column-ten-percent\">\r\n <div class=\"govuk-accordion__section-heading\">\r\n <button type=\"button\" id=\"{{buildElementId('accordion-with-summary-sections-heading')}}\"\r\n [attr.aria-controls]=\"'accordion-with-summary-sections-content' + buildElementId('accordion-with-summary-sections-heading')\" class=\"govuk-accordion__section-button\"\r\n aria-expanded=\"false\" [title]=\"'Expand or Collapse' | rpxTranslate\">\r\n <span class=\"govuk-accordion__icon\" aria-hidden=\"true\"></span></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"{{buildElementId('accordion-with-summary-sections-content')}}\" class=\"govuk-accordion__section-content\"\r\n [attr.aria-labelledby]=\"buildElementId('accordion-with-summary-sections-heading')\" >\r\n <div class=\"govuk-grid-row\" *ngIf=\"showNoUsersAccessInfo()\">\r\n <span id=\"{{buildElementId('access-info-no-user')}}\" class=\"govuk-div-align-left\">\r\n {{'No users from your organisation currently have access to this case.' | rpxTranslate}}\r\n </span>\r\n </div>\r\n <div class=\"govuk-grid-row\" *ngIf=\"showUserHasAccessInfo()\">\r\n <span id=\"{{buildElementId('access-info-has-users')}}\" class=\"govuk-div-align-left\">\r\n {{'Users from your organisation with access to this case.' | rpxTranslate}}\r\n </span>\r\n </div>\r\n <table class=\"govuk-table\" *ngIf=\"showUserAccessTable()\">\r\n <thead class=\"govuk-table__head\">\r\n <tr class=\"govuk-table__row\">\r\n <th id=\"{{buildElementId('name-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">{{'Name' | rpxTranslate}}</th>\r\n <th id=\"{{buildElementId('email-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">{{'Email address' | rpxTranslate}}</th>\r\n <th id=\"{{buildElementId('action-heading')}}\" class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">{{'Actions' | rpxTranslate}}</th>\r\n <th id=\"{{buildElementId('label-heading')}}\" class=\"govuk-table__header govuk-table-column-label\" scope=\"col\">{{ 'Status' | rpxTranslate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"govuk-table__body\">\r\n <tr class=\"govuk-table__row\" *ngFor=\"let user of combinedSortedShares; index as idx; trackBy: trackByUserId\">\r\n <td id=\"user-full-name-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\r\n <td id=\"user-email-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.email }}</td>\r\n <td class=\"govuk-table__cell\">\r\n <a *ngIf=\"canRemove(sharedCase.caseId, user) | async\" (click)=\"onRemove(user, sharedCase); $event.preventDefault()\" href=\"#\">{{'Remove' | rpxTranslate}} <span class=\"govuk-visually-hidden\">{{ user.firstName + ' ' + user.lastName }} {{'from case' | rpxTranslate}}</span></a>\r\n <a *ngIf=\"canCancel(sharedCase.caseId, user) | async\" (click)=\"onCancel(user, sharedCase); $event.preventDefault()\" href=\"#\">{{'Cancel' | rpxTranslate}} <span class=\"govuk-visually-hidden\">{{'adding' | rpxTranslate}} {{ user.firstName + ' ' + user.lastName }} {{'to case' | rpxTranslate}}</span></a>\r\n </td>\r\n <td class=\"govuk-table__cell\">\r\n <span *ngIf=\"isToBeRemoved(sharedCase.caseId, user) | async\" class=\"hmcts-badge hmcts-badge--red\">{{'To be removed' | rpxTranslate}}</span>\r\n <span *ngIf=\"isToBeAdded(sharedCase.caseId, user) | async\" class=\"hmcts-badge\">{{'To be added' | rpxTranslate}}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>\r\n", styles: [".govuk-case-header{border-top:1px solid #bfc1c3}.govuk-case-title{font-family:nta,Arial,sans-serif;font-size:24px;color:#005ea5;font-weight:700;padding-left:0}.govuk-case-sub-title{font-family:nta,Arial,sans-serif;font-size:1rem!important;color:#6f777b;font-weight:400;padding-left:0}.govuk-grid-row{margin-left:0;margin-right:0}.govuk-grid-column-three-quarters{padding-top:5px;padding-left:0}.govuk-grid-column-twenty-percent{box-sizing:border-box;padding-top:10px;width:20%;float:left}.govuk-grid-column-ten-percent{box-sizing:border-box;padding-top:10px;width:10%;float:left}.govuk-grid-column-five-percent{box-sizing:border-box;padding-top:15px;width:5%;float:left}.govuk-table-column-header{width:38%}.govuk-table-column-actions,.govuk-table-column-label{width:12%}.govuk-div-align-left{font-family:nta,Arial,sans-serif;font-size:1.1875rem!important;line-height:1.31579!important;text-align:left;margin-bottom:20px;padding-left:0;color:#0b0c0c}.govuk-accordion__section-header{border-top:0}.govuk-accordion__section-content{padding-top:0}.govuk-accordion__section-heading,.govuk-accordion__section-button{border-top:0}\n"] }]
365
+ }], () => [{ type: i1.CaseSharingStateService }], { sharedCase: [{
366
+ type: Input
367
+ }], selectedUser: [{
368
+ type: Input
369
+ }], opened: [{
370
+ type: Input
371
+ }], removeUserFromCaseToggleOn: [{
372
+ type: Input
373
+ }], caseCount: [{
374
+ type: Input
375
+ }], unselect: [{
376
+ type: Output
377
+ }], synchronizeStore: [{
378
+ type: Output
379
+ }] }); })();
380
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectedCaseComponent, { className: "SelectedCaseComponent", filePath: "lib/components/selected-case/selected-case.component.ts", lineNumber: 14 }); })();
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQtY2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdGVkLWNhc2Uvc2VsZWN0ZWQtY2FzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdGVkLWNhc2Uvc2VsZWN0ZWQtY2FzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXJDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7O0lDQ2pHLGtDQUd5RDtJQUF2RCxxTEFBUyxvQ0FBc0IsS0FBQztJQUNoQyxZQUNGOztJQUFBLGlCQUFTOzs7SUFKUCwwRUFBNEM7SUFHNUMsY0FDRjtJQURFLHNFQUNGOzs7SUFjQSxBQURGLCtCQUE0RCxlQUN3QjtJQUNoRixZQUNGOztJQUNGLEFBREUsaUJBQU8sRUFDSDs7O0lBSEUsY0FBOEM7SUFBOUMsNEVBQThDO0lBQ2xELGNBQ0Y7SUFERSw0SEFDRjs7O0lBR0EsQUFERiwrQkFBNEQsZUFDMEI7SUFDbEYsWUFDRjs7SUFDRixBQURFLGlCQUFPLEVBQ0g7OztJQUhFLGNBQWdEO0lBQWhELDhFQUFnRDtJQUNwRCxjQUNGO0lBREUsK0dBQ0Y7Ozs7SUFnQk0sNkJBQTZIO0lBQXZFLHdOQUFTLDJDQUEwQix3QkFBRSx1QkFBdUIsS0FBQztJQUFVLFlBQTRCOztJQUFBLGdDQUFvQztJQUFBLFlBQXlFOztJQUFPLEFBQVAsaUJBQU8sRUFBSTs7O0lBQXBKLGNBQTRCO0lBQTVCLDhEQUE0QjtJQUFvQyxlQUF5RTtJQUF6RSxpSEFBeUU7Ozs7SUFDdFEsNkJBQTZIO0lBQXZFLHlOQUFTLDJDQUEwQix3QkFBRSx1QkFBdUIsS0FBQztJQUFVLFlBQTRCOztJQUFBLGdDQUFvQztJQUFBLFlBQW1HOzs7SUFBTyxBQUFQLGlCQUFPLEVBQUk7OztJQUE5SyxjQUE0QjtJQUE1Qiw4REFBNEI7SUFBb0MsZUFBbUc7SUFBbkcsb0pBQW1HOzs7SUFHaFMsZ0NBQWtHO0lBQUEsWUFBa0M7O0lBQUEsaUJBQU87O0lBQXpDLGNBQWtDO0lBQWxDLDJEQUFrQzs7O0lBQ3BJLGdDQUErRTtJQUFBLFlBQWdDOztJQUFBLGlCQUFPOztJQUF2QyxjQUFnQztJQUFoQyx5REFBZ0M7OztJQVJqSCxBQURGLDhCQUE2RyxhQUNXOztJQUFBLFlBQTBDO0lBQUEsaUJBQUs7SUFDckssOEJBQWtIOztJQUFBLFlBQWdCO0lBQUEsaUJBQUs7SUFDdkksOEJBQThCO0lBQzVCLGtGQUE2SDs7SUFDN0gscUZBQTZIOztJQUMvSCxpQkFBSztJQUNMLCtCQUE4QjtJQUM1QiwwRkFBa0c7O0lBQ2xHLDBGQUErRTs7SUFFbkYsQUFERSxpQkFBSyxFQUNGOzs7OztJQVZDLGNBQXVGO0lBQXZGLCtKQUF1RjtJQUEyQixlQUEwQztJQUExQyxnRUFBMEM7SUFDNUosY0FBbUY7SUFBbkYsMkpBQW1GO0lBQTJCLGVBQWdCO0lBQWhCLG1DQUFnQjtJQUU1SCxlQUFnRDtJQUFoRCxpR0FBZ0Q7SUFDaEQsZUFBZ0Q7SUFBaEQsa0dBQWdEO0lBRzdDLGVBQW9EO0lBQXBELHNHQUFvRDtJQUNwRCxlQUFrRDtJQUFsRCxvR0FBa0Q7OztJQWhCN0QsQUFERixBQURBLEFBREYsaUNBQXlELGdCQUN0QixhQUNKLGFBQ21GO0lBQUEsWUFBeUI7O0lBQUEsaUJBQUs7SUFDNUksOEJBQStHO0lBQUEsWUFBa0M7O0lBQUEsaUJBQUs7SUFDdEosOEJBQWlIO0lBQUEsYUFBNEI7O0lBQUEsaUJBQUs7SUFDbEosK0JBQThHO0lBQUEsYUFBNkI7O0lBRTdJLEFBREEsQUFENkksaUJBQUssRUFDN0ksRUFDRztJQUNSLGtDQUFpQztJQUMvQixrRkFBNkc7SUFhakgsQUFERSxpQkFBUSxFQUNGOzs7SUFwQkEsZUFBdUM7SUFBdkMscUVBQXVDO0lBQW1FLGNBQXlCO0lBQXpCLG1EQUF5QjtJQUNuSSxlQUF3QztJQUF4QyxzRUFBd0M7SUFBbUUsY0FBa0M7SUFBbEMsNERBQWtDO0lBQzdJLGVBQXlDO0lBQXpDLHVFQUF5QztJQUFvRSxjQUE0QjtJQUE1Qix1REFBNEI7SUFDekksZUFBd0M7SUFBeEMsc0VBQXdDO0lBQWtFLGNBQTZCO0lBQTdCLHNEQUE2QjtJQUk3RixlQUF5QjtJQUFjLEFBQXZDLHFEQUF5QixzQ0FBb0M7O0FEaENuSCxNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxZQUE2QixZQUFxQztRQUFyQyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFabEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUlkLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzFDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFPVSxDQUFDO0lBRWhFLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUV6RSxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLENBQWE7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFpQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBaUI7UUFDaEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQkFDcEMsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO3dCQUM1QixJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDOzRCQUN2RixPQUFPLEtBQUssQ0FBQzt3QkFDZixDQUFDO3dCQUNELElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7NEJBQzdFLE9BQU8sSUFBSSxDQUFDO3dCQUNkLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQzt3QkFDbkYsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFDRCxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUN2RixPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUNELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxLQUFLLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxXQUFXLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUIsRUFBRSxVQUFzQjtRQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBaUIsRUFBRSxVQUFzQjtRQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUM7bUJBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEYsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxVQUF5QixFQUFFLGFBQTRCO1FBQ2pGLE9BQU87WUFDTCxHQUFHLFVBQVU7WUFDYixHQUFHLGFBQWE7U0FDakIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdEIsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0SixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsU0FBa0IsRUFBRSxFQUFVO1FBQ2hELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxXQUFtQjtRQUN2QyxPQUFPLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEQsQ0FBQztzSEFoS1UscUJBQXFCO29FQUFyQixxQkFBcUI7WUNWNUIsQUFERixBQURGLEFBREYsOEJBQTBGLGFBQzFDLGFBQ0UsWUFDdUI7WUFBQSxZQUF5Qzs7WUFBQSxpQkFBSztZQUNqSCw2QkFBb0U7WUFBQSxZQUFzQzs7WUFDNUcsQUFENEcsaUJBQUssRUFDM0c7WUFDTiw4QkFBMkM7WUFDekMsOEVBR3lEO1lBRzNELGlCQUFNO1lBR0YsQUFERixBQURGLCtCQUEyRSxjQUMzQixpQkFHK0I7O1lBQzNFLDRCQUE4RDtZQUdwRSxBQURFLEFBREUsQUFEZ0UsaUJBQVMsRUFDbkUsRUFDRixFQUNGO1lBQ04sZ0NBQ3lGO1lBV3ZGLEFBTEEsQUFMQSx5RUFBNEQsNERBS0Esa0VBS0g7WUF5QjdELEFBREUsaUJBQU0sRUFDRjs7WUE1REQsOEVBQW1EO1lBRzlDLGVBQXFDO1lBQXJDLGdFQUFxQztZQUEwQixjQUF5QztZQUF6QyxxRUFBeUM7WUFDeEcsZUFBa0M7WUFBbEMsNkRBQWtDO1lBQThCLGNBQXNDO1lBQXRDLGtFQUFzQztZQUdqRyxlQUFtQjtZQUFuQix3Q0FBbUI7WUFTSixlQUFrRTtZQUFsRSw2RkFBa0U7WUFFM0Qsb0VBQTZDOztZQUszRSxlQUFrRTtZQUFsRSw2RkFBa0U7O1lBRXhDLGNBQTZCO1lBQTdCLGtEQUE2QjtZQUs3QixjQUE2QjtZQUE3QixrREFBNkI7WUFLOUIsY0FBMkI7WUFBM0IsZ0RBQTJCOzs7aUZEdEI5QyxxQkFBcUI7Y0FMakMsU0FBUzsyQkFDRSxzQkFBc0I7d0RBTWhCLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsTUFBTTtrQkFBckIsS0FBSztZQUNVLDBCQUEwQjtrQkFBekMsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFFVyxRQUFRO2tCQUF4QixNQUFNO1lBQ1UsZ0JBQWdCO2tCQUFoQyxNQUFNOztrRkFUSSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2hhcmVkQ2FzZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYXNlLXNoYXJlLm1vZGVsJztcbmltcG9ydCB7IFVzZXJEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlU2hhcmluZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nhc2Utc2hhcmluZy1zdGF0ZS9jYXNlLXNoYXJpbmctc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1zZWxlY3RlZC1jYXNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGVkLWNhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3RlZC1jYXNlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0ZWRDYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzaGFyZWRDYXNlOiBTaGFyZWRDYXNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRVc2VyOiBVc2VyRGV0YWlscztcbiAgQElucHV0KCkgcHVibGljIG9wZW5lZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcmVtb3ZlVXNlckZyb21DYXNlVG9nZ2xlT246IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlQ291bnQ6IG51bWJlcjtcblxuICBAT3V0cHV0KCkgcHVibGljIHVuc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxTaGFyZWRDYXNlPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHN5bmNocm9uaXplU3RvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgc2hhcmVDYXNlczogU2hhcmVkQ2FzZVtdO1xuICBwdWJsaWMgc2hhcmVDYXNlcyQ6IE9ic2VydmFibGU8U2hhcmVkQ2FzZVtdPjtcblxuICBwdWJsaWMgY29tYmluZWRTb3J0ZWRTaGFyZXM6IFVzZXJEZXRhaWxzW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGF0ZVNlcnZpY2U6IENhc2VTaGFyaW5nU3RhdGVTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaGFyZUNhc2VzJCA9IHRoaXMuc3RhdGVTZXJ2aWNlLnN0YXRlO1xuICAgIHRoaXMuc2hhcmVDYXNlcyQuc3Vic2NyaWJlKHNoYXJlQ2FzZXMgPT4gdGhpcy5zaGFyZUNhc2VzID0gc2hhcmVDYXNlcyk7XG5cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc2hhcmVkQ2FzZSkge1xuICAgICAgY29uc3Qgc2hhcmVkV2l0aCA9IHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoID8gdGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGggOiBbXTtcbiAgICAgIGNvbnN0IHBlbmRpbmdTaGFyZXMgPSB0aGlzLnNoYXJlZENhc2UucGVuZGluZ1NoYXJlcyA/IHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nU2hhcmVzIDogW107XG4gICAgICB0aGlzLmNvbWJpbmVkU29ydGVkU2hhcmVzID0gdGhpcy5jb21iaW5lQW5kU29ydFNoYXJlcyhzaGFyZWRXaXRoLCBwZW5kaW5nU2hhcmVzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25EZXNlbGVjdChjOiBTaGFyZWRDYXNlKTogdm9pZCB7XG4gICAgdGhpcy51bnNlbGVjdC5lbWl0KGMpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlVc2VySWQodXNlcjogVXNlckRldGFpbHMpOiBzdHJpbmcge1xuICAgIHJldHVybiB1c2VyLmlkYW1JZDtcbiAgfVxuXG4gIHB1YmxpYyBjYW5SZW1vdmUoY2FzZUlkOiBzdHJpbmcsIHVzZXI6IFVzZXJEZXRhaWxzKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVDYXNlcyQucGlwZShtYXAoY2FzZXMgPT4ge1xuICAgICAgaWYgKHRoaXMucmVtb3ZlVXNlckZyb21DYXNlVG9nZ2xlT24pIHtcbiAgICAgICAgZm9yIChjb25zdCBhQ2FzZSBvZiBjYXNlcykge1xuICAgICAgICAgIGlmIChhQ2FzZS5jYXNlSWQgPT09IGNhc2VJZCkge1xuICAgICAgICAgICAgaWYgKGFDYXNlLnBlbmRpbmdVbnNoYXJlcyAmJiBhQ2FzZS5wZW5kaW5nVW5zaGFyZXMuc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFDYXNlLnNoYXJlZFdpdGggJiYgYUNhc2Uuc2hhcmVkV2l0aC5zb21lKHUgPT4gdS5pZGFtSWQgPT09IHVzZXIuaWRhbUlkKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgY2FuQ2FuY2VsKGNhc2VJZDogc3RyaW5nLCB1c2VyOiBVc2VyRGV0YWlscyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNoYXJlQ2FzZXMkLnBpcGUobWFwKGNhc2VzID0+IHtcbiAgICAgIGZvciAoY29uc3QgYUNhc2Ugb2YgY2FzZXMpIHtcbiAgICAgICAgaWYgKGFDYXNlLmNhc2VJZCA9PT0gY2FzZUlkKSB7XG4gICAgICAgICAgaWYgKGFDYXNlLnBlbmRpbmdTaGFyZXMgJiYgYUNhc2UucGVuZGluZ1NoYXJlcy5zb21lKHUgPT4gdS5pZGFtSWQgPT09IHVzZXIuaWRhbUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhQ2FzZS5wZW5kaW5nVW5zaGFyZXMgJiYgYUNhc2UucGVuZGluZ1Vuc2hhcmVzLnNvbWUodSA9PiB1LmlkYW1JZCA9PT0gdXNlci5pZGFtSWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGlzVG9CZVJlbW92ZWQoY2FzZUlkOiBzdHJpbmcsIHVzZXI6IFVzZXJEZXRhaWxzKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hhcmVDYXNlcyQucGlwZShtYXAoY2FzZXMgPT4ge1xuICAgICAgZm9yIChjb25zdCBhQ2FzZSBvZiBjYXNlcykge1xuICAgICAgICBpZiAoYUNhc2UuY2FzZUlkID09PSBjYXNlSWQpIHtcbiAgICAgICAgICByZXR1cm4gYUNhc2UucGVuZGluZ1Vuc2hhcmVzICYmIGFDYXNlLnBlbmRpbmdVbnNoYXJlcy5zb21lKHUgPT4gdS5pZGFtSWQgPT09IHVzZXIuaWRhbUlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RvQmVBZGRlZChjYXNlSWQ6IHN0cmluZywgdXNlcjogVXNlckRldGFpbHMpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zaGFyZUNhc2VzJC5waXBlKG1hcChjYXNlcyA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGFDYXNlIG9mIGNhc2VzKSB7XG4gICAgICAgIGlmIChhQ2FzZS5jYXNlSWQgPT09IGNhc2VJZCkge1xuICAgICAgICAgIHJldHVybiBhQ2FzZS5wZW5kaW5nU2hhcmVzICYmIGFDYXNlLnBlbmRpbmdTaGFyZXMuc29tZSh1ID0+IHUuaWRhbUlkID09PSB1c2VyLmlkYW1JZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgb25SZW1vdmUodXNlcjogVXNlckRldGFpbHMsIHNoYXJlZENhc2U6IFNoYXJlZENhc2UpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5yZXF1ZXN0VW5zaGFyZSh1c2VyLCBzaGFyZWRDYXNlLmNhc2VJZCk7XG4gICAgdGhpcy5zeW5jaHJvbml6ZVN0b3JlLmVtaXQodGhpcy5zaGFyZUNhc2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhbmNlbCh1c2VyOiBVc2VyRGV0YWlscywgc2hhcmVkQ2FzZTogU2hhcmVkQ2FzZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnJlcXVlc3RDYW5jZWwoc2hhcmVkQ2FzZS5jYXNlSWQsIHVzZXIpO1xuICAgIHRoaXMuc3luY2hyb25pemVTdG9yZS5lbWl0KHRoaXMuc2hhcmVDYXNlcyk7XG4gIH1cblxuICBwdWJsaWMgc2hvd05vVXNlcnNBY2Nlc3NJbmZvKCk6IGJvb2xlYW4ge1xuICAgIC8vIEEgdXNlciBpcyBhZGRlZCB0byBhIGNhc2VcbiAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMpIHtcbiAgICAgIGlmICh0aGlzLnNoYXJlZENhc2UucGVuZGluZ1NoYXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQSBjYXNlIGhhcyAwIHVzZXJzIHdpdGggYWNjZXNzIHRvIGl0XG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoKSB7XG4gICAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBY2Nlc3MgdG8gdGhlIGxhc3QgdXNlciBpcyByZW1vdmVkXG4gICAgaWYgKHRoaXMuc2hhcmVkQ2FzZS5zaGFyZWRXaXRoICYmIHRoaXMuc2hhcmVkQ2FzZS5wZW5kaW5nVW5zaGFyZXMpIHtcbiAgICAgIGlmICh0aGlzLnNoYXJlZENhc2UucGVuZGluZ1Vuc2hhcmVzLmxlbmd0aCA+IDBcbiAgICAgICAgJiYgdGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGgubGVuZ3RoID09PSB0aGlzLnNoYXJlZENhc2UucGVuZGluZ1Vuc2hhcmVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNob3dVc2VySGFzQWNjZXNzSW5mbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd05vVXNlcnNBY2Nlc3NJbmZvKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1VzZXJBY2Nlc3NUYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnBlbmRpbmdTaGFyZXMpIHtcbiAgICAgIGlmICh0aGlzLnNoYXJlZENhc2UucGVuZGluZ1NoYXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zaGFyZWRDYXNlLnNoYXJlZFdpdGgpIHtcbiAgICAgIGlmICh0aGlzLnNoYXJlZENhc2Uuc2hhcmVkV2l0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgY29tYmluZUFuZFNvcnRTaGFyZXMoc2hhcmVkV2l0aDogVXNlckRldGFpbHNbXSwgcGVuZGluZ1NoYXJlczogVXNlckRldGFpbHNbXSk6IFVzZXJEZXRhaWxzW10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5zaGFyZWRXaXRoLFxuICAgICAgLi4ucGVuZGluZ1NoYXJlc1xuICAgIF0uc29ydCgodXNlcjEsIHVzZXIyKSA9PiB7XG4gICAgICByZXR1cm4gdXNlcjEuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgPiB1c2VyMi5maXJzdE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAodXNlcjIuZmlyc3ROYW1lLnRvTG93ZXJDYXNlKCkgPiB1c2VyMS5maXJzdE5hbWUudG9Mb3dlckNhc2UoKSA/IC0xIDogMCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXNlcklkU2V0dGVyKGlzUGVuZGluZzogYm9vbGVhbiwgaWQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzUGVuZGluZyA/IGBwZW5kaW5nU2hhcmVzLSR7aWR9YCA6IGAke2lkfWA7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRFbGVtZW50SWQoZWxlbWVudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2VsZW1lbnROYW1lfS0ke3RoaXMuc2hhcmVkQ2FzZS5jYXNlSWR9YDtcbiAgfVxufVxuIiwiPGRpdiBpZD1cInt7YnVpbGRFbGVtZW50SWQoJ2dvdnVrLWFjY29yZGlvbl9fc2VjdGlvbicpfX1cIiBjbGFzcz1cImdvdnVrLWFjY29yZGlvbl9fc2VjdGlvblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvdyBnb3Z1ay1jYXNlLWhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXRocmVlLXF1YXJ0ZXJzXCI+XHJcbiAgICAgIDxoMyBpZD1cInt7YnVpbGRFbGVtZW50SWQoJ2Nhc2UtdGl0bGUnKX19XCIgY2xhc3M9XCJnb3Z1ay1jYXNlLXRpdGxlXCI+e3sgc2hhcmVkQ2FzZS5jYXNlVGl0bGUgfCBycHhUcmFuc2xhdGUgfX08L2gzPlxyXG4gICAgICA8aDMgaWQ9XCJ7e2J1aWxkRWxlbWVudElkKCdjYXNlLWlkJyl9fVwiIGNsYXNzPVwiZ292dWstY2FzZS1zdWItdGl0bGVcIj57eyBzaGFyZWRDYXNlLmNhc2VJZCB8IHJweFRyYW5zbGF0ZSB9fTwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10ZW4tcGVyY2VudFwiPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwiY2FzZUNvdW50ID4gMVwiXHJcbiAgICAgICAgaWQ9XCJ7e2J1aWxkRWxlbWVudElkKCdidG4tZGVzZWxlY3QtY2FzZScpfX1cIlxyXG4gICAgICAgIGNsYXNzPVwiZ292dWstYnV0dG9uIGhtY3RzLWJ1dHRvbi0tc2Vjb25kYXJ5XCJcclxuICAgICAgICAoY2xpY2spPVwib25EZXNlbGVjdChzaGFyZWRDYXNlKVwiIHRpdGxlPVwiRGVzZWxlY3QgY2FzZVwiPlxyXG4gICAgICAgIHt7J0Rlc2VsZWN0IGNhc2UnIHwgcnB4VHJhbnNsYXRlfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1hY2NvcmRpb25fX3NlY3Rpb24taGVhZGVyIGdvdnVrLWdyaWQtY29sdW1uLXRlbi1wZXJjZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1hY2NvcmRpb25fX3NlY3Rpb24taGVhZGluZ1wiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwie3tidWlsZEVsZW1lbnRJZCgnYWNjb3JkaW9uLXdpdGgtc3VtbWFyeS1zZWN0aW9ucy1oZWFkaW5nJyl9fVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCInYWNjb3JkaW9uLXdpdGgtc3VtbWFyeS1zZWN0aW9ucy1jb250ZW50JyArIGJ1aWxkRWxlbWVudElkKCdhY2NvcmRpb24td2l0aC1zdW1tYXJ5LXNlY3Rpb25zLWhlYWRpbmcnKVwiIGNsYXNzPVwiZ292dWstYWNjb3JkaW9uX19zZWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIFt0aXRsZV09XCInRXhwYW5kIG9yIENvbGxhcHNlJyB8IHJweFRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstYWNjb3JkaW9uX19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgaWQ9XCJ7e2J1aWxkRWxlbWVudElkKCdhY2NvcmRpb24td2l0aC1zdW1tYXJ5LXNlY3Rpb25zLWNvbnRlbnQnKX19XCIgY2xhc3M9XCJnb3Z1ay1hY2NvcmRpb25fX3NlY3Rpb24tY29udGVudFwiXHJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYnVpbGRFbGVtZW50SWQoJ2FjY29yZGlvbi13aXRoLXN1bW1hcnktc2VjdGlvbnMtaGVhZGluZycpXCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCIgKm5nSWY9XCJzaG93Tm9Vc2Vyc0FjY2Vzc0luZm8oKVwiPlxyXG4gICAgICA8c3BhbiBpZD1cInt7YnVpbGRFbGVtZW50SWQoJ2FjY2Vzcy1pbmZvLW5vLXVzZXInKX19XCIgY2xhc3M9XCJnb3Z1ay1kaXYtYWxpZ24tbGVmdFwiPlxyXG4gICAgICAgIHt7J05vIHVzZXJzIGZyb20geW91ciBvcmdhbmlzYXRpb24gY3VycmVudGx5IGhhdmUgYWNjZXNzIHRvIHRoaXMgY2FzZS4nIHwgcnB4VHJhbnNsYXRlfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIiAqbmdJZj1cInNob3dVc2VySGFzQWNjZXNzSW5mbygpXCI+XHJcbiAgICAgIDxzcGFuIGlkPVwie3tidWlsZEVsZW1lbnRJZCgnYWNjZXNzLWluZm8taGFzLXVzZXJzJyl9fVwiIGNsYXNzPVwiZ292dWstZGl2LWFsaWduLWxlZnRcIj5cclxuICAgICAgICB7eydVc2VycyBmcm9tIHlvdXIgb3JnYW5pc2F0aW9uIHdpdGggYWNjZXNzIHRvIHRoaXMgY2FzZS4nIHwgcnB4VHJhbnNsYXRlfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiICpuZ0lmPVwic2hvd1VzZXJBY2Nlc3NUYWJsZSgpXCI+XHJcbiAgICAgIDx0aGVhZCBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkXCI+XHJcbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cclxuICAgICAgICA8dGggaWQ9XCJ7e2J1aWxkRWxlbWVudElkKCduYW1lLWhlYWRpbmcnKX19XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGdvdnVrLXRhYmxlLWNvbHVtbi1oZWFkZXJcIiBzY29wZT1cImNvbFwiPnt7J05hbWUnIHwgcnB4VHJhbnNsYXRlfX08L3RoPlxyXG4gICAgICAgIDx0aCBpZD1cInt7YnVpbGRFbGVtZW50SWQoJ2VtYWlsLWhlYWRpbmcnKX19XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGdvdnVrLXRhYmxlLWNvbHVtbi1oZWFkZXJcIiBzY29wZT1cImNvbFwiPnt7J0VtYWlsIGFkZHJlc3MnIHwgcnB4VHJhbnNsYXRlfX08L3RoPlxyXG4gICAgICAgIDx0aCBpZD1cInt7YnVpbGRFbGVtZW50SWQoJ2FjdGlvbi1oZWFkaW5nJyl9fVwiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBnb3Z1ay10YWJsZS1jb2x1bW4tYWN0aW9uc1wiIHNjb3BlPVwiY29sXCI+e3snQWN0aW9ucycgfCBycHhUcmFuc2xhdGV9fTwvdGg+XHJcbiAgICAgICAgPHRoIGlkPVwie3tidWlsZEVsZW1lbnRJZCgnbGFiZWwtaGVhZGluZycpfX1cIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgZ292dWstdGFibGUtY29sdW1uLWxhYmVsXCIgc2NvcGU9XCJjb2xcIj57eyAnU3RhdHVzJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XHJcbiAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0Zvcj1cImxldCB1c2VyIG9mIGNvbWJpbmVkU29ydGVkU2hhcmVzOyBpbmRleCBhcyBpZHg7IHRyYWNrQnk6IHRyYWNrQnlVc2VySWRcIj5cclxuICAgICAgICAgIDx0ZCBpZD1cInVzZXItZnVsbC1uYW1lLXt7IHVzZXJJZFNldHRlcihjYW5DYW5jZWwoc2hhcmVkQ2FzZS5jYXNlSWQsIHVzZXIpIHwgYXN5bmMsIGlkeCkgfX1cIiBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgdXNlci5maXJzdE5hbWUgKyAnICcgKyB1c2VyLmxhc3ROYW1lIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBpZD1cInVzZXItZW1haWwte3sgdXNlcklkU2V0dGVyKGNhbkNhbmNlbChzaGFyZWRDYXNlLmNhc2VJZCwgdXNlcikgfCBhc3luYywgaWR4KSB9fVwiIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyB1c2VyLmVtYWlsIH19PC90ZD5cclxuICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+XHJcbiAgICAgICAgICAgIDxhICpuZ0lmPVwiY2FuUmVtb3ZlKHNoYXJlZENhc2UuY2FzZUlkLCB1c2VyKSB8IGFzeW5jXCIgKGNsaWNrKT1cIm9uUmVtb3ZlKHVzZXIsIHNoYXJlZENhc2UpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIGhyZWY9XCIjXCI+e3snUmVtb3ZlJyB8IHJweFRyYW5zbGF0ZX19IDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3sgdXNlci5maXJzdE5hbWUgKyAnICcgKyB1c2VyLmxhc3ROYW1lIH19IHt7J2Zyb20gY2FzZScgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgIDxhICpuZ0lmPVwiY2FuQ2FuY2VsKHNoYXJlZENhc2UuY2FzZUlkLCB1c2VyKSB8IGFzeW5jXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKHVzZXIsIHNoYXJlZENhc2UpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIGhyZWY9XCIjXCI+e3snQ2FuY2VsJyB8IHJweFRyYW5zbGF0ZX19IDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snYWRkaW5nJyB8IHJweFRyYW5zbGF0ZX19IHt7IHVzZXIuZmlyc3ROYW1lICsgJyAnICsgdXNlci5sYXN0TmFtZSB9fSB7eyd0byBjYXNlJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPjwvYT5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzVG9CZVJlbW92ZWQoc2hhcmVkQ2FzZS5jYXNlSWQsIHVzZXIpIHwgYXN5bmNcIiBjbGFzcz1cImhtY3RzLWJhZGdlIGhtY3RzLWJhZGdlLS1yZWRcIj57eydUbyBiZSByZW1vdmVkJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzVG9CZUFkZGVkKHNoYXJlZENhc2UuY2FzZUlkLCB1c2VyKSB8IGFzeW5jXCIgY2xhc3M9XCJobWN0cy1iYWRnZVwiPnt7J1RvIGJlIGFkZGVkJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==