@hmcts/ccd-case-ui-toolkit 6.14.4 → 6.14.5-activity-tracker-2

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 (299) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +4491 -4141
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +11 -1
  6. package/esm2015/lib/components/banners/index.js +2 -1
  7. package/esm2015/lib/components/banners/notification-banner/index.js +2 -1
  8. package/esm2015/lib/components/body/index.js +2 -1
  9. package/esm2015/lib/components/footer/index.js +2 -1
  10. package/esm2015/lib/components/form/date-input/date-input.component.js +8 -8
  11. package/esm2015/lib/components/form/index.js +2 -1
  12. package/esm2015/lib/components/header/header-bar/header-bar.component.js +2 -3
  13. package/esm2015/lib/shared/commons/case-edit-data/case-edit-data.module.js +1 -1
  14. package/esm2015/lib/shared/commons/case-edit-data/case-edit-validation.model.js +1 -1
  15. package/esm2015/lib/shared/components/activity/activity-banner/activity-banner.component.js +5 -5
  16. package/esm2015/lib/shared/components/activity/activity-icon/activity-icon.component.js +2 -2
  17. package/esm2015/lib/shared/components/activity/activity.module.js +13 -13
  18. package/esm2015/lib/shared/components/activity/case-activity.component.js +174 -0
  19. package/esm2015/lib/shared/components/activity/index.js +2 -2
  20. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +1 -1
  21. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +4 -4
  22. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +4 -4
  23. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +1 -1
  24. package/esm2015/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.js +2 -1
  25. package/esm2015/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.js +3 -3
  26. package/esm2015/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.js +2 -1
  27. package/esm2015/lib/shared/components/case-editor/domain/wizard-page-field.model.js +1 -1
  28. package/esm2015/lib/shared/components/case-editor/domain/wizard-page.model.js +2 -1
  29. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +11 -22
  30. package/esm2015/lib/shared/components/case-editor/services/page-validation.service.js +2 -2
  31. package/esm2015/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.js +12 -12
  32. package/esm2015/lib/shared/components/case-editor/services/work-allocation.service.js +1 -1
  33. package/esm2015/lib/shared/components/case-history/domain/case-history.model.js +2 -1
  34. package/esm2015/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.js +5 -5
  35. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +29 -16
  36. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +40 -20
  37. package/esm2015/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.js +4 -4
  38. package/esm2015/lib/shared/components/case-viewer/case-viewer.component.js +5 -5
  39. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +7 -5
  40. package/esm2015/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.js +3 -3
  41. package/esm2015/lib/shared/components/case-viewer/services/case.resolver.js +2 -2
  42. package/esm2015/lib/shared/components/error/callback-errors.component.js +5 -5
  43. package/esm2015/lib/shared/components/error/domain/error-context.js +1 -1
  44. package/esm2015/lib/shared/components/event-start/event-guard/event-start.guard.js +2 -2
  45. package/esm2015/lib/shared/components/pagination/pagination.component.js +10 -10
  46. package/esm2015/lib/shared/components/palette/address/address-option.model.js +4 -7
  47. package/esm2015/lib/shared/components/palette/address/write-address-field.component.js +4 -4
  48. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-table/case-flag-table.component.js +1 -1
  49. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.js +2 -2
  50. package/esm2015/lib/shared/components/palette/case-flag/enums/index.js +1 -1
  51. package/esm2015/lib/shared/components/palette/collection/collection-create-checker.service.js +5 -5
  52. package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +9 -9
  53. package/esm2015/lib/shared/components/palette/complex/read-complex-field-collection-table.component.js +4 -3
  54. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.js +1 -1
  55. package/esm2015/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.js +1 -1
  56. package/esm2015/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.js +1 -1
  57. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.js +2 -2
  58. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.js +1 -1
  59. package/esm2015/lib/shared/components/palette/linked-cases/domain/linked-cases.model.js +2 -1
  60. package/esm2015/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.js +2 -2
  61. package/esm2015/lib/shared/components/palette/linked-cases/services/linked-cases.service.js +2 -3
  62. package/esm2015/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.js +3 -4
  63. package/esm2015/lib/shared/components/palette/order-summary/fee.model.js +2 -1
  64. package/esm2015/lib/shared/components/palette/order-summary/order-summary.model.js +1 -1
  65. package/esm2015/lib/shared/components/palette/palette.module.js +2 -2
  66. package/esm2015/lib/shared/components/palette/palette.service.js +2 -2
  67. package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +2 -2
  68. package/esm2015/lib/shared/components/palette/utils/date.pipe.js +4 -4
  69. package/esm2015/lib/shared/components/palette/yes-no/yes-no.service.js +3 -1
  70. package/esm2015/lib/shared/components/search-filters/domain/search-input.model.js +1 -1
  71. package/esm2015/lib/shared/components/search-filters/search-filters.component.js +2 -2
  72. package/esm2015/lib/shared/components/search-result/search-result.component.js +42 -28
  73. package/esm2015/lib/shared/components/search-result/search-result.module.js +2 -2
  74. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +3 -3
  75. package/esm2015/lib/shared/directives/conditional-show/domain/conditional-show.model.js +4 -3
  76. package/esm2015/lib/shared/directives/conditional-show/services/condition-parser.service.js +5 -9
  77. package/esm2015/lib/shared/domain/activity/activity.model.js +1 -1
  78. package/esm2015/lib/shared/domain/activity/case-activity-info.model.js +3 -0
  79. package/esm2015/lib/shared/domain/activity/case-activity.model.js +3 -0
  80. package/esm2015/lib/shared/domain/activity/index.js +4 -1
  81. package/esm2015/lib/shared/domain/activity/user.model.js +3 -0
  82. package/esm2015/lib/shared/domain/addresses/address.model.js +2 -1
  83. package/esm2015/lib/shared/domain/case-details.model.js +2 -1
  84. package/esm2015/lib/shared/domain/case-event-data.model.js +2 -1
  85. package/esm2015/lib/shared/domain/case-file-view/case-file-view-category.model.js +1 -1
  86. package/esm2015/lib/shared/domain/case-file-view/case-file-view-document.model.js +2 -1
  87. package/esm2015/lib/shared/domain/case-file-view/categories-and-documents.model.js +1 -1
  88. package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.js +2 -1
  89. package/esm2015/lib/shared/domain/case-flag/flag-type.model.js +2 -1
  90. package/esm2015/lib/shared/domain/case-flag/hmcts-service-detail.model.js +2 -1
  91. package/esm2015/lib/shared/domain/case-view/case-event-trigger.model.js +2 -1
  92. package/esm2015/lib/shared/domain/case-view/case-tab.model.js +2 -1
  93. package/esm2015/lib/shared/domain/case-view/case-view-event.model.js +2 -1
  94. package/esm2015/lib/shared/domain/case-view/case-view.model.js +2 -1
  95. package/esm2015/lib/shared/domain/case-view/role-assignment-response.model.js +1 -1
  96. package/esm2015/lib/shared/domain/case-view/role-request.model.js +1 -1
  97. package/esm2015/lib/shared/domain/definition/case-event.model.js +1 -1
  98. package/esm2015/lib/shared/domain/definition/case-field.model.js +2 -1
  99. package/esm2015/lib/shared/domain/definition/case-type.model.js +2 -1
  100. package/esm2015/lib/shared/domain/definition/event-case-field.model.js +2 -1
  101. package/esm2015/lib/shared/domain/definition/field-type.model.js +2 -1
  102. package/esm2015/lib/shared/domain/document/document-data.model.js +2 -1
  103. package/esm2015/lib/shared/domain/organisation/organisation-converter.js +8 -8
  104. package/esm2015/lib/shared/domain/pagination-metadata.model.js +1 -1
  105. package/esm2015/lib/shared/domain/search/field.model.js +1 -1
  106. package/esm2015/lib/shared/domain/search/index.js +2 -1
  107. package/esm2015/lib/shared/domain/search/search-result-view-column.model.js +1 -1
  108. package/esm2015/lib/shared/domain/search/search-result-view-item.model.js +2 -1
  109. package/esm2015/lib/shared/domain/search/search-result-view.model.js +2 -1
  110. package/esm2015/lib/shared/domain/search/sorting/index.js +4 -0
  111. package/esm2015/lib/shared/domain/user/index.js +3 -0
  112. package/esm2015/lib/shared/domain/user/user-info.model.js +1 -1
  113. package/esm2015/lib/shared/domain/workbasket/workbasket-input.model.js +1 -8
  114. package/esm2015/lib/shared/fixture/case-field-builder.js +13 -13
  115. package/esm2015/lib/shared/fixture/shared.test.fixture.js +27 -27
  116. package/esm2015/lib/shared/pipes/complex/{cdd-page-fields.pipe.js → ccd-page-fields.pipe.js} +3 -3
  117. package/esm2015/lib/shared/pipes/complex/index.js +2 -2
  118. package/esm2015/lib/shared/services/activity/activity-socket.service.js +91 -0
  119. package/esm2015/lib/shared/services/activity/activity.polling.service.js +26 -11
  120. package/esm2015/lib/shared/services/activity/activity.service.js +51 -26
  121. package/esm2015/lib/shared/services/activity/index.js +2 -1
  122. package/esm2015/lib/shared/services/activity/utils/index.js +118 -0
  123. package/esm2015/lib/shared/services/addresses/address-parser.js +5 -5
  124. package/esm2015/lib/shared/services/case-fields/format-translator.service.js +2 -2
  125. package/esm2015/lib/shared/services/case-flag/case-flag-refdata.service.js +2 -2
  126. package/esm2015/lib/shared/services/common-data-service/common-data-service.js +2 -2
  127. package/esm2015/lib/shared/services/definitions/definitions.service.js +3 -8
  128. package/esm2015/lib/shared/services/fields/fields.purger.js +15 -15
  129. package/esm2015/lib/shared/services/fields/fields.utils.js +5 -4
  130. package/esm2015/lib/shared/services/form/field-type-sanitiser.js +2 -1
  131. package/esm2015/lib/shared/services/form/form-value.service.js +1 -2
  132. package/esm2015/lib/shared/services/loading/loading.service.js +2 -7
  133. package/esm2015/lib/shared/services/search/search.service.js +5 -10
  134. package/esm2015/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.js +5 -5
  135. package/esm2015/lib/shared/services/window/window.service.js +1 -1
  136. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +5379 -5080
  137. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  138. package/lib/app.config.d.ts +10 -0
  139. package/lib/app.config.d.ts.map +1 -1
  140. package/lib/components/banners/index.d.ts +1 -0
  141. package/lib/components/banners/index.d.ts.map +1 -1
  142. package/lib/components/banners/notification-banner/index.d.ts +1 -0
  143. package/lib/components/banners/notification-banner/index.d.ts.map +1 -1
  144. package/lib/components/body/index.d.ts +1 -0
  145. package/lib/components/body/index.d.ts.map +1 -1
  146. package/lib/components/footer/index.d.ts +1 -0
  147. package/lib/components/footer/index.d.ts.map +1 -1
  148. package/lib/components/form/index.d.ts +1 -0
  149. package/lib/components/form/index.d.ts.map +1 -1
  150. package/lib/components/header/header-bar/header-bar.component.d.ts.map +1 -1
  151. package/lib/shared/commons/case-edit-data/case-edit-data.module.d.ts.map +1 -1
  152. package/lib/shared/commons/case-edit-data/case-edit-validation.model.d.ts.map +1 -1
  153. package/lib/shared/components/activity/activity.module.d.ts +4 -4
  154. package/lib/shared/components/activity/activity.module.d.ts.map +1 -1
  155. package/lib/shared/components/activity/case-activity.component.d.ts +32 -0
  156. package/lib/shared/components/activity/case-activity.component.d.ts.map +1 -0
  157. package/lib/shared/components/activity/index.d.ts +1 -1
  158. package/lib/shared/components/activity/index.d.ts.map +1 -1
  159. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +3 -3
  160. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  161. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  162. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -1
  163. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +2 -2
  164. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  165. package/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.d.ts.map +1 -1
  166. package/lib/shared/components/case-editor/domain/wizard-page-field.model.d.ts.map +1 -1
  167. package/lib/shared/components/case-editor/domain/wizard-page.model.d.ts.map +1 -1
  168. package/lib/shared/components/case-editor/services/cases.service.d.ts +1 -3
  169. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  170. package/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.d.ts.map +1 -1
  171. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  172. package/lib/shared/components/case-history/domain/case-history.model.d.ts.map +1 -1
  173. package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -1
  174. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +5 -4
  175. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  176. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +7 -4
  177. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  178. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -1
  179. package/lib/shared/components/case-viewer/case-viewer.module.d.ts.map +1 -1
  180. package/lib/shared/components/case-viewer/printer/pipes/print-url.pipe.d.ts.map +1 -1
  181. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  182. package/lib/shared/components/error/domain/error-context.d.ts +2 -2
  183. package/lib/shared/components/error/domain/error-context.d.ts.map +1 -1
  184. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +1 -1
  185. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  186. package/lib/shared/components/pagination/pagination.component.d.ts +3 -3
  187. package/lib/shared/components/pagination/pagination.component.d.ts.map +1 -1
  188. package/lib/shared/components/palette/address/address-option.model.d.ts.map +1 -1
  189. package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
  190. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  191. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  192. package/lib/shared/components/palette/collection/collection-create-checker.service.d.ts.map +1 -1
  193. package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
  194. package/lib/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts +1 -1
  195. package/lib/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts.map +1 -1
  196. package/lib/shared/components/palette/dynamic-multi-select-list/read-dynamic-multi-select-list-field.component.d.ts.map +1 -1
  197. package/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.d.ts.map +1 -1
  198. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts +4 -4
  199. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts.map +1 -1
  200. package/lib/shared/components/palette/linked-cases/domain/linked-cases.model.d.ts.map +1 -1
  201. package/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.d.ts.map +1 -1
  202. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
  203. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  204. package/lib/shared/components/palette/order-summary/fee.model.d.ts.map +1 -1
  205. package/lib/shared/components/palette/order-summary/order-summary.model.d.ts.map +1 -1
  206. package/lib/shared/components/palette/text-area/write-text-area-field.component.d.ts.map +1 -1
  207. package/lib/shared/components/palette/utils/date.pipe.d.ts.map +1 -1
  208. package/lib/shared/components/palette/yes-no/yes-no.service.d.ts.map +1 -1
  209. package/lib/shared/components/search-filters/domain/search-input.model.d.ts.map +1 -1
  210. package/lib/shared/components/search-result/search-result.component.d.ts +9 -6
  211. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
  212. package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -1
  213. package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts.map +1 -1
  214. package/lib/shared/directives/conditional-show/services/condition-parser.service.d.ts.map +1 -1
  215. package/lib/shared/domain/activity/activity.model.d.ts +1 -0
  216. package/lib/shared/domain/activity/activity.model.d.ts.map +1 -1
  217. package/lib/shared/domain/activity/case-activity-info.model.d.ts +9 -0
  218. package/lib/shared/domain/activity/case-activity-info.model.d.ts.map +1 -0
  219. package/lib/shared/domain/activity/case-activity.model.d.ts +5 -0
  220. package/lib/shared/domain/activity/case-activity.model.d.ts.map +1 -0
  221. package/lib/shared/domain/activity/index.d.ts +3 -0
  222. package/lib/shared/domain/activity/index.d.ts.map +1 -1
  223. package/lib/shared/domain/activity/user.model.d.ts +6 -0
  224. package/lib/shared/domain/activity/user.model.d.ts.map +1 -0
  225. package/lib/shared/domain/addresses/address.model.d.ts.map +1 -1
  226. package/lib/shared/domain/case-details.model.d.ts.map +1 -1
  227. package/lib/shared/domain/case-event-data.model.d.ts.map +1 -1
  228. package/lib/shared/domain/case-file-view/case-file-view-category.model.d.ts.map +1 -1
  229. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts.map +1 -1
  230. package/lib/shared/domain/case-file-view/categories-and-documents.model.d.ts.map +1 -1
  231. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +1 -1
  232. package/lib/shared/domain/case-flag/flag-type.model.d.ts.map +1 -1
  233. package/lib/shared/domain/case-flag/hmcts-service-detail.model.d.ts.map +1 -1
  234. package/lib/shared/domain/case-view/case-event-trigger.model.d.ts.map +1 -1
  235. package/lib/shared/domain/case-view/case-tab.model.d.ts.map +1 -1
  236. package/lib/shared/domain/case-view/case-view-event.model.d.ts.map +1 -1
  237. package/lib/shared/domain/case-view/case-view.model.d.ts.map +1 -1
  238. package/lib/shared/domain/case-view/role-assignment-response.model.d.ts +1 -2
  239. package/lib/shared/domain/case-view/role-assignment-response.model.d.ts.map +1 -1
  240. package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -1
  241. package/lib/shared/domain/definition/case-event.model.d.ts.map +1 -1
  242. package/lib/shared/domain/definition/case-field.model.d.ts.map +1 -1
  243. package/lib/shared/domain/definition/case-type.model.d.ts.map +1 -1
  244. package/lib/shared/domain/definition/event-case-field.model.d.ts.map +1 -1
  245. package/lib/shared/domain/definition/field-type.model.d.ts.map +1 -1
  246. package/lib/shared/domain/document/document-data.model.d.ts.map +1 -1
  247. package/lib/shared/domain/organisation/organisation-converter.d.ts.map +1 -1
  248. package/lib/shared/domain/pagination-metadata.model.d.ts +2 -2
  249. package/lib/shared/domain/pagination-metadata.model.d.ts.map +1 -1
  250. package/lib/shared/domain/search/field.model.d.ts.map +1 -1
  251. package/lib/shared/domain/search/index.d.ts +1 -0
  252. package/lib/shared/domain/search/index.d.ts.map +1 -1
  253. package/lib/shared/domain/search/search-result-view-column.model.d.ts.map +1 -1
  254. package/lib/shared/domain/search/search-result-view-item.model.d.ts.map +1 -1
  255. package/lib/shared/domain/search/search-result-view.model.d.ts +0 -1
  256. package/lib/shared/domain/search/search-result-view.model.d.ts.map +1 -1
  257. package/lib/shared/domain/search/sorting/index.d.ts +4 -0
  258. package/lib/shared/domain/search/sorting/index.d.ts.map +1 -0
  259. package/lib/shared/domain/user/index.d.ts +3 -0
  260. package/lib/shared/domain/user/index.d.ts.map +1 -0
  261. package/lib/shared/domain/user/user-info.model.d.ts.map +1 -1
  262. package/lib/shared/domain/workbasket/workbasket-input.model.d.ts +0 -1
  263. package/lib/shared/domain/workbasket/workbasket-input.model.d.ts.map +1 -1
  264. package/lib/shared/fixture/case-field-builder.d.ts +6 -6
  265. package/lib/shared/fixture/case-field-builder.d.ts.map +1 -1
  266. package/lib/shared/fixture/shared.test.fixture.d.ts +6 -6
  267. package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -1
  268. package/lib/shared/pipes/complex/{cdd-page-fields.pipe.d.ts → ccd-page-fields.pipe.d.ts} +1 -1
  269. package/lib/shared/pipes/complex/ccd-page-fields.pipe.d.ts.map +1 -0
  270. package/lib/shared/pipes/complex/index.d.ts +1 -1
  271. package/lib/shared/pipes/pipes.module.d.ts +1 -1
  272. package/lib/shared/services/activity/activity-socket.service.d.ts +33 -0
  273. package/lib/shared/services/activity/activity-socket.service.d.ts.map +1 -0
  274. package/lib/shared/services/activity/activity.polling.service.d.ts +6 -5
  275. package/lib/shared/services/activity/activity.polling.service.d.ts.map +1 -1
  276. package/lib/shared/services/activity/activity.service.d.ts +14 -5
  277. package/lib/shared/services/activity/activity.service.d.ts.map +1 -1
  278. package/lib/shared/services/activity/index.d.ts +1 -0
  279. package/lib/shared/services/activity/index.d.ts.map +1 -1
  280. package/lib/shared/services/activity/utils/index.d.ts +40 -0
  281. package/lib/shared/services/activity/utils/index.d.ts.map +1 -0
  282. package/lib/shared/services/addresses/address-parser.d.ts.map +1 -1
  283. package/lib/shared/services/common-data-service/common-data-service.d.ts.map +1 -1
  284. package/lib/shared/services/definitions/definitions.service.d.ts.map +1 -1
  285. package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
  286. package/lib/shared/services/fields/fields.utils.d.ts +0 -1
  287. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  288. package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
  289. package/lib/shared/services/loading/loading.service.d.ts +1 -4
  290. package/lib/shared/services/loading/loading.service.d.ts.map +1 -1
  291. package/lib/shared/services/search/search.service.d.ts +0 -2
  292. package/lib/shared/services/search/search.service.d.ts.map +1 -1
  293. package/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.d.ts.map +1 -1
  294. package/lib/shared/services/window/window.service.d.ts.map +1 -1
  295. package/package.json +2 -2
  296. package/esm2015/lib/shared/components/activity/activity.component.js +0 -150
  297. package/lib/shared/components/activity/activity.component.d.ts +0 -32
  298. package/lib/shared/components/activity/activity.component.d.ts.map +0 -1
  299. package/lib/shared/pipes/complex/cdd-page-fields.pipe.d.ts.map +0 -1
@@ -199,7 +199,7 @@ export class WorkbasketFiltersComponent {
199
199
  const formValue = this.windowService.getLocalStorage(FORM_GROUP_VAL_LOC_STORAGE);
200
200
  workbasketInputs.forEach(item => {
201
201
  if (item.field.elementPath) {
202
- item.field.id = item.field.id + '.' + item.field.elementPath;
202
+ item.field.id = `${item.field.id}.${item.field.elementPath}`;
203
203
  }
204
204
  item.field.label = item.label;
205
205
  if (formValue) {
@@ -251,7 +251,7 @@ export class WorkbasketFiltersComponent {
251
251
  const value = formGroupLS[key];
252
252
  // Clear the filter form group control values if it has a value in local storage
253
253
  // The regionList form group control value should be ignored as it always contain the latest value
254
- if (key !== REGION_LIST_AND_FRC_FILTER && value != null) {
254
+ if (key !== REGION_LIST_AND_FRC_FILTER && value !== null) {
255
255
  this.formGroup.get(key).setValue(null);
256
256
  }
257
257
  }
@@ -441,4 +441,4 @@ WorkbasketFiltersComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WorkbasketFilt
441
441
  }], onReset: [{
442
442
  type: Output
443
443
  }] }); })();
444
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7Ozs7O0lDTm5HLGtDQUFxRDtJQUFBLDhCQUFjO0lBQUEsaUJBQVM7O0lBQXhDLDhCQUFnQjs7O0lBQ3BELGtDQUFzRDtJ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QStCO1FBQS9CLCtDQUErQiwrQ0FBQTtRQUU3QyxlQUF5QjtRQUF6Qiw4Q0FBeUI7UUFDWCxlQUFnQztRQUFoQywyREFBZ0M7UUFPcEMsZUFBZ0M7UUFBaEMsZ0RBQWdDLGdEQUFBO1FBRTNDLGVBQWdCO1FBQWhCLDhCQUFnQjtRQUNELGVBQXlCO1FBQXpCLG9EQUF5QjtRQUlkLGVBQTRDO1FBQTVDLGlFQUE0QztRQVFFLGVBQW9DO1FBQXBDLHNEQUFvQzs7dUZEaEI3RywwQkFBMEI7Y0FMdEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFdBQVcsRUFBRSxxQ0FBcUM7Z0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2FBQ25EO2dPQVNRLGFBQWE7a0JBRG5CLEtBQUs7WUFJQyxRQUFRO2tCQURkLEtBQUs7WUFJQyxPQUFPO2tCQURiLE1BQU07WUFJQSxPQUFPO2tCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlU3RhdGUgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IENhc2VUeXBlTGl0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtdHlwZS1saXRlLm1vZGVsJztcbmltcG9ydCB7IEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2p1cmlzZGljdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBXb3JrYmFza2V0SW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL2RvbWFpbi93b3JrYmFza2V0L3dvcmtiYXNrZXQtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgSnVyaXNkaWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2p1cmlzZGljdGlvbi9qdXJpc2RpY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlci9vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3cvd2luZG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Jhc2tldElucHV0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtiYXNrZXQvd29ya2Jhc2tldC1pbnB1dC1maWx0ZXIuc2VydmljZSc7XG5cbmNvbnN0IEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFID0gJ3dvcmtiYXNrZXQtZmlsdGVyLWZvcm0tZ3JvdXAtdmFsdWUnO1xuY29uc3QgU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UgPSAnc2F2ZWRRdWVyeVBhcmFtcyc7XG5jb25zdCBSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUiA9ICdyZWdpb25MaXN0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdvcmtiYXNrZXQtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrYmFza2V0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrYmFza2V0LWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9KVVJJU0RJQ1RJT04gPSAnanVyaXNkaWN0aW9uJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX1RZUEUgPSAnY2FzZS10eXBlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX1NUQVRFID0gJ2Nhc2Utc3RhdGUnO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGp1cmlzZGljdGlvbnM6IEp1cmlzZGljdGlvbltdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWZhdWx0cztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uQXBwbHk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25SZXNldDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHdvcmtiYXNrZXRJbnB1dHM6IFdvcmtiYXNrZXRJbnB1dE1vZGVsW107XG4gIHB1YmxpYyB3b3JrYmFza2V0SW5wdXRzUmVhZHk6IGJvb2xlYW47XG5cbiAgcHVibGljIHdvcmtiYXNrZXREZWZhdWx0czogYm9vbGVhbjtcblxuICBwdWJsaWMgc2VsZWN0ZWQ6IHtcbiAgICBpbml0PzogYm9vbGVhbixcbiAgICBqdXJpc2RpY3Rpb24/OiBKdXJpc2RpY3Rpb24sXG4gICAgY2FzZVR5cGU/OiBDYXNlVHlwZUxpdGUsXG4gICAgY2FzZVN0YXRlPzogQ2FzZVN0YXRlLFxuICAgIGZvcm1Hcm91cD86IEZvcm1Hcm91cCxcbiAgICBwYWdlPzogbnVtYmVyLFxuICAgIG1ldGFkYXRhRmllbGRzPzogc3RyaW5nW11cbiAgfTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXM/OiBDYXNlVHlwZUxpdGVbXTtcbiAgcHVibGljIHNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXM/OiBDYXNlU3RhdGVbXTtcblxuICBwdWJsaWMgaW5pdGlhbGlzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtiYXNrZXRJbnB1dEZpbHRlclNlcnZpY2U6IFdvcmtiYXNrZXRJbnB1dEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGp1cmlzZGljdGlvblNlcnZpY2U6IEp1cmlzZGljdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGlmICghdGhpcy5pbml0aWFsaXNlZCB8fCAhcGFyYW1zIHx8ICFPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmluaXRGaWx0ZXJzKGZhbHNlKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXNlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHkoaW5pdCk6IHZvaWQge1xuICAgIC8vIFNhdmUgZmlsdGVycyBhcyBxdWVyeSBwYXJhbWV0ZXJzIGZvciBjdXJyZW50IHJvdXRlXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24pIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0pVUklTRElDVElPTl0gPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5pZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0NBU0VfVFlQRV0gPSB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0NBU0VfU1RBVEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUuaWQ7XG4gICAgfVxuICAgIC8vIHdpdGhvdXQgZXhwbGljaXRseSBwcmVzZXJ2aW5nIGFsZXJ0cyBhbnkgbWVzc2FnZSBvbiB0aGUgcGFnZVxuICAgIC8vIHdvdWxkIGJlIGNsZWFyZWQgb3V0IGJlY2F1c2Ugb2YgdGhpcyBpbml0aWFsIG5hdmlnYXRpb24uXG4gICAgLy8gVGhlIGFib3ZlIGlzIG9ubHkgdHJ1ZSBpZiBubyBhbGVydHMgd2VyZSBzZXQgcHJpb3IgdG8gbG9hZGluZyBjYXNlIGxpc3QgcGFnZS5cbiAgICBpZiAoIXRoaXMuYWxlcnRTZXJ2aWNlLmlzUHJlc2VydmVBbGVydHMoKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHMoIXRoaXMuaW5pdGlhbGlzZWQpO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZC5mb3JtR3JvdXAgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVwZGF0ZSBmb3JtIGdyb3VwIGZpbHRlcnNcbiAgICAgIHRoaXMudXBkYXRlRm9ybUdyb3VwRmlsdGVycygpO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUdyb3VwO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkLmluaXQgPSBpbml0O1xuICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IDE7XG4gICAgdGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcyA9IHRoaXMuZ2V0TWV0YWRhdGFGaWVsZHMoKTtcbiAgICBpZiAoaW5pdCkge1xuICAgICAgdGhpcy53aW5kb3dTZXJ2aWNlLnNldExvY2FsU3RvcmFnZShTQVZFRF9RVUVSWV9QQVJBTV9MT0NfU1RPUkFHRSwgSlNPTi5zdHJpbmdpZnkocXVlcnlQYXJhbXMpKTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBcHBseSBmaWx0ZXJzXG4gICAgdGhpcy5vbkFwcGx5LmVtaXQoe3NlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBxdWVyeVBhcmFtc30pO1xuICAgIHRoaXMuc2V0Rm9jdXNUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UpO1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UpO1xuICAgIHNldFRpbWVvdXQgKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRGaWVsZHNXaGVuTm9EZWZhdWx0cygpO1xuICAgICAgdGhpcy5vblJlc2V0LmVtaXQodHJ1ZSk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXRhZGF0YUZpZWxkcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMud29ya2Jhc2tldElucHV0cykge1xuICAgICAgcmV0dXJuIHRoaXMud29ya2Jhc2tldElucHV0c1xuICAgICAgICAuZmlsdGVyKHdvcmtiYXNrZXRJbnB1dCA9PiB3b3JrYmFza2V0SW5wdXQuZmllbGQubWV0YWRhdGEgPT09IHRydWUpXG4gICAgICAgIC5tYXAod29ya2Jhc2tldElucHV0ID0+IHdvcmtiYXNrZXRJbnB1dC5maWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKSB7XG4gICAgICB0aGlzLmp1cmlzZGljdGlvblNlcnZpY2UuYW5ub3VuY2VTZWxlY3RlZEp1cmlzZGljdGlvbih0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbik7XG4gICAgICB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzID0gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY2FzZVR5cGVzLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5jYXNlVHlwZXMgOiBudWxsO1xuICAgICAgLy8gTGluZSB3YXMgdG9vIGxvbmcgZm9yIGxpbnRpbmcgc28gcmVmYWN0b3JlZCBpdC5cbiAgICAgIGlmICh0aGlzLndvcmtiYXNrZXREZWZhdWx0cyAmJiB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID0gbnVsbDtcbiAgICAgIHRoaXMuY2xlYXJXb3JrYmFza2V0SW5wdXRzKCk7XG5cbiAgICAgIGlmICghdGhpcy5pc0FwcGx5QnV0dG9uRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLm9uQ2FzZVR5cGVJZENoYW5nZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0Q2FzZVR5cGUoKTtcbiAgICAgIHRoaXMucmVzZXRDYXNlU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYXNlVHlwZUlkQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXMgPSB0aGlzLnNvcnRTdGF0ZXModGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5zdGF0ZXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSBudWxsO1xuICAgICAgdGhpcy5mb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgIHRoaXMuY2xlYXJXb3JrYmFza2V0SW5wdXRzKCk7XG4gICAgICBpZiAoIXRoaXMuaXNBcHBseUJ1dHRvbkRpc2FibGVkKCkpIHtcbiAgICAgICAgdGhpcy53b3JrYmFza2V0SW5wdXRGaWx0ZXJTZXJ2aWNlLmdldFdvcmtiYXNrZXRJbnB1dHModGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQsIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuaWQpLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApLnN1YnNjcmliZSh3b3JrYmFza2V0SW5wdXRzID0+IHtcbiAgICAgICAgICAgIHRoaXMud29ya2Jhc2tldElucHV0c1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMud29ya2Jhc2tldElucHV0cyA9IHdvcmtiYXNrZXRJbnB1dHNcbiAgICAgICAgICAgICAgLnNvcnQodGhpcy5vcmRlclNlcnZpY2Uuc29ydEFzYyk7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKTtcblxuICAgICAgICAgICAgd29ya2Jhc2tldElucHV0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5maWVsZC5lbGVtZW50UGF0aCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uZmllbGQuaWQgPSBpdGVtLmZpZWxkLmlkICsgJy4nICsgaXRlbS5maWVsZC5lbGVtZW50UGF0aDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpdGVtLmZpZWxkLmxhYmVsID0gaXRlbS5sYWJlbDtcbiAgICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaEZvcm1WYWx1ZU9iamVjdCA9IEpTT04ucGFyc2UoZm9ybVZhbHVlKTtcbiAgICAgICAgICAgICAgICBpdGVtLmZpZWxkLnZhbHVlID0gc2VhcmNoRm9ybVZhbHVlT2JqZWN0W2l0ZW0uZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXb3JrYmFza2V0IGlucHV0IGZpZWxkcyByZXF1ZXN0IHdpbGwgYmUgZGlzY2FyZGVkIHJlYXNvbjogJywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRDYXNlU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNDYXNlVHlwZXNEcm9wZG93bkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcztcbiAgfVxuXG4gIHB1YmxpYyBpc0Nhc2VTdGF0ZXNEcm9wZG93bkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSB8fCAhKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuc3RhdGVzICYmIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuc3RhdGVzLmxlbmd0aCA+IDApO1xuICB9XG5cbiAgcHVibGljIGlzQXBwbHlCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiAmJiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlYXJjaGFibGVBbmRXb3JrYmFza2V0SW5wdXRzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICYmIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgJiYgdGhpcy53b3JrYmFza2V0SW5wdXRzUmVhZHk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjbGVhciB0aGUgcHJldmlvdXNseSB1c2VkXG4gICAqIGZvcm0gZ3JvdXAgY29udHJvbCBmaWx0ZXIgdmFsdWVzIHRvIG1ha2Ugc3VyZSBvbmx5IHRoZVxuICAgKiBjdXJyZW50bHkgc2VsZWN0ZWQgZm9ybSBncm91cCBjb250cm9sIGZpbHRlciB2YWx1ZXMgYXJlIHByZXNlbnQuXG4gICAqXG4gICAqIEhhcyBiZWVuIGltcGxlbWVudGVkIGZvciAnUmVnaW9uIGFuZCBGUkMgZmlsdGVycycgYW5kIGNhbiBiZSBleHRlbmRlZFxuICAgKiBpbiBmdXR1cmUgdG8gaW5jb3Jwb3JhdGUgb3RoZXIgZHluYW1pYyBmaWx0ZXJzLlxuICAgKi9cbiAgIHB1YmxpYyB1cGRhdGVGb3JtR3JvdXBGaWx0ZXJzKCk6IHZvaWQge1xuICAgIC8vIFJlYWQgdGhlIGZvcm0gZ3JvdXAgbG9jYWwgc3RvcmFnZVxuICAgIGNvbnN0IGZvcm1Hcm91cExTID0gSlNPTi5wYXJzZSh0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKSk7XG5cbiAgICAvLyBGb3JtIGdyb3VwIGxvY2FsIHN0b3JhZ2UgaXMgYXZhaWxhYmxlIGFuZCBjb250YWlucyByZWdpb25MaXN0IHByb3BlcnR5XG4gICAgaWYgKCEhZm9ybUdyb3VwTFMgJiYgZm9ybUdyb3VwTFMuaGFzT3duUHJvcGVydHkoUkVHSU9OX0xJU1RfQU5EX0ZSQ19GSUxURVIpKSB7XG4gICAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSKSkge1xuICAgICAgICAvLyBJZiByZWdpb25MaXN0IHZhbHVlIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gbG9jYWwgc3RvcmFnZSBhbmQgZm9ybSBncm91cFxuICAgICAgICAvLyB0aGVuIHRoZSBmaWx0ZXIgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhbmQgd2UgbmVlZCB0byBjbGVhciB0aGUgb2xkIGZpbHRlciB2YWx1ZXNcbiAgICAgICAgaWYgKGZvcm1Hcm91cExTW1JFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSXSAhPT0gdGhpcy5mb3JtR3JvdXAuZ2V0KFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSKS52YWx1ZSkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1Hcm91cExTKSB7XG4gICAgICAgICAgICBpZiAoZm9ybUdyb3VwTFMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1Hcm91cExTW2tleV07XG4gICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBmaWx0ZXIgZm9ybSBncm91cCBjb250cm9sIHZhbHVlcyBpZiBpdCBoYXMgYSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgIC8vIFRoZSByZWdpb25MaXN0IGZvcm0gZ3JvdXAgY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgaWdub3JlZCBhcyBpdCBhbHdheXMgY29udGFpbiB0aGUgbGF0ZXN0IHZhbHVlXG4gICAgICAgICAgICAgIGlmIChrZXkgIT09IFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoa2V5KS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFN0YXRlcyhzdGF0ZXM6IENhc2VTdGF0ZVtdKSB7XG4gICAgcmV0dXJuIHN0YXRlcy5zb3J0KHRoaXMub3JkZXJTZXJ2aWNlLnNvcnRBc2MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBpbml0aWFsaXNlIGZpbHRlcnMgYmFzZWQgb24gcXVlcnkgcGFyYW1ldGVycyBvciB3b3JrYmFza2V0IGRlZmF1bHRzLlxuICAgKiBRdWVyeSBwYXJhbWV0ZXJzLCB3aGVuIGF2YWlsYWJsZSwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgd29ya2Jhc2tldCBkZWZhdWx0cy5cbiAgICovXG4gIHByaXZhdGUgaW5pdEZpbHRlcnMoaW5pdDogYm9vbGVhbikge1xuICAgIGNvbnN0IHNhdmVkUXVlcnlQYXJhbXMgPSB0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKFNBVkVEX1FVRVJZX1BBUkFNX0xPQ19TVE9SQUdFKTtcbiAgICBjb25zdCByb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICBpZiAoc2F2ZWRRdWVyeVBhcmFtcykge1xuICAgICAgcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtcyA9IEpTT04ucGFyc2Uoc2F2ZWRRdWVyeVBhcmFtcyk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkSnVyaXNkaWN0aW9uSWQgPSByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0pVUklTRElDVElPTl0gfHxcbiAgICAgICh0aGlzLmRlZmF1bHRzICYmIHRoaXMuZGVmYXVsdHMuanVyaXNkaWN0aW9uX2lkKTtcbiAgICBpZiAoc2VsZWN0ZWRKdXJpc2RpY3Rpb25JZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbnMuZmluZChqID0+IHNlbGVjdGVkSnVyaXNkaWN0aW9uSWQgPT09IGouaWQpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICYmIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMgPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5jYXNlVHlwZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSB0aGlzLnNlbGVjdENhc2VUeXBlKHRoaXMuc2VsZWN0ZWQsIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMsIHJvdXRlU25hcHNob3QpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkge1xuICAgICAgICAgIHRoaXMub25DYXNlVHlwZUlkQ2hhbmdlKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSB0aGlzLnNlbGVjdENhc2VTdGF0ZSh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLCByb3V0ZVNuYXBzaG90KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndvcmtiYXNrZXREZWZhdWx0cyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5hcHBseShpbml0KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVN0YXRlKGNhc2VUeXBlOiBDYXNlVHlwZUxpdGUsIHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBDYXNlU3RhdGUge1xuICAgIGxldCBjYXNlU3RhdGU7XG4gICAgaWYgKGNhc2VUeXBlKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENhc2VTdGF0ZUlkID0gdGhpcy5zZWxlY3RDYXNlU3RhdGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdCwgKHRoaXMuZGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0cy5zdGF0ZV9pZCkpO1xuICAgICAgY2FzZVN0YXRlID0gY2FzZVR5cGUuc3RhdGVzLmZpbmQoY3QgPT4gc2VsZWN0ZWRDYXNlU3RhdGVJZCA9PT0gY3QuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gY2FzZVN0YXRlID8gY2FzZVN0YXRlIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVN0YXRlSWRGcm9tUXVlcnlPckRlZmF1bHRzKHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGRlZmF1bHRDYXNlU3RhdGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9DQVNFX1NUQVRFXSB8fCBkZWZhdWx0Q2FzZVN0YXRlSWQ7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdENhc2VUeXBlKHNlbGVjdGVkOiBhbnksIGNhc2VUeXBlczogQ2FzZVR5cGVMaXRlW10sIHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBDYXNlVHlwZUxpdGUge1xuICAgIGxldCBjYXNlVHlwZTtcbiAgICBpZiAoc2VsZWN0ZWQuanVyaXNkaWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENhc2VUeXBlSWQgPSB0aGlzLnNlbGVjdENhc2VUeXBlSWRGcm9tUXVlcnlPckRlZmF1bHRzKHJvdXRlU25hcHNob3QsICh0aGlzLmRlZmF1bHRzICYmIHRoaXMuZGVmYXVsdHMuY2FzZV90eXBlX2lkKSk7XG4gICAgICBjYXNlVHlwZSA9IGNhc2VUeXBlcy5maW5kKGN0ID0+IHNlbGVjdGVkQ2FzZVR5cGVJZCA9PT0gY3QuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gY2FzZVR5cGUgPyBjYXNlVHlwZSA6IGNhc2VUeXBlc1swXTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVR5cGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgZGVmYXVsdENhc2VUeXBlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fQ0FTRV9UWVBFXSB8fCBkZWZhdWx0Q2FzZVR5cGVJZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaWVsZHNXaGVuTm9EZWZhdWx0cygpIHtcbiAgICB0aGlzLnJlc2V0Q2FzZVN0YXRlKCk7XG4gICAgdGhpcy5yZXNldENhc2VUeXBlKCk7XG4gICAgdGhpcy5jbGVhcldvcmtiYXNrZXRJbnB1dHMoKTtcbiAgICB0aGlzLndvcmtiYXNrZXREZWZhdWx0cyA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLmluaXRpYWxpc2VkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RmlsdGVycyh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJXb3JrYmFza2V0SW5wdXRzKCkge1xuICAgIHRoaXMud29ya2Jhc2tldElucHV0c1JlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy53b3JrYmFza2V0SW5wdXRzID0gW107XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2FzZVN0YXRlKCkge1xuICAgIHRoaXMuZGVmYXVsdHMuc3RhdGVfaWQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXMgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldENhc2VUeXBlKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSB1bmRlZmluZWQ7IC8vIG9wdGlvbiBzaG91bGQgYmUgYmxhbmsgcmF0aGVyIHRoYW4gXCJTZWxlY3QgYSB2YWx1ZVwiIGluIGNhc2Ugb2YgcmVzZXQuXG4gICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzVG9Ub3AoKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG4gICAgY29uc3QgdG9wQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHQtaGVhZGluZ19fdGV4dCcpO1xuICAgIGlmICh0b3BDb250YWluZXIpIHtcbiAgICAgIHRvcENvbnRhaW5lci5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53b3JrYmFza2V0SW5wdXRzKSB7XG4gICAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLndvcmtiYXNrZXRJbnB1dHMubWFwKGl0ZW0gPT4gRmllbGRzVXRpbHMuY29udmVydFRvQ2FzZUZpZWxkKGl0ZW0uZmllbGQpKTtcbiAgICB9XG4gIH1cbn1cbiIsIlxuPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiIGFyaWEtbGFiZWw9XCJGaWx0ZXJzXCI+RmlsdGVyczwvaDI+XG48Zm9ybSBjbGFzcz1cImdsb2JhbC1kaXNwbGF5XCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIndiLWp1cmlzZGljdGlvblwiPkp1cmlzZGljdGlvbjwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiIGlkPVwid2ItanVyaXNkaWN0aW9uXCJcbiAgICAgICAgICAgIG5hbWU9XCJqdXJpc2RpY3Rpb25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmp1cmlzZGljdGlvblwiIGFyaWEtY29udHJvbHM9XCJzZWFyY2gtcmVzdWx0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25KdXJpc2RpY3Rpb25JZENoYW5nZSgpXCI+XG4gICAgICA8b3B0aW9uICpuZ0lmPVwiIXdvcmtiYXNrZXREZWZhdWx0c1wiIFtuZ1ZhbHVlXT1cIm51bGxcIj5TZWxlY3QgYSB2YWx1ZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaiBvZiBqdXJpc2RpY3Rpb25zXCIgW25nVmFsdWVdPVwialwiPnt7ai5uYW1lfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwid2ItY2FzZS10eXBlXCI+Q2FzZSB0eXBlPC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTQgY2NkLWRyb3Bkb3duXCIgaWQ9XCJ3Yi1jYXNlLXR5cGVcIlxuICAgICAgICAgICAgbmFtZT1cImNhc2UtdHlwZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuY2FzZVR5cGVcIiBbZGlzYWJsZWRdPVwiaXNDYXNlVHlwZXNEcm9wZG93bkRpc2FibGVkKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNhc2VUeXBlSWRDaGFuZ2UoKVwiIGFyaWEtY29udHJvbHM9XCJzZWFyY2gtcmVzdWx0XCI+XG4gICAgICA8b3B0aW9uICpuZ0lmPVwiIXdvcmtiYXNrZXREZWZhdWx0c1wiIFtuZ1ZhbHVlXT1cIm51bGxcIj5TZWxlY3QgYSB2YWx1ZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3Qgb2Ygc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXNcIiBbbmdWYWx1ZV09XCJjdFwiPnt7Y3QubmFtZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIndiLWNhc2Utc3RhdGVcIj5TdGF0ZTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiIGlkPVwid2ItY2FzZS1zdGF0ZVwiXG4gICAgICAgICAgICBuYW1lPVwic3RhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmNhc2VTdGF0ZVwiIFtkaXNhYmxlZF09XCJpc0Nhc2VTdGF0ZXNEcm9wZG93bkRpc2FibGVkKClcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cInNlYXJjaC1yZXN1bHRcIj5cbiAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiPkFueTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3Mgb2Ygc2VsZWN0ZWRDYXNlVHlwZVN0YXRlc1wiIFtuZ1ZhbHVlXT1cImNzXCI+e3tjcy5uYW1lfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciBjY2RDb25kaXRpb25hbFNob3dGb3JtICpuZ0lmPVwiaXNTZWFyY2hhYmxlQW5kV29ya2Jhc2tldElucHV0c1JlYWR5KClcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIj5cbiAgICA8ZGl2IGlkPVwiZHluYW1pY0ZpbHRlcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nRm9yPVwibGV0IHdvcmtiYXNrZXRJbnB1dCBvZiB3b3JrYmFza2V0SW5wdXRzXCI+XG4gICAgICAgIDxjY2QtZmllbGQtd3JpdGUgW2Nhc2VGaWVsZF09XCJ3b3JrYmFza2V0SW5wdXQuZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtpc0V4cGFuZGVkXT1cInRydWVcIiBbaXNJblNlYXJjaEJsb2NrXT1cInRydWVcIiAoa2V5dXAuZW50ZXIpPVwiYXBwbHkobnVsbClcIj48L2NjZC1maWVsZC13cml0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiB3b3JrYmFza2V0LWZpbHRlcnMtYXBwbHlcIiAoY2xpY2spPVwiYXBwbHkodHJ1ZSlcIiBbZGlzYWJsZWRdPVwiaXNBcHBseUJ1dHRvbkRpc2FibGVkKClcIiB0aXRsZT1cIkFwcGx5IGZpbHRlclwiIGFyaWEtbGFiZWw9XCJBcHBseSBmaWx0ZXJcIj5BcHBseTwvYnV0dG9uPiAmbmJzcDsmbmJzcDsmbmJzcDtcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0KClcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCIgdGl0bGU9XCJSZXNldCBmaWx0ZXJcIiBhcmlhLWxhYmVsPVwiUmVzZXQgZmlsdGVyXCI+UmVzZXQ8L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
444
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7Ozs7O0lDTm5HLGtDQUFxRDtJQUFBLDhCQUFjO0lBQUEsaUJBQVM7O0lBQXhDLDhCQUFnQjs7O0lBQ3BELGtDQUFzRDtJ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QStCO1FBQS9CLCtDQUErQiwrQ0FBQTtRQUU3QyxlQUF5QjtRQUF6Qiw4Q0FBeUI7UUFDWCxlQUFnQztRQUFoQywyREFBZ0M7UUFPcEMsZUFBZ0M7UUFBaEMsZ0RBQWdDLGdEQUFBO1FBRTNDLGVBQWdCO1FBQWhCLDhCQUFnQjtRQUNELGVBQXlCO1FBQXpCLG9EQUF5QjtRQUlkLGVBQTRDO1FBQTVDLGlFQUE0QztRQVFFLGVBQW9DO1FBQXBDLHNEQUFvQzs7dUZEaEI3RywwQkFBMEI7Y0FMdEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFdBQVcsRUFBRSxxQ0FBcUM7Z0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2FBQ25EO2dPQVFRLGFBQWE7a0JBRG5CLEtBQUs7WUFJQyxRQUFRO2tCQURkLEtBQUs7WUFJQyxPQUFPO2tCQURiLE1BQU07WUFJQSxPQUFPO2tCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlU3RhdGUgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IENhc2VUeXBlTGl0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtdHlwZS1saXRlLm1vZGVsJztcbmltcG9ydCB7IEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2p1cmlzZGljdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBXb3JrYmFza2V0SW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL2RvbWFpbi93b3JrYmFza2V0L3dvcmtiYXNrZXQtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgSnVyaXNkaWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2p1cmlzZGljdGlvbi9qdXJpc2RpY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlci9vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3cvd2luZG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Jhc2tldElucHV0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtiYXNrZXQvd29ya2Jhc2tldC1pbnB1dC1maWx0ZXIuc2VydmljZSc7XG5cbmNvbnN0IEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFID0gJ3dvcmtiYXNrZXQtZmlsdGVyLWZvcm0tZ3JvdXAtdmFsdWUnO1xuY29uc3QgU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UgPSAnc2F2ZWRRdWVyeVBhcmFtcyc7XG5jb25zdCBSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUiA9ICdyZWdpb25MaXN0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdvcmtiYXNrZXQtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrYmFza2V0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrYmFza2V0LWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUEFSQU1fSlVSSVNESUNUSU9OID0gJ2p1cmlzZGljdGlvbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUEFSQU1fQ0FTRV9UWVBFID0gJ2Nhc2UtdHlwZSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUEFSQU1fQ0FTRV9TVEFURSA9ICdjYXNlLXN0YXRlJztcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBqdXJpc2RpY3Rpb25zOiBKdXJpc2RpY3Rpb25bXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVmYXVsdHM7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkFwcGx5OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uUmVzZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyB3b3JrYmFza2V0SW5wdXRzOiBXb3JrYmFza2V0SW5wdXRNb2RlbFtdO1xuICBwdWJsaWMgd29ya2Jhc2tldElucHV0c1JlYWR5OiBib29sZWFuO1xuXG4gIHB1YmxpYyB3b3JrYmFza2V0RGVmYXVsdHM6IGJvb2xlYW47XG5cbiAgcHVibGljIHNlbGVjdGVkOiB7XG4gICAgaW5pdD86IGJvb2xlYW4sXG4gICAganVyaXNkaWN0aW9uPzogSnVyaXNkaWN0aW9uLFxuICAgIGNhc2VUeXBlPzogQ2FzZVR5cGVMaXRlLFxuICAgIGNhc2VTdGF0ZT86IENhc2VTdGF0ZSxcbiAgICBmb3JtR3JvdXA/OiBGb3JtR3JvdXAsXG4gICAgcGFnZT86IG51bWJlcixcbiAgICBtZXRhZGF0YUZpZWxkcz86IHN0cmluZ1tdXG4gIH07XG5cbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgcHVibGljIHNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzPzogQ2FzZVR5cGVMaXRlW107XG4gIHB1YmxpYyBzZWxlY3RlZENhc2VUeXBlU3RhdGVzPzogQ2FzZVN0YXRlW107XG5cbiAgcHVibGljIGluaXRpYWxpc2VkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrYmFza2V0SW5wdXRGaWx0ZXJTZXJ2aWNlOiBXb3JrYmFza2V0SW5wdXRGaWx0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBqdXJpc2RpY3Rpb25TZXJ2aWNlOiBKdXJpc2RpY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAoIXRoaXMuaW5pdGlhbGlzZWQgfHwgIXBhcmFtcyB8fCAhT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5pbml0RmlsdGVycyhmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGlzZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFwcGx5KGluaXQpOiB2b2lkIHtcbiAgICAvLyBTYXZlIGZpbHRlcnMgYXMgcXVlcnkgcGFyYW1ldGVycyBmb3IgY3VycmVudCByb3V0ZVxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKSB7XG4gICAgICBxdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9KVVJJU0RJQ1RJT05dID0gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKSB7XG4gICAgICBxdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9DQVNFX1RZUEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5pZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlKSB7XG4gICAgICBxdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9DQVNFX1NUQVRFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlLmlkO1xuICAgIH1cbiAgICAvLyB3aXRob3V0IGV4cGxpY2l0bHkgcHJlc2VydmluZyBhbGVydHMgYW55IG1lc3NhZ2Ugb24gdGhlIHBhZ2VcbiAgICAvLyB3b3VsZCBiZSBjbGVhcmVkIG91dCBiZWNhdXNlIG9mIHRoaXMgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgIC8vIFRoZSBhYm92ZSBpcyBvbmx5IHRydWUgaWYgbm8gYWxlcnRzIHdlcmUgc2V0IHByaW9yIHRvIGxvYWRpbmcgY2FzZSBsaXN0IHBhZ2UuXG4gICAgaWYgKCF0aGlzLmFsZXJ0U2VydmljZS5pc1ByZXNlcnZlQWxlcnRzKCkpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNldFByZXNlcnZlQWxlcnRzKCF0aGlzLmluaXRpYWxpc2VkKTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZm9ybUdyb3VwID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShGT1JNX0dST1VQX1ZBTF9MT0NfU1RPUkFHRSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVcGRhdGUgZm9ybSBncm91cCBmaWx0ZXJzXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1Hcm91cEZpbHRlcnMoKTtcblxuICAgICAgdGhpcy5zZWxlY3RlZC5mb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cDtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZC5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnNlbGVjdGVkLnBhZ2UgPSAxO1xuICAgIHRoaXMuc2VsZWN0ZWQubWV0YWRhdGFGaWVsZHMgPSB0aGlzLmdldE1ldGFkYXRhRmllbGRzKCk7XG4gICAgaWYgKGluaXQpIHtcbiAgICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UsIEpTT04uc3RyaW5naWZ5KHF1ZXJ5UGFyYW1zKSk7XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy53aW5kb3dTZXJ2aWNlLnNldExvY2FsU3RvcmFnZShGT1JNX0dST1VQX1ZBTF9MT0NfU1RPUkFHRSwgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtR3JvdXAudmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQXBwbHkgZmlsdGVyc1xuICAgIHRoaXMub25BcHBseS5lbWl0KHtzZWxlY3RlZDogdGhpcy5zZWxlY3RlZCwgcXVlcnlQYXJhbXN9KTtcbiAgICB0aGlzLnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLndpbmRvd1NlcnZpY2UucmVtb3ZlTG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKTtcbiAgICB0aGlzLndpbmRvd1NlcnZpY2UucmVtb3ZlTG9jYWxTdG9yYWdlKFNBVkVEX1FVRVJZX1BBUkFNX0xPQ19TVE9SQUdFKTtcbiAgICBzZXRUaW1lb3V0ICgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0RmllbGRzV2hlbk5vRGVmYXVsdHMoKTtcbiAgICAgIHRoaXMub25SZXNldC5lbWl0KHRydWUpO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TWV0YWRhdGFGaWVsZHMoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLndvcmtiYXNrZXRJbnB1dHMpIHtcbiAgICAgIHJldHVybiB0aGlzLndvcmtiYXNrZXRJbnB1dHNcbiAgICAgICAgLmZpbHRlcih3b3JrYmFza2V0SW5wdXQgPT4gd29ya2Jhc2tldElucHV0LmZpZWxkLm1ldGFkYXRhID09PSB0cnVlKVxuICAgICAgICAubWFwKHdvcmtiYXNrZXRJbnB1dCA9PiB3b3JrYmFza2V0SW5wdXQuZmllbGQuaWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkp1cmlzZGljdGlvbklkQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbikge1xuICAgICAgdGhpcy5qdXJpc2RpY3Rpb25TZXJ2aWNlLmFubm91bmNlU2VsZWN0ZWRKdXJpc2RpY3Rpb24odGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24pO1xuICAgICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcy5sZW5ndGggPiAwID8gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY2FzZVR5cGVzIDogbnVsbDtcbiAgICAgIC8vIExpbmUgd2FzIHRvbyBsb25nIGZvciBsaW50aW5nIHNvIHJlZmFjdG9yZWQgaXQuXG4gICAgICBpZiAodGhpcy53b3JrYmFza2V0RGVmYXVsdHMgJiYgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLmNsZWFyV29ya2Jhc2tldElucHV0cygpO1xuXG4gICAgICBpZiAoIXRoaXMuaXNBcHBseUJ1dHRvbkRpc2FibGVkKCkpIHtcbiAgICAgICAgdGhpcy5vbkNhc2VUeXBlSWRDaGFuZ2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldENhc2VUeXBlKCk7XG4gICAgICB0aGlzLnJlc2V0Q2FzZVN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2FzZVR5cGVJZENoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENhc2VUeXBlU3RhdGVzID0gdGhpcy5zb3J0U3RhdGVzKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuc3RhdGVzKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID0gbnVsbDtcbiAgICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICB0aGlzLmNsZWFyV29ya2Jhc2tldElucHV0cygpO1xuICAgICAgaWYgKCF0aGlzLmlzQXBwbHlCdXR0b25EaXNhYmxlZCgpKSB7XG4gICAgICAgIHRoaXMud29ya2Jhc2tldElucHV0RmlsdGVyU2VydmljZS5nZXRXb3JrYmFza2V0SW5wdXRzKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmlkLCB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkKS5waXBlKFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKS5zdWJzY3JpYmUod29ya2Jhc2tldElucHV0cyA9PiB7XG4gICAgICAgICAgICB0aGlzLndvcmtiYXNrZXRJbnB1dHNSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLndvcmtiYXNrZXRJbnB1dHMgPSB3b3JrYmFza2V0SW5wdXRzXG4gICAgICAgICAgICAgIC5zb3J0KHRoaXMub3JkZXJTZXJ2aWNlLnNvcnRBc2MpO1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy53aW5kb3dTZXJ2aWNlLmdldExvY2FsU3RvcmFnZShGT1JNX0dST1VQX1ZBTF9MT0NfU1RPUkFHRSk7XG5cbiAgICAgICAgICAgIHdvcmtiYXNrZXRJbnB1dHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uZmllbGQuZWxlbWVudFBhdGgpIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZpZWxkLmlkID0gYCR7aXRlbS5maWVsZC5pZH0uJHtpdGVtLmZpZWxkLmVsZW1lbnRQYXRofWA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaXRlbS5maWVsZC5sYWJlbCA9IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICAgIGlmIChmb3JtVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hGb3JtVmFsdWVPYmplY3QgPSBKU09OLnBhcnNlKGZvcm1WYWx1ZSk7XG4gICAgICAgICAgICAgICAgaXRlbS5maWVsZC52YWx1ZSA9IHNlYXJjaEZvcm1WYWx1ZU9iamVjdFtpdGVtLmZpZWxkLmlkXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnV29ya2Jhc2tldCBpbnB1dCBmaWVsZHMgcmVxdWVzdCB3aWxsIGJlIGRpc2NhcmRlZCByZWFzb246ICcsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0Q2FzZVN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQ2FzZVR5cGVzRHJvcGRvd25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXM7XG4gIH1cblxuICBwdWJsaWMgaXNDYXNlU3RhdGVzRHJvcGRvd25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgfHwgISh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLnN0YXRlcyAmJiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLnN0YXRlcy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FwcGx5QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gJiYgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSk7XG4gIH1cblxuICBwdWJsaWMgaXNTZWFyY2hhYmxlQW5kV29ya2Jhc2tldElucHV0c1JlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiAmJiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlICYmIHRoaXMud29ya2Jhc2tldElucHV0c1JlYWR5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY2xlYXIgdGhlIHByZXZpb3VzbHkgdXNlZFxuICAgKiBmb3JtIGdyb3VwIGNvbnRyb2wgZmlsdGVyIHZhbHVlcyB0byBtYWtlIHN1cmUgb25seSB0aGVcbiAgICogY3VycmVudGx5IHNlbGVjdGVkIGZvcm0gZ3JvdXAgY29udHJvbCBmaWx0ZXIgdmFsdWVzIGFyZSBwcmVzZW50LlxuICAgKlxuICAgKiBIYXMgYmVlbiBpbXBsZW1lbnRlZCBmb3IgJ1JlZ2lvbiBhbmQgRlJDIGZpbHRlcnMnIGFuZCBjYW4gYmUgZXh0ZW5kZWRcbiAgICogaW4gZnV0dXJlIHRvIGluY29ycG9yYXRlIG90aGVyIGR5bmFtaWMgZmlsdGVycy5cbiAgICovXG4gICBwdWJsaWMgdXBkYXRlRm9ybUdyb3VwRmlsdGVycygpOiB2b2lkIHtcbiAgICAvLyBSZWFkIHRoZSBmb3JtIGdyb3VwIGxvY2FsIHN0b3JhZ2VcbiAgICBjb25zdCBmb3JtR3JvdXBMUyA9IEpTT04ucGFyc2UodGhpcy53aW5kb3dTZXJ2aWNlLmdldExvY2FsU3RvcmFnZShGT1JNX0dST1VQX1ZBTF9MT0NfU1RPUkFHRSkpO1xuXG4gICAgLy8gRm9ybSBncm91cCBsb2NhbCBzdG9yYWdlIGlzIGF2YWlsYWJsZSBhbmQgY29udGFpbnMgcmVnaW9uTGlzdCBwcm9wZXJ0eVxuICAgIGlmICghIWZvcm1Hcm91cExTICYmIGZvcm1Hcm91cExTLmhhc093blByb3BlcnR5KFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSKSkge1xuICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwLmdldChSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUikpIHtcbiAgICAgICAgLy8gSWYgcmVnaW9uTGlzdCB2YWx1ZSBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIGxvY2FsIHN0b3JhZ2UgYW5kIGZvcm0gZ3JvdXBcbiAgICAgICAgLy8gdGhlbiB0aGUgZmlsdGVyIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYW5kIHdlIG5lZWQgdG8gY2xlYXIgdGhlIG9sZCBmaWx0ZXIgdmFsdWVzXG4gICAgICAgIGlmIChmb3JtR3JvdXBMU1tSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUl0gIT09IHRoaXMuZm9ybUdyb3VwLmdldChSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUikudmFsdWUpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtR3JvdXBMUykge1xuICAgICAgICAgICAgaWYgKGZvcm1Hcm91cExTLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtR3JvdXBMU1trZXldO1xuICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZmlsdGVyIGZvcm0gZ3JvdXAgY29udHJvbCB2YWx1ZXMgaWYgaXQgaGFzIGEgdmFsdWUgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgICAgICAvLyBUaGUgcmVnaW9uTGlzdCBmb3JtIGdyb3VwIGNvbnRyb2wgdmFsdWUgc2hvdWxkIGJlIGlnbm9yZWQgYXMgaXQgYWx3YXlzIGNvbnRhaW4gdGhlIGxhdGVzdCB2YWx1ZVxuICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUiAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChrZXkpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0U3RhdGVzKHN0YXRlczogQ2FzZVN0YXRlW10pIHtcbiAgICByZXR1cm4gc3RhdGVzLnNvcnQodGhpcy5vcmRlclNlcnZpY2Uuc29ydEFzYyk7XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGluaXRpYWxpc2UgZmlsdGVycyBiYXNlZCBvbiBxdWVyeSBwYXJhbWV0ZXJzIG9yIHdvcmtiYXNrZXQgZGVmYXVsdHMuXG4gICAqIFF1ZXJ5IHBhcmFtZXRlcnMsIHdoZW4gYXZhaWxhYmxlLCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB3b3JrYmFza2V0IGRlZmF1bHRzLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0RmlsdGVycyhpbml0OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2F2ZWRRdWVyeVBhcmFtcyA9IHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UpO1xuICAgIGNvbnN0IHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICAgIGlmIChzYXZlZFF1ZXJ5UGFyYW1zKSB7XG4gICAgICByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zID0gSlNPTi5wYXJzZShzYXZlZFF1ZXJ5UGFyYW1zKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRKdXJpc2RpY3Rpb25JZCA9IHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fSlVSSVNESUNUSU9OXSB8fFxuICAgICAgKHRoaXMuZGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0cy5qdXJpc2RpY3Rpb25faWQpO1xuICAgIGlmIChzZWxlY3RlZEp1cmlzZGljdGlvbklkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiA9IHRoaXMuanVyaXNkaWN0aW9ucy5maW5kKGogPT4gc2VsZWN0ZWRKdXJpc2RpY3Rpb25JZCA9PT0gai5pZCk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gJiYgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY2FzZVR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcztcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHRoaXMuc2VsZWN0Q2FzZVR5cGUodGhpcy5zZWxlY3RlZCwgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcywgcm91dGVTbmFwc2hvdCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKSB7XG4gICAgICAgICAgdGhpcy5vbkNhc2VUeXBlSWRDaGFuZ2UoKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA9IHRoaXMuc2VsZWN0Q2FzZVN0YXRlKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUsIHJvdXRlU25hcHNob3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2Jhc2tldERlZmF1bHRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmFwcGx5KGluaXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlU3RhdGUoY2FzZVR5cGU6IENhc2VUeXBlTGl0ZSwgcm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IENhc2VTdGF0ZSB7XG4gICAgbGV0IGNhc2VTdGF0ZTtcbiAgICBpZiAoY2FzZVR5cGUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2FzZVN0YXRlSWQgPSB0aGlzLnNlbGVjdENhc2VTdGF0ZUlkRnJvbVF1ZXJ5T3JEZWZhdWx0cyhyb3V0ZVNuYXBzaG90LCAodGhpcy5kZWZhdWx0cyAmJiB0aGlzLmRlZmF1bHRzLnN0YXRlX2lkKSk7XG4gICAgICBjYXNlU3RhdGUgPSBjYXNlVHlwZS5zdGF0ZXMuZmluZChjdCA9PiBzZWxlY3RlZENhc2VTdGF0ZUlkID09PSBjdC5pZCk7XG4gICAgfVxuICAgIHJldHVybiBjYXNlU3RhdGUgPyBjYXNlU3RhdGUgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlU3RhdGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgZGVmYXVsdENhc2VTdGF0ZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0NBU0VfU1RBVEVdIHx8IGRlZmF1bHRDYXNlU3RhdGVJZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVR5cGUoc2VsZWN0ZWQ6IGFueSwgY2FzZVR5cGVzOiBDYXNlVHlwZUxpdGVbXSwgcm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IENhc2VUeXBlTGl0ZSB7XG4gICAgbGV0IGNhc2VUeXBlO1xuICAgIGlmIChzZWxlY3RlZC5qdXJpc2RpY3Rpb24pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2FzZVR5cGVJZCA9IHRoaXMuc2VsZWN0Q2FzZVR5cGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdCwgKHRoaXMuZGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0cy5jYXNlX3R5cGVfaWQpKTtcbiAgICAgIGNhc2VUeXBlID0gY2FzZVR5cGVzLmZpbmQoY3QgPT4gc2VsZWN0ZWRDYXNlVHlwZUlkID09PSBjdC5pZCk7XG4gICAgfVxuICAgIHJldHVybiBjYXNlVHlwZSA/IGNhc2VUeXBlIDogY2FzZVR5cGVzWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlVHlwZUlkRnJvbVF1ZXJ5T3JEZWZhdWx0cyhyb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZWZhdWx0Q2FzZVR5cGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9DQVNFX1RZUEVdIHx8IGRlZmF1bHRDYXNlVHlwZUlkO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpZWxkc1doZW5Ob0RlZmF1bHRzKCkge1xuICAgIHRoaXMucmVzZXRDYXNlU3RhdGUoKTtcbiAgICB0aGlzLnJlc2V0Q2FzZVR5cGUoKTtcbiAgICB0aGlzLmNsZWFyV29ya2Jhc2tldElucHV0cygpO1xuICAgIHRoaXMud29ya2Jhc2tldERlZmF1bHRzID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuaW5pdGlhbGlzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcldvcmtiYXNrZXRJbnB1dHMoKSB7XG4gICAgdGhpcy53b3JrYmFza2V0SW5wdXRzUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLndvcmtiYXNrZXRJbnB1dHMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRDYXNlU3RhdGUoKSB7XG4gICAgdGhpcy5kZWZhdWx0cy5zdGF0ZV9pZCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXNlVHlwZVN0YXRlcyA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2FzZVR5cGUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHVuZGVmaW5lZDsgLy8gb3B0aW9uIHNob3VsZCBiZSBibGFuayByYXRoZXIgdGhhbiBcIlNlbGVjdCBhIHZhbHVlXCIgaW4gY2FzZSBvZiByZXNldC5cbiAgICB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNUb1RvcCgpIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgICBjb25zdCB0b3BDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdC1oZWFkaW5nX190ZXh0Jyk7XG4gICAgaWYgKHRvcENvbnRhaW5lcikge1xuICAgICAgdG9wQ29udGFpbmVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndvcmtiYXNrZXRJbnB1dHMpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMud29ya2Jhc2tldElucHV0cy5tYXAoaXRlbSA9PiBGaWVsZHNVdGlscy5jb252ZXJ0VG9DYXNlRmllbGQoaXRlbS5maWVsZCkpO1xuICAgIH1cbiAgfVxufVxuIiwiXG48aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCIgYXJpYS1sYWJlbD1cIkZpbHRlcnNcIj5GaWx0ZXJzPC9oMj5cbjxmb3JtIGNsYXNzPVwiZ2xvYmFsLWRpc3BsYXlcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwid2ItanVyaXNkaWN0aW9uXCI+SnVyaXNkaWN0aW9uPC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTQgY2NkLWRyb3Bkb3duXCIgaWQ9XCJ3Yi1qdXJpc2RpY3Rpb25cIlxuICAgICAgICAgICAgbmFtZT1cImp1cmlzZGljdGlvblwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuanVyaXNkaWN0aW9uXCIgYXJpYS1jb250cm9scz1cInNlYXJjaC1yZXN1bHRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkp1cmlzZGljdGlvbklkQ2hhbmdlKClcIj5cbiAgICAgIDxvcHRpb24gKm5nSWY9XCIhd29ya2Jhc2tldERlZmF1bHRzXCIgW25nVmFsdWVdPVwibnVsbFwiPlNlbGVjdCBhIHZhbHVlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBqIG9mIGp1cmlzZGljdGlvbnNcIiBbbmdWYWx1ZV09XCJqXCI+e3tqLm5hbWV9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ3Yi1jYXNlLXR5cGVcIj5DYXNlIHR5cGU8L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLTMtNCBjY2QtZHJvcGRvd25cIiBpZD1cIndiLWNhc2UtdHlwZVwiXG4gICAgICAgICAgICBuYW1lPVwiY2FzZS10eXBlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5jYXNlVHlwZVwiIFtkaXNhYmxlZF09XCJpc0Nhc2VUeXBlc0Ryb3Bkb3duRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2FzZVR5cGVJZENoYW5nZSgpXCIgYXJpYS1jb250cm9scz1cInNlYXJjaC1yZXN1bHRcIj5cbiAgICAgIDxvcHRpb24gKm5nSWY9XCIhd29ya2Jhc2tldERlZmF1bHRzXCIgW25nVmFsdWVdPVwibnVsbFwiPlNlbGVjdCBhIHZhbHVlPC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjdCBvZiBzZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlc1wiIFtuZ1ZhbHVlXT1cImN0XCI+e3tjdC5uYW1lfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwid2ItY2FzZS1zdGF0ZVwiPlN0YXRlPC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTQgY2NkLWRyb3Bkb3duXCIgaWQ9XCJ3Yi1jYXNlLXN0YXRlXCJcbiAgICAgICAgICAgIG5hbWU9XCJzdGF0ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuY2FzZVN0YXRlXCIgW2Rpc2FibGVkXT1cImlzQ2FzZVN0YXRlc0Ryb3Bkb3duRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwic2VhcmNoLXJlc3VsdFwiPlxuICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCI+QW55PC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjcyBvZiBzZWxlY3RlZENhc2VUeXBlU3RhdGVzXCIgW25nVmFsdWVdPVwiY3NcIj57e2NzLm5hbWV9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyIGNjZENvbmRpdGlvbmFsU2hvd0Zvcm0gKm5nSWY9XCJpc1NlYXJjaGFibGVBbmRXb3JrYmFza2V0SW5wdXRzUmVhZHkoKVwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgW2NvbnRleHRGaWVsZHNdPVwiY2FzZUZpZWxkc1wiPlxuICAgIDxkaXYgaWQ9XCJkeW5hbWljRmlsdGVyc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgd29ya2Jhc2tldElucHV0IG9mIHdvcmtiYXNrZXRJbnB1dHNcIj5cbiAgICAgICAgPGNjZC1maWVsZC13cml0ZSBbY2FzZUZpZWxkXT1cIndvcmtiYXNrZXRJbnB1dC5maWVsZFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgW2lzRXhwYW5kZWRdPVwidHJ1ZVwiIFtpc0luU2VhcmNoQmxvY2tdPVwidHJ1ZVwiIChrZXl1cC5lbnRlcik9XCJhcHBseShudWxsKVwiPjwvY2NkLWZpZWxkLXdyaXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIHdvcmtiYXNrZXQtZmlsdGVycy1hcHBseVwiIChjbGljayk9XCJhcHBseSh0cnVlKVwiIFtkaXNhYmxlZF09XCJpc0FwcGx5QnV0dG9uRGlzYWJsZWQoKVwiIHRpdGxlPVwiQXBwbHkgZmlsdGVyXCIgYXJpYS1sYWJlbD1cIkFwcGx5IGZpbHRlclwiPkFwcGx5PC9idXR0b24+ICZuYnNwOyZuYnNwOyZuYnNwO1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzZXQoKVwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0aXRsZT1cIlJlc2V0IGZpbHRlclwiIGFyaWEtbGFiZWw9XCJSZXNldCBmaWx0ZXJcIj5SZXNldDwvYnV0dG9uPlxuPC9mb3JtPlxuIl19
@@ -55,8 +55,8 @@ export class ShowCondition {
55
55
  if (originalCondition.indexOf(condition.fieldReference) > -1) {
56
56
  if (this.processedList && this.processedList.indexOf(condition.fieldReference) === -1) {
57
57
  this.processedList.push(condition.fieldReference);
58
- const regularExp = new RegExp('(\\b)' + condition.fieldReference + '(?=[^"]*(?:"[^"]*"[^"]*)*$)(\\b)', 'g');
59
- return originalCondition.replace(regularExp, pathPrefix + '.' + condition.fieldReference);
58
+ const regularExp = new RegExp(`(\\b)${condition.fieldReference}(?=[^"]*(?:"[^"]*"[^"]*)*$)(\\b)`, 'g');
59
+ return originalCondition.replace(regularExp, `${pathPrefix}.${condition.fieldReference}`);
60
60
  }
61
61
  else {
62
62
  return originalCondition;
@@ -133,6 +133,7 @@ export class ShowCondition {
133
133
  }
134
134
  // Consider what type of field this is.
135
135
  const ft = caseField.field_type;
136
+ // tslint:disable-next-line:switch-default
136
137
  switch (ft.type) {
137
138
  case 'Collection':
138
139
  if (ft.collection_field_type.type === 'Complex' && ft.collection_field_type.complex_fields) {
@@ -196,4 +197,4 @@ ShowCondition.CONTAINS = 'CONTAINS';
196
197
  ShowCondition.instanceCache = new Map();
197
198
  ShowCondition.validJoinComparators = ['AND', 'OR'];
198
199
  ShowCondition.processedList = [];
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwtc2hvdy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGFBQWE7SUErSnhCLDZEQUE2RDtJQUM3RCxZQUFtQixTQUFpQjtRQUFqQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBeEo1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBeUp0QixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBMUpNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFxQixFQUFFLFVBQWtCO1FBQzlFLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUNwQyxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUNELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sYUFBYSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFD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QkFBa0IsQ0FBQyxVQUF1QjtRQUMvQyxPQUFPLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7QUF4TXNCLGtDQUFvQixHQUFHLElBQUksQ0FBQztBQUM1Qiw4QkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFDdkIsc0JBQVEsR0FBRyxVQUFVLENBQUM7QUFDOUIsMkJBQWEsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztBQUN4QyxrQ0FBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QywyQkFBYSxHQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAgKiBhcyBfc2NvcmUgZnJvbSAndW5kZXJzY29yZSc7XG5cbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IENvbmRpdGlvblBhcnNlciB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmRpdGlvbi1wYXJzZXIuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTaG93Q29uZGl0aW9uIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTkRJVElPTl9OT1RfRVFVQUxTID0gJyE9JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT05ESVRJT05fRVFVQUxTID0gJz0nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTlRBSU5TID0gJ0NPTlRBSU5TJztcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTaG93Q29uZGl0aW9uPigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSB2YWxpZEpvaW5Db21wYXJhdG9ycyA9IFsnQU5EJywgJ09SJ107XG4gIHByaXZhdGUgc3RhdGljIHByb2Nlc3NlZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgY29uZGl0aW9ucyA9IFtdO1xuXG4gIHB1YmxpYyBzdGF0aWMgYWRkUGF0aFByZWZpeFRvQ29uZGl0aW9uKHNob3dDb25kaXRpb246IHN0cmluZywgcGF0aFByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXBhdGhQcmVmaXggfHwgcGF0aFByZWZpeCA9PT0gJycpIHtcbiAgICAgIHJldHVybiBzaG93Q29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoIXNob3dDb25kaXRpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtdWxhID0gQ29uZGl0aW9uUGFyc2VyLnBhcnNlKHNob3dDb25kaXRpb24pO1xuICAgIGlmICghZm9ybXVsYSkge1xuICAgICAgcmV0dXJuIHNob3dDb25kaXRpb247XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc2VkTGlzdCA9IFtdO1xuICAgIHNob3dDb25kaXRpb24gPSBzaG93Q29uZGl0aW9uLnJlcGxhY2UoL0NPTlRBSU5TL2csICcgQ09OVEFJTlMnKTtcbiAgICBjb25zdCBwcm9jZXNzZWRDb25kaXRpb24gPSB0aGlzLnByb2Nlc3NBZGRQYXRoUHJlZml4VG9Db25kaXRpb24oZm9ybXVsYSwgcGF0aFByZWZpeCwgc2hvd0NvbmRpdGlvbik7XG4gICAgcmV0dXJuIHByb2Nlc3NlZENvbmRpdGlvbi5yZXBsYWNlKC8gQ09OVEFJTlMvZywgJ0NPTlRBSU5TJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzQWRkUGF0aFByZWZpeFRvQ29uZGl0aW9uKGZvcm11bGE6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nLCBvcmlnaW5hbENvbmRpdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZmluYWxDb25kaXRpb246IHN0cmluZyA9IG9yaWdpbmFsQ29uZGl0aW9uO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm11bGEpKSB7XG4gICAgICBmb3JtdWxhLmZvckVhY2goY29uZGl0aW9uID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25kaXRpb24gPT09ICdzdHJpbmcnICYmIHRoaXMudmFsaWRKb2luQ29tcGFyYXRvcnMuaW5kZXhPZihjb25kaXRpb24pICE9PSAtMSkge1xuICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAgICAgICBmaW5hbENvbmRpdGlvbiA9IHRoaXMucHJvY2Vzc0FkZFBhdGhQcmVmaXhUb0NvbmRpdGlvbihjb25kaXRpb24sIHBhdGhQcmVmaXgsIGZpbmFsQ29uZGl0aW9uKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaW5hbENvbmRpdGlvbiA9IHRoaXMuZXh0cmFjdENvbmRpdGlvbnMoY29uZGl0aW9uLCBwYXRoUHJlZml4LCBmaW5hbENvbmRpdGlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbENvbmRpdGlvbiA9IHRoaXMuZXh0cmFjdENvbmRpdGlvbnMoZm9ybXVsYSwgcGF0aFByZWZpeCwgZmluYWxDb25kaXRpb24pXG4gICAgfVxuICAgIHJldHVybiBmaW5hbENvbmRpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RDb25kaXRpb25zKGNvbmRpdGlvbjogYW55LCBwYXRoUHJlZml4OiBzdHJpbmcsIG9yaWdpbmFsQ29uZGl0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjb25kaXRpb24uZmllbGRSZWZlcmVuY2Uuc3RhcnRzV2l0aChwYXRoUHJlZml4KSkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsQ29uZGl0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3JpZ2luYWxDb25kaXRpb24uaW5kZXhPZihjb25kaXRpb24uZmllbGRSZWZlcmVuY2UpID4gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkTGlzdCAmJiB0aGlzLnByb2Nlc3NlZExpc3QuaW5kZXhPZihjb25kaXRpb24uZmllbGRSZWZlcmVuY2UpID09PSAtMSkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkTGlzdC5wdXNoKGNvbmRpdGlvbi5maWVsZFJlZmVyZW5jZSk7XG4gICAgICAgICAgY29uc3QgcmVndWxhckV4cCA9IG5ldyBSZWdFeHAoJyhcXFxcYiknICsgY29uZGl0aW9uLmZpZWxkUmVmZXJlbmNlICsgJyg/PVteXCJdKig/OlwiW15cIl0qXCJbXlwiXSopKiQpKFxcXFxiKScsICdnJyk7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsQ29uZGl0aW9uLnJlcGxhY2UocmVndWxhckV4cCwgcGF0aFByZWZpeCArICcuJyArIGNvbmRpdGlvbi5maWVsZFJlZmVyZW5jZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsQ29uZGl0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FjaGUgaW5zdGFuY2VzIHNvIHRoYXQgd2UgY2FuIGNhY2hlIHJlc3VsdHMgbW9yZSBlZmZlY3RpdmVseVxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKGNvbmRpdGlvbjogc3RyaW5nKTogU2hvd0NvbmRpdGlvbiB7XG4gICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZUNhY2hlLmdldChjb25kaXRpb24pO1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIGluc3RhbmNlID0gbmV3IFNob3dDb25kaXRpb24oY29uZGl0aW9uKTtcbiAgICAgIHRoaXMuaW5zdGFuY2VDYWNoZS5zZXQoY29uZGl0aW9uLCBpbnN0YW5jZSk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldEZpZWxkKGNvbmRpdGlvbjogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nP10ge1xuICAgIGxldCBzZXBhcmF0b3I6IHN0cmluZyA9IFNob3dDb25kaXRpb24uQ09OVEFJTlM7XG4gICAgaWYgKGNvbmRpdGlvbi5pbmRleE9mKFNob3dDb25kaXRpb24uQ09OVEFJTlMpIDwgMCkge1xuICAgICAgc2VwYXJhdG9yID0gU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fRVFVQUxTO1xuICAgICAgaWYgKGNvbmRpdGlvbi5pbmRleE9mKFNob3dDb25kaXRpb24uQ09ORElUSU9OX05PVF9FUVVBTFMpID4gLTEpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fTk9UX0VRVUFMUztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFsgY29uZGl0aW9uLnNwbGl0KHNlcGFyYXRvcilbMF0sIHNlcGFyYXRvciBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q29uZGl0aW9ucyhmb3JtdWxhOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbmRpdGlvbkxpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCEhZm9ybXVsYSkge1xuICAgICAgY29uc3QgbmV3Rm9ybXVsYSA9IHR5cGVvZiBmb3JtdWxhID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoZm9ybXVsYSkgOiBmb3JtdWxhO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3Rm9ybXVsYSkpIHtcbiAgICAgICAgbmV3Rm9ybXVsYS5mb3JFYWNoKGNvbmRpdGlvbiA9PiB7XG4gICAgICAgICAgaWYgKCEodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ3N0cmluZycgJiYgdGhpcy52YWxpZEpvaW5Db21wYXJhdG9ycy5pbmRleE9mKGNvbmRpdGlvbikgIT09IC0xKSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgICAgICBjb25kaXRpb25MaXN0LnB1c2goU2hvd0NvbmRpdGlvbi5nZXRDb25kaXRpb25zKGNvbmRpdGlvbikudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25kaXRpb25MaXN0LnB1c2goY29uZGl0aW9uLmZpZWxkUmVmZXJlbmNlICsgY29uZGl0aW9uLmNvbXBhcmF0b3IgKyBjb25kaXRpb24udmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25kaXRpb25MaXN0LnB1c2gobmV3Rm9ybXVsYS5maWVsZFJlZmVyZW5jZSArIG5ld0Zvcm11bGEuY29tcGFyYXRvciArIG5ld0Zvcm11bGEudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9uTGlzdC50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGEgU2hvd0NvbmRpdGlvbiBtb2RlbCBpcyBhZmZlY3RlZCBieSBmaWVsZHMgdGhhdCBoYXZlXG4gICAqIGEgZGlzcGxheV9jb250ZXh0IG9mIEhJRERFTiBvciBSRUFET05MWSwgd2hpY2ggbWVhbnMgdGhleSBhcmVuJ3QgYWJsZSB0b1xuICAgKiBiZSBjaGFuZ2VkIGJ5IHRoZSB1c2VyJ3MgYWN0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHNob3dDb25kaXRpb24gVGhlIFNob3dDb25kaXRpb24gbW9kZWwgdG8gZXZhbHVhdGUuXG4gICAqIEBwYXJhbSBjYXNlRmllbGRzIEluc3BlY3RlZCB0byBzZWUgYXBwcm9wcmlhdGUgZGlzcGxheV9jb250ZXh0cy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaGlkZGVuQ2Fubm90Q2hhbmdlKHNob3dDb25kaXRpb246IFNob3dDb25kaXRpb24sIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHNob3dDb25kaXRpb24gJiYgc2hvd0NvbmRpdGlvbi5jb25kaXRpb25zLmxlbmd0aCAmJiBjYXNlRmllbGRzKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25zOiBzdHJpbmdbXSA9IHRoaXMuZ2V0Q29uZGl0aW9ucyhzaG93Q29uZGl0aW9uLmNvbmRpdGlvbnMpLnNwbGl0KCcsJyk7XG4gICAgICBpZiAoY29uZGl0aW9ucyAmJiBjb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGFsbFVuY2hhbmdlYWJsZSA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBbZmllbGRdID0gU2hvd0NvbmRpdGlvbi5nZXRGaWVsZChjb25kaXRpb24pO1xuICAgICAgICAgIGNvbnN0IHBhdGg6IHN0cmluZ1tdID0gZmllbGQuc3BsaXQoJy4nKTtcbiAgICAgICAgICBsZXQgaGVhZCA9IHBhdGguc2hpZnQoKTtcbiAgICAgICAgICBsZXQgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSBjYXNlRmllbGRzLmZpbmQoY2YgPT4gY2YuaWQgPT09IGhlYWQpO1xuICAgICAgICAgIHdoaWxlIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGhlYWQgPSBwYXRoLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAoY2FzZUZpZWxkKSB7XG4gICAgICAgICAgICAgIC8vIEp1bXAgb3V0IGlmIHRoaXMgaXMgSElEREVOIG9yIFJFQURPTkxZLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IGl0J3NcbiAgICAgICAgICAgICAgLy8gY29tcGxleCBvciBhIGNvbGxlY3Rpb24gLSBuZXN0ZWQgZmllbGRzIHdpbGwgXCJpbmhlcml0XCIgdGhlIGRpc3BsYXlfY29udGV4dC5cbiAgICAgICAgICAgICAgaWYgKFsnSElEREVOJywgJ1JFQURPTkxZJ10uaW5kZXhPZihjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBDb25zaWRlciB3aGF0IHR5cGUgb2YgZmllbGQgdGhpcyBpcy5cbiAgICAgICAgICAgICAgY29uc3QgZnQgPSBjYXNlRmllbGQuZmllbGRfdHlwZTtcbiAgICAgICAgICAgICAgc3dpdGNoIChmdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICBpZiAoZnQuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBmdC5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZUZpZWxkID0gZnQuY29sbGVjdGlvbl9maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmZpbmQoY2YgPT4gY2YuaWQgPT09IGhlYWQpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQ29tcGxleCc6XG4gICAgICAgICAgICAgICAgICBpZiAoZnQuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZUZpZWxkID0gZnQuY29tcGxleF9maWVsZHMuZmluZChjZiA9PiBjZi5pZCA9PT0gaGVhZCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2FzZUZpZWxkKSB7XG4gICAgICAgICAgICBhbGxVbmNoYW5nZWFibGUgPSBhbGxVbmNoYW5nZWFibGUgJiYgWydISURERU4nLCAnUkVBRE9OTFknXS5pbmRleE9mKGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQpID4gLTE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbGxVbmNoYW5nZWFibGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEV4cGVjdHMgYSBzaG93IGNvbmRpdGlvbiBvZiB0aGUgZm9ybTogPGZpZWxkTmFtZT49XCJzdHJpbmdcIlxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZGl0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoISFjb25kaXRpb24pIHtcbiAgICAgIHRoaXMuY29uZGl0aW9ucyA9IENvbmRpdGlvblBhcnNlci5wYXJzZShjb25kaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtYXRjaChmaWVsZHM6IG9iamVjdCwgcGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBDb25kaXRpb25QYXJzZXIuZXZhbHVhdGUoZmllbGRzLCB0aGlzLmNvbmRpdGlvbnMsIHRoaXMudXBkYXRlUGF0aE5hbWUocGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXRoTmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChwYXRoICYmIHBhdGguc3BsaXQoL1tfXSsvZykubGVuZ3RoID4gMCkge1xuICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICAgICAgbGV0IFtwYXRoTmFtZSwgLi4ucGF0aFRhaWxdID0gcGF0aC5zcGxpdCgvW19dKy9nKTtcbiAgICAgIGNvbnN0IHBhdGhGaW5hbEluZGV4ID0gcGF0aFRhaWwucG9wKCk7XG4gICAgICBjb25zdCBwYXRoVGFpbFN0cmluZyA9IHBhdGhUYWlsLnRvU3RyaW5nKCk7XG5cbiAgICAgIHBhdGhUYWlsID0gcGF0aFRhaWwubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHBhdGhGaW5hbEluZGV4KSA9PT0gTnVtYmVyKHZhbHVlKSA/IHBhdGhOYW1lIDogdmFsdWU7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHBhdGhUYWlsU3RyaW5nICE9PSBwYXRoVGFpbC50b1N0cmluZygpXG4gICAgICAgID8gYCR7cGF0aE5hbWV9XyR7cGF0aFRhaWwuam9pbignXycpfV8ke3BhdGhGaW5hbEluZGV4fWBcbiAgICAgICAgOiBwYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWF0Y2hCeUNvbnRleHRGaWVsZHMoY29udGV4dEZpZWxkczogQ2FzZUZpZWxkW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaChGaWVsZHNVdGlscy50b1ZhbHVlc01hcChjb250ZXh0RmllbGRzKSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyBhZmZlY3RlZCBieSBmaWVsZHMgdGhhdCBoYXZlIGEgZGlzcGxheV9jb250ZXh0XG4gICAqIG9mIEhJRERFTiBvciBSRUFET05MWSwgd2hpY2ggbWVhbnMgdGhleSBhcmVuJ3QgYWJsZSB0byBiZSBjaGFuZ2VkIGJ5IHRoZVxuICAgKiB1c2VyJ3MgYWN0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgSW5zcGVjdGVkIHRvIHNlZSBhcHByb3ByaWF0ZSBkaXNwbGF5X2NvbnRleHRzLlxuICAgKi9cbiAgcHVibGljIGhpZGRlbkNhbm5vdENoYW5nZShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTaG93Q29uZGl0aW9uLmhpZGRlbkNhbm5vdENoYW5nZSh0aGlzLCBjYXNlRmllbGRzKTtcbiAgfVxufVxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwtc2hvdy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGFBQWE7SUErSnhCLDZEQUE2RDtJQUM3RCxZQUFtQixTQUFpQjtRQUFqQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBeko1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBMEp0QixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBM0pNLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFxQixFQUFFLFVBQWtCO1FBQzlFLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUNwQyxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUNELElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sYUFBYSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFD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Q0ksa0JBQWtCLENBQUMsVUFBdUI7UUFDL0MsT0FBTyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzVELENBQUM7O0FBek1zQixrQ0FBb0IsR0FBRyxJQUFJLENBQUM7QUFDNUIsOEJBQWdCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZCLHNCQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzlCLDJCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7QUFDeEMsa0NBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsMkJBQWEsR0FBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgICogYXMgX3Njb3JlIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uUGFyc2VyIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZGl0aW9uLXBhcnNlci5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIFNob3dDb25kaXRpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTkRJVElPTl9OT1RfRVFVQUxTID0gJyE9JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT05ESVRJT05fRVFVQUxTID0gJz0nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTlRBSU5TID0gJ0NPTlRBSU5TJztcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTaG93Q29uZGl0aW9uPigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSB2YWxpZEpvaW5Db21wYXJhdG9ycyA9IFsnQU5EJywgJ09SJ107XG4gIHByaXZhdGUgc3RhdGljIHByb2Nlc3NlZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgY29uZGl0aW9ucyA9IFtdO1xuXG4gIHB1YmxpYyBzdGF0aWMgYWRkUGF0aFByZWZpeFRvQ29uZGl0aW9uKHNob3dDb25kaXRpb246IHN0cmluZywgcGF0aFByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXBhdGhQcmVmaXggfHwgcGF0aFByZWZpeCA9PT0gJycpIHtcbiAgICAgIHJldHVybiBzaG93Q29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoIXNob3dDb25kaXRpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtdWxhID0gQ29uZGl0aW9uUGFyc2VyLnBhcnNlKHNob3dDb25kaXRpb24pO1xuICAgIGlmICghZm9ybXVsYSkge1xuICAgICAgcmV0dXJuIHNob3dDb25kaXRpb247XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc2VkTGlzdCA9IFtdO1xuICAgIHNob3dDb25kaXRpb24gPSBzaG93Q29uZGl0aW9uLnJlcGxhY2UoL0NPTlRBSU5TL2csICcgQ09OVEFJTlMnKTtcbiAgICBjb25zdCBwcm9jZXNzZWRDb25kaXRpb24gPSB0aGlzLnByb2Nlc3NBZGRQYXRoUHJlZml4VG9Db25kaXRpb24oZm9ybXVsYSwgcGF0aFByZWZpeCwgc2hvd0NvbmRpdGlvbik7XG4gICAgcmV0dXJuIHByb2Nlc3NlZENvbmRpdGlvbi5yZXBsYWNlKC8gQ09OVEFJTlMvZywgJ0NPTlRBSU5TJyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzQWRkUGF0aFByZWZpeFRvQ29uZGl0aW9uKGZvcm11bGE6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nLCBvcmlnaW5hbENvbmRpdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZmluYWxDb25kaXRpb246IHN0cmluZyA9IG9yaWdpbmFsQ29uZGl0aW9uO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm11bGEpKSB7XG4gICAgICBmb3JtdWxhLmZvckVhY2goY29uZGl0aW9uID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25kaXRpb24gPT09ICdzdHJpbmcnICYmIHRoaXMudmFsaWRKb2luQ29tcGFyYXRvcnMuaW5kZXhPZihjb25kaXRpb24pICE9PSAtMSkge1xuICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAgICAgICBmaW5hbENvbmRpdGlvbiA9IHRoaXMucHJvY2Vzc0FkZFBhdGhQcmVmaXhUb0NvbmRpdGlvbihjb25kaXRpb24sIHBhdGhQcmVmaXgsIGZpbmFsQ29uZGl0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmluYWxDb25kaXRpb24gPSB0aGlzLmV4dHJhY3RDb25kaXRpb25zKGNvbmRpdGlvbiwgcGF0aFByZWZpeCwgZmluYWxDb25kaXRpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbmFsQ29uZGl0aW9uID0gdGhpcy5leHRyYWN0Q29uZGl0aW9ucyhmb3JtdWxhLCBwYXRoUHJlZml4LCBmaW5hbENvbmRpdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBmaW5hbENvbmRpdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGV4dHJhY3RDb25kaXRpb25zKGNvbmRpdGlvbjogYW55LCBwYXRoUHJlZml4OiBzdHJpbmcsIG9yaWdpbmFsQ29uZGl0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChjb25kaXRpb24uZmllbGRSZWZlcmVuY2Uuc3RhcnRzV2l0aChwYXRoUHJlZml4KSkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsQ29uZGl0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3JpZ2luYWxDb25kaXRpb24uaW5kZXhPZihjb25kaXRpb24uZmllbGRSZWZlcmVuY2UpID4gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkTGlzdCAmJiB0aGlzLnByb2Nlc3NlZExpc3QuaW5kZXhPZihjb25kaXRpb24uZmllbGRSZWZlcmVuY2UpID09PSAtMSkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkTGlzdC5wdXNoKGNvbmRpdGlvbi5maWVsZFJlZmVyZW5jZSk7XG4gICAgICAgICAgY29uc3QgcmVndWxhckV4cCA9IG5ldyBSZWdFeHAoYChcXFxcYikke2NvbmRpdGlvbi5maWVsZFJlZmVyZW5jZX0oPz1bXlwiXSooPzpcIlteXCJdKlwiW15cIl0qKSokKShcXFxcYilgLCAnZycpO1xuICAgICAgICAgIHJldHVybiBvcmlnaW5hbENvbmRpdGlvbi5yZXBsYWNlKHJlZ3VsYXJFeHAsIGAke3BhdGhQcmVmaXh9LiR7Y29uZGl0aW9uLmZpZWxkUmVmZXJlbmNlfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBvcmlnaW5hbENvbmRpdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENhY2hlIGluc3RhbmNlcyBzbyB0aGF0IHdlIGNhbiBjYWNoZSByZXN1bHRzIG1vcmUgZWZmZWN0aXZlbHlcbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZShjb25kaXRpb246IHN0cmluZyk6IFNob3dDb25kaXRpb24ge1xuICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VDYWNoZS5nZXQoY29uZGl0aW9uKTtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBTaG93Q29uZGl0aW9uKGNvbmRpdGlvbik7XG4gICAgICB0aGlzLmluc3RhbmNlQ2FjaGUuc2V0KGNvbmRpdGlvbiwgaW5zdGFuY2UpO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRGaWVsZChjb25kaXRpb246IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZz9dIHtcbiAgICBsZXQgc2VwYXJhdG9yOiBzdHJpbmcgPSBTaG93Q29uZGl0aW9uLkNPTlRBSU5TO1xuICAgIGlmIChjb25kaXRpb24uaW5kZXhPZihTaG93Q29uZGl0aW9uLkNPTlRBSU5TKSA8IDApIHtcbiAgICAgIHNlcGFyYXRvciA9IFNob3dDb25kaXRpb24uQ09ORElUSU9OX0VRVUFMUztcbiAgICAgIGlmIChjb25kaXRpb24uaW5kZXhPZihTaG93Q29uZGl0aW9uLkNPTkRJVElPTl9OT1RfRVFVQUxTKSA+IC0xKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IFNob3dDb25kaXRpb24uQ09ORElUSU9OX05PVF9FUVVBTFM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbIGNvbmRpdGlvbi5zcGxpdChzZXBhcmF0b3IpWzBdLCBzZXBhcmF0b3IgXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldENvbmRpdGlvbnMoZm9ybXVsYTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25kaXRpb25MaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICghIWZvcm11bGEpIHtcbiAgICAgIGNvbnN0IG5ld0Zvcm11bGEgPSB0eXBlb2YgZm9ybXVsYSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKGZvcm11bGEpIDogZm9ybXVsYTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld0Zvcm11bGEpKSB7XG4gICAgICAgIG5ld0Zvcm11bGEuZm9yRWFjaChjb25kaXRpb24gPT4ge1xuICAgICAgICAgIGlmICghKHR5cGVvZiBjb25kaXRpb24gPT09ICdzdHJpbmcnICYmIHRoaXMudmFsaWRKb2luQ29tcGFyYXRvcnMuaW5kZXhPZihjb25kaXRpb24pICE9PSAtMSkpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgICAgICAgICAgY29uZGl0aW9uTGlzdC5wdXNoKFNob3dDb25kaXRpb24uZ2V0Q29uZGl0aW9ucyhjb25kaXRpb24pLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uZGl0aW9uTGlzdC5wdXNoKGNvbmRpdGlvbi5maWVsZFJlZmVyZW5jZSArIGNvbmRpdGlvbi5jb21wYXJhdG9yICsgY29uZGl0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uZGl0aW9uTGlzdC5wdXNoKG5ld0Zvcm11bGEuZmllbGRSZWZlcmVuY2UgKyBuZXdGb3JtdWxhLmNvbXBhcmF0b3IgKyBuZXdGb3JtdWxhLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvbkxpc3QudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIFNob3dDb25kaXRpb24gbW9kZWwgaXMgYWZmZWN0ZWQgYnkgZmllbGRzIHRoYXQgaGF2ZVxuICAgKiBhIGRpc3BsYXlfY29udGV4dCBvZiBISURERU4gb3IgUkVBRE9OTFksIHdoaWNoIG1lYW5zIHRoZXkgYXJlbid0IGFibGUgdG9cbiAgICogYmUgY2hhbmdlZCBieSB0aGUgdXNlcidzIGFjdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBzaG93Q29uZGl0aW9uIFRoZSBTaG93Q29uZGl0aW9uIG1vZGVsIHRvIGV2YWx1YXRlLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBJbnNwZWN0ZWQgdG8gc2VlIGFwcHJvcHJpYXRlIGRpc3BsYXlfY29udGV4dHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhpZGRlbkNhbm5vdENoYW5nZShzaG93Q29uZGl0aW9uOiBTaG93Q29uZGl0aW9uLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChzaG93Q29uZGl0aW9uICYmIHNob3dDb25kaXRpb24uY29uZGl0aW9ucy5sZW5ndGggJiYgY2FzZUZpZWxkcykge1xuICAgICAgY29uc3QgY29uZGl0aW9uczogc3RyaW5nW10gPSB0aGlzLmdldENvbmRpdGlvbnMoc2hvd0NvbmRpdGlvbi5jb25kaXRpb25zKS5zcGxpdCgnLCcpO1xuICAgICAgaWYgKGNvbmRpdGlvbnMgJiYgY29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBhbGxVbmNoYW5nZWFibGUgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBjb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgW2ZpZWxkXSA9IFNob3dDb25kaXRpb24uZ2V0RmllbGQoY29uZGl0aW9uKTtcbiAgICAgICAgICBjb25zdCBwYXRoOiBzdHJpbmdbXSA9IGZpZWxkLnNwbGl0KCcuJyk7XG4gICAgICAgICAgbGV0IGhlYWQgPSBwYXRoLnNoaWZ0KCk7XG4gICAgICAgICAgbGV0IGNhc2VGaWVsZDogQ2FzZUZpZWxkID0gY2FzZUZpZWxkcy5maW5kKGNmID0+IGNmLmlkID09PSBoZWFkKTtcbiAgICAgICAgICB3aGlsZSAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBoZWFkID0gcGF0aC5zaGlmdCgpO1xuICAgICAgICAgICAgaWYgKGNhc2VGaWVsZCkge1xuICAgICAgICAgICAgICAvLyBKdW1wIG91dCBpZiB0aGlzIGlzIEhJRERFTiBvciBSRUFET05MWSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBpdCdzXG4gICAgICAgICAgICAgIC8vIGNvbXBsZXggb3IgYSBjb2xsZWN0aW9uIC0gbmVzdGVkIGZpZWxkcyB3aWxsIFwiaW5oZXJpdFwiIHRoZSBkaXNwbGF5X2NvbnRleHQuXG4gICAgICAgICAgICAgIGlmIChbJ0hJRERFTicsICdSRUFET05MWSddLmluZGV4T2YoY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCkgPiAtMSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgd2hhdCB0eXBlIG9mIGZpZWxkIHRoaXMgaXMuXG4gICAgICAgICAgICAgIGNvbnN0IGZ0ID0gY2FzZUZpZWxkLmZpZWxkX3R5cGU7XG4gICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdFxuICAgICAgICAgICAgICBzd2l0Y2ggKGZ0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgIGlmIChmdC5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnICYmIGZ0LmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlRmllbGQgPSBmdC5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMuZmluZChjZiA9PiBjZi5pZCA9PT0gaGVhZCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDb21wbGV4JzpcbiAgICAgICAgICAgICAgICAgIGlmIChmdC5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICBjYXNlRmllbGQgPSBmdC5jb21wbGV4X2ZpZWxkcy5maW5kKGNmID0+IGNmLmlkID09PSBoZWFkKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYXNlRmllbGQpIHtcbiAgICAgICAgICAgIGFsbFVuY2hhbmdlYWJsZSA9IGFsbFVuY2hhbmdlYWJsZSAmJiBbJ0hJRERFTicsICdSRUFET05MWSddLmluZGV4T2YoY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCkgPiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbFVuY2hhbmdlYWJsZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRXhwZWN0cyBhIHNob3cgY29uZGl0aW9uIG9mIHRoZSBmb3JtOiA8ZmllbGROYW1lPj1cInN0cmluZ1wiXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25kaXRpb246IHN0cmluZykge1xuICAgIGlmICghIWNvbmRpdGlvbikge1xuICAgICAgdGhpcy5jb25kaXRpb25zID0gQ29uZGl0aW9uUGFyc2VyLnBhcnNlKGNvbmRpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG1hdGNoKGZpZWxkczogb2JqZWN0LCBwYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIENvbmRpdGlvblBhcnNlci5ldmFsdWF0ZShmaWVsZHMsIHRoaXMuY29uZGl0aW9ucywgdGhpcy51cGRhdGVQYXRoTmFtZShwYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBhdGhOYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHBhdGggJiYgcGF0aC5zcGxpdCgvW19dKy9nKS5sZW5ndGggPiAwKSB7XG4gICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG4gICAgICBsZXQgW3BhdGhOYW1lLCAuLi5wYXRoVGFpbF0gPSBwYXRoLnNwbGl0KC9bX10rL2cpO1xuICAgICAgY29uc3QgcGF0aEZpbmFsSW5kZXggPSBwYXRoVGFpbC5wb3AoKTtcbiAgICAgIGNvbnN0IHBhdGhUYWlsU3RyaW5nID0gcGF0aFRhaWwudG9TdHJpbmcoKTtcblxuICAgICAgcGF0aFRhaWwgPSBwYXRoVGFpbC5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiBOdW1iZXIocGF0aEZpbmFsSW5kZXgpID09PSBOdW1iZXIodmFsdWUpID8gcGF0aE5hbWUgOiB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcGF0aFRhaWxTdHJpbmcgIT09IHBhdGhUYWlsLnRvU3RyaW5nKClcbiAgICAgICAgPyBgJHtwYXRoTmFtZX1fJHtwYXRoVGFpbC5qb2luKCdfJyl9XyR7cGF0aEZpbmFsSW5kZXh9YFxuICAgICAgICA6IHBhdGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtYXRjaEJ5Q29udGV4dEZpZWxkcyhjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1hdGNoKEZpZWxkc1V0aWxzLnRvVmFsdWVzTWFwKGNvbnRleHRGaWVsZHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFmZmVjdGVkIGJ5IGZpZWxkcyB0aGF0IGhhdmUgYSBkaXNwbGF5X2NvbnRleHRcbiAgICogb2YgSElEREVOIG9yIFJFQURPTkxZLCB3aGljaCBtZWFucyB0aGV5IGFyZW4ndCBhYmxlIHRvIGJlIGNoYW5nZWQgYnkgdGhlXG4gICAqIHVzZXIncyBhY3Rpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBJbnNwZWN0ZWQgdG8gc2VlIGFwcHJvcHJpYXRlIGRpc3BsYXlfY29udGV4dHMuXG4gICAqL1xuICBwdWJsaWMgaGlkZGVuQ2Fubm90Q2hhbmdlKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNob3dDb25kaXRpb24uaGlkZGVuQ2Fubm90Q2hhbmdlKHRoaXMsIGNhc2VGaWVsZHMpO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as _score from 'underscore';
2
- import peg from './condition.peg';
3
2
  import { FieldsUtils } from '../../../services/fields/fields.utils';
4
3
  import { ShowCondition } from '../../conditional-show/domain/conditional-show.model';
4
+ import peg from './condition.peg';
5
5
  export class ConditionParser {
6
6
  /**
7
7
  * Parse the raw formula and output structured condition data
@@ -12,7 +12,6 @@ export class ConditionParser {
12
12
  if (!condition) {
13
13
  return null;
14
14
  }
15
- ;
16
15
  condition = condition.replace(/CONTAINS/g, ' CONTAINS');
17
16
  return peg.parse(condition.trim(), {});
18
17
  }
@@ -25,14 +24,12 @@ export class ConditionParser {
25
24
  if (!conditions || conditions.length === 0) {
26
25
  return true;
27
26
  }
28
- ;
29
27
  const validJoinComparators = ['AND', 'OR'];
30
- const result = conditions.reduce((accumulator, condition, index) => {
28
+ return conditions.reduce((accumulator, condition, index) => {
31
29
  const isJoinComparator = (comparator) => (typeof comparator === 'string' && validJoinComparators.indexOf(comparator) !== -1);
32
30
  if (isJoinComparator(condition)) {
33
31
  return accumulator;
34
32
  }
35
- ;
36
33
  let currentConditionResult = true;
37
34
  if (Array.isArray(condition)) {
38
35
  currentConditionResult = this.evaluate(fields, condition);
@@ -49,9 +46,9 @@ export class ConditionParser {
49
46
  }
50
47
  return currentConditionResult;
51
48
  }, true);
52
- return result;
53
49
  }
54
50
  static evaluateJoin(leftResult, comparator, rightResult) {
51
+ // tslint:disable-next-line:switch-default
55
52
  switch (comparator) {
56
53
  case 'OR': return leftResult || rightResult;
57
54
  case 'AND': return leftResult && rightResult;
@@ -141,8 +138,7 @@ export class ConditionParser {
141
138
  }
142
139
  }
143
140
  static unquoted(str) {
144
- const res = str.replace(/^"|"$/g, '');
145
- return res;
141
+ return str.replace(/^"|"$/g, '');
146
142
  }
147
143
  static findValueForComplexCondition(fields, head, tail, path) {
148
144
  if (!fields) {
@@ -198,4 +194,4 @@ export class ConditionParser {
198
194
  return value === null && (right === '');
199
195
  }
200
196
  }
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXBhcnNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL2NvbmRpdGlvbmFsLXNob3cvc2VydmljZXMvY29uZGl0aW9uLXBhcnNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFckYsTUFBTSxPQUFPLGVBQWU7SUFFMUI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBaUI7UUFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFBO1NBQUU7UUFBQSxDQUFDO1FBQ2hDLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFXLEVBQUUsVUFBaUIsRUFBRSxJQUFhO1FBQ2xFLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQTtTQUFFO1FBQUEsQ0FBQztRQUM1RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNDLE1BQU0sTUFBTSxHQUFZLFVBQVUsQ0FBQyxN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QUssQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztpQkFDN0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzdEO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BGO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBVztRQUN2QyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhLEVBQUUsS0FBVTtRQUNwRCxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgX3Njb3JlIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHBlZyBmcm9tICcuL2NvbmRpdGlvbi5wZWcnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIENvbmRpdGlvblBhcnNlciB7XG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSByYXcgZm9ybXVsYSBhbmQgb3V0cHV0IHN0cnVjdHVyZWQgY29uZGl0aW9uIGRhdGFcbiAgICogdGhhdCBjYW4gYmUgdXNlZCBpbiBldmFsdWF0aW5nIHNob3cvaGlkZSBsb2dpY1xuICAgKiBAcGFyYW0gY29uZGl0aW9uIHJhdyBmb3JtdWxhIGUuZy4gVGV4dEZpZWxkID0gXCJIZWxsb1wiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhcnNlKGNvbmRpdGlvbjogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIWNvbmRpdGlvbikgeyByZXR1cm4gbnVsbCB9O1xuICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5yZXBsYWNlKC9DT05UQUlOUy9nLCAnIENPTlRBSU5TJyk7XG4gICAgcmV0dXJuIHBlZy5wYXJzZShjb25kaXRpb24udHJpbSgpLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGUgdGhlIGN1cnJlbnQgZmllbGRzIGFnYWluc3QgdGhlIGNvbmRpdGlvbnNcbiAgICogQHBhcmFtIGZpZWxkcyB0aGUgY3VycmVudCBwYWdlIGZpZWxkcyBhbmQgdGhlaXIgdmFsdWVcbiAgICogQHBhcmFtIGNvbmRpdGlvbnMgVGhlIFBlZ0pTIGZvcm11bGEgb3V0cHV0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV2YWx1YXRlKGZpZWxkczogYW55LCBjb25kaXRpb25zOiBhbnlbXSwgcGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghY29uZGl0aW9ucyB8fCBjb25kaXRpb25zLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gdHJ1ZSB9O1xuICAgIGNvbnN0IHZhbGlkSm9pbkNvbXBhcmF0b3JzID0gWydBTkQnLCAnT1InXTtcblxuICAgIGNvbnN0IHJlc3VsdDogYm9vbGVhbiA9IGNvbmRpdGlvbnMucmVkdWNlKChhY2N1bXVsYXRvcjogYm9vbGVhbiwgY29uZGl0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBpc0pvaW5Db21wYXJhdG9yID0gKGNvbXBhcmF0b3I6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgICAgICAgKHR5cGVvZiBjb21wYXJhdG9yID09PSAnc3RyaW5nJyAmJiB2YWxpZEpvaW5Db21wYXJhdG9ycy5pbmRleE9mKGNvbXBhcmF0b3IpICE9PSAtMSk7XG5cbiAgICAgIGlmIChpc0pvaW5Db21wYXJhdG9yKGNvbmRpdGlvbikpIHsgcmV0dXJuIGFjY3VtdWxhdG9yIH07XG5cbiAgICAgIGxldCBjdXJyZW50Q29uZGl0aW9uUmVzdWx0ID0gdHJ1ZTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICBjdXJyZW50Q29uZGl0aW9uUmVzdWx0ID0gdGhpcy5ldmFsdWF0ZShmaWVsZHMsIGNvbmRpdGlvbik7XG5cbiAgICAgICAgaWYgKGlzSm9pbkNvbXBhcmF0b3IoY29uZGl0aW9uc1tpbmRleCAtIDFdKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRlSm9pbihhY2N1bXVsYXRvciwgY29uZGl0aW9uc1tpbmRleCAtIDFdLCBjdXJyZW50Q29uZGl0aW9uUmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9uLmNvbXBhcmF0b3IpIHtcbiAgICAgICAgY29uc3QgZm9ybXVsYSA9IGNvbmRpdGlvbi5maWVsZFJlZmVyZW5jZSArIGNvbmRpdGlvbi5jb21wYXJhdG9yICsgY29uZGl0aW9uLnZhbHVlO1xuICAgICAgICBjdXJyZW50Q29uZGl0aW9uUmVzdWx0ID0gdGhpcy5tYXRjaEVxdWFsaXR5Q29uZGl0aW9uKGZpZWxkcywgZm9ybXVsYSwgcGF0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0pvaW5Db21wYXJhdG9yKGNvbmRpdGlvbnNbaW5kZXggLSAxXSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVKb2luKGFjY3VtdWxhdG9yLCBjb25kaXRpb25zW2luZGV4IC0gMV0sIGN1cnJlbnRDb25kaXRpb25SZXN1bHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmVudENvbmRpdGlvblJlc3VsdDtcbiAgICB9LCB0cnVlKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBldmFsdWF0ZUpvaW4obGVmdFJlc3VsdDogYm9vbGVhbiwgY29tcGFyYXRvciwgcmlnaHRSZXN1bHQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGNvbXBhcmF0b3IpIHtcbiAgICAgIGNhc2UgJ09SJzogcmV0dXJuIGxlZnRSZXN1bHQgfHwgcmlnaHRSZXN1bHQ7XG4gICAgICBjYXNlICdBTkQnOiByZXR1cm4gbGVmdFJlc3VsdCAmJiByaWdodFJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBtYXRjaEVxdWFsaXR5Q29uZGl0aW9uKGZpZWxkczogb2JqZWN0LCBjb25kaXRpb246IHN0cmluZywgcGF0aD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uU2VwYXJhdG9yXSA9IHRoaXMuZ2V0RmllbGQoY29uZGl0aW9uKTtcbiAgICBjb25zdCBbaGVhZCwgLi4udGFpbF0gPSBmaWVsZC5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZmluZFZhbHVlRm9yQ29tcGxleENvbmRpdGlvbihmaWVsZHMsIGhlYWQsIHRhaWwsIHBhdGgpO1xuICAgIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSB0aGlzLnVucXVvdGVkKGNvbmRpdGlvbi5zcGxpdChjb25kaXRpb25TZXBhcmF0b3IpWzFdKTtcbiAgICBpZiAoY29uZGl0aW9uU2VwYXJhdG9yID09PSBTaG93Q29uZGl0aW9uLkNPTlRBSU5TKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGVja1ZhbHVlQ29udGFpbnMoZXhwZWN0ZWRWYWx1ZSwgY3VycmVudFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tWYWx1ZUVxdWFscyhleHBlY3RlZFZhbHVlLCBjdXJyZW50VmFsdWUsIGNvbmRpdGlvblNlcGFyYXRvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0VmFsdWUoZmllbGRzOiBvYmplY3QsIGhlYWQ6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHRoaXMuaXNEeW5hbWljTGlzdChmaWVsZHNbaGVhZF0pKSB7XG4gICAgICByZXR1cm4gZmllbGRzW2hlYWRdLnZhbHVlLmNvZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmaWVsZHNbaGVhZF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNEeW5hbWljTGlzdChkeW5hbWljbGlzdDogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFfc2NvcmUuaXNFbXB0eShkeW5hbWljbGlzdCkgJiZcbiAgICAgICAgKF9zY29yZS5oYXMoZHluYW1pY2xpc3QsICd2YWx1ZScpICYmIF9zY29yZS5oYXMoZHluYW1pY2xpc3QsICdsaXN0X2l0ZW1zJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RmllbGQoY29uZGl0aW9uOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmc/XSB7XG4gICAgbGV0IHNlcGFyYXRvcjogc3RyaW5nID0gU2hvd0NvbmRpdGlvbi5DT05UQUlOUztcbiAgICBpZiAoY29uZGl0aW9uLmluZGV4T2YoU2hvd0NvbmRpdGlvbi5DT05UQUlOUykgPCAwKSB7XG4gICAgICBzZXBhcmF0b3IgPSBTaG93Q29uZGl0aW9uLkNPTkRJVElPTl9FUVVBTFM7XG4gICAgICBpZiAoY29uZGl0aW9uLmluZGV4T2YoU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fTk9UX0VRVUFMUykgPiAtMSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBTaG93Q29uZGl0aW9uLkNPTkRJVElPTl9OT1RfRVFVQUxTO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWyBjb25kaXRpb24uc3BsaXQoc2VwYXJhdG9yKVswXSwgc2VwYXJhdG9yIF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjaGVja1ZhbHVlRXF1YWxzKGV4cGVjdGVkVmFsdWU6IHN0cmluZywgY3VycmVudFZhbHVlOiBhbnksIGNvbmRpdGlvblNlcGFyYW9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoZXhwZWN0ZWRWYWx1ZS5zZWFyY2goJ1ssXScpID4gLTEpIHsgLy8gZm9yICBtdWx0aS1zZWxlY3QgbGlzdFxuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tNdWx0aVNlbGVjdExpc3RFcXVhbHMoZXhwZWN0ZWRWYWx1ZSwgY3VycmVudFZhbHVlLCBjb25kaXRpb25TZXBhcmFvcik7XG4gICAgfSBlbHNlIGlmIChleHBlY3RlZFZhbHVlLmVuZHNXaXRoKCcqJykgJiYgY3VycmVudFZhbHVlICYmIGNvbmRpdGlvblNlcGFyYW9yICE9PSBTaG93Q29uZGl0aW9uLkNPTkRJVElPTl9OT1RfRVFVQUxTKSB7XG4gICAgICBpZiAodHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZS5zdGFydHNXaXRoKHRoaXMucmVtb3ZlU3RhckNoYXIoZXhwZWN0ZWRWYWx1ZSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWUgPT09ICcqJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2hhbmdlZCBmcm9tICc9PT0nIHRvICc9PScgdG8gY292ZXIgbnVtYmVyIGZpZWxkIGNvbmRpdGlvbnNcbiAgICAgIGlmIChjb25kaXRpb25TZXBhcmFvciA9PT0gU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fTk9UX0VRVUFMUykge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1ZhbHVlTm90RXF1YWxzKGV4cGVjdGVkVmFsdWUsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlID09IGV4cGVjdGVkVmFsdWUgfHwgdGhpcy5va0lmQm90aEVtcHR5KGV4cGVjdGVkVmFsdWUsIGN1cnJlbnRWYWx1ZSk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjaGVja1ZhbHVlTm90RXF1YWxzKGV4cGVjdGVkVmFsdWU6IHN0cmluZywgY3VycmVudFZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtYXRDdXJyZW50VmFsdWUgPSBjdXJyZW50VmFsdWUgPyBjdXJyZW50VmFsdWUudG9TdHJpbmcoKS50cmltKCkgOiAnJztcbiAgICBpZiAoJyonID09PSBleHBlY3RlZFZhbHVlICYmIGZvcm1hdEN1cnJlbnRWYWx1ZSAhPT0gJycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZm9ybWF0RXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkVmFsdWUgPyBleHBlY3RlZFZhbHVlLnRvU3RyaW5nKCkudHJpbSgpIDogJyc7XG4gICAgcmV0dXJuIGZvcm1hdEN1cnJlbnRWYWx1ZSAhPSBmb3JtYXRFeHBlY3RlZFZhbHVlOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjaGVja011bHRpU2VsZWN0TGlzdEVxdWFscyhleHBlY3RlZFZhbHVlOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogYW55LCBjb25kaXRpb25TZXBhcmF0b3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gZXhwZWN0ZWRWYWx1ZS5zcGxpdCgnLCcpLnNvcnQoKS50b1N0cmluZygpO1xuICAgIGNvbnN0IHZhbHVlcyA9IGN1cnJlbnRWYWx1ZSA/IGN1cnJlbnRWYWx1ZS5zb3J0KCkudG9TdHJpbmcoKSA6ICcnO1xuICAgIGlmIChjb25kaXRpb25TZXBhcmF0b3IgPT09IFNob3dDb25kaXRpb24uQ09ORElUSU9OX05PVF9FUVVBTFMpIHtcbiAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlcyAhPT0gdmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhwZWN0ZWRWYWx1ZXMgPT09IHZhbHVlcztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjaGVja1ZhbHVlQ29udGFpbnMoZXhwZWN0ZWRWYWx1ZTogc3RyaW5nLCBjdXJyZW50VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChleHBlY3RlZFZhbHVlLnNlYXJjaCgnLCcpID4gLTEpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gZXhwZWN0ZWRWYWx1ZS5zcGxpdCgnLCcpLnNvcnQoKTtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGN1cnJlbnRWYWx1ZSA/IGN1cnJlbnRWYWx1ZS5zb3J0KCkudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWVzLmV2ZXJ5KGl0ZW0gPT4gdmFsdWVzLnNlYXJjaChpdGVtKSA+PSAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWVzID0gY3VycmVudFZhbHVlICYmIEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSA/IGN1cnJlbnRWYWx1ZS50b1N0cmluZygpIDogJyc7XG4gICAgICByZXR1cm4gdmFsdWVzLnNlYXJjaChleHBlY3RlZFZhbHVlKSA+PSAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHVucXVvdGVkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXMgPSBzdHIucmVwbGFjZSgvXlwifFwiJC9nLCAnJyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb24oZmllbGRzOiBvYmplY3QsIGhlYWQ6IHN0cmluZywgdGFpbDogc3RyaW5nW10sIHBhdGg/OiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghZmllbGRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGFpbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKGZpZWxkcywgaGVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChGaWVsZHNVdGlscy5pc0FycmF5KGZpZWxkc1toZWFkXSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFZhbHVlRm9yQ29tcGxleENvbmRpdGlvbkluQXJyYXkoZmllbGRzLCBoZWFkLCB0YWlsLCBwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb25Gb3JQYXRoSWZBbnkoZmllbGRzLCBoZWFkLCB0YWlsLCBwYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaW5kVmFsdWVGb3JDb21wbGV4Q29uZGl0aW9uRm9yUGF0aElmQW55KGZpZWxkczogb2JqZWN0LCBoZWFkOiBzdHJpbmcsIHRhaWw6IHN0cmluZ1tdLCBwYXRoPzogc3RyaW5nKTogYW55IHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgY29uc3QgW18sIC4uLnBhdGhUYWlsXSA9IHBhdGguc3BsaXQoL1tfXSsvZyk7XG4gICAgICByZXR1cm4gdGhpcy5maW5kVmFsdWVGb3JDb21wbGV4Q29uZGl0aW9uKGZpZWxkc1toZWFkXSwgdGFpbFswXSwgdGFpbC5zbGljZSgxKSwgcGF0aFRhaWwuam9pbignXycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZFZhbHVlRm9yQ29tcGxleENvbmRpdGlvbihmaWVsZHNbaGVhZF0sIHRhaWxbMF0sIHRhaWwuc2xpY2UoMSksIHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb25JbkFycmF5KGZpZWxkczogb2JqZWN0LCBoZWFkOiBzdHJpbmcsIHRhaWw6IHN0cmluZ1tdLCBwYXRoPzogc3RyaW5nKTogYW55IHtcbiAgLy8gdXNlIHRoZSBwYXRoIHRvIHJlc29sdmUgd2hpY2ggYXJyYXkgZWxlbWVudCB3ZSByZWZlciB0b1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoaGVhZCkpIHtcbiAgICAgIGNvbnN0IFtfLCAuLi5wYXRoVGFpbF0gPSBwYXRoLnNwbGl0KC9bX10rL2cpO1xuICAgICAgaWYgKHBhdGhUYWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcnJheUluZGV4ID0gTnVtYmVyLnBhcnNlSW50KHBhdGhUYWlsWzBdLCAxMCk7XG4gICAgICAgICAgY29uc3QgW19fLCAuLi5kcm9wTnVtYmVyUGF0aF0gPSBwYXRoVGFpbDtcbiAgICAgICAgICByZXR1cm4gKGZpZWxkc1toZWFkXVthcnJheUluZGV4XSAhPT0gdW5kZWZpbmVkKSA/IHRoaXMuZmluZFZhbHVlRm9yQ29tcGxleENvbmRpdGlvbihcbiAgICAgICAgICBmaWVsZHNbaGVhZF1bYXJyYXlJbmRleF1bJ3ZhbHVlJ10sIHRhaWxbMF0sIHRhaWwuc2xpY2UoMSksIGRyb3BOdW1iZXJQYXRoLmpvaW4oJ18nKSkgOiBudWxsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgcGFyc2luZyBudW1iZXInLCBwYXRoVGFpbFswXSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignUGF0aCBpbiBmb3JtQXJyYXkgc2hvdWxkIHN0YXJ0IHdpdGggJywgaGVhZCwgJywgZnVsbCBwYXRoOiAnLCBwYXRoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZW1vdmVTdGFyQ2hhcihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHN0ciAmJiBzdHIuaW5kZXhPZignKicpID4gLTEpIHtcbiAgICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIHN0ci5pbmRleE9mKCcqJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb2tJZkJvdGhFbXB0eShyaWdodDogc3RyaW5nLCB2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsICYmIChyaWdodCA9PT0gJycpO1xuICB9XG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLXBhcnNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL2NvbmRpdGlvbmFsLXNob3cvc2VydmljZXMvY29uZGl0aW9uLXBhcnNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDckYsT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFFbEMsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBaUI7UUFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDaEMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQVcsRUFBRSxVQUFpQixFQUFFLElBQWE7UUFDbEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1NBQUU7UUFDNUQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFvQixFQUFFLFNBQVMs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Q0FBQztpQkFDN0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQzdEO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BGO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBVztRQUN2QyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFhLEVBQUUsS0FBVTtRQUNwRCxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgX3Njb3JlIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsJztcbmltcG9ydCBwZWcgZnJvbSAnLi9jb25kaXRpb24ucGVnJztcblxuZXhwb3J0IGNsYXNzIENvbmRpdGlvblBhcnNlciB7XG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgcmF3IGZvcm11bGEgYW5kIG91dHB1dCBzdHJ1Y3R1cmVkIGNvbmRpdGlvbiBkYXRhXG4gICAqIHRoYXQgY2FuIGJlIHVzZWQgaW4gZXZhbHVhdGluZyBzaG93L2hpZGUgbG9naWNcbiAgICogQHBhcmFtIGNvbmRpdGlvbiByYXcgZm9ybXVsYSBlLmcuIFRleHRGaWVsZCA9IFwiSGVsbG9cIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZShjb25kaXRpb246IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKCFjb25kaXRpb24pIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25kaXRpb24gPSBjb25kaXRpb24ucmVwbGFjZSgvQ09OVEFJTlMvZywgJyBDT05UQUlOUycpO1xuICAgIHJldHVybiBwZWcucGFyc2UoY29uZGl0aW9uLnRyaW0oKSwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIHRoZSBjdXJyZW50IGZpZWxkcyBhZ2FpbnN0IHRoZSBjb25kaXRpb25zXG4gICAqIEBwYXJhbSBmaWVsZHMgdGhlIGN1cnJlbnQgcGFnZSBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlXG4gICAqIEBwYXJhbSBjb25kaXRpb25zIFRoZSBQZWdKUyBmb3JtdWxhIG91dHB1dFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBldmFsdWF0ZShmaWVsZHM6IGFueSwgY29uZGl0aW9uczogYW55W10sIHBhdGg/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbmRpdGlvbnMgfHwgY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHsgcmV0dXJuIHRydWU7IH1cbiAgICBjb25zdCB2YWxpZEpvaW5Db21wYXJhdG9ycyA9IFsnQU5EJywgJ09SJ107XG5cbiAgICByZXR1cm4gY29uZGl0aW9ucy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiBib29sZWFuLCBjb25kaXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGlzSm9pbkNvbXBhcmF0b3IgPSAoY29tcGFyYXRvcjogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAgICAgICAodHlwZW9mIGNvbXBhcmF0b3IgPT09ICdzdHJpbmcnICYmIHZhbGlkSm9pbkNvbXBhcmF0b3JzLmluZGV4T2YoY29tcGFyYXRvcikgIT09IC0xKTtcblxuICAgICAgaWYgKGlzSm9pbkNvbXBhcmF0b3IoY29uZGl0aW9uKSkgeyByZXR1cm4gYWNjdW11bGF0b3I7IH1cblxuICAgICAgbGV0IGN1cnJlbnRDb25kaXRpb25SZXN1bHQgPSB0cnVlO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAgIGN1cnJlbnRDb25kaXRpb25SZXN1bHQgPSB0aGlzLmV2YWx1YXRlKGZpZWxkcywgY29uZGl0aW9uKTtcblxuICAgICAgICBpZiAoaXNKb2luQ29tcGFyYXRvcihjb25kaXRpb25zW2luZGV4IC0gMV0pKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVKb2luKGFjY3VtdWxhdG9yLCBjb25kaXRpb25zW2luZGV4IC0gMV0sIGN1cnJlbnRDb25kaXRpb25SZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25kaXRpb24uY29tcGFyYXRvcikge1xuICAgICAgICBjb25zdCBmb3JtdWxhID0gY29uZGl0aW9uLmZpZWxkUmVmZXJlbmNlICsgY29uZGl0aW9uLmNvbXBhcmF0b3IgKyBjb25kaXRpb24udmFsdWU7XG4gICAgICAgIGN1cnJlbnRDb25kaXRpb25SZXN1bHQgPSB0aGlzLm1hdGNoRXF1YWxpdHlDb25kaXRpb24oZmllbGRzLCBmb3JtdWxhLCBwYXRoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSm9pbkNvbXBhcmF0b3IoY29uZGl0aW9uc1tpbmRleCAtIDFdKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZUpvaW4oYWNjdW11bGF0b3IsIGNvbmRpdGlvbnNbaW5kZXggLSAxXSwgY3VycmVudENvbmRpdGlvblJlc3VsdCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50Q29uZGl0aW9uUmVzdWx0O1xuICAgIH0sIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXZhbHVhdGVKb2luKGxlZnRSZXN1bHQ6IGJvb2xlYW4sIGNvbXBhcmF0b3IsIHJpZ2h0UmVzdWx0OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0XG4gICAgc3dpdGNoIChjb21wYXJhdG9yKSB7XG4gICAgICBjYXNlICdPUic6IHJldHVybiBsZWZ0UmVzdWx0IHx8IHJpZ2h0UmVzdWx0O1xuICAgICAgY2FzZSAnQU5EJzogcmV0dXJuIGxlZnRSZXN1bHQgJiYgcmlnaHRSZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbWF0Y2hFcXVhbGl0eUNvbmRpdGlvbihmaWVsZHM6IG9iamVjdCwgY29uZGl0aW9uOiBzdHJpbmcsIHBhdGg/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBbZmllbGQsIGNvbmRpdGlvblNlcGFyYXRvcl0gPSB0aGlzLmdldEZpZWxkKGNvbmRpdGlvbik7XG4gICAgY29uc3QgW2hlYWQsIC4uLnRhaWxdID0gZmllbGQuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb24oZmllbGRzLCBoZWFkLCB0YWlsLCBwYXRoKTtcbiAgICBjb25zdCBleHBlY3RlZFZhbHVlID0gdGhpcy51bnF1b3RlZChjb25kaXRpb24uc3BsaXQoY29uZGl0aW9uU2VwYXJhdG9yKVsxXSk7XG4gICAgaWYgKGNvbmRpdGlvblNlcGFyYXRvciA9PT0gU2hvd0NvbmRpdGlvbi5DT05UQUlOUykge1xuICAgICAgcmV0dXJuIHRoaXMuY2hlY2tWYWx1ZUNvbnRhaW5zKGV4cGVjdGVkVmFsdWUsIGN1cnJlbnRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrVmFsdWVFcXVhbHMoZXhwZWN0ZWRWYWx1ZSwgY3VycmVudFZhbHVlLCBjb25kaXRpb25TZXBhcmF0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFZhbHVlKGZpZWxkczogb2JqZWN0LCBoZWFkOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLmlzRHluYW1pY0xpc3QoZmllbGRzW2hlYWRdKSkge1xuICAgICAgcmV0dXJuIGZpZWxkc1toZWFkXS52YWx1ZS5jb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmllbGRzW2hlYWRdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzRHluYW1pY0xpc3QoZHluYW1pY2xpc3Q6IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhX3Njb3JlLmlzRW1wdHkoZHluYW1pY2xpc3QpICYmXG4gICAgICAgIChfc2NvcmUuaGFzKGR5bmFtaWNsaXN0LCAndmFsdWUnKSAmJiBfc2NvcmUuaGFzKGR5bmFtaWNsaXN0LCAnbGlzdF9pdGVtcycpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldEZpZWxkKGNvbmRpdGlvbjogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nP10ge1xuICAgIGxldCBzZXBhcmF0b3I6IHN0cmluZyA9IFNob3dDb25kaXRpb24uQ09OVEFJTlM7XG4gICAgaWYgKGNvbmRpdGlvbi5pbmRleE9mKFNob3dDb25kaXRpb24uQ09OVEFJTlMpIDwgMCkge1xuICAgICAgc2VwYXJhdG9yID0gU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fRVFVQUxTO1xuICAgICAgaWYgKGNvbmRpdGlvbi5pbmRleE9mKFNob3dDb25kaXRpb24uQ09ORElUSU9OX05PVF9FUVVBTFMpID4gLTEpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fTk9UX0VRVUFMUztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFsgY29uZGl0aW9uLnNwbGl0KHNlcGFyYXRvcilbMF0sIHNlcGFyYXRvciBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tWYWx1ZUVxdWFscyhleHBlY3RlZFZhbHVlOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogYW55LCBjb25kaXRpb25TZXBhcmFvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGV4cGVjdGVkVmFsdWUuc2VhcmNoKCdbLF0nKSA+IC0xKSB7IC8vIGZvciAgbXVsdGktc2VsZWN0IGxpc3RcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrTXVsdGlTZWxlY3RMaXN0RXF1YWxzKGV4cGVjdGVkVmFsdWUsIGN1cnJlbnRWYWx1ZSwgY29uZGl0aW9uU2VwYXJhb3IpO1xuICAgIH0gZWxzZSBpZiAoZXhwZWN0ZWRWYWx1ZS5lbmRzV2l0aCgnKicpICYmIGN1cnJlbnRWYWx1ZSAmJiBjb25kaXRpb25TZXBhcmFvciAhPT0gU2hvd0NvbmRpdGlvbi5DT05ESVRJT05fTk9UX0VRVUFMUykge1xuICAgICAgaWYgKHR5cGVvZiBjdXJyZW50VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUuc3RhcnRzV2l0aCh0aGlzLnJlbW92ZVN0YXJDaGFyKGV4cGVjdGVkVmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlID09PSAnKic7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNoYW5nZWQgZnJvbSAnPT09JyB0byAnPT0nIHRvIGNvdmVyIG51bWJlciBmaWVsZCBjb25kaXRpb25zXG4gICAgICBpZiAoY29uZGl0aW9uU2VwYXJhb3IgPT09IFNob3dDb25kaXRpb24uQ09ORElUSU9OX05PVF9FUVVBTFMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tWYWx1ZU5vdEVxdWFscyhleHBlY3RlZFZhbHVlLCBjdXJyZW50VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSA9PSBleHBlY3RlZFZhbHVlIHx8IHRoaXMub2tJZkJvdGhFbXB0eShleHBlY3RlZFZhbHVlLCBjdXJyZW50VmFsdWUpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tWYWx1ZU5vdEVxdWFscyhleHBlY3RlZFZhbHVlOiBzdHJpbmcsIGN1cnJlbnRWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybWF0Q3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlID8gY3VycmVudFZhbHVlLnRvU3RyaW5nKCkudHJpbSgpIDogJyc7XG4gICAgaWYgKCcqJyA9PT0gZXhwZWN0ZWRWYWx1ZSAmJiBmb3JtYXRDdXJyZW50VmFsdWUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1hdEV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZFZhbHVlID8gZXhwZWN0ZWRWYWx1ZS50b1N0cmluZygpLnRyaW0oKSA6ICcnO1xuICAgIHJldHVybiBmb3JtYXRDdXJyZW50VmFsdWUgIT0gZm9ybWF0RXhwZWN0ZWRWYWx1ZTsgLy8gdHNsaW50OmRpc2FibGUtbGluZVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tNdWx0aVNlbGVjdExpc3RFcXVhbHMoZXhwZWN0ZWRWYWx1ZTogc3RyaW5nLCBjdXJyZW50VmFsdWU6IGFueSwgY29uZGl0aW9uU2VwYXJhdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IGV4cGVjdGVkVmFsdWUuc3BsaXQoJywnKS5zb3J0KCkudG9TdHJpbmcoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBjdXJyZW50VmFsdWUgPyBjdXJyZW50VmFsdWUuc29ydCgpLnRvU3RyaW5nKCkgOiAnJztcbiAgICBpZiAoY29uZGl0aW9uU2VwYXJhdG9yID09PSBTaG93Q29uZGl0aW9uLkNPTkRJVElPTl9OT1RfRVFVQUxTKSB7XG4gICAgICByZXR1cm4gZXhwZWN0ZWRWYWx1ZXMgIT09IHZhbHVlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4cGVjdGVkVmFsdWVzID09PSB2YWx1ZXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tWYWx1ZUNvbnRhaW5zKGV4cGVjdGVkVmFsdWU6IHN0cmluZywgY3VycmVudFZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoZXhwZWN0ZWRWYWx1ZS5zZWFyY2goJywnKSA+IC0xKSB7XG4gICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IGV4cGVjdGVkVmFsdWUuc3BsaXQoJywnKS5zb3J0KCk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBjdXJyZW50VmFsdWUgPyBjdXJyZW50VmFsdWUuc29ydCgpLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgIHJldHVybiBleHBlY3RlZFZhbHVlcy5ldmVyeShpdGVtID0+IHZhbHVlcy5zZWFyY2goaXRlbSkgPj0gMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGN1cnJlbnRWYWx1ZSAmJiBBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgPyBjdXJyZW50VmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgcmV0dXJuIHZhbHVlcy5zZWFyY2goZXhwZWN0ZWRWYWx1ZSkgPj0gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB1bnF1b3RlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXCJ8XCIkL2csICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb24oZmllbGRzOiBvYmplY3QsIGhlYWQ6IHN0cmluZywgdGFpbDogc3RyaW5nW10sIHBhdGg/OiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghZmllbGRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGFpbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKGZpZWxkcywgaGVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChGaWVsZHNVdGlscy5pc0FycmF5KGZpZWxkc1toZWFkXSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFZhbHVlRm9yQ29tcGxleENvbmRpdGlvbkluQXJyYXkoZmllbGRzLCBoZWFkLCB0YWlsLCBwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb25Gb3JQYXRoSWZBbnkoZmllbGRzLCBoZWFkLCB0YWlsLCBwYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaW5kVmFsdWVGb3JDb21wbGV4Q29uZGl0aW9uRm9yUGF0aElmQW55KGZpZWxkczogb2JqZWN0LCBoZWFkOiBzdHJpbmcsIHRhaWw6IHN0cmluZ1tdLCBwYXRoPzogc3RyaW5nKTogYW55IHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgY29uc3QgW18sIC4uLnBhdGhUYWlsXSA9IHBhdGguc3BsaXQoL1tfXSsvZyk7XG4gICAgICByZXR1cm4gdGhpcy5maW5kVmFsdWVGb3JDb21wbGV4Q29uZGl0aW9uKGZpZWxkc1toZWFkXSwgdGFpbFswXSwgdGFpbC5zbGljZSgxKSwgcGF0aFRhaWwuam9pbignXycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZFZhbHVlRm9yQ29tcGxleENvbmRpdGlvbihmaWVsZHNbaGVhZF0sIHRhaWxbMF0sIHRhaWwuc2xpY2UoMSksIHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZpbmRWYWx1ZUZvckNvbXBsZXhDb25kaXRpb25JbkFycmF5KGZpZWxkczogb2JqZWN0LCBoZWFkOiBzdHJpbmcsIHRhaWw6IHN0cmluZ1tdLCBwYXRoPzogc3RyaW5nKTogYW55IHtcbiAgICAvLyB1c2UgdGhlIHBhdGggdG8gcmVzb2x2ZSB3aGljaCBhcnJheSBlbGVtZW50IHdlIHJlZmVyIHRvXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChoZWFkKSkge1xuICAgICAgY29uc3QgW18sIC4uLnBhdGhUYWlsXSA9IHBhdGguc3BsaXQoL1tfXSsvZyk7XG4gICAgICBpZiAocGF0aFRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFycmF5SW5kZXggPSBOdW1iZXIucGFyc2VJbnQocGF0aFRhaWxbMF0sIDEwKTtcbiAgICAgICAgICBjb25zdCBbX18sIC4uLmRyb3BOdW1iZXJQYXRoXSA9IHBhdGhUYWlsO1xuICAgICAgICAgIHJldHVybiAoZmllbGRzW2hlYWRdW2FycmF5SW5kZXhdICE9PSB1bmRlZmluZWQpID8gdGhpcy5maW5kVmFsdWVGb3JDb21wbGV4Q29uZGl0aW9uKFxuICAgICAgICAgIGZpZWxkc1toZWFkXVthcnJheUluZGV4XVsndmFsdWUnXSwgdGFpbFswXSwgdGFpbC5zbGljZSgxKSwgZHJvcE51bWJlclBhdGguam9pbignXycpKSA6IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBwYXJzaW5nIG51bWJlcicsIHBhdGhUYWlsWzBdLCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdQYXRoIGluIGZvcm1BcnJheSBzaG91bGQgc3RhcnQgd2l0aCAnLCBoZWFkLCAnLCBmdWxsIHBhdGg6ICcsIHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlbW92ZVN0YXJDaGFyKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoc3RyICYmIHN0ci5pbmRleE9mKCcqJykgPiAtMSkge1xuICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgc3RyLmluZGV4T2YoJyonKSk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBva0lmQm90aEVtcHR5KHJpZ2h0OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgJiYgKHJpZ2h0ID09PSAnJyk7XG4gIH1cbn1cbiJdfQ==
@@ -7,4 +7,4 @@ export var DisplayMode;
7
7
  DisplayMode[DisplayMode["BANNER"] = 0] = "BANNER";
8
8
  DisplayMode[DisplayMode["ICON"] = 1] = "ICON";
9
9
  })(DisplayMode || (DisplayMode = {}));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9hY3Rpdml0eS9hY3Rpdml0eS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtDQUd4QjtBQUVELE1BQU0sT0FBTyxRQUFRO0NBTXBCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixpREFBTSxDQUFBO0lBQ04sNkNBQUksQ0FBQTtBQUNOLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBY3Rpdml0eUluZm8ge1xuICBwdWJsaWMgZm9yZW5hbWU6IHN0cmluZztcbiAgcHVibGljIHN1cm5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5IHtcbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuICBwdWJsaWMgdmlld2VyczogQWN0aXZpdHlJbmZvW107XG4gIHB1YmxpYyBlZGl0b3JzOiBBY3Rpdml0eUluZm9bXTtcbiAgcHVibGljIHVua25vd25WaWV3ZXJzOiBudW1iZXI7XG4gIHB1YmxpYyB1bmtub3duRWRpdG9yczogbnVtYmVyO1xufVxuXG5leHBvcnQgZW51bSBEaXNwbGF5TW9kZSB7XG4gIEJBTk5FUixcbiAgSUNPTlxufVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9hY3Rpdml0eS9hY3Rpdml0eS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtDQUl4QjtBQUVELE1BQU0sT0FBTyxRQUFRO0NBTXBCO0FBRUQsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQixpREFBTSxDQUFBO0lBQ04sNkNBQUksQ0FBQTtBQUNOLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBY3Rpdml0eUluZm8ge1xuICBwdWJsaWMgaWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JlbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgc3VybmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQWN0aXZpdHkge1xuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyB2aWV3ZXJzOiBBY3Rpdml0eUluZm9bXTtcbiAgcHVibGljIGVkaXRvcnM6IEFjdGl2aXR5SW5mb1tdO1xuICBwdWJsaWMgdW5rbm93blZpZXdlcnM6IG51bWJlcjtcbiAgcHVibGljIHVua25vd25FZGl0b3JzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIERpc3BsYXlNb2RlIHtcbiAgQkFOTkVSLFxuICBJQ09OXG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class CaseActivityInfo {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1hY3Rpdml0eS1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vYWN0aXZpdHkvY2FzZS1hY3Rpdml0eS1pbmZvLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQkFBZ0I7Q0FNNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi91c2VyLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIENhc2VBY3Rpdml0eUluZm8ge1xuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyB1bmtub3duVmlld2VyczogbnVtYmVyO1xuICBwdWJsaWMgdW5rbm93bkVkaXRvcnM6IG51bWJlcjtcbiAgcHVibGljIGVkaXRvcnM6IFVzZXJbXTtcbiAgcHVibGljIHZpZXdlcnM6IFVzZXJbXTtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class CaseActivity {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1hY3Rpdml0eS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL2FjdGl2aXR5L2Nhc2UtYWN0aXZpdHkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFlBQVk7Q0FFeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXNlQWN0aXZpdHlJbmZvIH0gZnJvbSAnLi9jYXNlLWFjdGl2aXR5LWluZm8ubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQ2FzZUFjdGl2aXR5IHtcbiAgcHVibGljIGNhc2U6IENhc2VBY3Rpdml0eUluZm9bXTtcbn1cbiJdfQ==
@@ -1,2 +1,5 @@
1
1
  export * from './activity.model';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9hY3Rpdml0eS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS5tb2RlbCc7XG4iXX0=
2
+ export * from './case-activity.model';
3
+ export * from './case-activity-info.model';
4
+ export * from './user.model';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9hY3Rpdml0eS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHkubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXNlLWFjdGl2aXR5Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY2FzZS1hY3Rpdml0eS1pbmZvLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci5tb2RlbCc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class User {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL2FjdGl2aXR5L3VzZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLElBQUk7Q0FJaEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVXNlciB7XG4gIHB1YmxpYyBpZD86IHN0cmluZztcbiAgcHVibGljIGZvcmVuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzdXJuYW1lOiBzdHJpbmc7XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ // tslint:disable:variable-name
1
2
  export class AddressModel {
2
3
  constructor() {
3
4
  this.AddressLine1 = '';
@@ -9,4 +10,4 @@ export class AddressModel {
9
10
  this.Country = '';
10
11
  }
11
12
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL2FkZHJlc3Nlcy9hZGRyZXNzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0lBQXpCO1FBQ1MsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsWUFBTyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQWRkcmVzc01vZGVsIHtcbiAgcHVibGljIEFkZHJlc3NMaW5lMSA9ICcnO1xuICBwdWJsaWMgQWRkcmVzc0xpbmUyID0gJyc7XG4gIHB1YmxpYyBBZGRyZXNzTGluZTMgPSAnJztcbiAgcHVibGljIFBvc3RUb3duID0gJyc7XG4gIHB1YmxpYyBDb3VudHkgPSAnJztcbiAgcHVibGljIFBvc3RDb2RlID0gJyc7XG4gIHB1YmxpYyBDb3VudHJ5ID0gJyc7XG59XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL2FkZHJlc3Nlcy9hZGRyZXNzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUNTLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NNb2RlbCB7XG4gIHB1YmxpYyBBZGRyZXNzTGluZTEgPSAnJztcbiAgcHVibGljIEFkZHJlc3NMaW5lMiA9ICcnO1xuICBwdWJsaWMgQWRkcmVzc0xpbmUzID0gJyc7XG4gIHB1YmxpYyBQb3N0VG93biA9ICcnO1xuICBwdWJsaWMgQ291bnR5ID0gJyc7XG4gIHB1YmxpYyBQb3N0Q29kZSA9ICcnO1xuICBwdWJsaWMgQ291bnRyeSA9ICcnO1xufVxuIl19
@@ -1,3 +1,4 @@
1
+ // tslint:disable:variable-name
1
2
  export class CaseDetails {
2
3
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kZXRhaWxzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1kZXRhaWxzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0NBVXZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENhc2VEZXRhaWxzIHtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VfdHlwZV9pZDogc3RyaW5nO1xuICBwdWJsaWMgc3RhdGU6IHN0cmluZztcbiAgcHVibGljIGNyZWF0ZWRfZGF0ZT86IHN0cmluZztcbiAgcHVibGljIGxhc3RfbW9kaWZpZWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBsb2NrZWRfYnlfdXNlcl9pZD86IHN0cmluZztcbiAgcHVibGljIHNlY3VyaXR5X2xldmVsPzogc3RyaW5nO1xuICBwdWJsaWMgY2FzZV9kYXRhPzogb2JqZWN0O1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kZXRhaWxzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1kZXRhaWxzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixNQUFNLE9BQU8sV0FBVztDQVV2QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOnZhcmlhYmxlLW5hbWVcbmV4cG9ydCBjbGFzcyBDYXNlRGV0YWlscyB7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMganVyaXNkaWN0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlX3R5cGVfaWQ6IHN0cmluZztcbiAgcHVibGljIHN0YXRlOiBzdHJpbmc7XG4gIHB1YmxpYyBjcmVhdGVkX2RhdGU/OiBzdHJpbmc7XG4gIHB1YmxpYyBsYXN0X21vZGlmaWVkPzogc3RyaW5nO1xuICBwdWJsaWMgbG9ja2VkX2J5X3VzZXJfaWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBzZWN1cml0eV9sZXZlbD86IHN0cmluZztcbiAgcHVibGljIGNhc2VfZGF0YT86IG9iamVjdDtcbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ // tslint:disable:variable-name
1
2
  export class CaseEventData {
2
3
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1ldmVudC1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1ldmVudC1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxhQUFhO0NBWXpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENhc2VFdmVudERhdGEge1xuICBwdWJsaWMgZXZlbnQ6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHN1bW1hcnk6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB9O1xuICBwdWJsaWMgZGF0YT86IG9iamVjdDtcbiAgcHVibGljIGV2ZW50X2RhdGE/OiBvYmplY3Q7IC8vIGZ1bGwgZXZlbnQgZGF0YVxuICBwdWJsaWMgZXZlbnRfdG9rZW46IHN0cmluZztcbiAgcHVibGljIGlnbm9yZV93YXJuaW5nOiBib29sZWFuO1xuICBwdWJsaWMgZHJhZnRfaWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlX3JlZmVyZW5jZT86IHN0cmluZztcbn1cbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1ldmVudC1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1ldmVudC1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixNQUFNLE9BQU8sYUFBYTtDQVl6QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOnZhcmlhYmxlLW5hbWVcbmV4cG9ydCBjbGFzcyBDYXNlRXZlbnREYXRhIHtcbiAgcHVibGljIGV2ZW50OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBzdW1tYXJ5OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgfTtcbiAgcHVibGljIGRhdGE/OiBvYmplY3Q7XG4gIHB1YmxpYyBldmVudF9kYXRhPzogb2JqZWN0OyAvLyBmdWxsIGV2ZW50IGRhdGFcbiAgcHVibGljIGV2ZW50X3Rva2VuOiBzdHJpbmc7XG4gIHB1YmxpYyBpZ25vcmVfd2FybmluZzogYm9vbGVhbjtcbiAgcHVibGljIGRyYWZ0X2lkPzogc3RyaW5nO1xuICBwdWJsaWMgY2FzZV9yZWZlcmVuY2U/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export class CaseFileViewCategory {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctY2F0ZWdvcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1jYXRlZ29yeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sb0JBQW9CO0NBTWhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FzZUZpbGVWaWV3RG9jdW1lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3LWRvY3VtZW50Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0NhdGVnb3J5IHtcbiAgcHVibGljIGNhdGVnb3J5X2lkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXRlZ29yeV9uYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXRlZ29yeV9vcmRlcjogbnVtYmVyO1xuICBwdWJsaWMgZG9jdW1lbnRzOiBDYXNlRmlsZVZpZXdEb2N1bWVudFtdO1xuICBwdWJsaWMgc3ViX2NhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W107XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctY2F0ZWdvcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1jYXRlZ29yeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sb0JBQW9CO0NBTWhDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3RG9jdW1lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3LWRvY3VtZW50Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0NhdGVnb3J5IHtcbiAgcHVibGljIGNhdGVnb3J5X2lkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXRlZ29yeV9uYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXRlZ29yeV9vcmRlcjogbnVtYmVyO1xuICBwdWJsaWMgZG9jdW1lbnRzOiBDYXNlRmlsZVZpZXdEb2N1bWVudFtdO1xuICBwdWJsaWMgc3ViX2NhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W107XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ // tslint:disable:variable-name
1
2
  export class CaseFileViewDocument {
2
3
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZG9jdW1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1kb2N1bWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sb0JBQW9CO0NBTWhDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0RvY3VtZW50IHtcbiAgcHVibGljIGRvY3VtZW50X3VybDogc3RyaW5nO1xuICBwdWJsaWMgZG9jdW1lbnRfZmlsZW5hbWU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50X2JpbmFyeV91cmw6IHN0cmluZztcbiAgcHVibGljIGF0dHJpYnV0ZV9wYXRoOiBzdHJpbmc7XG4gIHB1YmxpYyB1cGxvYWRfdGltZXN0YW1wOiBzdHJpbmc7XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZG9jdW1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2RvbWFpbi9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1kb2N1bWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsTUFBTSxPQUFPLG9CQUFvQjtDQU1oQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOnZhcmlhYmxlLW5hbWVcbmV4cG9ydCBjbGFzcyBDYXNlRmlsZVZpZXdEb2N1bWVudCB7XG4gIHB1YmxpYyBkb2N1bWVudF91cmw6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50X2ZpbGVuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudF9iaW5hcnlfdXJsOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRyaWJ1dGVfcGF0aDogc3RyaW5nO1xuICBwdWJsaWMgdXBsb2FkX3RpbWVzdGFtcDogc3RyaW5nO1xufVxuIl19
@@ -4,4 +4,4 @@
4
4
  */
5
5
  export class CategoriesAndDocuments {
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcmllcy1hbmQtZG9jdW1lbnRzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1maWxlLXZpZXcvY2F0ZWdvcmllcy1hbmQtZG9jdW1lbnRzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7Q0FJbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXNlRmlsZVZpZXdDYXRlZ29yeSB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXctY2F0ZWdvcnkubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3RG9jdW1lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3LWRvY3VtZW50Lm1vZGVsJztcblxuLyoqXG4gKiBEVE8gdG8gcHJvdmlkZSB0eXBpbmcgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIENDRCBEYXRhIFN0b3JlIEFQSSBmb3IgQ2F0ZWdvcmllcyBhbmQgRG9jdW1lbnRzIGRhdGEuXG4gKiBAc2VlIHtAbGluayBodHRwczovL3Rvb2xzLmhtY3RzLm5ldC9jb25mbHVlbmNlL3gvMEtTRFgjQ2FzZUZpbGVWaWV3RG9jdW1lbnREYXRhZW5kcG9pbnRMTEQtU3VjY2Vzc1Jlc3BvbnNlUGF5bG9hZH0gZm9yIGZ1bGwgZGV0YWlsc1xuICovXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyB7XG4gIHB1YmxpYyBjYXNlX3ZlcnNpb246IG51bWJlcjtcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W107XG4gIHB1YmxpYyB1bmNhdGVnb3Jpc2VkX2RvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXTtcbn1cbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcmllcy1hbmQtZG9jdW1lbnRzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1maWxlLXZpZXcvY2F0ZWdvcmllcy1hbmQtZG9jdW1lbnRzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7Q0FJbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTp2YXJpYWJsZS1uYW1lXG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdDYXRlZ29yeSB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXctY2F0ZWdvcnkubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3RG9jdW1lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3LWRvY3VtZW50Lm1vZGVsJztcblxuLyoqXG4gKiBEVE8gdG8gcHJvdmlkZSB0eXBpbmcgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIENDRCBEYXRhIFN0b3JlIEFQSSBmb3IgQ2F0ZWdvcmllcyBhbmQgRG9jdW1lbnRzIGRhdGEuXG4gKiBAc2VlIHtAbGluayBodHRwczovL3Rvb2xzLmhtY3RzLm5ldC9jb25mbHVlbmNlL3gvMEtTRFgjQ2FzZUZpbGVWaWV3RG9jdW1lbnREYXRhZW5kcG9pbnRMTEQtU3VjY2Vzc1Jlc3BvbnNlUGF5bG9hZH0gZm9yIGZ1bGwgZGV0YWlsc1xuICovXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcmllc0FuZERvY3VtZW50cyB7XG4gIHB1YmxpYyBjYXNlX3ZlcnNpb246IG51bWJlcjtcbiAgcHVibGljIGNhdGVnb3JpZXM6IENhc2VGaWxlVmlld0NhdGVnb3J5W107XG4gIHB1YmxpYyB1bmNhdGVnb3Jpc2VkX2RvY3VtZW50czogQ2FzZUZpbGVWaWV3RG9jdW1lbnRbXTtcbn1cbiJdfQ==