@pega/angular-sdk-components 24.1.10 → 24.2.12

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 (271) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +3 -3
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
  3. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
  4. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  5. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
  6. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  8. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +5 -6
  9. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +13 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
  12. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +3 -3
  13. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +3 -3
  14. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -7
  16. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
  17. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
  18. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  19. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +23 -13
  20. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +12 -10
  22. package/esm2022/lib/_components/field/currency/currency.component.mjs +39 -21
  23. package/esm2022/lib/_components/field/date/date.component.mjs +19 -39
  24. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +32 -17
  25. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +43 -23
  26. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +133 -25
  27. package/esm2022/lib/_components/field/email/email.component.mjs +22 -7
  28. package/esm2022/lib/_components/field/group/group.component.mjs +6 -6
  29. package/esm2022/lib/_components/field/integer/integer.component.mjs +20 -7
  30. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +8 -7
  31. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +13 -6
  32. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +39 -23
  33. package/esm2022/lib/_components/field/phone/phone.component.mjs +17 -29
  34. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +10 -12
  35. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +17 -11
  36. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +7 -8
  37. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
  38. package/esm2022/lib/_components/field/text/text.component.mjs +12 -8
  39. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +21 -9
  40. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +3 -3
  41. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +20 -7
  42. package/esm2022/lib/_components/field/time/time.component.mjs +31 -10
  43. package/esm2022/lib/_components/field/url/url.component.mjs +20 -7
  44. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +102 -23
  45. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +18 -44
  46. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +3 -3
  47. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  48. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +5 -12
  49. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
  50. package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
  51. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +9 -16
  52. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +5 -5
  53. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +73 -49
  54. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +5 -5
  55. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +3 -3
  56. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +10 -8
  57. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  58. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
  59. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +5 -5
  60. package/esm2022/lib/_components/infra/reference/reference.component.mjs +74 -81
  61. package/esm2022/lib/_components/infra/region/region.component.mjs +3 -3
  62. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +25 -30
  63. package/esm2022/lib/_components/infra/stages/stages.component.mjs +5 -5
  64. package/esm2022/lib/_components/infra/view/view.component.mjs +22 -7
  65. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +20 -4
  66. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +3 -3
  67. package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
  68. package/esm2022/lib/_components/template/base/form-template-base.mjs +16 -0
  69. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +4 -4
  70. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +11 -16
  71. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
  72. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +13 -8
  73. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +37 -25
  74. package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
  75. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
  76. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
  77. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
  78. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
  79. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
  80. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
  81. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +8 -7
  82. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
  83. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +49 -42
  84. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +5 -5
  85. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +3 -3
  86. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +5 -5
  87. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +3 -3
  88. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +24 -9
  89. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +3 -3
  90. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  91. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +3 -3
  92. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  93. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
  94. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +3 -3
  95. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  96. package/esm2022/lib/_components/template/page/page.component.mjs +4 -4
  97. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +4 -4
  98. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +4 -4
  99. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +3 -3
  100. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +10 -9
  101. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +61 -29
  102. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +5 -5
  103. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +3 -3
  104. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +4 -4
  105. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
  106. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +3 -3
  107. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
  108. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +3 -3
  109. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  110. package/esm2022/lib/_components/template/utils.mjs +17 -1
  111. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
  112. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -5
  114. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
  115. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +6 -8
  116. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +3 -3
  117. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +5 -5
  118. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +4 -4
  119. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
  120. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +3 -3
  121. package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -63
  122. package/esm2022/lib/_components/widget/utility/utility.component.mjs +3 -3
  123. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +4 -4
  124. package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
  125. package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
  126. package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
  127. package/esm2022/lib/_helpers/formatters/boolean.mjs +2 -2
  128. package/esm2022/lib/_helpers/formatters/common.mjs +3 -2
  129. package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
  130. package/esm2022/lib/_helpers/formatters/date.mjs +5 -5
  131. package/esm2022/lib/_helpers/formatters/format-utils.mjs +10 -2
  132. package/esm2022/lib/_helpers/formatters/index.mjs +30 -16
  133. package/esm2022/lib/_helpers/template-utils.mjs +3 -3
  134. package/esm2022/lib/_helpers/utils.mjs +44 -18
  135. package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
  136. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  137. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  138. package/esm2022/lib/_services/banner.service.mjs +35 -0
  139. package/esm2022/lib/_services/case.service.mjs +3 -3
  140. package/esm2022/lib/_services/datapage.service.mjs +3 -3
  141. package/esm2022/lib/_services/endpoints.mjs +1 -2
  142. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  143. package/esm2022/public-api.mjs +16 -12
  144. package/fesm2022/pega-angular-sdk-components.mjs +1988 -1666
  145. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  146. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  147. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  148. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  149. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
  150. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  151. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
  152. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +8 -3
  153. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +0 -1
  154. package/lib/_components/field/check-box/check-box.component.d.ts +2 -3
  155. package/lib/_components/field/currency/currency.component.d.ts +6 -4
  156. package/lib/_components/field/date/date.component.d.ts +17 -7
  157. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  158. package/lib/_components/field/decimal/decimal.component.d.ts +4 -4
  159. package/lib/_components/field/dropdown/dropdown.component.d.ts +14 -3
  160. package/lib/_components/field/email/email.component.d.ts +2 -1
  161. package/lib/_components/field/group/group.component.d.ts +0 -1
  162. package/lib/_components/field/integer/integer.component.d.ts +2 -1
  163. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  164. package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
  165. package/lib/_components/field/percentage/percentage.component.d.ts +6 -3
  166. package/lib/_components/field/phone/phone.component.d.ts +3 -8
  167. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -2
  168. package/lib/_components/field/rich-text/rich-text.component.d.ts +3 -2
  169. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +0 -1
  170. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +0 -1
  171. package/lib/_components/field/text/text.component.d.ts +3 -2
  172. package/lib/_components/field/text-area/text-area.component.d.ts +2 -1
  173. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  174. package/lib/_components/field/text-input/text-input.component.d.ts +2 -1
  175. package/lib/_components/field/time/time.component.d.ts +3 -1
  176. package/lib/_components/field/url/url.component.d.ts +2 -1
  177. package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
  178. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
  179. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
  180. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  181. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -4
  182. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  183. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  184. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  185. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  186. package/lib/_components/infra/assignment/assignment.component.d.ts +6 -4
  187. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +0 -1
  188. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  189. package/lib/_components/infra/defer-load/defer-load.component.d.ts +3 -3
  190. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  191. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  192. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -3
  193. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  194. package/lib/_components/infra/region/region.component.d.ts +0 -1
  195. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
  196. package/lib/_components/infra/stages/stages.component.d.ts +0 -1
  197. package/lib/_components/infra/view/view.component.d.ts +1 -1
  198. package/lib/_components/template/app-shell/app-shell.component.d.ts +0 -1
  199. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  200. package/lib/_components/template/base/details-template-base.d.ts +21 -0
  201. package/lib/_components/template/base/form-template-base.d.ts +10 -0
  202. package/lib/_components/template/case-summary/case-summary.component.d.ts +0 -1
  203. package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
  204. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  205. package/lib/_components/template/data-reference/data-reference.component.d.ts +0 -1
  206. package/lib/_components/template/default-form/default-form.component.d.ts +8 -7
  207. package/lib/_components/template/details/details.component.d.ts +3 -12
  208. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
  209. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
  210. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
  211. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
  212. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
  213. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
  214. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
  215. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  216. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  217. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  218. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  219. package/lib/_components/template/list-view/list-view.component.d.ts +7 -3
  220. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  221. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  222. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  223. package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
  224. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  225. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  226. package/lib/_components/template/page/page.component.d.ts +0 -1
  227. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  228. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  229. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  230. package/lib/_components/template/simple-table-manual/helpers.d.ts +4 -3
  231. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +10 -3
  232. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  233. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +0 -1
  234. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  235. package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
  236. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  237. package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
  238. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  239. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  240. package/lib/_components/template/utils.d.ts +7 -0
  241. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
  242. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
  243. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -4
  244. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  245. package/lib/_components/widget/attachment/attachment.component.d.ts +3 -4
  246. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  247. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -3
  248. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
  249. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  250. package/lib/_components/widget/todo/todo.component.d.ts +10 -14
  251. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  252. package/lib/_helpers/common.d.ts +1 -1
  253. package/lib/_helpers/createstage-utils.d.ts +1 -0
  254. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  255. package/lib/_helpers/formatters/common.d.ts +2 -2
  256. package/lib/_helpers/formatters/currency.d.ts +1 -2
  257. package/lib/_helpers/formatters/date.d.ts +1 -2
  258. package/lib/_helpers/formatters/index.d.ts +1 -2
  259. package/lib/_helpers/utils.d.ts +8 -0
  260. package/lib/_messages/error-messages.service.d.ts +1 -1
  261. package/lib/_services/banner.service.d.ts +8 -0
  262. package/lib/_services/endpoints.d.ts +0 -1
  263. package/lib/doc/KeyReleaseUpdates.md +23 -6
  264. package/package.json +3 -3
  265. package/public-api.d.ts +15 -11
  266. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  267. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  268. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  269. package/lib/_messages/get-login-status.service.d.ts +0 -10
  270. package/lib/_messages/oauth-response.service.d.ts +0 -14
  271. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
3
3
  import { MatCardModule } from '@angular/material/card';
4
4
  import { ReferenceComponent } from '../../reference/reference.component';
5
5
  import { Utils } from '../../../../_helpers/utils';
6
- import { getToDoAssignments, showBanner } from './helpers';
6
+ import { getToDoAssignments, hasAssignments, showBanner } from './helpers';
7
7
  import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component';
8
8
  import { FlowContainerBaseComponent } from '../base-components/flow-container-base.component';
9
9
  import * as i0 from "@angular/core";
@@ -46,12 +46,16 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
46
46
  // with init, force children to be loaded of global pConn
47
47
  this.initComponent(true);
48
48
  this.initContainer();
49
+ this.checkAndUpdate();
49
50
  PCore.getPubSubUtils().subscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, () => {
50
51
  this.handleCancel();
51
52
  }, 'cancelAssignment');
52
53
  PCore.getPubSubUtils().subscribe('cancelPressed', () => {
53
54
  this.handleCancelPressed();
54
55
  }, 'cancelPressed');
56
+ PCore.getPubSubUtils().subscribe('clearBannerMessages', () => {
57
+ this.banners = [];
58
+ }, 'clearBannerMessages');
55
59
  }
56
60
  ngOnDestroy() {
57
61
  if (this.angularPConnectData.unsubscribeFn) {
@@ -59,6 +63,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
59
63
  }
60
64
  PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, 'cancelAssignment');
61
65
  PCore.getPubSubUtils().unsubscribe('cancelPressed', 'cancelPressed');
66
+ PCore.getPubSubUtils().unsubscribe('clearBannerMessages', 'clearBannerMessages');
62
67
  }
63
68
  handleCancel() {
64
69
  // cancel happened, so ok to initialize the flow container
@@ -77,13 +82,14 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
77
82
  const pConn = this.pConnectOfActiveContainerItem || this.pConn$;
78
83
  const caseViewModeFromProps = this.angularPConnect.getComponentProp(this, 'caseViewMode');
79
84
  const caseViewModeFromRedux = pConn.getValue('context_data.caseViewMode', '');
85
+ const completeProps = this.angularPConnect.getCurrentCompleteProps(this);
80
86
  // ONLY call updateSelf when the component should update
81
87
  // AND removing the "gate" that was put there since shouldComponentUpdate
82
88
  // should be the real "gate"
89
+ // eslint-disable-next-line sonarjs/no-collapsible-if
83
90
  if (bUpdateSelf || caseViewModeFromProps !== caseViewModeFromRedux) {
84
91
  // don't want to redraw the flow container when there are page messages, because
85
92
  // the redraw causes us to loose the errors on the elements
86
- const completeProps = this.angularPConnect.getCurrentCompleteProps(this);
87
93
  if (!completeProps.pageMessages || completeProps.pageMessages.length == 0) {
88
94
  // with a cancel, need to timeout so todo will update correctly
89
95
  if (this.bHasCancel) {
@@ -96,10 +102,8 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
96
102
  this.updateSelf();
97
103
  }
98
104
  }
99
- else {
100
- this.showPageMessages(completeProps);
101
- }
102
105
  }
106
+ this.showPageMessages(completeProps);
103
107
  }
104
108
  showPageMessages(completeProps) {
105
109
  this.ngZone.run(() => {
@@ -178,36 +182,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
178
182
  // turn off spinner
179
183
  this.psService.sendMessage(false);
180
184
  }
181
- hasAssignments() {
182
- let hasAssignments = false;
183
- const assignmentsList = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
184
- // const thisOperator = PCore.getEnvironmentInfo().getOperatorIdentifier();
185
- // 8.7 includes assignments in Assignments List that may be assigned to
186
- // a different operator. So, see if there are any assignments for
187
- // the current operator
188
- const isEmbedded = window.location.href.includes('embedded');
189
- let bAssignmentsForThisOperator = false;
190
- if (isEmbedded) {
191
- const thisOperator = PCore.getEnvironmentInfo().getOperatorIdentifier();
192
- for (const assignment of assignmentsList) {
193
- if (assignment.assigneeInfo.ID === thisOperator) {
194
- bAssignmentsForThisOperator = true;
195
- }
196
- }
197
- }
198
- else {
199
- bAssignmentsForThisOperator = true;
200
- }
201
- // Bail if there is no assignmentsList
202
- if (!assignmentsList) {
203
- return hasAssignments;
204
- }
205
- const hasChildCaseAssignments = this.hasChildCaseAssignments();
206
- if (bAssignmentsForThisOperator || hasChildCaseAssignments || this.isCaseWideLocalAction()) {
207
- hasAssignments = true;
208
- }
209
- return hasAssignments;
210
- }
211
185
  isCaseWideLocalAction() {
212
186
  const actionID = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.ACTIVE_ACTION_ID);
213
187
  const caseActions = this.pConn$.getValue(this.pCoreConstants.CASE_INFO.AVAILABLEACTIONS);
@@ -329,7 +303,9 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
329
303
  }
330
304
  showCaseMessages() {
331
305
  this.caseMessages$ = this.localizedVal(this.pConn$.getValue('caseMessages'), this.localeCategory);
332
- if (this.caseMessages$ || !this.hasAssignments()) {
306
+ // caseMessages's behavior has changed in 24.2, and hence it doesn't let Optional Action work.
307
+ // Changing the below condition for now. Was: (theCaseMessages || !hasAssignments())
308
+ if (!hasAssignments(this.pConn$)) {
333
309
  this.bHasCaseMessages$ = true;
334
310
  this.bShowConfirm = true;
335
311
  this.checkSvg$ = this.utils.getImageSrc('check', this.utils.getSDKStaticContentUrl());
@@ -338,8 +314,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
338
314
  if (!this.caseMessages$) {
339
315
  this.caseMessages$ = this.localizedVal('Thank you! The next step in this case has been routed appropriately.', this.localeCategory);
340
316
  }
341
- // publish this "assignmentFinished" for mashup, need to get approved as a standard
342
- PCore.getPubSubUtils().publish('assignmentFinished');
343
317
  this.psService.sendMessage(false);
344
318
  }
345
319
  else {
@@ -350,6 +324,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
350
324
  updateFlowContainerChildren() {
351
325
  // routingInfo was added as component prop in populateAdditionalProps
352
326
  const routingInfo = this.angularPConnect.getComponentProp(this, 'routingInfo');
327
+ this.confirm_pconn = null;
353
328
  let loadingInfo;
354
329
  try {
355
330
  // @ts-ignore - Property 'getLoadingStatus' is private and only accessible within class 'C11nEnv'
@@ -444,7 +419,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
444
419
  control.markAsTouched();
445
420
  });
446
421
  }
447
- // eslint-disable-next-line sonarjs/no-identical-functions
448
422
  topViewRefresh() {
449
423
  Object.values(this.formGroup$.controls).forEach(control => {
450
424
  control.markAsTouched();
@@ -475,13 +449,13 @@ export class FlowContainerComponent extends FlowContainerBaseComponent {
475
449
  data: pConnect.getDataObject(contextName)
476
450
  });
477
451
  }
478
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowContainerComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.ProgressSpinnerService }, { token: i2.FormBuilder }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
479
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FlowContainerComponent, isStandalone: true, selector: "app-flow-container", inputs: { pConn$: "pConn$" }, providers: [Utils], usesInheritance: true, ngImport: i0, template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatCardModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatCard), selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
452
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowContainerComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.ProgressSpinnerService }, { token: i2.FormBuilder }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
453
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlowContainerComponent, isStandalone: true, selector: "app-flow-container", inputs: { pConn$: "pConn$" }, providers: [Utils], usesInheritance: true, ngImport: i0, template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm && confirm_pconn\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatCardModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatCard), selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
480
454
  }
481
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowContainerComponent, decorators: [{
455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowContainerComponent, decorators: [{
482
456
  type: Component,
483
- args: [{ selector: 'app-flow-container', providers: [Utils], standalone: true, imports: [CommonModule, MatCardModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n" }]
457
+ args: [{ selector: 'app-flow-container', providers: [Utils], standalone: true, imports: [CommonModule, MatCardModule, forwardRef(() => ComponentMapperComponent)], template: "<div style=\"text-align: left\" class=\"psdk-flow-container-top\">\n <div *ngIf=\"!bShowConfirm\">\n <div *ngIf=\"!todo_showTodo$\">\n <h2>{{ containerName$ }}</h2>\n <div *ngIf=\"banners?.length\">\n <component-mapper name=\"AlertBanner\" [props]=\"{ banners }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Todo\"\n [props]=\"{\n pConn$: pConnectOfActiveContainerItem,\n caseInfoID$: todo_caseInfoID$,\n datasource$: todo_datasource$,\n showTodoList$: todo_showTodoList$,\n headerText$: todo_headerText$,\n type$: 'TODO',\n context$: todo_context$,\n isConfirm: true\n }\"\n ></component-mapper>\n </div>\n <div *ngIf=\"!todo_showTodo$\">\n <component-mapper\n *ngIf=\"pConnectOfActiveContainerItem\"\n name=\"Assignment\"\n [props]=\"{ pConn$: pConnectOfActiveContainerItem, formGroup$, arChildren$, itemKey$ }\"\n ></component-mapper>\n </div>\n </div>\n <div *ngIf=\"bHasCaseMessages$\">\n <mat-card class=\"psdk-message-card\">\n <div style=\"display: flex; flex-direction: row\">\n <div><img class=\"psdk-icon\" src=\"{{ checkSvg$ }}\" /></div>\n <div>{{ caseMessages$ }}</div>\n </div>\n </mat-card>\n </div>\n <div *ngIf=\"bShowBanner && bShowConfirm && confirm_pconn\">\n <component-mapper name=\"View\" [props]=\"{ formGroup$, pConn$: confirm_pconn }\"></component-mapper>\n </div>\n</div>\n" }]
484
458
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.ProgressSpinnerService }, { type: i2.FormBuilder }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
485
459
  type: Input
486
460
  }] } });
487
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQTZCLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7OztBQXdCOUYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDBCQUEwQjtJQXdDcEUsWUFDRSxRQUFrQixFQUNWLEtBQXdCLEVBQ3hCLFNBQWlDLEVBQ2pDLEVBQWUsRUFDZixNQUFjLEVBQ2QsS0FBWTtRQUVwQixLQUFLLENBQUMsUUFBUSxDQUFDLENB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QixFQUFFLENBQUM7Z0JBQ3RCLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUVELGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsR0FBRztZQUNILFFBQVE7WUFDUixZQUFZLEVBQUUsU0FBUztZQUN2QixZQUFZLEVBQUUsWUFBWTtZQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FybEJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLCtGQUp0QixDQUFDLEtBQUssQ0FBQyxpREM5QnBCLG9rREE0Q0EsNkVEWlksWUFBWSw0S0FBRSxhQUFhLHVMQUFtQix3QkFBd0I7OzRGQUVyRSxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGFBR25CLENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztxTkFHekUsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IHB1YmxpY0NvbnN0YW50cyB9IGZyb20gJ0BwZWdhL3Bjb3JlLXBjb25uZWN0LXR5cGVkZWZzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX21lc3NhZ2VzL3Byb2dyZXNzLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGdldFRvRG9Bc3NpZ25tZW50cywgc2hvd0Jhbm5lciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd0NvbnRhaW5lckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWNvbXBvbmVudHMvZmxvdy1jb250YWluZXItYmFzZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFdBUk5JTkc6ICBJdCBpcyBub3QgZXhwZWN0ZWQgdGhhdCB0aGlzIGZpbGUgc2hvdWxkIGJlIG1vZGlmaWVkLiAgSXQgaXMgcGFydCBvZiBpbmZyYXN0cnVjdHVyZSBjb2RlIHRoYXQgd29ya3Mgd2l0aFxuICogUmVkdXggYW5kIGNyZWF0aW9uL3VwZGF0ZSBvZiBSZWR1eCBjb250YWluZXJzIGFuZCBQQ29ubmVjdC4gIE1vZGlmeWluZyB0aGlzIGNvZGUgY291bGQgaGF2ZSB1bmRlc2lyZWFibGUgcmVzdWx0cyBhbmRcbiAqIGlzIHRvdGFsbHkgYXQgeW91ciBvd24gcmlzay5cbiAqL1xuXG5pbnRlcmZhY2UgRmxvd0NvbnRhaW5lclByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBjaGlsZHJlbj86IGFueVtdO1xuICBuYW1lPzogc3RyaW5nO1xuICByb3V0aW5nSW5mbz86IGFueTtcbiAgcGFnZU1lc3NhZ2VzOiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZsb3ctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBGbG93Q29udGFpbmVyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgcENvcmVDb25zdGFudHM6IHR5cGVvZiBwdWJsaWNDb25zdGFudHM7XG4gIGNvbmZpZ1Byb3BzJDogRmxvd0NvbnRhaW5lclByb3BzO1xuXG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBpdGVtS2V5JCA9ICcnO1xuICBjb250YWluZXJOYW1lJDogc3RyaW5nO1xuICBidWlsZE5hbWUkOiBzdHJpbmc7XG5cbiAgLy8gdG9kb1xuICB0b2RvX3Nob3dUb2RvJCA9IGZhbHNlO1xuICB0b2RvX2Nhc2VJbmZvSUQkOiBzdHJpbmc7XG4gIHRvZG9fc2hvd1RvZG9MaXN0JCA9IGZhbHNlO1xuICB0b2RvX2RhdGFzb3VyY2UkOiBhbnk7XG4gIHRvZG9faGVhZGVyVGV4dCQgPSAnVG8gZG8nO1xuICB0b2RvX3R5cGUkOiBzdHJpbmc7XG4gIHRvZG9fY29udGV4dCQ6IHN0cmluZztcbiAgdG9kb19wQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICBiSGFzQ2FuY2VsID0gZmFsc2U7XG5cbiAgLy8gbWVzc2FnZXNcbiAgY2FzZU1lc3NhZ2VzJDogc3RyaW5nO1xuICBiSGFzQ2FzZU1lc3NhZ2VzJCA9IGZhbHNlO1xuICBjaGVja1N2ZyQ6IHN0cmluZztcbiAgVE9ETzogYW55O1xuICBiU2hvd0NvbmZpcm0gPSBmYWxzZTtcbiAgYlNob3dCYW5uZXI6IGJvb2xlYW47XG4gIGNvbmZpcm1fcGNvbm46IGFueTtcbiAgbG9jYWxpemVkVmFsOiBhbnk7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ01lc3NhZ2VzJztcbiAgbG9jYWxlUmVmZXJlbmNlOiBhbnk7XG4gIGJhbm5lcnM6IGFueVtdO1xuICAvLyBpdGVtS2V5OiBzdHJpbmcgPSBcIlwiOyAgIC8vIEpBIC0gdGhpcyBpcyB3aGF0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgdG8gcGFzcyB0byBmaW5pc2hBc3NpZ25tZW50LCBuYXZpZ2F0ZVRvU3RlcFxuXG4gIHBDb25uZWN0T2ZBY3RpdmVDb250YWluZXJJdGVtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAvLyBjcmVhdGUgdGhlIGZvcm1Hcm91cFxuICAgIHRoaXMuZm9ybUdyb3VwJCA9IHRoaXMuZmIuZ3JvdXAoeyBoaWRlUmVxdWlyZWQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gICAgY29uc3QgY2FzZUluZm8gPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpO1xuICAgIHRoaXMubG9jYWxlUmVmZXJlbmNlID0gYCR7Y2FzZUluZm8/LmdldENsYXNzTmFtZSgpfSFDQVNFISR7Y2FzZUluZm8uZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGdldCB0aGUgUENvcmUgY29uc3RhbnRzXG4gICAgdGhpcy5wQ29yZUNvbnN0YW50cyA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgVE9ETyB9ID0gdGhpcy5wQ29yZUNvbnN0YW50cztcbiAgICB0aGlzLlRPRE8gPSBUT0RPO1xuICAgIC8vIHdpdGggaW5pdCwgZm9yY2UgY2hpbGRyZW4gdG8gYmUgbG9hZGVkIG9mIGdsb2JhbCBwQ29ublxuICAgIHRoaXMuaW5pdENvbXBvbmVudCh0cnVlKTtcblxuICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsKCk7XG4gICAgICB9LFxuICAgICAgJ2NhbmNlbEFzc2lnbm1lbnQnXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgJ2NhbmNlbFByZXNzZWQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbmNlbFByZXNzZWQoKTtcbiAgICAgIH0sXG4gICAgICAnY2FuY2VsUHJlc3NlZCdcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuRVZFTlRfQ0FOQ0VMLCAnY2FuY2VsQXNzaWdubWVudCcpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZSgnY2FuY2VsUHJlc3NlZCcsICdjYW5jZWxQcmVzc2VkJyk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWwoKSB7XG4gICAgLy8gY2FuY2VsIGhhcHBlbmVkLCBzbyBvayB0byBpbml0aWFsaXplIHRoZSBmbG93IGNvbnRhaW5lclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicsICd0cnVlJyk7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxQcmVzc2VkKCkge1xuICAgIHRoaXMuYkhhc0NhbmNlbCA9IHRydWU7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIGNvbnN0IHBDb25uID0gdGhpcy5wQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSB8fCB0aGlzLnBDb25uJDtcbiAgICBjb25zdCBjYXNlVmlld01vZGVGcm9tUHJvcHMgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdjYXNlVmlld01vZGUnKTtcbiAgICBjb25zdCBjYXNlVmlld01vZGVGcm9tUmVkdXggPSBwQ29ubi5nZXRWYWx1ZSgnY29udGV4dF9kYXRhLmNhc2VWaWV3TW9kZScsICcnKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgLy8gICAgQU5EIHJlbW92aW5nIHRoZSBcImdhdGVcIiB0aGF0IHdhcyBwdXQgdGhlcmUgc2luY2Ugc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gICAgLy8gICAgICBzaG91bGQgYmUgdGhlIHJlYWwgXCJnYXRlXCJcbiAgICBpZiAoYlVwZGF0ZVNlbGYgfHwgY2FzZVZpZXdNb2RlRnJvbVByb3BzICE9PSBjYXNlVmlld01vZGVGcm9tUmVkdXgpIHtcbiAgICAgIC8vIGRvbid0IHdhbnQgdG8gcmVkcmF3IHRoZSBmbG93IGNvbnRhaW5lciB3aGVuIHRoZXJlIGFyZSBwYWdlIG1lc3NhZ2VzLCBiZWNhdXNlXG4gICAgICAvLyB0aGUgcmVkcmF3IGNhdXNlcyB1cyB0byBsb29zZSB0aGUgZXJyb3JzIG9uIHRoZSBlbGVtZW50c1xuICAgICAgY29uc3QgY29tcGxldGVQcm9wcyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldEN1cnJlbnRDb21wbGV0ZVByb3BzKHRoaXMpIGFzIEZsb3dDb250YWluZXJQcm9wcztcbiAgICAgIGlmICghY29tcGxldGVQcm9wcy5wYWdlTWVzc2FnZXMgfHwgY29tcGxldGVQcm9wcy5wYWdlTWVzc2FnZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgLy8gd2l0aCBhIGNhbmNlbCwgbmVlZCB0byB0aW1lb3V0IHNvIHRvZG8gd2lsbCB1cGRhdGUgY29ycmVjdGx5XG4gICAgICAgIGlmICh0aGlzLmJIYXNDYW5jZWwpIHtcbiAgICAgICAgICB0aGlzLmJIYXNDYW5jZWwgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1BhZ2VNZXNzYWdlcyhjb21wbGV0ZVByb3BzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzaG93UGFnZU1lc3NhZ2VzKGNvbXBsZXRlUHJvcHM6IEZsb3dDb250YWluZXJQcm9wcykge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBwYWdlTWVzc2FnZXMgPSBjb21wbGV0ZVByb3BzLnBhZ2VNZXNzYWdlcztcbiAgICAgIHRoaXMuYmFubmVycyA9IFt7IG1lc3NhZ2VzOiBwYWdlTWVzc2FnZXM/Lm1hcChtc2cgPT4gdGhpcy5sb2NhbGl6ZWRWYWwobXNnLm1lc3NhZ2UsICdNZXNzYWdlcycpKSwgdmFyaWFudDogJ3VyZ2VudCcgfV07XG4gICAgfSk7XG4gIH1cblxuICBnZXRUb2RvVmlzaWJpbHR5KCkge1xuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHRoaXMucENvbm4kLmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG4gICAgaWYgKGNhc2VWaWV3TW9kZSAmJiBjYXNlVmlld01vZGUgPT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCBraWQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpWzBdO1xuICAgICAgY29uc3QgdG9kb0tpZCA9IGtpZC5nZXRQQ29ubmVjdCgpLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0b2RvS2lkLmdldFBDb25uZWN0KCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAhKGNhc2VWaWV3TW9kZSAmJiBjYXNlVmlld01vZGUgPT09ICdwZXJmb3JtJyk7XG4gIH1cblxuICBpbml0Q29udGFpbmVyKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck1ncjogYW55ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGNvbnN0IGJhc2VDb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBjb25zdCBjb250YWluZXJOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclR5cGUgPSAnc2luZ2xlJztcblxuICAgIGNvbnN0IGZsb3dDb250YWluZXJUYXJnZXQgPSBgJHtiYXNlQ29udGV4dH0vJHtjb250YWluZXJOYW1lfWA7XG4gICAgY29uc3QgaXNDb250YWluZXJJdGVtQXZhaWxhYmxlID0gUENvcmUuZ2V0Q29udGFpbmVyVXRpbHMoKS5nZXRBY3RpdmVDb250YWluZXJJdGVtTmFtZShmbG93Q29udGFpbmVyVGFyZ2V0KTtcblxuICAgIC8vIGNsZWFyIG91dCBzaW5jZSB3ZSBhcmUgaW5pdGlhbGl6aW5nXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJywgJ2ZhbHNlJyk7XG5cbiAgICBpZiAoIWlzQ29udGFpbmVySXRlbUF2YWlsYWJsZSkge1xuICAgICAgY29udGFpbmVyTWdyLmluaXRpYWxpemVDb250YWluZXJzKHtcbiAgICAgICAgdHlwZTogY29udGFpbmVyVHlwZVxuICAgICAgfSk7XG5cbiAgICAgIC8qIHJlbW92ZSBjb21tZW50ZWQgb3V0IGNvZGUgd2hlbiB1cGRhdGUgUmVhY3QvV0NcbiAgICAgICAqKiogaW5zdGVhZCBvZiBnZXR0aW5nIHZhbHVlcyBoZXJlIHRvIHBhc3MgdG8gYWRkQ29udGFpbmVySXRlbSwgd2UgY2FsbCB0aGUgZnVuY3Rpb24gYmVsb3cgXCJhZGRDb250YWluZXJJdGVtXCJcbiAgICAgICAqKiogd2hpY2ggY29tZXMgZnJvbSBmbG93IGNvbnRhaW5lciBoZWxwZXJzIGluIE5lYnVsYVxuICAgICAgICovXG4gICAgICAvLyBjb250YWluZXJNZ3IuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgICAvLyAgIHNlbWFudGljVVJMOiBcIlwiLFxuICAgICAgLy8gICBrZXk6IHRoaXMucENvbm4kLmdldFZhbHVlKFwia2V5XCIpLFxuICAgICAgLy8gICBmbG93TmFtZTogdGhpcy5wQ29ubiQuZ2V0VmFsdWUoXCJmbG93TmFtZVwiKSxcbiAgICAgIC8vICAgY2FzZVZpZXdNb2RlOiBcInBlcmZvcm1cIixcbiAgICAgIC8vICAgZGF0YTogdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdChiYXNlQ29udGV4dCksXG4gICAgICAvLyAgIGNvbnRhaW5lclR5cGVcbiAgICAgIC8vIH0pO1xuXG4gICAgICB0aGlzLmFkZENvbnRhaW5lckl0ZW0odGhpcy5wQ29ubiQpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRDb21wb25lbnQoYkxvYWRDaGlsZHJlbjogYm9vbGVhbikge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEZsb3dDb250YWluZXJQcm9wcztcbiAgICB0aGlzLnNob3dQYWdlTWVzc2FnZXModGhpcy5jb25maWdQcm9wcyQpO1xuXG4gICAgLy8gd2hlbiB0cnVlLCB1cGRhdGUgYXJDaGlsZHJlbiBmcm9tIHBDb25uLCBvdGhlcndpc2UsIGFyQ2hpbHJlbiB3aWxsIGJlIHVwZGF0ZWQgaW4gdXBkYXRlU2VsZigpXG4gICAgaWYgKGJMb2FkQ2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuICAgIH1cblxuICAgIC8vIGNvbnN0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgLy8gY29uc3QgYWN0aXZlQWN0aW9uTGFiZWw6IHN0cmluZyA9ICcnO1xuICAgIC8vIGNvbnN0IHsgZ2V0UENvbm5lY3QgfSA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIHRoaXMudG9kb19zaG93VG9kbyQgPSB0aGlzLmdldFRvZG9WaXNpYmlsdHkoKTtcblxuICAgIC8vIGNyZWF0ZSBwb2ludGVycyB0byBmdW5jdGlvbnNcbiAgICAvLyBjb25zdCBjb250YWluZXJNZ3IgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJNYW5hZ2VyKCk7XG4gICAgLy8gY29uc3QgYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgYWNOYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuXG4gICAgaWYgKHRoaXMuaXRlbUtleSQgPT09ICcnKSB7XG4gICAgICB0aGlzLml0ZW1LZXkkID0gYmFzZUNvbnRleHQuY29uY2F0KCcvJykuY29uY2F0KGFjTmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wQ29ubiQuaXNCb3VuZFRvU3RhdGUoKTtcblxuICAgIC8vIGluc2lkZVxuICAgIC8vIGdldCBmaXN0IGtpZCwgZ2V0IHRoZSBuYW1lIGFuZCBkaXNwbGF5XG4gICAgLy8gcGFzcyBmaXJzdCBraWQgdG8gYSB2aWV3IGNvbnRhaW5lciwgd2hpY2ggd2lsbCBkaXNwZXJzZSBpdCB0byBhIHZpZXcgd2hpY2ggd2lsbCB1c2Ugb25lIGNvbHVtbiwgdHdvIGNvbHVtbiwgZXRjLlxuICAgIGNvbnN0IG9Xb3JrSXRlbSA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcbiAgICAvLyBjb25zdCBvV29ya01ldGEgPSBvV29ya0l0ZW0uZ2V0UmF3TWV0YWRhdGEoKTtcbiAgICBjb25zdCBvV29ya0RhdGEgPSBvV29ya0l0ZW0uZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgLy8gdGhpcy5jb250YWluZXJOYW1lJCA9IG9Xb3JrTWV0YVtcIm5hbWVcIl07XG4gICAgaWYgKGJMb2FkQ2hpbGRyZW4gJiYgb1dvcmtEYXRhKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lck5hbWUkID0gdGhpcy5sb2NhbGl6ZWRWYWwodGhpcy5nZXRBY3RpdmVWaWV3TGFiZWwoKSB8fCBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHNbMF0ubmFtZSwgdW5kZWZpbmVkLCB0aGlzLmxvY2FsZVJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgLy8gdHVybiBvZmYgc3Bpbm5lclxuICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgfVxuXG4gIGhhc0Fzc2lnbm1lbnRzKCkge1xuICAgIGxldCBoYXNBc3NpZ25tZW50cyA9IGZhbHNlO1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzTGlzdDogYW55W10gPSB0aGlzLnBDb25uJC5nZXRWYWx1ZSh0aGlzLnBDb3JlQ29uc3RhbnRzLkNBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUyk7XG4gICAgLy8gY29uc3QgdGhpc09wZXJhdG9yID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JJZGVudGlmaWVyKCk7XG4gICAgLy8gOC43IGluY2x1ZGVzIGFzc2lnbm1lbnRzIGluIEFzc2lnbm1lbnRzIExpc3QgdGhhdCBtYXkgYmUgYXNzaWduZWQgdG9cbiAgICAvLyAgYSBkaWZmZXJlbnQgb3BlcmF0b3IuIFNvLCBzZWUgaWYgdGhlcmUgYXJlIGFueSBhc3NpZ25tZW50cyBmb3JcbiAgICAvLyAgdGhlIGN1cnJlbnQgb3BlcmF0b3JcbiAgICBjb25zdCBpc0VtYmVkZGVkID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VtYmVkZGVkJyk7XG4gICAgbGV0IGJBc3NpZ25tZW50c0ZvclRoaXNPcGVyYXRvciA9IGZhbHNlO1xuXG4gICAgaWYgKGlzRW1iZWRkZWQpIHtcbiAgICAgIGNvbnN0IHRoaXNPcGVyYXRvciA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldE9wZXJhdG9ySWRlbnRpZmllcigpO1xuICAgICAgZm9yIChjb25zdCBhc3NpZ25tZW50IG9mIGFzc2lnbm1lbnRzTGlzdCkge1xuICAgICAgICBpZiAoYXNzaWdubWVudC5hc3NpZ25lZUluZm8uSUQgPT09IHRoaXNPcGVyYXRvcikge1xuICAgICAgICAgIGJBc3NpZ25tZW50c0ZvclRoaXNPcGVyYXRvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYkFzc2lnbm1lbnRzRm9yVGhpc09wZXJhdG9yID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBCYWlsIGlmIHRoZXJlIGlzIG5vIGFzc2lnbm1lbnRzTGlzdFxuICAgIGlmICghYXNzaWdubWVudHNMaXN0KSB7XG4gICAgICByZXR1cm4gaGFzQXNzaWdubWVudHM7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ2hpbGRDYXNlQXNzaWdubWVudHMgPSB0aGlzLmhhc0NoaWxkQ2FzZUFzc2lnbm1lbnRzKCk7XG5cbiAgICBpZiAoYkFzc2lnbm1lbnRzRm9yVGhpc09wZXJhdG9yIHx8IGhhc0NoaWxkQ2FzZUFzc2lnbm1lbnRzIHx8IHRoaXMuaXNDYXNlV2lkZUxvY2FsQWN0aW9uKCkpIHtcbiAgICAgIGhhc0Fzc2lnbm1lbnRzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzQXNzaWdubWVudHM7XG4gIH1cblxuICBpc0Nhc2VXaWRlTG9jYWxBY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aW9uSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZSh0aGlzLnBDb3JlQ29uc3RhbnRzLkNBU0VfSU5GTy5BQ1RJVkVfQUNUSU9OX0lEKTtcbiAgICBjb25zdCBjYXNlQWN0aW9ucyA9IHRoaXMucENvbm4kLmdldFZhbHVlKHRoaXMucENvcmVDb25zdGFudHMuQ0FTRV9JTkZPLkFWQUlMQUJMRUFDVElPTlMpIGFzIGFueVtdO1xuICAgIGxldCBiQ2FzZVdpZGVBY3Rpb24gPSBmYWxzZTtcbiAgICBpZiAoY2FzZUFjdGlvbnMgJiYgYWN0aW9uSUQpIHtcbiAgICAgIGNvbnN0IGFjdGlvbk9iaiA9IGNhc2VBY3Rpb25zLmZpbmQoY2FzZUFjdGlvbiA9PiBjYXNlQWN0aW9uLklEID09PSBhY3Rpb25JRCk7XG4gICAgICBpZiAoYWN0aW9uT2JqKSB7XG4gICAgICAgIGJDYXNlV2lkZUFjdGlvbiA9IGFjdGlvbk9iai50eXBlID09PSAnQ2FzZSc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiQ2FzZVdpZGVBY3Rpb247XG4gIH1cblxuICBoYXNDaGlsZENhc2VBc3NpZ25tZW50cygpIHtcbiAgICBjb25zdCBjaGlsZENhc2VzID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUodGhpcy5wQ29yZUNvbnN0YW50cy5DQVNFX0lORk8uQ0hJTERfQVNTSUdOTUVOVFMpO1xuXG4gICAgcmV0dXJuIGNoaWxkQ2FzZXMgJiYgY2hpbGRDYXNlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0QWN0aXZlVmlld0xhYmVsKCkge1xuICAgIGxldCBhY3RpdmVBY3Rpb25MYWJlbCA9ICcnO1xuXG4gICAgY29uc3QgeyBDQVNFX0lORk86IENBU0VfQ09OU1RTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIGNvbnN0IGNhc2VBY3Rpb25zID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0FDVElPTlMpIGFzIGFueVtdO1xuICAgIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQUNUSVZFX0FDVElPTl9JRCk7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uID0gY2FzZUFjdGlvbnM/LmZpbmQoYWN0aW9uID0+IGFjdGlvbi5JRCA9PT0gYWN0aXZlQWN0aW9uSUQpO1xuICAgIGlmIChhY3RpdmVBY3Rpb24pIHtcbiAgICAgIGFjdGl2ZUFjdGlvbkxhYmVsID0gYWN0aXZlQWN0aW9uLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVBY3Rpb25MYWJlbDtcbiAgfVxuXG4gIGZpbmRDdXJyZW50SW5kaWNpZXMoYXJTdGVwcGVyU3RlcHM6IGFueVtdLCBhckluZGljaWVzOiBudW1iZXJbXSwgZGVwdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGFyU3RlcHBlclN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICBpZiAoc3RlcC52aXNpdGVkX3N0YXR1cyA9PSAnY3VycmVudCcpIHtcbiAgICAgICAgYXJJbmRpY2llc1tkZXB0aF0gPSBjb3VudDtcblxuICAgICAgICAvLyBhZGQgaW5cbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICcnO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdzdWNjZXNzJykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwLnN0ZXBzKSB7XG4gICAgICAgIGFySW5kaWNpZXMgPSB0aGlzLmZpbmRDdXJyZW50SW5kaWNpZXMoc3RlcC5zdGVwcywgYXJJbmRpY2llcywgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckluZGljaWVzO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gYnJpZGdlIHNob3VsZENvbXBvbmVudFVwZGF0ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGNvbXBvbmVudFxuICAvLyBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICB1cGRhdGVTZWxmKCkge1xuICAgIC8vIGZvciBub3dcbiAgICAvLyBjb25zdCB7IGdldFBDb25uZWN0IH0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgY29uc3QgbG9jYWxQQ29ubiA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0gPSB0aGlzLmdldFBDb25uZWN0T2ZBY3RpdmVDb250YWluZXJJdGVtKHRoaXMucENvbm4kKSB8fCB0aGlzLnBDb25uJDtcblxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0uZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgICB0aGlzLmJTaG93QmFubmVyID0gc2hvd0Jhbm5lcih0aGlzLnBDb25uJCk7XG5cbiAgICBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PSAncmV2aWV3Jykge1xuICAgICAgdGhpcy5sb2FkUmV2aWV3UGFnZShsb2NhbFBDb25uKTtcblxuICAgICAgLy8gaW4gTmVidWxhL0NvbnN0ZWxsYXRpb24sIHdoZW4gY2FuY2VsIGlzIGNhbGxlZCwgc29tZWhvdyB0aGUgY29uc3RydWN0b3IgZm9yIGZsb3dDb250YWluZXIgaXMgY2FsbGVkIHdoaWNoXG4gICAgICAvLyBkb2VzIGluaXQvYWRkIG9mIGNvbnRhaW5lcnMuICBUaGlzIG1pbWljcyB0aGF0XG4gICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJykgPT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PT0gJ3BlcmZvcm0nKSB7XG4gICAgICAvLyBwZXJmb3JtXG4gICAgICB0aGlzLnRvZG9fc2hvd1RvZG8kID0gZmFsc2U7XG5cbiAgICAgIC8vIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gQW5ndWxhciBTREssIGFzIHdlIG5lZWQgdG8gaW5pdENvbnRhaW5lciBpZiByb290IGNvbnRhaW5lciByZWxvYWRlZFxuICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicpID09ICd0cnVlJykge1xuICAgICAgICB0aGlzLmluaXRDb250YWluZXIoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiBoYXZlIGNhc2VNZXNzYWdlIHNob3cgbWVzc2FnZSBhbmQgZW5kXG4gICAgdGhpcy5zaG93Q2FzZU1lc3NhZ2VzKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpO1xuICB9XG5cbiAgbG9hZFJldmlld1BhZ2UobG9jYWxQQ29ubikge1xuICAgIGNvbnN0IHsgQ0FTRV9JTkZPOiBDQVNFX0NPTlNUUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8qXG4gICAgICAgICAgKioqIHJlbm92ZSB0aGlzIGNvbW1tZW50ZWQgb3V0IGNvZGUgd2hlbiBSZWFjdC9XQyBpcyB1cGRhdGVkXG4gICAgICAgICAgKioqIHRoaXMgY29kZSBpcyByZXBsYWNlIHdpdGggdGhlIGNhbGwgdG8gXCJnZXRUb0RvQXNzaWdtZW50c1wiIGZ1bmN0aW9uIGJlbG93XG5cbiAgICAgICAgICBjb25zdCBhc3NpZ25tZW50c0xpc3QgPSBsb2NhbFBDb25uLmdldFZhbHVlKFxuICAgICAgICAgICAgQ0FTRV9DT05TVFMuRF9DQVNFX0FTU0lHTk1FTlRTX1JFU1VMVFNcbiAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gYWRkIHN0YXR1c1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoXCJjYXNlSW5mby5zdGF0dXNcIik7XG5cbiAgICAgICAgICBsZXQgbG9jYWxBc3NpZ25tZW50ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50c0xpc3RbMF0pKTtcbiAgICAgICAgICBsb2NhbEFzc2lnbm1lbnQuc3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgIGxldCBsb2NhQXNzaWdubWVudHNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gICAgICAgICAgbG9jYUFzc2lnbm1lbnRzTGlzdC5wdXNoKGxvY2FsQXNzaWdubWVudCk7XG5cbiAgICAgICAgICBjb25zdCBjYXNlQWN0aW9ucyA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0FDVElPTlMpO1xuICAgICAgICAgICovXG5cbiAgICAgICAgY29uc3QgdG9kb0Fzc2lnbm1lbnRzID0gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHRoaXMucENvbm4kKTtcblxuICAgICAgICBpZiAodG9kb0Fzc2lnbm1lbnRzICYmIHRvZG9Bc3NpZ25tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy50b2RvX2Nhc2VJbmZvSUQkID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0lEKTtcbiAgICAgICAgICB0aGlzLnRvZG9fZGF0YXNvdXJjZSQgPSB7IHNvdXJjZTogdG9kb0Fzc2lnbm1lbnRzIH07XG4gICAgICAgIH1cblxuICAgICAgICAvKiByZW1vdmUgdGhpcyBjb21tZW50ZWQgb3V0IGNvZGUgd2hlbiB1cGRhdGUgUmVhY3QvV0MgKi9cbiAgICAgICAgLy8gbGV0IGtpZCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgICAgLy8ga2lkLmdldFBDb25uZWN0KCkgY2FuIGJlIGEgUmVmZXJlbmNlIGNvbXBvbmVudC4gU28gbm9ybWFsaXplIGl0IGp1c3QgaW4gY2FzZVxuICAgICAgICAvLyAgICAgICAgbGV0IHRvZG9LaWQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4oa2lkLmdldFBDb25uZWN0KCkpLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgICAgLy8gICAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0b2RvS2lkLmdldFBDb25uZWN0KCk7XG5cbiAgICAgICAgLyogY29kZSBjaGFuZ2UgaGVyZSB0byBub3RlIGZvciBSZWFjdC9XQyAgKi9cbiAgICAgICAgLy8gdG9kbyBub3cgbmVlZHMgcENvbm4gdG8gb3BlbiB0aGUgd29yayBpdGVtIG9uIGNsaWNrIFwiZ29cIlxuICAgICAgICB0aGlzLnRvZG9fcENvbm4kID0gdGhpcy5wQ29ubiQ7XG5cbiAgICAgICAgLy8gc3RpbGwgbmVlZHMgdGhlIGNvbnRleHQgb2YgdGhlIG9yaWdpbmFsIHdvcmsgaXRlbVxuICAgICAgICB0aGlzLnRvZG9fY29udGV4dCQgPSBsb2NhbFBDb25uLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAgICAgdGhpcy50b2RvX3Nob3dUb2RvJCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzaG93Q2FzZU1lc3NhZ2VzKCkge1xuICAgIHRoaXMuY2FzZU1lc3NhZ2VzJCA9IHRoaXMubG9jYWxpemVkVmFsKHRoaXMucENvbm4kLmdldFZhbHVlKCdjYXNlTWVzc2FnZXMnKSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgaWYgKHRoaXMuY2FzZU1lc3NhZ2VzJCB8fCAhdGhpcy5oYXNBc3NpZ25tZW50cygpKSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYlNob3dDb25maXJtID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hlY2tTdmckID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnY2hlY2snLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICAvLyBUZW1wIGZpeCBmb3IgOC43IGNoYW5nZTogY29uZmlybWF0aW9uTm90ZSBubyBsb25nZXIgY29taW5nIHRocm91Z2ggaW4gY2FzZU1lc3NhZ2VzJC5cbiAgICAgIC8vIFNvLCBpZiB3ZSBnZXQgaGVyZSBhbmQgY2FzZU1lc3NhZ2VzJCBpcyBlbXB0eSwgdXNlIGRlZmF1bHQgdmFsdWUgaW4gRFggQVBJIHJlc3BvbnNlXG4gICAgICBpZiAoIXRoaXMuY2FzZU1lc3NhZ2VzJCkge1xuICAgICAgICB0aGlzLmNhc2VNZXNzYWdlcyQgPSB0aGlzLmxvY2FsaXplZFZhbCgnVGhhbmsgeW91ISBUaGUgbmV4dCBzdGVwIGluIHRoaXMgY2FzZSBoYXMgYmVlbiByb3V0ZWQgYXBwcm9wcmlhdGVseS4nLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgICAgIH1cblxuICAgICAgLy8gcHVibGlzaCB0aGlzIFwiYXNzaWdubWVudEZpbmlzaGVkXCIgZm9yIG1hc2h1cCwgbmVlZCB0byBnZXQgYXBwcm92ZWQgYXMgYSBzdGFuZGFyZFxuICAgICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5wdWJsaXNoKCdhc3NpZ25tZW50RmluaXNoZWQnKTtcblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gZmFsc2U7XG4gICAgICB0aGlzLmJTaG93Q29uZmlybSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpIHtcbiAgICAvLyByb3V0aW5nSW5mbyB3YXMgYWRkZWQgYXMgY29tcG9uZW50IHByb3AgaW4gcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHNcbiAgICBjb25zdCByb3V0aW5nSW5mbyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudFByb3AodGhpcywgJ3JvdXRpbmdJbmZvJyk7XG5cbiAgICBsZXQgbG9hZGluZ0luZm86IGFueTtcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIFByb3BlcnR5ICdnZXRMb2FkaW5nU3RhdHVzJyBpcyBwcml2YXRlIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIGNsYXNzICdDMTFuRW52J1xuICAgICAgbG9hZGluZ0luZm8gPSB0aGlzLnBDb25uJC5nZXRMb2FkaW5nU3RhdHVzKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8qIGVtcHR5ICovXG4gICAgfVxuXG4gICAgLy8gdGhpcyBjaGVjayBpbiByb3V0aW5nSW5mbywgbWltaWMgTmVidWxhL0NvbnN0ZWxsYXRpb24gKFJlYWN0KSB0byBjaGVjayBhbmQgZ2V0IHRoZSBpbnRlcm5hbHMgb2YgdGhlXG4gICAgLy8gZmxvd0NvbnRhaW5lciBhbmQgZm9yY2UgdXBkYXRlcyB0byBwQ29ubmVjdC9yZWR1eFxuICAgIGlmIChyb3V0aW5nSW5mbyAmJiBsb2FkaW5nSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3JkZXIgPSByb3V0aW5nSW5mby5hY2Nlc3NlZE9yZGVyO1xuICAgICAgY29uc3QgY3VycmVudEl0ZW1zID0gcm91dGluZ0luZm8uaXRlbXM7XG4gICAgICBjb25zdCB0eXBlID0gcm91dGluZ0luZm8udHlwZTtcbiAgICAgIGlmIChjdXJyZW50T3JkZXIgJiYgY3VycmVudEl0ZW1zKSB7XG4gICAgICAgIC8vIEpBIC0gbWFraW5nIG1vcmUgc2ltaWxhciB0byBOZWJ1bGEvQ29uc3RlbGxhdGlvblxuICAgICAgICBjb25zdCBrZXkgPSBjdXJyZW50T3JkZXJbY3VycmVudE9yZGVyLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgIC8vIHNhdmUgb2ZmIGl0ZW1LZXkgdG8gYmUgdXNlZCBmb3IgZmluaXNoQXNzaWdubWVudCwgZXRjLlxuICAgICAgICAvLyB0aW1lb3V0IGFuZCBkZXRlY3RDaGFuZ2VzIHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKGtleSAmJiBrZXkgIT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbUtleSQgPSBrZXk7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLWNvbGxhcHNpYmxlLWlmXG4gICAgICAgIGlmIChjdXJyZW50T3JkZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmIChjdXJyZW50SXRlbXNba2V5XSAmJiBjdXJyZW50SXRlbXNba2V5XS52aWV3ICYmIHR5cGUgPT09ICdzaW5nbGUnICYmIE9iamVjdC5rZXlzKGN1cnJlbnRJdGVtc1trZXldLnZpZXcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIHdoZW4gd2UgZ2V0IGhlcmUsIGl0IGl0IGJlY2F1c2UgdGhlIGZsb3cgYWN0aW9uIGRhdGEgaGFzIGNoYW5nZWRcbiAgICAgICAgICAgIC8vIGZyb20gdGhlIHNlcnZlciwgYW5kIG5lZWQgdG8gYWRkIHRvIHBDb25uZWN0IGFuZCB1cGRhdGUgY2hpbGRyZW5cblxuICAgICAgICAgICAgdGhpcy5hZGRQQ29ubmVjdEFuZFVwZGF0ZUNoaWxkcmVuKGN1cnJlbnRJdGVtc1trZXldLCBrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFBDb25uZWN0QW5kVXBkYXRlQ2hpbGRyZW4oY3VycmVudEl0ZW0sIGtleSkge1xuICAgIGNvbnN0IGxvY2FsUENvbm4gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG5cbiAgICBjb25zdCByb290VmlldyA9IGN1cnJlbnRJdGVtLnZpZXc7XG4gICAgY29uc3QgeyBjb250ZXh0LCBuYW1lOiBWaWV3TmFtZSB9ID0gcm9vdFZpZXcuY29uZmlnO1xuICAgIGNvbnN0IGNvbmZpZzogYW55ID0geyBtZXRhOiByb290VmlldyB9O1xuXG4gICAgLy8gRG9uJ3QgZ28gYWhlYWQgaWYgVmlldyBkb2Vzbid0IGV4aXN0XG4gICAgaWYgKCFWaWV3TmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudG9kb19jb250ZXh0JCA9IGN1cnJlbnRJdGVtLmNvbnRleHQ7XG5cbiAgICBjb25maWcub3B0aW9ucyA9IHtcbiAgICAgIGNvbnRleHQ6IGN1cnJlbnRJdGVtLmNvbnRleHQsXG4gICAgICBwYWdlUmVmZXJlbmNlOiBjb250ZXh0IHx8IGxvY2FsUENvbm4uZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgaGFzRm9ybTogdHJ1ZSxcbiAgICAgIGlzRmxvd0NvbnRhaW5lcjogdHJ1ZSxcbiAgICAgIGNvbnRhaW5lck5hbWU6IGxvY2FsUENvbm4uZ2V0Q29udGFpbmVyTmFtZSgpLFxuICAgICAgY29udGFpbmVySXRlbU5hbWU6IGtleSxcbiAgICAgIHBhcmVudFBhZ2VSZWZlcmVuY2U6IGxvY2FsUENvbm4uZ2V0UGFnZVJlZmVyZW5jZSgpXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KGNvbmZpZyk7XG4gICAgdGhpcy5jb25maXJtX3Bjb25uID0gY29uZmlnT2JqZWN0LmdldFBDb25uZWN0KCk7XG4gICAgLy8gOC43IC0gY29uZmlnIG1pZ2h0IGJlIGEgUmVmZXJlbmNlIGNvbXBvbmVudCBzbywgbmVlZCB0byBub3JtYWxpemUgaXQgdG8gZ2V0XG4gICAgLy8gIHRoZSBWaWV3IGlmIGl0IGlzIGEgUmVmZXJlbmNlIGNvbXBvbmVudC4gQW5kIG5lZWQgdG8gcGFzcyBpbiB0aGUgZ2V0UENvbm5lY3RcbiAgICAvLyAgdG8gaGF2ZSBub3JtYWxpemUgZG8gYSBjMTFFbnYgY3JlYXRlQ29tcG9uZW50ICh0aGF0IG1ha2VzIHN1cmUgb3B0aW9ucy5oYXNGb3JtXG4gICAgLy8gIGlzIHBhc3NlZCBhbG9uZyB0byBhbGwgdGhlIGNvbXBvbmVudCdzIGNoaWxkcmVuKVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRDb25maWdPYmplY3QgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4oY29uZmlnT2JqZWN0LmdldFBDb25uZWN0KCkpO1xuICAgIC8vIFdlIHdhbnQgdGhlIGNoaWxkcmVuIHRvIGJlIHRoZSBQQ29ubmVjdCBpdHNlbGYsIG5vdCB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgZ2V0UENvbm5lY3QoKSxcbiAgICAvLyAgU28gbmVlZCB0byBnZXQgdGhlIFBDb25uZWN0IG9mIHRoZSBub3JtYWxpemVkIGNvbXBvbmVudCB3ZSBqdXN0IGNyZWF0ZWQuLi5cbiAgICBjb25zdCBub3JtYWxpemVkQ29uZmlnT2JqZWN0QXNQQ29ubmVjdCA9IG5vcm1hbGl6ZWRDb25maWdPYmplY3QuZ2V0Q29tcG9uZW50KCk7XG5cbiAgICAvLyBtYWtlcyBzdXJlIEFuZ3VsYXIgdHJhY2tzIHRoZXNlIGNoYW5nZXNcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5idWlsZE5hbWUkID0gdGhpcy5nZXRCdWlsZE5hbWUoKTtcbiAgICAgIC8vIHdoYXQgY29tZXMgYmFjayBub3cgaW4gY29uZmlnT2JqZWN0IGlzIHRoZSBjaGlsZHJlbiBvZiB0aGUgZmxvd0NvbnRhaW5lclxuXG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gW107XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kLnB1c2gobm9ybWFsaXplZENvbmZpZ09iamVjdEFzUENvbm5lY3QpO1xuXG4gICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG5cbiAgICAgIGNvbnN0IG9Xb3JrSXRlbSA9IGNvbmZpZ09iamVjdC5nZXRQQ29ubmVjdCgpO1xuICAgICAgY29uc3Qgb1dvcmtEYXRhOiBhbnkgPSBvV29ya0l0ZW0uZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgICB0aGlzLmNvbnRhaW5lck5hbWUkID0gdGhpcy5sb2NhbGl6ZWRWYWwodGhpcy5nZXRBY3RpdmVWaWV3TGFiZWwoKSB8fCBvV29ya0RhdGEuY2FzZUluZm8uYXNzaWdubWVudHM/LlswXS5uYW1lLCB1bmRlZmluZWQsIHRoaXMubG9jYWxlUmVmZXJlbmNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEJ1aWxkTmFtZSgpOiBzdHJpbmcge1xuICAgIC8vIGxldCB7IGdldFBDb25uZWN0LCBuYW1lIH0gPSB0aGlzLnBDb25uJC5wcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICBsZXQgdmlld0NvbnRhaW5lck5hbWUgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG5cbiAgICBpZiAoIXZpZXdDb250YWluZXJOYW1lKSB2aWV3Q29udGFpbmVyTmFtZSA9ICcnO1xuICAgIHJldHVybiBgJHtjb250ZXh0LnRvVXBwZXJDYXNlKCl9LyR7dmlld0NvbnRhaW5lck5hbWUudG9VcHBlckNhc2UoKX1gO1xuICB9XG5cbiAgZm9ybVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMudG91Y2hBbGwoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAkLnZhbGlkO1xuICB9XG5cbiAgdG91Y2hBbGwoKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLWlkZW50aWNhbC1mdW5jdGlvbnNcbiAgdG9wVmlld1JlZnJlc2goKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGhlbHBlcnMgLSBjb3B5aWVkIGZyb20gZmxvdyBjb250YWluZXIgaGVscGVycy5qc1xuXG4gIGFkZENvbnRhaW5lckl0ZW0ocENvbm5lY3QpIHtcbiAgICAvLyBjb3BpZWQgZnJvbSBmbG93IGNvbnRhaW5lciBoZWxwZXIuanNcbiAgICBjb25zdCBjb250YWluZXJNYW5hZ2VyID0gcENvbm5lY3QuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGNvbnN0IGNvbnRleHROYW1lID0gcENvbm5lY3QuZ2V0Q29udGV4dE5hbWUoKTsgLy8gaGVyZSB3ZSB3aWxsIGdldCBwYXJlbnQgY29udGV4dCBuYW1lLCBhcyBmbG93IGNvbnRhaW5lciBpcyBjaGlsZCBvZiB2aWV3IGNvbnRhaW5lclxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHBDb25uZWN0LmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG5cbiAgICBsZXQga2V5O1xuICAgIGxldCBmbG93TmFtZTtcblxuICAgIGlmIChjYXNlVmlld01vZGUgIT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBjb250ZXh0TmFtZS5zdWJzdHJpbmcoMCwgY29udGV4dE5hbWUubGFzdEluZGV4T2YoJ18nKSk7XG4gICAgICBjb25zdCBhY3RpdmVDb250YWluZXJJdGVtSUQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldEFjdGl2ZUNvbnRhaW5lckl0ZW1OYW1lKHRhcmdldCk7XG4gICAgICBjb25zdCBjb250YWluZXJJdGVtRGF0YSA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVySXRlbURhdGEodGFyZ2V0LCBhY3RpdmVDb250YWluZXJJdGVtSUQpO1xuXG4gICAgICBpZiAoY29udGFpbmVySXRlbURhdGEpIHtcbiAgICAgICAgKHsga2V5LCBmbG93TmFtZSB9ID0gY29udGFpbmVySXRlbURhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lck1hbmFnZXIuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgICBzZW1hbnRpY1VSTDogJycsXG4gICAgICBrZXksXG4gICAgICBmbG93TmFtZSxcbiAgICAgIGNhc2VWaWV3TW9kZTogJ3BlcmZvcm0nLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQVNTSUdOTUVOVCcsXG4gICAgICBkYXRhOiBwQ29ubmVjdC5nZXREYXRhT2JqZWN0KGNvbnRleHROYW1lKVxuICAgIH0pO1xuICB9XG4gIC8vIGhlbHBlcnMgZW5kXG59XG4iLCI8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiIGNsYXNzPVwicHNkay1mbG93LWNvbnRhaW5lci10b3BcIj5cbiAgPGRpdiAqbmdJZj1cIiFiU2hvd0NvbmZpcm1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRvZG9fc2hvd1RvZG8kXCI+XG4gICAgICA8aDI+e3sgY29udGFpbmVyTmFtZSQgfX08L2gyPlxuICAgICAgPGRpdiAqbmdJZj1cImJhbm5lcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQWxlcnRCYW5uZXJcIiBbcHJvcHNdPVwieyBiYW5uZXJzIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiVG9kb1wiXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgcENvbm4kOiBwQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSxcbiAgICAgICAgICBjYXNlSW5mb0lEJDogdG9kb19jYXNlSW5mb0lEJCxcbiAgICAgICAgICBkYXRhc291cmNlJDogdG9kb19kYXRhc291cmNlJCxcbiAgICAgICAgICBzaG93VG9kb0xpc3QkOiB0b2RvX3Nob3dUb2RvTGlzdCQsXG4gICAgICAgICAgaGVhZGVyVGV4dCQ6IHRvZG9faGVhZGVyVGV4dCQsXG4gICAgICAgICAgdHlwZSQ6ICdUT0RPJyxcbiAgICAgICAgICBjb250ZXh0JDogdG9kb19jb250ZXh0JCxcbiAgICAgICAgICBpc0NvbmZpcm06IHRydWVcbiAgICAgICAgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhdG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogcENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0sIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYkhhc0Nhc2VNZXNzYWdlcyRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJwc2RrLW1lc3NhZ2UtY2FyZFwiPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIj5cbiAgICAgICAgPGRpdj48aW1nIGNsYXNzPVwicHNkay1pY29uXCIgc3JjPVwie3sgY2hlY2tTdmckIH19XCIgLz48L2Rpdj5cbiAgICAgICAgPGRpdj57eyBjYXNlTWVzc2FnZXMkIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJTaG93QmFubmVyICYmIGJTaG93Q29uZmlybVwiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJWaWV3XCIgW3Byb3BzXT1cInsgZm9ybUdyb3VwJCwgcENvbm4kOiBjb25maXJtX3Bjb25uIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvZmxvdy1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQTZCLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDM0csT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7Ozs7QUF3QjlGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwwQkFBMEI7SUF3Q3BFLFlBQ0UsUUFBa0IsRUFDVixLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxFQUFlLEVBQ2YsTUFBYyxFQUNkLEtBQVk7UUFFcEIsS0FBSyxDQUFDLFFB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LENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzRixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBRXhHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7WUFDaEMsV0FBVyxFQUFFLEVBQUU7WUFDZixHQUFHO1lBQ0gsUUFBUTtZQUNSLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9qQlUsc0JBQXNCO21HQUF0QixzQkFBc0IsK0ZBSnRCLENBQUMsS0FBSyxDQUFDLGlEQzlCcEIscWxEQTRDQSw2RURaWSxZQUFZLDRLQUFFLGFBQWEsdUxBQW1CLHdCQUF3Qjs7NEZBRXJFLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxvQkFBb0IsYUFHbkIsQ0FBQyxLQUFLLENBQUMsY0FDTixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3FOQUd6RSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgcHVibGljQ29uc3RhbnRzIH0gZnJvbSAnQHBlZ2EvcGNvcmUtcGNvbm5lY3QtdHlwZWRlZnMvY29uc3RhbnRzJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0VG9Eb0Fzc2lnbm1lbnRzLCBoYXNBc3NpZ25tZW50cywgc2hvd0Jhbm5lciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd0NvbnRhaW5lckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWNvbXBvbmVudHMvZmxvdy1jb250YWluZXItYmFzZS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFdBUk5JTkc6ICBJdCBpcyBub3QgZXhwZWN0ZWQgdGhhdCB0aGlzIGZpbGUgc2hvdWxkIGJlIG1vZGlmaWVkLiAgSXQgaXMgcGFydCBvZiBpbmZyYXN0cnVjdHVyZSBjb2RlIHRoYXQgd29ya3Mgd2l0aFxuICogUmVkdXggYW5kIGNyZWF0aW9uL3VwZGF0ZSBvZiBSZWR1eCBjb250YWluZXJzIGFuZCBQQ29ubmVjdC4gIE1vZGlmeWluZyB0aGlzIGNvZGUgY291bGQgaGF2ZSB1bmRlc2lyZWFibGUgcmVzdWx0cyBhbmRcbiAqIGlzIHRvdGFsbHkgYXQgeW91ciBvd24gcmlzay5cbiAqL1xuXG5pbnRlcmZhY2UgRmxvd0NvbnRhaW5lclByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBjaGlsZHJlbj86IGFueVtdO1xuICBuYW1lPzogc3RyaW5nO1xuICByb3V0aW5nSW5mbz86IGFueTtcbiAgcGFnZU1lc3NhZ2VzOiBhbnlbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZsb3ctY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBGbG93Q29udGFpbmVyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgcENvcmVDb25zdGFudHM6IHR5cGVvZiBwdWJsaWNDb25zdGFudHM7XG4gIGNvbmZpZ1Byb3BzJDogRmxvd0NvbnRhaW5lclByb3BzO1xuXG4gIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgYXJDaGlsZHJlbiQ6IGFueVtdO1xuICBpdGVtS2V5JCA9ICcnO1xuICBjb250YWluZXJOYW1lJDogc3RyaW5nO1xuICBidWlsZE5hbWUkOiBzdHJpbmc7XG5cbiAgLy8gdG9kb1xuICB0b2RvX3Nob3dUb2RvJCA9IGZhbHNlO1xuICB0b2RvX2Nhc2VJbmZvSUQkOiBzdHJpbmc7XG4gIHRvZG9fc2hvd1RvZG9MaXN0JCA9IGZhbHNlO1xuICB0b2RvX2RhdGFzb3VyY2UkOiBhbnk7XG4gIHRvZG9faGVhZGVyVGV4dCQgPSAnVG8gZG8nO1xuICB0b2RvX3R5cGUkOiBzdHJpbmc7XG4gIHRvZG9fY29udGV4dCQ6IHN0cmluZztcbiAgdG9kb19wQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICBiSGFzQ2FuY2VsID0gZmFsc2U7XG5cbiAgLy8gbWVzc2FnZXNcbiAgY2FzZU1lc3NhZ2VzJDogc3RyaW5nO1xuICBiSGFzQ2FzZU1lc3NhZ2VzJCA9IGZhbHNlO1xuICBjaGVja1N2ZyQ6IHN0cmluZztcbiAgVE9ETzogYW55O1xuICBiU2hvd0NvbmZpcm0gPSBmYWxzZTtcbiAgYlNob3dCYW5uZXI6IGJvb2xlYW47XG4gIGNvbmZpcm1fcGNvbm46IGFueTtcbiAgbG9jYWxpemVkVmFsOiBhbnk7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ01lc3NhZ2VzJztcbiAgbG9jYWxlUmVmZXJlbmNlOiBhbnk7XG4gIGJhbm5lcnM6IGFueVtdO1xuICAvLyBpdGVtS2V5OiBzdHJpbmcgPSBcIlwiOyAgIC8vIEpBIC0gdGhpcyBpcyB3aGF0IE5lYnVsYS9Db25zdGVsbGF0aW9uIHVzZXMgdG8gcGFzcyB0byBmaW5pc2hBc3NpZ25tZW50LCBuYXZpZ2F0ZVRvU3RlcFxuXG4gIHBDb25uZWN0T2ZBY3RpdmVDb250YWluZXJJdGVtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICAvLyBjcmVhdGUgdGhlIGZvcm1Hcm91cFxuICAgIHRoaXMuZm9ybUdyb3VwJCA9IHRoaXMuZmIuZ3JvdXAoeyBoaWRlUmVxdWlyZWQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gICAgY29uc3QgY2FzZUluZm8gPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpO1xuICAgIHRoaXMubG9jYWxlUmVmZXJlbmNlID0gYCR7Y2FzZUluZm8/LmdldENsYXNzTmFtZSgpfSFDQVNFISR7Y2FzZUluZm8uZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGdldCB0aGUgUENvcmUgY29uc3RhbnRzXG4gICAgdGhpcy5wQ29yZUNvbnN0YW50cyA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgVE9ETyB9ID0gdGhpcy5wQ29yZUNvbnN0YW50cztcbiAgICB0aGlzLlRPRE8gPSBUT0RPO1xuICAgIC8vIHdpdGggaW5pdCwgZm9yY2UgY2hpbGRyZW4gdG8gYmUgbG9hZGVkIG9mIGdsb2JhbCBwQ29ublxuICAgIHRoaXMuaW5pdENvbXBvbmVudCh0cnVlKTtcblxuICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuXG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsKCk7XG4gICAgICB9LFxuICAgICAgJ2NhbmNlbEFzc2lnbm1lbnQnXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgJ2NhbmNlbFByZXNzZWQnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbmNlbFByZXNzZWQoKTtcbiAgICAgIH0sXG4gICAgICAnY2FuY2VsUHJlc3NlZCdcbiAgICApO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAnY2xlYXJCYW5uZXJNZXNzYWdlcycsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmFubmVycyA9IFtdO1xuICAgICAgfSxcbiAgICAgICdjbGVhckJhbm5lck1lc3NhZ2VzJ1xuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsICdjYW5jZWxBc3NpZ25tZW50Jyk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKCdjYW5jZWxQcmVzc2VkJywgJ2NhbmNlbFByZXNzZWQnKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoJ2NsZWFyQmFubmVyTWVzc2FnZXMnLCAnY2xlYXJCYW5uZXJNZXNzYWdlcycpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsKCkge1xuICAgIC8vIGNhbmNlbCBoYXBwZW5lZCwgc28gb2sgdG8gaW5pdGlhbGl6ZSB0aGUgZmxvdyBjb250YWluZXJcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdva1RvSW5pdEZsb3dDb250YWluZXInLCAndHJ1ZScpO1xuICB9XG5cbiAgaGFuZGxlQ2FuY2VsUHJlc3NlZCgpIHtcbiAgICB0aGlzLmJIYXNDYW5jZWwgPSB0cnVlO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICBjb25zdCBwQ29ubiA9IHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0gfHwgdGhpcy5wQ29ubiQ7XG4gICAgY29uc3QgY2FzZVZpZXdNb2RlRnJvbVByb3BzID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50UHJvcCh0aGlzLCAnY2FzZVZpZXdNb2RlJyk7XG4gICAgY29uc3QgY2FzZVZpZXdNb2RlRnJvbVJlZHV4ID0gcENvbm4uZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnLCAnJyk7XG5cbiAgICBjb25zdCBjb21wbGV0ZVByb3BzID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q3VycmVudENvbXBsZXRlUHJvcHModGhpcykgYXMgRmxvd0NvbnRhaW5lclByb3BzO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL25vLWNvbGxhcHNpYmxlLWlmXG4gICAgaWYgKGJVcGRhdGVTZWxmIHx8IGNhc2VWaWV3TW9kZUZyb21Qcm9wcyAhPT0gY2FzZVZpZXdNb2RlRnJvbVJlZHV4KSB7XG4gICAgICAvLyBkb24ndCB3YW50IHRvIHJlZHJhdyB0aGUgZmxvdyBjb250YWluZXIgd2hlbiB0aGVyZSBhcmUgcGFnZSBtZXNzYWdlcywgYmVjYXVzZVxuICAgICAgLy8gdGhlIHJlZHJhdyBjYXVzZXMgdXMgdG8gbG9vc2UgdGhlIGVycm9ycyBvbiB0aGUgZWxlbWVudHNcbiAgICAgIGlmICghY29tcGxldGVQcm9wcy5wYWdlTWVzc2FnZXMgfHwgY29tcGxldGVQcm9wcy5wYWdlTWVzc2FnZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgLy8gd2l0aCBhIGNhbmNlbCwgbmVlZCB0byB0aW1lb3V0IHNvIHRvZG8gd2lsbCB1cGRhdGUgY29ycmVjdGx5XG4gICAgICAgIGlmICh0aGlzLmJIYXNDYW5jZWwpIHtcbiAgICAgICAgICB0aGlzLmJIYXNDYW5jZWwgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNob3dQYWdlTWVzc2FnZXMoY29tcGxldGVQcm9wcyk7XG4gIH1cblxuICBzaG93UGFnZU1lc3NhZ2VzKGNvbXBsZXRlUHJvcHM6IEZsb3dDb250YWluZXJQcm9wcykge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBwYWdlTWVzc2FnZXMgPSBjb21wbGV0ZVByb3BzLnBhZ2VNZXNzYWdlcztcbiAgICAgIHRoaXMuYmFubmVycyA9IFt7IG1lc3NhZ2VzOiBwYWdlTWVzc2FnZXM/Lm1hcChtc2cgPT4gdGhpcy5sb2NhbGl6ZWRWYWwobXNnLm1lc3NhZ2UsICdNZXNzYWdlcycpKSwgdmFyaWFudDogJ3VyZ2VudCcgfV07XG4gICAgfSk7XG4gIH1cblxuICBnZXRUb2RvVmlzaWJpbHR5KCkge1xuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHRoaXMucENvbm4kLmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG4gICAgaWYgKGNhc2VWaWV3TW9kZSAmJiBjYXNlVmlld01vZGUgPT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCBraWQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpWzBdO1xuICAgICAgY29uc3QgdG9kb0tpZCA9IGtpZC5nZXRQQ29ubmVjdCgpLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0b2RvS2lkLmdldFBDb25uZWN0KCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAhKGNhc2VWaWV3TW9kZSAmJiBjYXNlVmlld01vZGUgPT09ICdwZXJmb3JtJyk7XG4gIH1cblxuICBpbml0Q29udGFpbmVyKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lck1nciA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck1hbmFnZXIoKTtcbiAgICBjb25zdCBiYXNlQ29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgY29udGFpbmVyTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICBjb25zdCBjb250YWluZXJUeXBlID0gJ3NpbmdsZSc7XG5cbiAgICBjb25zdCBmbG93Q29udGFpbmVyVGFyZ2V0ID0gYCR7YmFzZUNvbnRleHR9LyR7Y29udGFpbmVyTmFtZX1gO1xuICAgIGNvbnN0IGlzQ29udGFpbmVySXRlbUF2YWlsYWJsZSA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0QWN0aXZlQ29udGFpbmVySXRlbU5hbWUoZmxvd0NvbnRhaW5lclRhcmdldCk7XG5cbiAgICAvLyBjbGVhciBvdXQgc2luY2Ugd2UgYXJlIGluaXRpYWxpemluZ1xuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicsICdmYWxzZScpO1xuXG4gICAgaWYgKCFpc0NvbnRhaW5lckl0ZW1BdmFpbGFibGUpIHtcbiAgICAgIGNvbnRhaW5lck1nci5pbml0aWFsaXplQ29udGFpbmVycyh7XG4gICAgICAgIHR5cGU6IGNvbnRhaW5lclR5cGVcbiAgICAgIH0pO1xuXG4gICAgICAvKiByZW1vdmUgY29tbWVudGVkIG91dCBjb2RlIHdoZW4gdXBkYXRlIFJlYWN0L1dDXG4gICAgICAgKioqIGluc3RlYWQgb2YgZ2V0dGluZyB2YWx1ZXMgaGVyZSB0byBwYXNzIHRvIGFkZENvbnRhaW5lckl0ZW0sIHdlIGNhbGwgdGhlIGZ1bmN0aW9uIGJlbG93IFwiYWRkQ29udGFpbmVySXRlbVwiXG4gICAgICAgKioqIHdoaWNoIGNvbWVzIGZyb20gZmxvdyBjb250YWluZXIgaGVscGVycyBpbiBOZWJ1bGFcbiAgICAgICAqL1xuICAgICAgLy8gY29udGFpbmVyTWdyLmFkZENvbnRhaW5lckl0ZW0oe1xuICAgICAgLy8gICBzZW1hbnRpY1VSTDogXCJcIixcbiAgICAgIC8vICAga2V5OiB0aGlzLnBDb25uJC5nZXRWYWx1ZShcImtleVwiKSxcbiAgICAgIC8vICAgZmxvd05hbWU6IHRoaXMucENvbm4kLmdldFZhbHVlKFwiZmxvd05hbWVcIiksXG4gICAgICAvLyAgIGNhc2VWaWV3TW9kZTogXCJwZXJmb3JtXCIsXG4gICAgICAvLyAgIGRhdGE6IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoYmFzZUNvbnRleHQpLFxuICAgICAgLy8gICBjb250YWluZXJUeXBlXG4gICAgICAvLyB9KTtcblxuICAgICAgdGhpcy5hZGRDb250YWluZXJJdGVtKHRoaXMucENvbm4kKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q29tcG9uZW50KGJMb2FkQ2hpbGRyZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBGbG93Q29udGFpbmVyUHJvcHM7XG4gICAgdGhpcy5zaG93UGFnZU1lc3NhZ2VzKHRoaXMuY29uZmlnUHJvcHMkKTtcblxuICAgIC8vIHdoZW4gdHJ1ZSwgdXBkYXRlIGFyQ2hpbGRyZW4gZnJvbSBwQ29ubiwgb3RoZXJ3aXNlLCBhckNoaWxyZW4gd2lsbCBiZSB1cGRhdGVkIGluIHVwZGF0ZVNlbGYoKVxuICAgIGlmIChiTG9hZENoaWxkcmVuKSB7XG4gICAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICAvLyBjb25zdCBvRGF0YSA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIGNvbnN0IGFjdGl2ZUFjdGlvbkxhYmVsOiBzdHJpbmcgPSAnJztcbiAgICAvLyBjb25zdCB7IGdldFBDb25uZWN0IH0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG5cbiAgICB0aGlzLnRvZG9fc2hvd1RvZG8kID0gdGhpcy5nZXRUb2RvVmlzaWJpbHR5KCk7XG5cbiAgICAvLyBjcmVhdGUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zXG4gICAgLy8gY29uc3QgY29udGFpbmVyTWdyID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIC8vIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3QgYmFzZUNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IGFjTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIGlmICh0aGlzLml0ZW1LZXkkID09PSAnJykge1xuICAgICAgdGhpcy5pdGVtS2V5JCA9IGJhc2VDb250ZXh0LmNvbmNhdCgnLycpLmNvbmNhdChhY05hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucENvbm4kLmlzQm91bmRUb1N0YXRlKCk7XG5cbiAgICAvLyBpbnNpZGVcbiAgICAvLyBnZXQgZmlzdCBraWQsIGdldCB0aGUgbmFtZSBhbmQgZGlzcGxheVxuICAgIC8vIHBhc3MgZmlyc3Qga2lkIHRvIGEgdmlldyBjb250YWluZXIsIHdoaWNoIHdpbGwgZGlzcGVyc2UgaXQgdG8gYSB2aWV3IHdoaWNoIHdpbGwgdXNlIG9uZSBjb2x1bW4sIHR3byBjb2x1bW4sIGV0Yy5cbiAgICBjb25zdCBvV29ya0l0ZW0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgLy8gY29uc3Qgb1dvcmtNZXRhID0gb1dvcmtJdGVtLmdldFJhd01ldGFkYXRhKCk7XG4gICAgY29uc3Qgb1dvcmtEYXRhID0gb1dvcmtJdGVtLmdldERhdGFPYmplY3QoKTtcblxuICAgIC8vIHRoaXMuY29udGFpbmVyTmFtZSQgPSBvV29ya01ldGFbXCJuYW1lXCJdO1xuICAgIGlmIChiTG9hZENoaWxkcmVuICYmIG9Xb3JrRGF0YSkge1xuICAgICAgdGhpcy5jb250YWluZXJOYW1lJCA9IHRoaXMubG9jYWxpemVkVmFsKHRoaXMuZ2V0QWN0aXZlVmlld0xhYmVsKCkgfHwgb1dvcmtEYXRhLmNhc2VJbmZvLmFzc2lnbm1lbnRzWzBdLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIC8vIHR1cm4gb2ZmIHNwaW5uZXJcbiAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gIH1cblxuICBpc0Nhc2VXaWRlTG9jYWxBY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aW9uSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZSh0aGlzLnBDb3JlQ29uc3RhbnRzLkNBU0VfSU5GTy5BQ1RJVkVfQUNUSU9OX0lEKTtcbiAgICBjb25zdCBjYXNlQWN0aW9ucyA9IHRoaXMucENvbm4kLmdldFZhbHVlKHRoaXMucENvcmVDb25zdGFudHMuQ0FTRV9JTkZPLkFWQUlMQUJMRUFDVElPTlMpO1xuICAgIGxldCBiQ2FzZVdpZGVBY3Rpb24gPSBmYWxzZTtcbiAgICBpZiAoY2FzZUFjdGlvbnMgJiYgYWN0aW9uSUQpIHtcbiAgICAgIGNvbnN0IGFjdGlvbk9iaiA9IGNhc2VBY3Rpb25zLmZpbmQoY2FzZUFjdGlvbiA9PiBjYXNlQWN0aW9uLklEID09PSBhY3Rpb25JRCk7XG4gICAgICBpZiAoYWN0aW9uT2JqKSB7XG4gICAgICAgIGJDYXNlV2lkZUFjdGlvbiA9IGFjdGlvbk9iai50eXBlID09PSAnQ2FzZSc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiQ2FzZVdpZGVBY3Rpb247XG4gIH1cblxuICBoYXNDaGlsZENhc2VBc3NpZ25tZW50cygpIHtcbiAgICBjb25zdCBjaGlsZENhc2VzID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUodGhpcy5wQ29yZUNvbnN0YW50cy5DQVNFX0lORk8uQ0hJTERfQVNTSUdOTUVOVFMpO1xuXG4gICAgcmV0dXJuIGNoaWxkQ2FzZXMgJiYgY2hpbGRDYXNlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0QWN0aXZlVmlld0xhYmVsKCkge1xuICAgIGxldCBhY3RpdmVBY3Rpb25MYWJlbCA9ICcnO1xuXG4gICAgY29uc3QgeyBDQVNFX0lORk86IENBU0VfQ09OU1RTIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcblxuICAgIGNvbnN0IGNhc2VBY3Rpb25zID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0FDVElPTlMpIGFzIGFueVtdO1xuICAgIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQUNUSVZFX0FDVElPTl9JRCk7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uID0gY2FzZUFjdGlvbnM/LmZpbmQoYWN0aW9uID0+IGFjdGlvbi5JRCA9PT0gYWN0aXZlQWN0aW9uSUQpO1xuICAgIGlmIChhY3RpdmVBY3Rpb24pIHtcbiAgICAgIGFjdGl2ZUFjdGlvbkxhYmVsID0gYWN0aXZlQWN0aW9uLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVBY3Rpb25MYWJlbDtcbiAgfVxuXG4gIGZpbmRDdXJyZW50SW5kaWNpZXMoYXJTdGVwcGVyU3RlcHM6IGFueVtdLCBhckluZGljaWVzOiBudW1iZXJbXSwgZGVwdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGFyU3RlcHBlclN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICBpZiAoc3RlcC52aXNpdGVkX3N0YXR1cyA9PSAnY3VycmVudCcpIHtcbiAgICAgICAgYXJJbmRpY2llc1tkZXB0aF0gPSBjb3VudDtcblxuICAgICAgICAvLyBhZGQgaW5cbiAgICAgICAgc3RlcC5zdGVwX3N0YXR1cyA9ICcnO1xuICAgICAgfSBlbHNlIGlmIChzdGVwLnZpc2l0ZWRfc3RhdHVzID09ICdzdWNjZXNzJykge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBzdGVwLnN0ZXBfc3RhdHVzID0gJyc7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwLnN0ZXBzKSB7XG4gICAgICAgIGFySW5kaWNpZXMgPSB0aGlzLmZpbmRDdXJyZW50SW5kaWNpZXMoc3RlcC5zdGVwcywgYXJJbmRpY2llcywgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhckluZGljaWVzO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gYnJpZGdlIHNob3VsZENvbXBvbmVudFVwZGF0ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGNvbXBvbmVudFxuICAvLyBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICB1cGRhdGVTZWxmKCkge1xuICAgIC8vIGZvciBub3dcbiAgICAvLyBjb25zdCB7IGdldFBDb25uZWN0IH0gPSB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCk7XG4gICAgY29uc3QgbG9jYWxQQ29ubiA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0gPSB0aGlzLmdldFBDb25uZWN0T2ZBY3RpdmVDb250YWluZXJJdGVtKHRoaXMucENvbm4kKSB8fCB0aGlzLnBDb25uJDtcblxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHRoaXMucENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0uZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgICB0aGlzLmJTaG93QmFubmVyID0gc2hvd0Jhbm5lcih0aGlzLnBDb25uJCk7XG5cbiAgICBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PSAncmV2aWV3Jykge1xuICAgICAgdGhpcy5sb2FkUmV2aWV3UGFnZShsb2NhbFBDb25uKTtcblxuICAgICAgLy8gaW4gTmVidWxhL0NvbnN0ZWxsYXRpb24sIHdoZW4gY2FuY2VsIGlzIGNhbGxlZCwgc29tZWhvdyB0aGUgY29uc3RydWN0b3IgZm9yIGZsb3dDb250YWluZXIgaXMgY2FsbGVkIHdoaWNoXG4gICAgICAvLyBkb2VzIGluaXQvYWRkIG9mIGNvbnRhaW5lcnMuICBUaGlzIG1pbWljcyB0aGF0XG4gICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnb2tUb0luaXRGbG93Q29udGFpbmVyJykgPT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FzZVZpZXdNb2RlICYmIGNhc2VWaWV3TW9kZSA9PT0gJ3BlcmZvcm0nKSB7XG4gICAgICAvLyBwZXJmb3JtXG4gICAgICB0aGlzLnRvZG9fc2hvd1RvZG8kID0gZmFsc2U7XG5cbiAgICAgIC8vIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gQW5ndWxhciBTREssIGFzIHdlIG5lZWQgdG8gaW5pdENvbnRhaW5lciBpZiByb290IGNvbnRhaW5lciByZWxvYWRlZFxuICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicpID09ICd0cnVlJykge1xuICAgICAgICB0aGlzLmluaXRDb250YWluZXIoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiBoYXZlIGNhc2VNZXNzYWdlIHNob3cgbWVzc2FnZSBhbmQgZW5kXG4gICAgdGhpcy5zaG93Q2FzZU1lc3NhZ2VzKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpO1xuICB9XG5cbiAgbG9hZFJldmlld1BhZ2UobG9jYWxQQ29ubikge1xuICAgIGNvbnN0IHsgQ0FTRV9JTkZPOiBDQVNFX0NPTlNUUyB9ID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8qXG4gICAgICAgICAgKioqIHJlbm92ZSB0aGlzIGNvbW1tZW50ZWQgb3V0IGNvZGUgd2hlbiBSZWFjdC9XQyBpcyB1cGRhdGVkXG4gICAgICAgICAgKioqIHRoaXMgY29kZSBpcyByZXBsYWNlIHdpdGggdGhlIGNhbGwgdG8gXCJnZXRUb0RvQXNzaWdtZW50c1wiIGZ1bmN0aW9uIGJlbG93XG5cbiAgICAgICAgICBjb25zdCBhc3NpZ25tZW50c0xpc3QgPSBsb2NhbFBDb25uLmdldFZhbHVlKFxuICAgICAgICAgICAgQ0FTRV9DT05TVFMuRF9DQVNFX0FTU0lHTk1FTlRTX1JFU1VMVFNcbiAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gYWRkIHN0YXR1c1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoXCJjYXNlSW5mby5zdGF0dXNcIik7XG5cbiAgICAgICAgICBsZXQgbG9jYWxBc3NpZ25tZW50ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50c0xpc3RbMF0pKTtcbiAgICAgICAgICBsb2NhbEFzc2lnbm1lbnQuc3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgIGxldCBsb2NhQXNzaWdubWVudHNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gICAgICAgICAgbG9jYUFzc2lnbm1lbnRzTGlzdC5wdXNoKGxvY2FsQXNzaWdubWVudCk7XG5cbiAgICAgICAgICBjb25zdCBjYXNlQWN0aW9ucyA9IGxvY2FsUENvbm4uZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0FDVElPTlMpO1xuICAgICAgICAgICovXG5cbiAgICAgICAgY29uc3QgdG9kb0Fzc2lnbm1lbnRzID0gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHRoaXMucENvbm4kKTtcblxuICAgICAgICBpZiAodG9kb0Fzc2lnbm1lbnRzICYmIHRvZG9Bc3NpZ25tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy50b2RvX2Nhc2VJbmZvSUQkID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoQ0FTRV9DT05TVFMuQ0FTRV9JTkZPX0lEKTtcbiAgICAgICAgICB0aGlzLnRvZG9fZGF0YXNvdXJjZSQgPSB7IHNvdXJjZTogdG9kb0Fzc2lnbm1lbnRzIH07XG4gICAgICAgIH1cblxuICAgICAgICAvKiByZW1vdmUgdGhpcyBjb21tZW50ZWQgb3V0IGNvZGUgd2hlbiB1cGRhdGUgUmVhY3QvV0MgKi9cbiAgICAgICAgLy8gbGV0IGtpZCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgICAgLy8ga2lkLmdldFBDb25uZWN0KCkgY2FuIGJlIGEgUmVmZXJlbmNlIGNvbXBvbmVudC4gU28gbm9ybWFsaXplIGl0IGp1c3QgaW4gY2FzZVxuICAgICAgICAvLyAgICAgICAgbGV0IHRvZG9LaWQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4oa2lkLmdldFBDb25uZWN0KCkpLmdldENoaWxkcmVuKClbMF07XG5cbiAgICAgICAgLy8gICAgICAgIHRoaXMudG9kb19wQ29ubiQgPSB0b2RvS2lkLmdldFBDb25uZWN0KCk7XG5cbiAgICAgICAgLyogY29kZSBjaGFuZ2UgaGVyZSB0byBub3RlIGZvciBSZWFjdC9XQyAgKi9cbiAgICAgICAgLy8gdG9kbyBub3cgbmVlZHMgcENvbm4gdG8gb3BlbiB0aGUgd29yayBpdGVtIG9uIGNsaWNrIFwiZ29cIlxuICAgICAgICB0aGlzLnRvZG9fcENvbm4kID0gdGhpcy5wQ29ubiQ7XG5cbiAgICAgICAgLy8gc3RpbGwgbmVlZHMgdGhlIGNvbnRleHQgb2YgdGhlIG9yaWdpbmFsIHdvcmsgaXRlbVxuICAgICAgICB0aGlzLnRvZG9fY29udGV4dCQgPSBsb2NhbFBDb25uLmdldENvbnRleHROYW1lKCk7XG5cbiAgICAgICAgdGhpcy50b2RvX3Nob3dUb2RvJCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzaG93Q2FzZU1lc3NhZ2VzKCkge1xuICAgIHRoaXMuY2FzZU1lc3NhZ2VzJCA9IHRoaXMubG9jYWxpemVkVmFsKHRoaXMucENvbm4kLmdldFZhbHVlKCdjYXNlTWVzc2FnZXMnKSwgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gICAgLy8gY2FzZU1lc3NhZ2VzJ3MgYmVoYXZpb3IgaGFzIGNoYW5nZWQgaW4gMjQuMiwgYW5kIGhlbmNlIGl0IGRvZXNuJ3QgbGV0IE9wdGlvbmFsIEFjdGlvbiB3b3JrLlxuICAgIC8vIENoYW5naW5nIHRoZSBiZWxvdyBjb25kaXRpb24gZm9yIG5vdy4gV2FzOiAodGhlQ2FzZU1lc3NhZ2VzIHx8ICFoYXNBc3NpZ25tZW50cygpKVxuICAgIGlmICghaGFzQXNzaWdubWVudHModGhpcy5wQ29ubiQpKSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYlNob3dDb25maXJtID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hlY2tTdmckID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygnY2hlY2snLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICAvLyBUZW1wIGZpeCBmb3IgOC43IGNoYW5nZTogY29uZmlybWF0aW9uTm90ZSBubyBsb25nZXIgY29taW5nIHRocm91Z2ggaW4gY2FzZU1lc3NhZ2VzJC5cbiAgICAgIC8vIFNvLCBpZiB3ZSBnZXQgaGVyZSBhbmQgY2FzZU1lc3NhZ2VzJCBpcyBlbXB0eSwgdXNlIGRlZmF1bHQgdmFsdWUgaW4gRFggQVBJIHJlc3BvbnNlXG4gICAgICBpZiAoIXRoaXMuY2FzZU1lc3NhZ2VzJCkge1xuICAgICAgICB0aGlzLmNhc2VNZXNzYWdlcyQgPSB0aGlzLmxvY2FsaXplZFZhbCgnVGhhbmsgeW91ISBUaGUgbmV4dCBzdGVwIGluIHRoaXMgY2FzZSBoYXMgYmVlbiByb3V0ZWQgYXBwcm9wcmlhdGVseS4nLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJIYXNDYXNlTWVzc2FnZXMkID0gZmFsc2U7XG4gICAgICB0aGlzLmJTaG93Q29uZmlybSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZsb3dDb250YWluZXJDaGlsZHJlbigpIHtcbiAgICAvLyByb3V0aW5nSW5mbyB3YXMgYWRkZWQgYXMgY29tcG9uZW50IHByb3AgaW4gcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHNcbiAgICBjb25zdCByb3V0aW5nSW5mbyA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudFByb3AodGhpcywgJ3JvdXRpbmdJbmZvJyk7XG4gICAgdGhpcy5jb25maXJtX3Bjb25uID0gbnVsbDtcblxuICAgIGxldCBsb2FkaW5nSW5mbzogYW55O1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2dldExvYWRpbmdTdGF0dXMnIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gY2xhc3MgJ0MxMW5FbnYnXG4gICAgICBsb2FkaW5nSW5mbyA9IHRoaXMucENvbm4kLmdldExvYWRpbmdTdGF0dXMoKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLyogZW1wdHkgKi9cbiAgICB9XG5cbiAgICAvLyB0aGlzIGNoZWNrIGluIHJvdXRpbmdJbmZvLCBtaW1pYyBOZWJ1bGEvQ29uc3RlbGxhdGlvbiAoUmVhY3QpIHRvIGNoZWNrIGFuZCBnZXQgdGhlIGludGVybmFscyBvZiB0aGVcbiAgICAvLyBmbG93Q29udGFpbmVyIGFuZCBmb3JjZSB1cGRhdGVzIHRvIHBDb25uZWN0L3JlZHV4XG4gICAgaWYgKHJvdXRpbmdJbmZvICYmIGxvYWRpbmdJbmZvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcmRlciA9IHJvdXRpbmdJbmZvLmFjY2Vzc2VkT3JkZXI7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbXMgPSByb3V0aW5nSW5mby5pdGVtcztcbiAgICAgIGNvbnN0IHR5cGUgPSByb3V0aW5nSW5mby50eXBlO1xuICAgICAgaWYgKGN1cnJlbnRPcmRlciAmJiBjdXJyZW50SXRlbXMpIHtcbiAgICAgICAgLy8gSkEgLSBtYWtpbmcgbW9yZSBzaW1pbGFyIHRvIE5lYnVsYS9Db25zdGVsbGF0aW9uXG4gICAgICAgIGNvbnN0IGtleSA9IGN1cnJlbnRPcmRlcltjdXJyZW50T3JkZXIubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgLy8gc2F2ZSBvZmYgaXRlbUtleSB0byBiZSB1c2VkIGZvciBmaW5pc2hBc3NpZ25tZW50LCBldGMuXG4gICAgICAgIC8vIHRpbWVvdXQgYW5kIGRldGVjdENoYW5nZXMgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoa2V5ICYmIGtleSAhPSAnJykge1xuICAgICAgICAgICAgdGhpcy5pdGVtS2V5JCA9IGtleTtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tY29sbGFwc2libGUtaWZcbiAgICAgICAgaWYgKGN1cnJlbnRPcmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRJdGVtc1trZXldICYmIGN1cnJlbnRJdGVtc1trZXldLnZpZXcgJiYgdHlwZSA9PT0gJ3NpbmdsZScgJiYgT2JqZWN0LmtleXMoY3VycmVudEl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gd2hlbiB3ZSBnZXQgaGVyZSwgaXQgaXQgYmVjYXVzZSB0aGUgZmxvdyBhY3Rpb24gZGF0YSBoYXMgY2hhbmdlZFxuICAgICAgICAgICAgLy8gZnJvbSB0aGUgc2VydmVyLCBhbmQgbmVlZCB0byBhZGQgdG8gcENvbm5lY3QgYW5kIHVwZGF0ZSBjaGlsZHJlblxuXG4gICAgICAgICAgICB0aGlzLmFkZFBDb25uZWN0QW5kVXBkYXRlQ2hpbGRyZW4oY3VycmVudEl0ZW1zW2tleV0sIGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkUENvbm5lY3RBbmRVcGRhdGVDaGlsZHJlbihjdXJyZW50SXRlbSwga2V5KSB7XG4gICAgY29uc3QgbG9jYWxQQ29ubiA9IHRoaXMuYXJDaGlsZHJlbiRbMF0uZ2V0UENvbm5lY3QoKTtcblxuICAgIGNvbnN0IHJvb3RWaWV3ID0gY3VycmVudEl0ZW0udmlldztcbiAgICBjb25zdCB7IGNvbnRleHQsIG5hbWU6IFZpZXdOYW1lIH0gPSByb290Vmlldy5jb25maWc7XG4gICAgY29uc3QgY29uZmlnOiBhbnkgPSB7IG1ldGE6IHJvb3RWaWV3IH07XG5cbiAgICAvLyBEb24ndCBnbyBhaGVhZCBpZiBWaWV3IGRvZXNuJ3QgZXhpc3RcbiAgICBpZiAoIVZpZXdOYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2RvX2NvbnRleHQkID0gY3VycmVudEl0ZW0uY29udGV4dDtcblxuICAgIGNvbmZpZy5vcHRpb25zID0ge1xuICAgICAgY29udGV4dDogY3VycmVudEl0ZW0uY29udGV4dCxcbiAgICAgIHBhZ2VSZWZlcmVuY2U6IGNvbnRleHQgfHwgbG9jYWxQQ29ubi5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICBoYXNGb3JtOiB0cnVlLFxuICAgICAgaXNGbG93Q29udGFpbmVyOiB0cnVlLFxuICAgICAgY29udGFpbmVyTmFtZTogbG9jYWxQQ29ubi5nZXRDb250YWluZXJOYW1lKCksXG4gICAgICBjb250YWluZXJJdGVtTmFtZToga2V5LFxuICAgICAgcGFyZW50UGFnZVJlZmVyZW5jZTogbG9jYWxQQ29ubi5nZXRQYWdlUmVmZXJlbmNlKClcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlnT2JqZWN0ID0gUENvcmUuY3JlYXRlUENvbm5lY3QoY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpcm1fcGNvbm4gPSBjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKTtcbiAgICAvLyA4LjcgLSBjb25maWcgbWlnaHQgYmUgYSBSZWZlcmVuY2UgY29tcG9uZW50IHNvLCBuZWVkIHRvIG5vcm1hbGl6ZSBpdCB0byBnZXRcbiAgICAvLyAgdGhlIFZpZXcgaWYgaXQgaXMgYSBSZWZlcmVuY2UgY29tcG9uZW50LiBBbmQgbmVlZCB0byBwYXNzIGluIHRoZSBnZXRQQ29ubmVjdFxuICAgIC8vICB0byBoYXZlIG5vcm1hbGl6ZSBkbyBhIGMxMUVudiBjcmVhdGVDb21wb25lbnQgKHRoYXQgbWFrZXMgc3VyZSBvcHRpb25zLmhhc0Zvcm1cbiAgICAvLyAgaXMgcGFzc2VkIGFsb25nIHRvIGFsbCB0aGUgY29tcG9uZW50J3MgY2hpbGRyZW4pXG4gICAgY29uc3Qgbm9ybWFsaXplZENvbmZpZ09iamVjdCA9IFJlZmVyZW5jZUNvbXBvbmVudC5ub3JtYWxpemVQQ29ubihjb25maWdPYmplY3QuZ2V0UENvbm5lY3QoKSk7XG4gICAgLy8gV2Ugd2FudCB0aGUgY2hpbGRyZW4gdG8gYmUgdGhlIFBDb25uZWN0IGl0c2VsZiwgbm90IHRoZSByZXN1bHQgb2YgY2FsbGluZyBnZXRQQ29ubmVjdCgpLFxuICAgIC8vICBTbyBuZWVkIHRvIGdldCB0aGUgUENvbm5lY3Qgb2YgdGhlIG5vcm1hbGl6ZWQgY29tcG9uZW50IHdlIGp1c3QgY3JlYXRlZC4uLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWRDb25maWdPYmplY3RBc1BDb25uZWN0ID0gbm9ybWFsaXplZENvbmZpZ09iamVjdC5nZXRDb21wb25lbnQoKTtcblxuICAgIC8vIG1ha2VzIHN1cmUgQW5ndWxhciB0cmFja3MgdGhlc2UgY2hhbmdlc1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJ1aWxkTmFtZSQgPSB0aGlzLmdldEJ1aWxkTmFtZSgpO1xuICAgICAgLy8gd2hhdCBjb21lcyBiYWNrIG5vdyBpbiBjb25maWdPYmplY3QgaXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBmbG93Q29udGFpbmVyXG5cbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBbXTtcbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQucHVzaChub3JtYWxpemVkQ29uZmlnT2JqZWN0QXNQQ29ubmVjdCk7XG5cbiAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcblxuICAgICAgY29uc3Qgb1dvcmtJdGVtID0gY29uZmlnT2JqZWN0LmdldFBDb25uZWN0KCk7XG4gICAgICBjb25zdCBvV29ya0RhdGE6IGFueSA9IG9Xb3JrSXRlbS5nZXREYXRhT2JqZWN0KCk7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyTmFtZSQgPSB0aGlzLmxvY2FsaXplZFZhbCh0aGlzLmdldEFjdGl2ZVZpZXdMYWJlbCgpIHx8IG9Xb3JrRGF0YS5jYXNlSW5mby5hc3NpZ25tZW50cz8uWzBdLm5hbWUsIHVuZGVmaW5lZCwgdGhpcy5sb2NhbGVSZWZlcmVuY2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0QnVpbGROYW1lKCk6IHN0cmluZyB7XG4gICAgLy8gbGV0IHsgZ2V0UENvbm5lY3QsIG5hbWUgfSA9IHRoaXMucENvbm4kLnByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGxldCB2aWV3Q29udGFpbmVyTmFtZSA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcblxuICAgIGlmICghdmlld0NvbnRhaW5lck5hbWUpIHZpZXdDb250YWluZXJOYW1lID0gJyc7XG4gICAgcmV0dXJuIGAke2NvbnRleHQudG9VcHBlckNhc2UoKX0vJHt2aWV3Q29udGFpbmVyTmFtZS50b1VwcGVyQ2FzZSgpfWA7XG4gIH1cblxuICBmb3JtVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgdGhpcy50b3VjaEFsbCgpO1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cCQudmFsaWQ7XG4gIH1cblxuICB0b3VjaEFsbCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwJC5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9wVmlld1JlZnJlc2goKTogdm9pZCB7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm1Hcm91cCQuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGhlbHBlcnMgLSBjb3B5aWVkIGZyb20gZmxvdyBjb250YWluZXIgaGVscGVycy5qc1xuXG4gIGFkZENvbnRhaW5lckl0ZW0ocENvbm5lY3QpIHtcbiAgICAvLyBjb3BpZWQgZnJvbSBmbG93IGNvbnRhaW5lciBoZWxwZXIuanNcbiAgICBjb25zdCBjb250YWluZXJNYW5hZ2VyID0gcENvbm5lY3QuZ2V0Q29udGFpbmVyTWFuYWdlcigpO1xuICAgIGNvbnN0IGNvbnRleHROYW1lID0gcENvbm5lY3QuZ2V0Q29udGV4dE5hbWUoKTsgLy8gaGVyZSB3ZSB3aWxsIGdldCBwYXJlbnQgY29udGV4dCBuYW1lLCBhcyBmbG93IGNvbnRhaW5lciBpcyBjaGlsZCBvZiB2aWV3IGNvbnRhaW5lclxuICAgIGNvbnN0IGNhc2VWaWV3TW9kZSA9IHBDb25uZWN0LmdldFZhbHVlKCdjb250ZXh0X2RhdGEuY2FzZVZpZXdNb2RlJyk7XG5cbiAgICBsZXQga2V5O1xuICAgIGxldCBmbG93TmFtZTtcblxuICAgIGlmIChjYXNlVmlld01vZGUgIT09ICdyZXZpZXcnKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBjb250ZXh0TmFtZS5zdWJzdHJpbmcoMCwgY29udGV4dE5hbWUubGFzdEluZGV4T2YoJ18nKSk7XG4gICAgICBjb25zdCBhY3RpdmVDb250YWluZXJJdGVtSUQgPSBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLmdldEFjdGl2ZUNvbnRhaW5lckl0ZW1OYW1lKHRhcmdldCk7XG4gICAgICBjb25zdCBjb250YWluZXJJdGVtRGF0YSA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVySXRlbURhdGEodGFyZ2V0LCBhY3RpdmVDb250YWluZXJJdGVtSUQpO1xuXG4gICAgICBpZiAoY29udGFpbmVySXRlbURhdGEpIHtcbiAgICAgICAgKHsga2V5LCBmbG93TmFtZSB9ID0gY29udGFpbmVySXRlbURhdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRhaW5lck1hbmFnZXIuYWRkQ29udGFpbmVySXRlbSh7XG4gICAgICBzZW1hbnRpY1VSTDogJycsXG4gICAgICBrZXksXG4gICAgICBmbG93TmFtZSxcbiAgICAgIGNhc2VWaWV3TW9kZTogJ3BlcmZvcm0nLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQVNTSUdOTUVOVCcsXG4gICAgICBkYXRhOiBwQ29ubmVjdC5nZXREYXRhT2JqZWN0KGNvbnRleHROYW1lKVxuICAgIH0pO1xuICB9XG4gIC8vIGhlbHBlcnMgZW5kXG59XG4iLCI8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiIGNsYXNzPVwicHNkay1mbG93LWNvbnRhaW5lci10b3BcIj5cbiAgPGRpdiAqbmdJZj1cIiFiU2hvd0NvbmZpcm1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXRvZG9fc2hvd1RvZG8kXCI+XG4gICAgICA8aDI+e3sgY29udGFpbmVyTmFtZSQgfX08L2gyPlxuICAgICAgPGRpdiAqbmdJZj1cImJhbm5lcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiQWxlcnRCYW5uZXJcIiBbcHJvcHNdPVwieyBiYW5uZXJzIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiVG9kb1wiXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgcENvbm4kOiBwQ29ubmVjdE9mQWN0aXZlQ29udGFpbmVySXRlbSxcbiAgICAgICAgICBjYXNlSW5mb0lEJDogdG9kb19jYXNlSW5mb0lEJCxcbiAgICAgICAgICBkYXRhc291cmNlJDogdG9kb19kYXRhc291cmNlJCxcbiAgICAgICAgICBzaG93VG9kb0xpc3QkOiB0b2RvX3Nob3dUb2RvTGlzdCQsXG4gICAgICAgICAgaGVhZGVyVGV4dCQ6IHRvZG9faGVhZGVyVGV4dCQsXG4gICAgICAgICAgdHlwZSQ6ICdUT0RPJyxcbiAgICAgICAgICBjb250ZXh0JDogdG9kb19jb250ZXh0JCxcbiAgICAgICAgICBpc0NvbmZpcm06IHRydWVcbiAgICAgICAgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhdG9kb19zaG93VG9kbyRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwicENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW1cIlxuICAgICAgICBuYW1lPVwiQXNzaWdubWVudFwiXG4gICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDogcENvbm5lY3RPZkFjdGl2ZUNvbnRhaW5lckl0ZW0sIGZvcm1Hcm91cCQsIGFyQ2hpbGRyZW4kLCBpdGVtS2V5JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYkhhc0Nhc2VNZXNzYWdlcyRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJwc2RrLW1lc3NhZ2UtY2FyZFwiPlxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3dcIj5cbiAgICAgICAgPGRpdj48aW1nIGNsYXNzPVwicHNkay1pY29uXCIgc3JjPVwie3sgY2hlY2tTdmckIH19XCIgLz48L2Rpdj5cbiAgICAgICAgPGRpdj57eyBjYXNlTWVzc2FnZXMkIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImJTaG93QmFubmVyICYmIGJTaG93Q29uZmlybSAmJiBjb25maXJtX3Bjb25uXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlZpZXdcIiBbcHJvcHNdPVwieyBmb3JtR3JvdXAkLCBwQ29ubiQ6IGNvbmZpcm1fcGNvbm4gfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -25,11 +25,11 @@ function getChildCaseAssignments(pConnect) {
25
25
  }
26
26
  return allAssignments;
27
27
  }
28
- function hasAssignments(pConnect) {
28
+ export function hasAssignments(pConnect) {
29
29
  const { CASE_INFO } = PCore.getConstants();
30
30
  const assignments = pConnect.getValue(CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS);
31
31
  const childCasesAssignments = getChildCaseAssignments(pConnect);
32
- return assignments || childCasesAssignments || isCaseWideLocalAction(pConnect);
32
+ return assignments || childCasesAssignments?.length || isCaseWideLocalAction(pConnect);
33
33
  }
34
34
  export const showBanner = getPConnect => {
35
35
  const pConnect = getPConnect;
@@ -65,4 +65,4 @@ export function getToDoAssignments(pConnect) {
65
65
  }
66
66
  return todoAssignmentsCopy;
67
67
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9Db250YWluZXJzL2Zsb3ctY29udGFpbmVyL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyx1QkFBdUIsQ0FBQyxRQUFRO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsUUFBUTtJQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRSxJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoRixPQUFPLFlBQVksRUFBRSxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLFFBQVE7SUFDdkMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkYsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO0lBQy9CLElBQUksVUFBVSxJ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ckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcseUJBQXlCLENBQUMsQ0FBQztJQUN2RSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXRFLElBQUksV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDdkMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pELFVBQVUsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDO1lBQ3ZFLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGhhc05vdGlmaWNhdGlvbk1lc3NhZ2VzKHBDb25uZWN0KSB7XG4gIHJldHVybiAhIXBDb25uZWN0LmdldFZhbHVlKCdjYXNlTWVzc2FnZXMnKTtcbn1cblxuZnVuY3Rpb24gaXNDYXNlV2lkZUxvY2FsQWN0aW9uKHBDb25uZWN0KSB7XG4gIGNvbnN0IHsgQ0FTRV9JTkZPIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgY29uc3QgYWN0aW9uSUQgPSBwQ29ubmVjdC5nZXRWYWx1ZShDQVNFX0lORk8uQUNUSVZFX0FDVElPTl9JRCk7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgaWYgKGNhc2VBY3Rpb25zICYmIGFjdGlvbklEKSB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uID0gY2FzZUFjdGlvbnMuZmluZChjYXNlQWN0aW9uID0+IGNhc2VBY3Rpb24uSUQgPT09IGFjdGlvbklEKTtcbiAgICByZXR1cm4gYWN0aXZlQWN0aW9uPy50eXBlID09PSAnQ2FzZSc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZENhc2VBc3NpZ25tZW50cyhwQ29ubmVjdCkge1xuICBjb25zdCBjaGlsZENhc2VzID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNISUxEX0FTU0lHTk1FTlRTKTtcbiAgbGV0IGFsbEFzc2lnbm1lbnRzOiBhbnlbXSA9IFtdO1xuICBpZiAoY2hpbGRDYXNlcyAmJiBjaGlsZENhc2VzLmxlbmd0aCA+IDApIHtcbiAgICBjaGlsZENhc2VzLmZvckVhY2goKHsgYXNzaWdubWVudHMgPSBbXSwgTmFtZSB9KSA9PiB7XG4gICAgICBjb25zdCBjaGlsZENhc2VBc3NpZ25tZW50cyA9IGFzc2lnbm1lbnRzLm1hcCgoYXNzaWdubWVudDogYW55KSA9PiAoe1xuICAgICAgICAuLi5hc3NpZ25tZW50LFxuICAgICAgICBjYXNlTmFtZTogTmFtZVxuICAgICAgfSkpO1xuICAgICAgYWxsQXNzaWdubWVudHMgPSBhbGxBc3NpZ25tZW50cy5jb25jYXQoY2hpbGRDYXNlQXNzaWdubWVudHMpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBhbGxBc3NpZ25tZW50cztcbn1cblxuZnVuY3Rpb24gaGFzQXNzaWdubWVudHMocENvbm5lY3QpIHtcbiAgY29uc3QgeyBDQVNFX0lORk8gfSA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICBjb25zdCBhc3NpZ25tZW50cyA9IHBDb25uZWN0LmdldFZhbHVlKENBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUyk7XG4gIGNvbnN0IGNoaWxkQ2FzZXNBc3NpZ25tZW50cyA9IGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KTtcblxuICByZXR1cm4gYXNzaWdubWVudHMgfHwgY2hpbGRDYXNlc0Fzc2lnbm1lbnRzIHx8IGlzQ2FzZVdpZGVMb2NhbEFjdGlvbihwQ29ubmVjdCk7XG59XG5cbmV4cG9ydCBjb25zdCBzaG93QmFubmVyID0gZ2V0UENvbm5lY3QgPT4ge1xuICBjb25zdCBwQ29ubmVjdCA9IGdldFBDb25uZWN0O1xuICByZXR1cm4gaGFzTm90aWZpY2F0aW9uTWVzc2FnZXMocENvbm5lY3QpIHx8ICFoYXNBc3NpZ25tZW50cyhwQ29ubmVjdCk7XG59O1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkge1xuICBjb25zdCBjYXNlQWN0aW9ucyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fQUNUSU9OUyk7XG4gIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFDVElWRV9BQ1RJT05fSUQpO1xuICBjb25zdCBhY3RpdmVBY3Rpb24gPSBjYXNlQWN0aW9ucy5maW5kKGFjdGlvbiA9PiBhY3Rpb24uSUQgPT09IGFjdGl2ZUFjdGlvbklEKTtcbiAgcmV0dXJuIGFjdGl2ZUFjdGlvbj8ubmFtZSB8fCAnJztcbn1cblxuZnVuY3Rpb24gc2hvd1RvZG8ocENvbm5lY3QpIHtcbiAgY29uc3QgY2FzZVZpZXdNb2RlID0gcENvbm5lY3QuZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgcmV0dXJuIGNhc2VWaWV3TW9kZSAhPT0gJ3BlcmZvcm0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgY29uc3QgYXNzaWdubWVudExhYmVsID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFTU0lHTk1FTlRfTEFCRUwpO1xuICBjb25zdCBhc3NpZ25tZW50cyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUykgfHwgW107XG4gIGNvbnN0IGNoaWxkQ2FzZXNBc3NpZ25tZW50cyA9IGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KSB8fCBbXTtcbiAgbGV0IGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNoaWxkQ2FzZXNBc3NpZ25tZW50cykpO1xuXG4gIGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBjaGlsZENhc2VzQXNzaWdubWVudHNDb3B5Lm1hcChhc3NpZ25tZW50ID0+IHtcbiAgICBhc3NpZ25tZW50LmlzQ2hpbGQgPSB0cnVlO1xuICAgIHJldHVybiBhc3NpZ25tZW50O1xuICB9KTtcblxuICBjb25zdCB0b2RvQXNzaWdubWVudHMgPSBbLi4uYXNzaWdubWVudHMsIC4uLmNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHldO1xuICBsZXQgdG9kb0Fzc2lnbm1lbnRzQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodG9kb0Fzc2lnbm1lbnRzKSk7XG5cbiAgaWYgKGNhc2VBY3Rpb25zICYmICFzaG93VG9kbyhwQ29ubmVjdCkpIHtcbiAgICB0b2RvQXNzaWdubWVudHNDb3B5ID0gdG9kb0Fzc2lnbm1lbnRzQ29weS5tYXAoYXNzaWdubWVudCA9PiB7XG4gICAgICBhc3NpZ25tZW50Lm5hbWUgPSBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkgfHwgYXNzaWdubWVudExhYmVsO1xuICAgICAgcmV0dXJuIGFzc2lnbm1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdG9kb0Fzc2lnbm1lbnRzQ29weTtcbn1cbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9Db250YWluZXJzL2Zsb3ctY29udGFpbmVyL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyx1QkFBdUIsQ0FBQyxRQUFRO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsUUFBUTtJQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRSxJQUFJLFdBQVcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoRixPQUFPLFlBQVksRUFBRSxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLFFBQVE7SUFDdkMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkYsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO0lBQy9CLElBQUksVUFBVSxJ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VSxDQUFDLEVBQUU7UUFDckUsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcseUJBQXlCLENBQUMsQ0FBQztJQUN2RSxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRXRFLElBQUksV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDdkMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pELFVBQVUsQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDO1lBQ3ZFLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGhhc05vdGlmaWNhdGlvbk1lc3NhZ2VzKHBDb25uZWN0KSB7XG4gIHJldHVybiAhIXBDb25uZWN0LmdldFZhbHVlKCdjYXNlTWVzc2FnZXMnKTtcbn1cblxuZnVuY3Rpb24gaXNDYXNlV2lkZUxvY2FsQWN0aW9uKHBDb25uZWN0KSB7XG4gIGNvbnN0IHsgQ0FTRV9JTkZPIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgY29uc3QgYWN0aW9uSUQgPSBwQ29ubmVjdC5nZXRWYWx1ZShDQVNFX0lORk8uQUNUSVZFX0FDVElPTl9JRCk7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgaWYgKGNhc2VBY3Rpb25zICYmIGFjdGlvbklEKSB7XG4gICAgY29uc3QgYWN0aXZlQWN0aW9uID0gY2FzZUFjdGlvbnMuZmluZChjYXNlQWN0aW9uID0+IGNhc2VBY3Rpb24uSUQgPT09IGFjdGlvbklEKTtcbiAgICByZXR1cm4gYWN0aXZlQWN0aW9uPy50eXBlID09PSAnQ2FzZSc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRDaGlsZENhc2VBc3NpZ25tZW50cyhwQ29ubmVjdCkge1xuICBjb25zdCBjaGlsZENhc2VzID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNISUxEX0FTU0lHTk1FTlRTKTtcbiAgbGV0IGFsbEFzc2lnbm1lbnRzOiBhbnlbXSA9IFtdO1xuICBpZiAoY2hpbGRDYXNlcyAmJiBjaGlsZENhc2VzLmxlbmd0aCA+IDApIHtcbiAgICBjaGlsZENhc2VzLmZvckVhY2goKHsgYXNzaWdubWVudHMgPSBbXSwgTmFtZSB9KSA9PiB7XG4gICAgICBjb25zdCBjaGlsZENhc2VBc3NpZ25tZW50cyA9IGFzc2lnbm1lbnRzLm1hcCgoYXNzaWdubWVudDogYW55KSA9PiAoe1xuICAgICAgICAuLi5hc3NpZ25tZW50LFxuICAgICAgICBjYXNlTmFtZTogTmFtZVxuICAgICAgfSkpO1xuICAgICAgYWxsQXNzaWdubWVudHMgPSBhbGxBc3NpZ25tZW50cy5jb25jYXQoY2hpbGRDYXNlQXNzaWdubWVudHMpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBhbGxBc3NpZ25tZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0Fzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IHsgQ0FTRV9JTkZPIH0gPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgY29uc3QgYXNzaWdubWVudHMgPSBwQ29ubmVjdC5nZXRWYWx1ZShDQVNFX0lORk8uRF9DQVNFX0FTU0lHTk1FTlRTX1JFU1VMVFMpO1xuICBjb25zdCBjaGlsZENhc2VzQXNzaWdubWVudHMgPSBnZXRDaGlsZENhc2VBc3NpZ25tZW50cyhwQ29ubmVjdCk7XG5cbiAgcmV0dXJuIGFzc2lnbm1lbnRzIHx8IGNoaWxkQ2FzZXNBc3NpZ25tZW50cz8ubGVuZ3RoIHx8IGlzQ2FzZVdpZGVMb2NhbEFjdGlvbihwQ29ubmVjdCk7XG59XG5cbmV4cG9ydCBjb25zdCBzaG93QmFubmVyID0gZ2V0UENvbm5lY3QgPT4ge1xuICBjb25zdCBwQ29ubmVjdCA9IGdldFBDb25uZWN0O1xuICByZXR1cm4gaGFzTm90aWZpY2F0aW9uTWVzc2FnZXMocENvbm5lY3QpIHx8ICFoYXNBc3NpZ25tZW50cyhwQ29ubmVjdCk7XG59O1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkge1xuICBjb25zdCBjYXNlQWN0aW9ucyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fQUNUSU9OUyk7XG4gIGNvbnN0IGFjdGl2ZUFjdGlvbklEID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFDVElWRV9BQ1RJT05fSUQpO1xuICBjb25zdCBhY3RpdmVBY3Rpb24gPSBjYXNlQWN0aW9ucy5maW5kKGFjdGlvbiA9PiBhY3Rpb24uSUQgPT09IGFjdGl2ZUFjdGlvbklEKTtcbiAgcmV0dXJuIGFjdGl2ZUFjdGlvbj8ubmFtZSB8fCAnJztcbn1cblxuZnVuY3Rpb24gc2hvd1RvZG8ocENvbm5lY3QpIHtcbiAgY29uc3QgY2FzZVZpZXdNb2RlID0gcENvbm5lY3QuZ2V0VmFsdWUoJ2NvbnRleHRfZGF0YS5jYXNlVmlld01vZGUnKTtcbiAgcmV0dXJuIGNhc2VWaWV3TW9kZSAhPT0gJ3BlcmZvcm0nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9Eb0Fzc2lnbm1lbnRzKHBDb25uZWN0KSB7XG4gIGNvbnN0IGNhc2VBY3Rpb25zID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19BQ1RJT05TKTtcbiAgY29uc3QgYXNzaWdubWVudExhYmVsID0gcENvbm5lY3QuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkFTU0lHTk1FTlRfTEFCRUwpO1xuICBjb25zdCBhc3NpZ25tZW50cyA9IHBDb25uZWN0LmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5EX0NBU0VfQVNTSUdOTUVOVFNfUkVTVUxUUykgfHwgW107XG4gIGNvbnN0IGNoaWxkQ2FzZXNBc3NpZ25tZW50cyA9IGdldENoaWxkQ2FzZUFzc2lnbm1lbnRzKHBDb25uZWN0KSB8fCBbXTtcbiAgbGV0IGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNoaWxkQ2FzZXNBc3NpZ25tZW50cykpO1xuXG4gIGNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHkgPSBjaGlsZENhc2VzQXNzaWdubWVudHNDb3B5Lm1hcChhc3NpZ25tZW50ID0+IHtcbiAgICBhc3NpZ25tZW50LmlzQ2hpbGQgPSB0cnVlO1xuICAgIHJldHVybiBhc3NpZ25tZW50O1xuICB9KTtcblxuICBjb25zdCB0b2RvQXNzaWdubWVudHMgPSBbLi4uYXNzaWdubWVudHMsIC4uLmNoaWxkQ2FzZXNBc3NpZ25tZW50c0NvcHldO1xuICBsZXQgdG9kb0Fzc2lnbm1lbnRzQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodG9kb0Fzc2lnbm1lbnRzKSk7XG5cbiAgaWYgKGNhc2VBY3Rpb25zICYmICFzaG93VG9kbyhwQ29ubmVjdCkpIHtcbiAgICB0b2RvQXNzaWdubWVudHNDb3B5ID0gdG9kb0Fzc2lnbm1lbnRzQ29weS5tYXAoYXNzaWdubWVudCA9PiB7XG4gICAgICBhc3NpZ25tZW50Lm5hbWUgPSBnZXRBY3RpdmVDYXNlQWN0aW9uTmFtZShwQ29ubmVjdCkgfHwgYXNzaWdubWVudExhYmVsO1xuICAgICAgcmV0dXJuIGFzc2lnbm1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdG9kb0Fzc2lnbm1lbnRzQ29weTtcbn1cbiJdfQ==
@@ -8,10 +8,10 @@ import * as i0 from "@angular/core";
8
8
  */
9
9
  // Right this is a skeleton, as Hybrid ViewContainer hasn't been implemented
10
10
  export class HybridViewContainerComponent {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HybridViewContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HybridViewContainerComponent, isStandalone: true, selector: "app-hybrid-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<p>hybrid-view-container works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HybridViewContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: HybridViewContainerComponent, isStandalone: true, selector: "app-hybrid-view-container", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, ngImport: i0, template: "<p>hybrid-view-container works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HybridViewContainerComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HybridViewContainerComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'app-hybrid-view-container', standalone: true, imports: [CommonModule], template: "<p>hybrid-view-container works!</p>\n" }]
17
17
  }], propDecorators: { pConn$: [{