@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
@@ -113,17 +113,14 @@ export class CaseViewComponent {
113
113
  this.editAction = this.arAvailableActions$.find(action => action.ID === 'pyUpdateCaseDetails');
114
114
  this.arAvailabeProcesses$ = caseInfo?.availableProcesses ? caseInfo.availableProcesses : [];
115
115
  this.svgCase$ = this.utils.getImageSrc(this.configProps$.icon, this.utils.getSDKStaticContentUrl());
116
- // this.utils.consoleKidDump(this.pConn$);
117
- if (!this.displayOnlyFA$) {
118
- for (const kid of this.arChildren$) {
119
- const kidPConn = kid.getPConnect();
120
- if (kidPConn.getRawMetadata().name == 'Tabs') {
121
- this.mainTabs = kid;
122
- this.mainTabData = this.mainTabs.getPConnect().getChildren();
123
- }
116
+ for (const kid of this.arChildren$) {
117
+ const kidPConn = kid.getPConnect();
118
+ if (kidPConn.getRawMetadata().name == 'Tabs') {
119
+ this.mainTabs = kid;
120
+ this.mainTabData = this.mainTabs.getPConnect().getChildren();
124
121
  }
125
- this.generateTabsData();
126
122
  }
123
+ this.generateTabsData();
127
124
  }
128
125
  generateTabsData() {
129
126
  this.mainTabs
@@ -174,17 +171,15 @@ export class CaseViewComponent {
174
171
  const openProcessAction = actionsAPI.openProcessAction.bind(actionsAPI);
175
172
  openProcessAction(data.ID, { ...data });
176
173
  }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CaseViewComponent, isStandalone: true, selector: "app-case-view", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, providers: [Utils], ngImport: i0, template: "<div class=\"psdk-case-view\" id=\"case-view\">\n <div *ngIf=\"!displayOnlyFA$\" class=\"psdk-case-view-info\">\n <mat-toolbar color=\"primary\" class=\"psdk-case-view-toolbar\">\n <mat-toolbar-row style=\"padding-left: 1rem\">\n <div class=\"psdk-case-icon-div\">\n <img class=\"psdk-case-svg-icon\" src=\"{{ svgCase$ }}\" />\n </div>\n <div class=\"psdk-case-view-heading\">\n <div>\n <h1 id=\"case-name\">{{ heading$ }}</h1>\n </div>\n <div id=\"current-caseID\" [hidden]=\"true\">{{ currentCaseID }}</div>\n <div class=\"psdk-case-view-heading-id\" id=\"caseId\">{{ id$ }}</div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"psdk-case-view-buttons\">\n <button *ngIf=\"editAction\" mat-raised-button color=\"secondary\" (click)=\"_editClick()\">{{ localizedVal('Edit', localeCategory) }}</button>\n <button mat-raised-button color=\"secondary\" [matMenuTriggerFor]=\"actionMenu\">{{ localizedVal('Actions...', localeCategory) }}</button>\n <mat-menu #actionMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arAvailableActions$\">\n <button mat-menu-item (click)=\"_menuActionClick(action)\">\n {{ localizedVal(action.name, '', localeKey) }}\n </button>\n </ng-container>\n <ng-container *ngFor=\"let process of arAvailabeProcesses$\">\n <button mat-menu-item (click)=\"_menuProcessClick(process)\">\n {{ process.name }}\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div class=\"psdk-case-view-divider\"></div>\n\n <div class=\"psdk-case-view-summary\">\n <component-mapper name=\"CaseSummary\" [props]=\"{ pConn$: caseSummaryPConn$ }\"></component-mapper>\n </div>\n\n <component-mapper\n *ngIf=\"caseTabs$.length > 1\"\n name=\"VerticalTabs\"\n [props]=\"{ tabConfig$: caseTabs$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ tabClick: onTabClick }\"\n ></component-mapper>\n </div>\n <div class=\"psdk-case-view-main\">\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"\n kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'stages'\n \"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'todo'\"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name == 'Main'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngIf=\"!displayOnlyFA$\">\n <component-mapper name=\"DeferLoad\" [props]=\"{ pConn$, loadData$: tabData$, name: tabData$?.config?.name }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngIf=\"arChildren$\" class=\"psdk-case-view-utilities\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()?.type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata()?.name == 'Utilities'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h1{font-size:1.1rem;line-height:1.3rem}::ng-deep .mat-mdc-menu-panel{overflow:unset;max-width:unset}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%;border-radius:.6125rem}.psdk-case-view{box-sizing:border-box;display:flex}.ng-case-view-toolbar{padding:.625rem}.psdk-case-icon-div{background-color:var(--app-primary-dark-color);border-radius:1rem;padding:.5rem .3rem .3rem}.psdk-case-svg-icon{width:2rem;padding:0rem .3125rem;filter:var(--app-white-color-filter)}.psdk-case-view-info-box{display:flex;flex-direction:row;padding:0rem .3125rem 0rem 0rem}.psdk-case-view-info{flex:0 0 auto;width:25rem;float:left;padding:0rem .3125rem 0rem 0rem;margin-left:.5rem;margin-top:.5rem;height:100%;background-color:var(--app-form-color)}.psdk-case-view-main{flex-grow:2;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-summary{padding-left:.75rem}.psdk-case-view-heading{display:block;text-align:left;padding-left:.5rem;padding-bottom:0;padding-top:5px}.psdk-case-view-heading-id{font-size:.9rem;font-weight:400}.psdk-case-view-buttons{display:flex;justify-content:flex-start;padding:.3125rem}.psdk-case-view-utilities{width:21.875rem;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-status{padding:.3125rem;background-color:var(--app-primary-color);color:var(--app-form-color);width:fit-content;margin:.625rem}button{margin:0rem .3125rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatToolbarModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatToolbar), selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatToolbarRow), selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i6.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i6.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i6.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaseViewComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
175
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaseViewComponent, isStandalone: true, selector: "app-case-view", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, providers: [Utils], ngImport: i0, template: "<div class=\"psdk-case-view\" id=\"case-view\">\n <div class=\"psdk-case-view-info\">\n <mat-toolbar color=\"primary\" class=\"psdk-case-view-toolbar\">\n <mat-toolbar-row style=\"padding-left: 1rem\">\n <div class=\"psdk-case-icon-div\">\n <img class=\"psdk-case-svg-icon\" src=\"{{ svgCase$ }}\" />\n </div>\n <div class=\"psdk-case-view-heading\">\n <div>\n <h1 id=\"case-name\">{{ heading$ }}</h1>\n </div>\n <div id=\"current-caseID\" [hidden]=\"true\">{{ currentCaseID }}</div>\n <div class=\"psdk-case-view-heading-id\" id=\"caseId\">{{ id$ }}</div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"psdk-case-view-buttons\">\n <button *ngIf=\"editAction\" mat-raised-button color=\"secondary\" (click)=\"_editClick()\">{{ localizedVal('Edit', localeCategory) }}</button>\n <button mat-raised-button color=\"secondary\" [matMenuTriggerFor]=\"actionMenu\">{{ localizedVal('Actions...', localeCategory) }}</button>\n <mat-menu #actionMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arAvailableActions$\">\n <button mat-menu-item (click)=\"_menuActionClick(action)\">\n {{ localizedVal(action.name, '', localeKey) }}\n </button>\n </ng-container>\n <ng-container *ngFor=\"let process of arAvailabeProcesses$\">\n <button mat-menu-item (click)=\"_menuProcessClick(process)\">\n {{ process.name }}\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div class=\"psdk-case-view-divider\"></div>\n\n <div class=\"psdk-case-view-summary\">\n <component-mapper name=\"CaseSummary\" [props]=\"{ pConn$: caseSummaryPConn$ }\"></component-mapper>\n </div>\n\n <component-mapper\n *ngIf=\"caseTabs$.length > 1\"\n name=\"VerticalTabs\"\n [props]=\"{ tabConfig$: caseTabs$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ tabClick: onTabClick }\"\n ></component-mapper>\n </div>\n <div class=\"psdk-case-view-main\">\n <div>\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"\n kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'stages'\n \"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'todo'\"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name == 'Main'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div>\n <component-mapper name=\"DeferLoad\" [props]=\"{ pConn$, loadData$: tabData$, name: tabData$?.config?.name }\"></component-mapper>\n </div>\n </div>\n <div>\n <div *ngIf=\"arChildren$\" class=\"psdk-case-view-utilities\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()?.type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata()?.name == 'Utilities'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h1{font-size:1.1rem;line-height:1.3rem}::ng-deep .mat-mdc-menu-panel{overflow:unset;max-width:unset}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%;border-radius:.6125rem}.psdk-case-view{box-sizing:border-box;display:flex}.ng-case-view-toolbar{padding:.625rem}.psdk-case-icon-div{background-color:var(--app-primary-dark-color);border-radius:1rem;padding:.5rem .3rem .3rem}.psdk-case-svg-icon{width:2rem;padding:0rem .3125rem;filter:var(--app-white-color-filter)}.psdk-case-view-info-box{display:flex;flex-direction:row;padding:0rem .3125rem 0rem 0rem}.psdk-case-view-info{flex:0 0 auto;width:25rem;float:left;padding:0rem .3125rem 0rem 0rem;margin-left:.5rem;margin-top:.5rem;height:100%;background-color:var(--app-form-color)}.psdk-case-view-main{flex-grow:2;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-summary{padding-left:.75rem}.psdk-case-view-heading{display:block;text-align:left;padding-left:.5rem;padding-bottom:0;padding-top:5px}.psdk-case-view-heading-id{font-size:.9rem;font-weight:400}.psdk-case-view-buttons{display:flex;justify-content:flex-start;padding:.3125rem}.psdk-case-view-utilities{width:21.875rem;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-status{padding:.3125rem;background-color:var(--app-primary-color);color:var(--app-form-color);width:fit-content;margin:.625rem}button{margin:0rem .3125rem}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatToolbarModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatToolbar), selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i0.forwardRef(() => i4.MatToolbarRow), selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i6.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i6.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i6.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
179
176
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseViewComponent, decorators: [{
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaseViewComponent, decorators: [{
181
178
  type: Component,
182
- args: [{ selector: 'app-case-view', providers: [Utils], standalone: true, imports: [CommonModule, MatToolbarModule, MatButtonModule, MatMenuModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-case-view\" id=\"case-view\">\n <div *ngIf=\"!displayOnlyFA$\" class=\"psdk-case-view-info\">\n <mat-toolbar color=\"primary\" class=\"psdk-case-view-toolbar\">\n <mat-toolbar-row style=\"padding-left: 1rem\">\n <div class=\"psdk-case-icon-div\">\n <img class=\"psdk-case-svg-icon\" src=\"{{ svgCase$ }}\" />\n </div>\n <div class=\"psdk-case-view-heading\">\n <div>\n <h1 id=\"case-name\">{{ heading$ }}</h1>\n </div>\n <div id=\"current-caseID\" [hidden]=\"true\">{{ currentCaseID }}</div>\n <div class=\"psdk-case-view-heading-id\" id=\"caseId\">{{ id$ }}</div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"psdk-case-view-buttons\">\n <button *ngIf=\"editAction\" mat-raised-button color=\"secondary\" (click)=\"_editClick()\">{{ localizedVal('Edit', localeCategory) }}</button>\n <button mat-raised-button color=\"secondary\" [matMenuTriggerFor]=\"actionMenu\">{{ localizedVal('Actions...', localeCategory) }}</button>\n <mat-menu #actionMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arAvailableActions$\">\n <button mat-menu-item (click)=\"_menuActionClick(action)\">\n {{ localizedVal(action.name, '', localeKey) }}\n </button>\n </ng-container>\n <ng-container *ngFor=\"let process of arAvailabeProcesses$\">\n <button mat-menu-item (click)=\"_menuProcessClick(process)\">\n {{ process.name }}\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div class=\"psdk-case-view-divider\"></div>\n\n <div class=\"psdk-case-view-summary\">\n <component-mapper name=\"CaseSummary\" [props]=\"{ pConn$: caseSummaryPConn$ }\"></component-mapper>\n </div>\n\n <component-mapper\n *ngIf=\"caseTabs$.length > 1\"\n name=\"VerticalTabs\"\n [props]=\"{ tabConfig$: caseTabs$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ tabClick: onTabClick }\"\n ></component-mapper>\n </div>\n <div class=\"psdk-case-view-main\">\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"\n kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'stages'\n \"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'todo'\"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name == 'Main'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngIf=\"!displayOnlyFA$\">\n <component-mapper name=\"DeferLoad\" [props]=\"{ pConn$, loadData$: tabData$, name: tabData$?.config?.name }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"!displayOnlyFA$\">\n <div *ngIf=\"arChildren$\" class=\"psdk-case-view-utilities\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()?.type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata()?.name == 'Utilities'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h1{font-size:1.1rem;line-height:1.3rem}::ng-deep .mat-mdc-menu-panel{overflow:unset;max-width:unset}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%;border-radius:.6125rem}.psdk-case-view{box-sizing:border-box;display:flex}.ng-case-view-toolbar{padding:.625rem}.psdk-case-icon-div{background-color:var(--app-primary-dark-color);border-radius:1rem;padding:.5rem .3rem .3rem}.psdk-case-svg-icon{width:2rem;padding:0rem .3125rem;filter:var(--app-white-color-filter)}.psdk-case-view-info-box{display:flex;flex-direction:row;padding:0rem .3125rem 0rem 0rem}.psdk-case-view-info{flex:0 0 auto;width:25rem;float:left;padding:0rem .3125rem 0rem 0rem;margin-left:.5rem;margin-top:.5rem;height:100%;background-color:var(--app-form-color)}.psdk-case-view-main{flex-grow:2;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-summary{padding-left:.75rem}.psdk-case-view-heading{display:block;text-align:left;padding-left:.5rem;padding-bottom:0;padding-top:5px}.psdk-case-view-heading-id{font-size:.9rem;font-weight:400}.psdk-case-view-buttons{display:flex;justify-content:flex-start;padding:.3125rem}.psdk-case-view-utilities{width:21.875rem;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-status{padding:.3125rem;background-color:var(--app-primary-color);color:var(--app-form-color);width:fit-content;margin:.625rem}button{margin:0rem .3125rem}\n"] }]
179
+ args: [{ selector: 'app-case-view', providers: [Utils], standalone: true, imports: [CommonModule, MatToolbarModule, MatButtonModule, MatMenuModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-case-view\" id=\"case-view\">\n <div class=\"psdk-case-view-info\">\n <mat-toolbar color=\"primary\" class=\"psdk-case-view-toolbar\">\n <mat-toolbar-row style=\"padding-left: 1rem\">\n <div class=\"psdk-case-icon-div\">\n <img class=\"psdk-case-svg-icon\" src=\"{{ svgCase$ }}\" />\n </div>\n <div class=\"psdk-case-view-heading\">\n <div>\n <h1 id=\"case-name\">{{ heading$ }}</h1>\n </div>\n <div id=\"current-caseID\" [hidden]=\"true\">{{ currentCaseID }}</div>\n <div class=\"psdk-case-view-heading-id\" id=\"caseId\">{{ id$ }}</div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"psdk-case-view-buttons\">\n <button *ngIf=\"editAction\" mat-raised-button color=\"secondary\" (click)=\"_editClick()\">{{ localizedVal('Edit', localeCategory) }}</button>\n <button mat-raised-button color=\"secondary\" [matMenuTriggerFor]=\"actionMenu\">{{ localizedVal('Actions...', localeCategory) }}</button>\n <mat-menu #actionMenu=\"matMenu\" overlapTrigger=\"false\">\n <ng-container *ngFor=\"let action of arAvailableActions$\">\n <button mat-menu-item (click)=\"_menuActionClick(action)\">\n {{ localizedVal(action.name, '', localeKey) }}\n </button>\n </ng-container>\n <ng-container *ngFor=\"let process of arAvailabeProcesses$\">\n <button mat-menu-item (click)=\"_menuProcessClick(process)\">\n {{ process.name }}\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div class=\"psdk-case-view-divider\"></div>\n\n <div class=\"psdk-case-view-summary\">\n <component-mapper name=\"CaseSummary\" [props]=\"{ pConn$: caseSummaryPConn$ }\"></component-mapper>\n </div>\n\n <component-mapper\n *ngIf=\"caseTabs$.length > 1\"\n name=\"VerticalTabs\"\n [props]=\"{ tabConfig$: caseTabs$ }\"\n [parent]=\"this\"\n [outputEvents]=\"{ tabClick: onTabClick }\"\n ></component-mapper>\n </div>\n <div class=\"psdk-case-view-main\">\n <div>\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"\n kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'stages'\n \"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div\n *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name.toLowerCase() == 'todo'\"\n >\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata().type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata().name == 'Main'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n\n <div>\n <component-mapper name=\"DeferLoad\" [props]=\"{ pConn$, loadData$: tabData$, name: tabData$?.config?.name }\"></component-mapper>\n </div>\n </div>\n <div>\n <div *ngIf=\"arChildren$\" class=\"psdk-case-view-utilities\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getRawMetadata()?.type.toLowerCase() == 'region' && kid.getPConnect().getRawMetadata()?.name == 'Utilities'\">\n <component-mapper name=\"Region\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h1{font-size:1.1rem;line-height:1.3rem}::ng-deep .mat-mdc-menu-panel{overflow:unset;max-width:unset}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%;border-radius:.6125rem}.psdk-case-view{box-sizing:border-box;display:flex}.ng-case-view-toolbar{padding:.625rem}.psdk-case-icon-div{background-color:var(--app-primary-dark-color);border-radius:1rem;padding:.5rem .3rem .3rem}.psdk-case-svg-icon{width:2rem;padding:0rem .3125rem;filter:var(--app-white-color-filter)}.psdk-case-view-info-box{display:flex;flex-direction:row;padding:0rem .3125rem 0rem 0rem}.psdk-case-view-info{flex:0 0 auto;width:25rem;float:left;padding:0rem .3125rem 0rem 0rem;margin-left:.5rem;margin-top:.5rem;height:100%;background-color:var(--app-form-color)}.psdk-case-view-main{flex-grow:2;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-summary{padding-left:.75rem}.psdk-case-view-heading{display:block;text-align:left;padding-left:.5rem;padding-bottom:0;padding-top:5px}.psdk-case-view-heading-id{font-size:.9rem;font-weight:400}.psdk-case-view-buttons{display:flex;justify-content:flex-start;padding:.3125rem}.psdk-case-view-utilities{width:21.875rem;float:left;padding:0rem .3125rem;height:100%}.psdk-case-view-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-status{padding:.3125rem;background-color:var(--app-primary-color);color:var(--app-form-color);width:fit-content;margin:.625rem}button{margin:0rem .3125rem}\n"] }]
183
180
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.AngularPConnectService }, { type: i2.Utils }], propDecorators: { pConn$: [{
184
181
  type: Input
185
182
  }], formGroup$: [{
186
183
  type: Input
187
- }], displayOnlyFA$: [{
188
- type: Input
189
184
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXZpZXcvY2FzZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXZpZXcvY2FzZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQixVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7O0FBaUJ4RyxNQUFNLE9BQU8saUJBQWlCO0lBZ0M1QixZQUNVLEtBQXdCLEVBQ3hCLGVBQXVDLEVBQ3ZDLEtBQVk7UUFGWixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQTlCdEIsNEJBQTRCO1FBQzVCLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFLOUMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQU90Qix3QkFBbUIsR0FBVSxFQUFFLENBQUM7UUFDaEMseUJBQW9CLEdBQVUsRUFBRSxDQUFDO1FBR2pDLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixtQkFBYyxHQUFHLFVBQVUsQ0FBQztJQU96QixDQUFDO0lBRUosUUFBUTtRQUNOLDhGQUE4RjtRQUM5RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhHLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGFBQWE7UUFDWCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWiwwRkFBMEY7UUFDMUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSx3REFBd0Q7UUFDeEQsNEVBQTRFO1FBQzVFLGlDQUFpQztRQUNqQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLCtGQUErRjtZQUMvRiw2RkFBNkY7WUFDN0YsY0FBYztZQUNkLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUVsQixpR0FBaUc7Z0JBQ2pHLGdDQUFnQztnQkFDaEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBa0IsQ0FBQztRQUNsRyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDO1FBRWxGLElBQUksaUJBQWlCLEtBQUssSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBVSxDQUFDLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pILENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQVcsQ0FBQztRQUNoRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2hGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUUsQ0FBQztRQUNILENBQUM7UUFFRCx3RUFBd0U7UUFDeEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQWtCLENBQUM7UUFDbEcsZ0RBQWdEO1FBQ2hELCtDQUErQztRQUMvQyx1RUFBdUU7UUFDdkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pILElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQVcsQ0FBQztRQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFFcEcsMENBQTBDO1FBRTFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMvRCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFFBQVE7YUFDVixXQUFXLEVBQUU7YUFDYixXQUFXLEVBQUU7WUFDZCxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ25HLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDdkIsTUFBTSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDOUMsOEdBQThHO1lBQzlHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBa0IsRUFBRSxFQUFFO29CQUM1QyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ25DLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO29CQUM5QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELDZGQUE2RjtZQUM3RixJQUFJLFVBQVUsS0FBSyxTQUFTLElBQUksVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLHFEQUFxRDtnQkFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLHFCQUFxQixDQUFDLENBQUM7UUFDaEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVwRSxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUk7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVwRSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQUk7UUFDcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvQyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQWhOVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixzSkFKakIsQ0FBQyxLQUFLLENBQUMsMEJDdEJwQiwrMkhBeUZBLDRtRERqRVksWUFBWSw4VEFBRSxnQkFBZ0Isd1RBQUUsZUFBZSxxUUFBRSxhQUFhLGsxQkFBbUIsd0JBQXdCOzs0RkFFeEcsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGVBQWUsYUFHZCxDQUFDLEtBQUssQ0FBQyxjQUNOLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOytJQUc1RyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIENhc2VWaWV3UHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGljb246IHN0cmluZztcbiAgc3ViaGVhZGVyOiBzdHJpbmc7XG4gIGhlYWRlcjogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2FzZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2Utdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtVdGlsc10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFRvb2xiYXJNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZGlzcGxheU9ubHlGQSQ6IGJvb2xlYW47XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQ2FzZVZpZXdQcm9wcztcblxuICBhckNoaWxkcmVuJDogYW55W107XG5cbiAgaGVhZGluZyQgPSAnJztcbiAgaWQkID0gJyc7XG4gIHN0YXR1cyQgPSAnJztcbiAgY2FzZVRhYnMkOiBhbnlbXSA9IFtdO1xuICBzdmdDYXNlJDogc3RyaW5nO1xuICB0YWJEYXRhJDogYW55O1xuXG4gIG1haW5UYWJzOiBhbnk7XG4gIG1haW5UYWJEYXRhOiBhbnk7XG5cbiAgYXJBdmFpbGFibGVBY3Rpb25zJDogYW55W10gPSBbXTtcbiAgYXJBdmFpbGFiZVByb2Nlc3NlcyQ6IGFueVtdID0gW107XG5cbiAgY2FzZVN1bW1hcnlQQ29ubiQ6IGFueTtcbiAgY3VycmVudENhc2VJRCA9ICcnO1xuICBlZGl0QWN0aW9uOiBib29sZWFuO1xuICBiSGFzTmV3QXR0YWNobWVudHMgPSBmYWxzZTtcbiAgbG9jYWxpemVkVmFsOiBhbnk7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ0Nhc2VWaWV3JztcbiAgbG9jYWxlS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgLy8gdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICAgIHRoaXMubG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgLy8gICAgQU5EIHJlbW92aW5nIHRoZSBcImdhdGVcIiB0aGF0IHdhcyBwdXQgdGhlcmUgc2luY2Ugc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gICAgLy8gICAgICBzaG91bGQgYmUgdGhlIHJlYWwgXCJnYXRlXCJcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIC8vIGdlbmVyYWxseSwgZG9uJ3Qgd2FudCB0byByZWZyZXNoIGV2ZXJ5dGhpbmcgd2hlbiBkYXRhIGNoYW5nZXMgaW4gY2FzZVZpZXcsIGl0IGlzIHVzdWFsbHkgdGhlXG4gICAgICAvLyBjYXNlIHN1bW1hcnkuICBCdXQgY2hlY2sgaWYgdGhlIGNhc2UgSUQgY2hhbmdlcywgdGhpcyBtZWFucyBhIGRpZmZlcmVudCBjYXNlIGFuZCB3ZSBzaG91bGRcbiAgICAgIC8vIHVwZGF0ZSBhbGwuXG4gICAgICBpZiAodGhpcy5oYXNDYXNlSURDaGFuZ2VkKCkpIHtcbiAgICAgICAgdGhpcy5mdWxsVXBkYXRlKCk7XG5cbiAgICAgICAgLy8gdXBkYXRlIG9rVG9Jbml0Rmxvd0NvbnRhaW5lciwgYmVjYXVzZSBjYXNlIHZpZXcgd2FzIGRyYXduLCBmbG93IGNvbnRhaW5lciB3aWxsIG5lZWQgdG8gYmUgaW5pdFxuICAgICAgICAvLyB0byBtYXRjaCBOZWJ1bGEvQ29uc3RlbGxhdGlvblxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdva1RvSW5pdEZsb3dDb250YWluZXInLCAndHJ1ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGRhdGVIZWFkZXJBbmRTdW1tYXJ5KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzQ2FzZUlEQ2hhbmdlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5jdXJyZW50Q2FzZUlEICE9PSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8uSUQpIHtcbiAgICAgIHRoaXMuY3VycmVudENhc2VJRCA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKS5jYXNlSW5mby5JRDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVIZWFkZXJBbmRTdW1tYXJ5KCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIENhc2VWaWV3UHJvcHM7XG4gICAgY29uc3QgaGFzTmV3QXR0YWNobWVudHMgPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm8/Lmhhc05ld0F0dGFjaG1lbnRzO1xuXG4gICAgaWYgKGhhc05ld0F0dGFjaG1lbnRzICE9PSB0aGlzLmJIYXNOZXdBdHRhY2htZW50cykge1xuICAgICAgdGhpcy5iSGFzTmV3QXR0YWNobWVudHMgPSBoYXNOZXdBdHRhY2htZW50cztcbiAgICAgIGlmICh0aGlzLmJIYXNOZXdBdHRhY2htZW50cykge1xuICAgICAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnB1Ymxpc2goKFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpIGFzIGFueSkuQ0FTRV9BVFRBQ0hNRU5UU19VUERBVEVEX0ZST01fQ0FTRVZJRVcsIHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGtpZHMgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuICAgIGZvciAoY29uc3Qga2lkIG9mIGtpZHMpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpO1xuICAgICAgaWYgKG1ldGEudHlwZS50b0xvd2VyQ2FzZSgpID09ICdyZWdpb24nICYmIG1ldGEubmFtZS50b0xvd2VyQ2FzZSgpID09ICdzdW1tYXJ5Jykge1xuICAgICAgICB0aGlzLmNhc2VTdW1tYXJ5UENvbm4kID0ga2lkLmdldFBDb25uZWN0KCkuZ2V0Q2hpbGRyZW4oKVswXS5nZXRQQ29ubmVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGhhdmUgdG8gcHV0IGluIGEgdGltZW91dCwgb3RoZXJ3aXNlIGdldCBhbiBhbmd1bGFyIGNoYW5nZSBldmVudCBlcnJvclxuICAgIGNvbnN0IHRpbWVyID0gaW50ZXJ2YWwoMTAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGltZXIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgdGhpcy5oZWFkaW5nJCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWUodGhpcy5jb25maWdQcm9wcyQuaGVhZGVyLCAnJywgdGhpcy5sb2NhbGVLZXkpO1xuICAgICAgdGhpcy5pZCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5zdWJoZWFkZXI7XG4gICAgICB0aGlzLnN0YXR1cyQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZSgnLnB5U3RhdHVzV29yaycpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVsbFVwZGF0ZSgpIHtcbiAgICB0aGlzLmNhc2VUYWJzJCA9IFtdO1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIENhc2VWaWV3UHJvcHM7XG4gICAgLy8gbGV0IGNhc2VUeXBlSUQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5ydWxlQ2xhc3M7XG4gICAgLy8gbGV0IGNhc2VUeXBlTmFtZSA9IHRoaXMuY29uZmlnUHJvcHMkLmhlYWRlcjtcbiAgICAvLyB0aGlzLmxvY2FsZUtleSA9IGAke2Nhc2VUeXBlSUR9IUNBU0UhJHtjYXNlVHlwZU5hbWV9YC50b1VwcGVyQ2FzZSgpO1xuICAgIHRoaXMubG9jYWxlS2V5ID0gYCR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLnVwZGF0ZUhlYWRlckFuZFN1bW1hcnkoKTtcblxuICAgIHRoaXMuYXJDaGlsZHJlbiQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuXG4gICAgY29uc3QgY2FzZUluZm8gPSB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCkuY2FzZUluZm87XG4gICAgdGhpcy5jdXJyZW50Q2FzZUlEID0gY2FzZUluZm8uSUQ7XG4gICAgdGhpcy5hckF2YWlsYWJsZUFjdGlvbnMkID0gY2FzZUluZm8/LmF2YWlsYWJsZUFjdGlvbnMgPyBjYXNlSW5mby5hdmFpbGFibGVBY3Rpb25zIDogW107XG4gICAgdGhpcy5lZGl0QWN0aW9uID0gdGhpcy5hckF2YWlsYWJsZUFjdGlvbnMkLmZpbmQoYWN0aW9uID0+IGFjdGlvbi5JRCA9PT0gJ3B5VXBkYXRlQ2FzZURldGFpbHMnKTtcbiAgICB0aGlzLmFyQXZhaWxhYmVQcm9jZXNzZXMkID0gY2FzZUluZm8/LmF2YWlsYWJsZVByb2Nlc3NlcyA/IGNhc2VJbmZvLmF2YWlsYWJsZVByb2Nlc3NlcyA6IFtdO1xuXG4gICAgdGhpcy5zdmdDYXNlJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmModGhpcy5jb25maWdQcm9wcyQuaWNvbiwgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuXG4gICAgLy8gdGhpcy51dGlscy5jb25zb2xlS2lkRHVtcCh0aGlzLnBDb25uJCk7XG5cbiAgICBpZiAoIXRoaXMuZGlzcGxheU9ubHlGQSQpIHtcbiAgICAgIGZvciAoY29uc3Qga2lkIG9mIHRoaXMuYXJDaGlsZHJlbiQpIHtcbiAgICAgICAgY29uc3Qga2lkUENvbm4gPSBraWQuZ2V0UENvbm5lY3QoKTtcbiAgICAgICAgaWYgKGtpZFBDb25uLmdldFJhd01ldGFkYXRhKCkubmFtZSA9PSAnVGFicycpIHtcbiAgICAgICAgICB0aGlzLm1haW5UYWJzID0ga2lkO1xuICAgICAgICAgIHRoaXMubWFpblRhYkRhdGEgPSB0aGlzLm1haW5UYWJzLmdldFBDb25uZWN0KCkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmdlbmVyYXRlVGFic0RhdGEoKTtcbiAgICB9XG4gIH1cblxuICBnZW5lcmF0ZVRhYnNEYXRhKCkge1xuICAgIHRoaXMubWFpblRhYnNcbiAgICAgIC5nZXRQQ29ubmVjdCgpXG4gICAgICAuZ2V0Q2hpbGRyZW4oKVxuICAgICAgPy5mb3JFYWNoKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBjb25zdCBjb25maWcgPSBjaGlsZC5nZXRQQ29ubmVjdCgpLnJlc29sdmVDb25maWdQcm9wcyhjaGlsZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKCkpLmNvbmZpZztcbiAgICAgICAgbGV0IHsgbGFiZWwgfSA9IGNvbmZpZztcbiAgICAgICAgY29uc3QgeyBpbmhlcml0ZWRQcm9wcywgdmlzaWJpbGl0eSB9ID0gY29uZmlnO1xuICAgICAgICAvLyBGb3Igc29tZSB0YWJzLCBcImxhYmVsXCIgcHJvcGVydHkgaXMgbm90IGF2YWlhbGFibGUgaW4gdGhlVGFiQ29tcENvbmZpZywgc28gd2lsbCBnZXQgdGhlbSBmcm9tIGluaGVyaXRlZFByb3BzXG4gICAgICAgIGlmICghbGFiZWwpIHtcbiAgICAgICAgICBpbmhlcml0ZWRQcm9wcy5mb3JFYWNoKChpbmhlcml0ZWRQcm9wOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmhlcml0ZWRQcm9wLnByb3AgPT09ICdsYWJlbCcpIHtcbiAgICAgICAgICAgICAgbGFiZWwgPSBpbmhlcml0ZWRQcm9wLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlJ2xsIGRpc3BsYXkgdGhlIHRhYnMgd2hlbiBlaXRoZXIgdmlzaWJpbGl0eSBwcm9wZXJ0eSBkb2Vzbid0IGV4aXN0IG9yIGlzIHRydWUoaWYgZXhpc3RzKVxuICAgICAgICBpZiAodmlzaWJpbGl0eSA9PT0gdW5kZWZpbmVkIHx8IHZpc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmNhc2VUYWJzJC5wdXNoKHsgbmFtZTogbGFiZWwsIGlkOiBpIH0pO1xuICAgICAgICAgIC8vIFRvIG1ha2UgZmlyc3QgdmlzaWJsZSB0YWIgZGlzcGxheSBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICAgaWYgKCF0aGlzLnRhYkRhdGEkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkRhdGEkID0geyB0eXBlOiAnRGVmZXJMb2FkJywgY29uZmlnOiBjaGlsZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKCkuY29uZmlnIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgdGhpcy5mdWxsVXBkYXRlKCk7XG4gIH1cblxuICBvblRhYkNsaWNrKHRhYjogYW55KSB7XG4gICAgdGhpcy50YWJEYXRhJCA9IHRoaXMubWFpblRhYkRhdGFbdGFiXS5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKCk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBfZWRpdENsaWNrKCkge1xuICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmFyQXZhaWxhYmxlQWN0aW9ucyQuZmluZChhY3Rpb24gPT4gYWN0aW9uLklEID09PSAncHlVcGRhdGVDYXNlRGV0YWlscycpO1xuICAgIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3Qgb3BlbkxvY2FsQWN0aW9uID0gYWN0aW9uc0FQSS5vcGVuTG9jYWxBY3Rpb24uYmluZChhY3Rpb25zQVBJKTtcblxuICAgIG9wZW5Mb2NhbEFjdGlvbihlZGl0QWN0aW9uLklELCB7IC4uLmVkaXRBY3Rpb24sIGNvbnRhaW5lck5hbWU6ICdtb2RhbCcsIHR5cGU6ICdleHByZXNzJyB9KTtcbiAgfVxuXG4gIF9tZW51QWN0aW9uQ2xpY2soZGF0YSkge1xuICAgIGNvbnN0IGFjdGlvbnNBUEkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgY29uc3Qgb3BlbkxvY2FsQWN0aW9uID0gYWN0aW9uc0FQSS5vcGVuTG9jYWxBY3Rpb24uYmluZChhY3Rpb25zQVBJKTtcblxuICAgIG9wZW5Mb2NhbEFjdGlvbihkYXRhLklELCB7IC4uLmRhdGEsIGNvbnRhaW5lck5hbWU6ICdtb2RhbCcsIHR5cGU6ICdleHByZXNzJyB9KTtcbiAgfVxuXG4gIF9tZW51UHJvY2Vzc0NsaWNrKGRhdGEpIHtcbiAgICBjb25zdCBhY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IG9wZW5Qcm9jZXNzQWN0aW9uID0gYWN0aW9uc0FQSS5vcGVuUHJvY2Vzc0FjdGlvbi5iaW5kKGFjdGlvbnNBUEkpO1xuXG4gICAgb3BlblByb2Nlc3NBY3Rpb24oZGF0YS5JRCwgeyAuLi5kYXRhIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXdcIiBpZD1cImNhc2Utdmlld1wiPlxuICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCIgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy1pbmZvXCI+XG4gICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwicHNkay1jYXNlLXZpZXctdG9vbGJhclwiPlxuICAgICAgPG1hdC10b29sYmFyLXJvdyBzdHlsZT1cInBhZGRpbmctbGVmdDogMXJlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLWljb24tZGl2XCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstY2FzZS1zdmctaWNvblwiIHNyYz1cInt7IHN2Z0Nhc2UkIH19XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy1oZWFkaW5nXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMSBpZD1cImNhc2UtbmFtZVwiPnt7IGhlYWRpbmckIH19PC9oMT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwiY3VycmVudC1jYXNlSURcIiBbaGlkZGVuXT1cInRydWVcIj57eyBjdXJyZW50Q2FzZUlEIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LWhlYWRpbmctaWRcIiBpZD1cImNhc2VJZFwiPnt7IGlkJCB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRvb2xiYXItcm93PlxuICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctYnV0dG9uc1wiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRBY3Rpb25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInNlY29uZGFyeVwiIChjbGljayk9XCJfZWRpdENsaWNrKClcIj57eyBsb2NhbGl6ZWRWYWwoJ0VkaXQnLCBsb2NhbGVDYXRlZ29yeSkgfX08L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJzZWNvbmRhcnlcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uTWVudVwiPnt7IGxvY2FsaXplZFZhbCgnQWN0aW9ucy4uLicsIGxvY2FsZUNhdGVnb3J5KSB9fTwvYnV0dG9uPlxuICAgICAgPG1hdC1tZW51ICNhY3Rpb25NZW51PVwibWF0TWVudVwiIG92ZXJsYXBUcmlnZ2VyPVwiZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFyQXZhaWxhYmxlQWN0aW9ucyRcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIl9tZW51QWN0aW9uQ2xpY2soYWN0aW9uKVwiPlxuICAgICAgICAgICAge3sgbG9jYWxpemVkVmFsKGFjdGlvbi5uYW1lLCAnJywgbG9jYWxlS2V5KSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvY2VzcyBvZiBhckF2YWlsYWJlUHJvY2Vzc2VzJFwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiX21lbnVQcm9jZXNzQ2xpY2socHJvY2VzcylcIj5cbiAgICAgICAgICAgIHt7IHByb2Nlc3MubmFtZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LXN1bW1hcnlcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJDYXNlU3VtbWFyeVwiIFtwcm9wc109XCJ7IHBDb25uJDogY2FzZVN1bW1hcnlQQ29ubiQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAqbmdJZj1cImNhc2VUYWJzJC5sZW5ndGggPiAxXCJcbiAgICAgIG5hbWU9XCJWZXJ0aWNhbFRhYnNcIlxuICAgICAgW3Byb3BzXT1cInsgdGFiQ29uZmlnJDogY2FzZVRhYnMkIH1cIlxuICAgICAgW3BhcmVudF09XCJ0aGlzXCJcbiAgICAgIFtvdXRwdXRFdmVudHNdPVwieyB0YWJDbGljazogb25UYWJDbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LW1haW5cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAncmVnaW9uJyAmJiBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLm5hbWUudG9Mb3dlckNhc2UoKSA9PSAnc3RhZ2VzJ1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS5uYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ3RvZG8nXCJcbiAgICAgID5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlJlZ2lvblwiIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCksIGZvcm1Hcm91cCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS5uYW1lID09ICdNYWluJ1wiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiRGVmZXJMb2FkXCIgW3Byb3BzXT1cInsgcENvbm4kLCBsb2FkRGF0YSQ6IHRhYkRhdGEkLCBuYW1lOiB0YWJEYXRhJD8uY29uZmlnPy5uYW1lIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlPbmx5RkEkXCI+XG4gICAgPGRpdiAqbmdJZj1cImFyQ2hpbGRyZW4kXCIgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy11dGlsaXRpZXNcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBhckNoaWxkcmVuJFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKT8udHlwZS50b0xvd2VyQ2FzZSgpID09ICdyZWdpb24nICYmIGtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKCk/Lm5hbWUgPT0gJ1V0aWxpdGllcydcIj5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXZpZXcvY2FzZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXZpZXcvY2FzZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQixVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7O0FBaUJ4RyxNQUFNLE9BQU8saUJBQWlCO0lBK0I1QixZQUNVLEtBQXdCLEVBQ3hCLGVBQXVDLEVBQ3ZDLEtBQVk7UUFGWixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQTlCdEIsNEJBQTRCO1FBQzVCLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFLOUMsYUFB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QUNuQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQy9DLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBFLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBSTtRQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQy9DLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4RSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7K0dBM01VLGlCQUFpQjttR0FBakIsaUJBQWlCLG9IQUpqQixDQUFDLEtBQUssQ0FBQywwQkN0QnBCLHV3SEF5RkEsNG1ERGpFWSxZQUFZLDhUQUFFLGdCQUFnQix3VEFBRSxlQUFlLHFRQUFFLGFBQWEsazFCQUFtQix3QkFBd0I7OzRGQUV4RyxpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsZUFBZSxhQUdkLENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7K0lBRzVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIENhc2VWaWV3UHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGljb246IHN0cmluZztcbiAgc3ViaGVhZGVyOiBzdHJpbmc7XG4gIGhlYWRlcjogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2FzZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2Utdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtVdGlsc10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFRvb2xiYXJNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBDYXNlVmlld1Byb3BzO1xuXG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcblxuICBoZWFkaW5nJCA9ICcnO1xuICBpZCQgPSAnJztcbiAgc3RhdHVzJCA9ICcnO1xuICBjYXNlVGFicyQ6IGFueVtdID0gW107XG4gIHN2Z0Nhc2UkOiBzdHJpbmc7XG4gIHRhYkRhdGEkOiBhbnk7XG5cbiAgbWFpblRhYnM6IGFueTtcbiAgbWFpblRhYkRhdGE6IGFueTtcblxuICBhckF2YWlsYWJsZUFjdGlvbnMkOiBhbnlbXSA9IFtdO1xuICBhckF2YWlsYWJlUHJvY2Vzc2VzJDogYW55W10gPSBbXTtcblxuICBjYXNlU3VtbWFyeVBDb25uJDogYW55O1xuICBjdXJyZW50Q2FzZUlEID0gJyc7XG4gIGVkaXRBY3Rpb246IGJvb2xlYW47XG4gIGJIYXNOZXdBdHRhY2htZW50cyA9IGZhbHNlO1xuICBsb2NhbGl6ZWRWYWw6IGFueTtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnQ2FzZVZpZXcnO1xuICBsb2NhbGVLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICAvLyB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gICAgdGhpcy5sb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICAvLyAgICBBTkQgcmVtb3ZpbmcgdGhlIFwiZ2F0ZVwiIHRoYXQgd2FzIHB1dCB0aGVyZSBzaW5jZSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICAvLyAgICAgIHNob3VsZCBiZSB0aGUgcmVhbCBcImdhdGVcIlxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgLy8gZ2VuZXJhbGx5LCBkb24ndCB3YW50IHRvIHJlZnJlc2ggZXZlcnl0aGluZyB3aGVuIGRhdGEgY2hhbmdlcyBpbiBjYXNlVmlldywgaXQgaXMgdXN1YWxseSB0aGVcbiAgICAgIC8vIGNhc2Ugc3VtbWFyeS4gIEJ1dCBjaGVjayBpZiB0aGUgY2FzZSBJRCBjaGFuZ2VzLCB0aGlzIG1lYW5zIGEgZGlmZmVyZW50IGNhc2UgYW5kIHdlIHNob3VsZFxuICAgICAgLy8gdXBkYXRlIGFsbC5cbiAgICAgIGlmICh0aGlzLmhhc0Nhc2VJRENoYW5nZWQoKSkge1xuICAgICAgICB0aGlzLmZ1bGxVcGRhdGUoKTtcblxuICAgICAgICAvLyB1cGRhdGUgb2tUb0luaXRGbG93Q29udGFpbmVyLCBiZWNhdXNlIGNhc2UgdmlldyB3YXMgZHJhd24sIGZsb3cgY29udGFpbmVyIHdpbGwgbmVlZCB0byBiZSBpbml0XG4gICAgICAgIC8vIHRvIG1hdGNoIE5lYnVsYS9Db25zdGVsbGF0aW9uXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ29rVG9Jbml0Rmxvd0NvbnRhaW5lcicsICd0cnVlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZUhlYWRlckFuZFN1bW1hcnkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYXNDYXNlSURDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmN1cnJlbnRDYXNlSUQgIT09IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKS5jYXNlSW5mby5JRCkge1xuICAgICAgdGhpcy5jdXJyZW50Q2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpLmNhc2VJbmZvLklEO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZUhlYWRlckFuZFN1bW1hcnkoKSB7XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQ2FzZVZpZXdQcm9wcztcbiAgICBjb25zdCBoYXNOZXdBdHRhY2htZW50cyA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKS5jYXNlSW5mbz8uaGFzTmV3QXR0YWNobWVudHM7XG5cbiAgICBpZiAoaGFzTmV3QXR0YWNobWVudHMgIT09IHRoaXMuYkhhc05ld0F0dGFjaG1lbnRzKSB7XG4gICAgICB0aGlzLmJIYXNOZXdBdHRhY2htZW50cyA9IGhhc05ld0F0dGFjaG1lbnRzO1xuICAgICAgaWYgKHRoaXMuYkhhc05ld0F0dGFjaG1lbnRzKSB7XG4gICAgICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKS5DQVNFX0FUVEFDSE1FTlRTX1VQREFURURfRlJPTV9DQVNFVklFVywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qga2lkcyA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkgYXMgYW55W107XG4gICAgZm9yIChjb25zdCBraWQgb2Yga2lkcykge1xuICAgICAgY29uc3QgbWV0YSA9IGtpZC5nZXRQQ29ubmVjdCgpLmdldFJhd01ldGFkYXRhKCk7XG4gICAgICBpZiAobWV0YS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYgbWV0YS5uYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ3N1bW1hcnknKSB7XG4gICAgICAgIHRoaXMuY2FzZVN1bW1hcnlQQ29ubiQgPSBraWQuZ2V0UENvbm5lY3QoKS5nZXRDaGlsZHJlbigpWzBdLmdldFBDb25uZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaGF2ZSB0byBwdXQgaW4gYSB0aW1lb3V0LCBvdGhlcndpc2UgZ2V0IGFuIGFuZ3VsYXIgY2hhbmdlIGV2ZW50IGVycm9yXG4gICAgY29uc3QgdGltZXIgPSBpbnRlcnZhbCgxMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aW1lci51bnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLmhlYWRpbmckID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5oZWFkZXIsICcnLCB0aGlzLmxvY2FsZUtleSk7XG4gICAgICB0aGlzLmlkJCA9IHRoaXMuY29uZmlnUHJvcHMkLnN1YmhlYWRlcjtcbiAgICAgIHRoaXMuc3RhdHVzJCA9IHRoaXMucENvbm4kLmdldFZhbHVlKCcucHlTdGF0dXNXb3JrJyk7XG4gICAgfSk7XG4gIH1cblxuICBmdWxsVXBkYXRlKCkge1xuICAgIHRoaXMuY2FzZVRhYnMkID0gW107XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQ2FzZVZpZXdQcm9wcztcbiAgICAvLyBsZXQgY2FzZVR5cGVJRCA9IHRoaXMuY29uZmlnUHJvcHMkLnJ1bGVDbGFzcztcbiAgICAvLyBsZXQgY2FzZVR5cGVOYW1lID0gdGhpcy5jb25maWdQcm9wcyQuaGVhZGVyO1xuICAgIC8vIHRoaXMubG9jYWxlS2V5ID0gYCR7Y2FzZVR5cGVJRH0hQ0FTRSEke2Nhc2VUeXBlTmFtZX1gLnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy5sb2NhbGVLZXkgPSBgJHt0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldENsYXNzTmFtZSgpfSFDQVNFISR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXROYW1lKCl9YC50b1VwcGVyQ2FzZSgpO1xuICAgIHRoaXMudXBkYXRlSGVhZGVyQW5kU3VtbWFyeSgpO1xuXG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkgYXMgYW55W107XG5cbiAgICBjb25zdCBjYXNlSW5mbyA9IHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoKS5jYXNlSW5mbztcbiAgICB0aGlzLmN1cnJlbnRDYXNlSUQgPSBjYXNlSW5mby5JRDtcbiAgICB0aGlzLmFyQXZhaWxhYmxlQWN0aW9ucyQgPSBjYXNlSW5mbz8uYXZhaWxhYmxlQWN0aW9ucyA/IGNhc2VJbmZvLmF2YWlsYWJsZUFjdGlvbnMgOiBbXTtcbiAgICB0aGlzLmVkaXRBY3Rpb24gPSB0aGlzLmFyQXZhaWxhYmxlQWN0aW9ucyQuZmluZChhY3Rpb24gPT4gYWN0aW9uLklEID09PSAncHlVcGRhdGVDYXNlRGV0YWlscycpO1xuICAgIHRoaXMuYXJBdmFpbGFiZVByb2Nlc3NlcyQgPSBjYXNlSW5mbz8uYXZhaWxhYmxlUHJvY2Vzc2VzID8gY2FzZUluZm8uYXZhaWxhYmxlUHJvY2Vzc2VzIDogW107XG5cbiAgICB0aGlzLnN2Z0Nhc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYyh0aGlzLmNvbmZpZ1Byb3BzJC5pY29uLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG5cbiAgICBmb3IgKGNvbnN0IGtpZCBvZiB0aGlzLmFyQ2hpbGRyZW4kKSB7XG4gICAgICBjb25zdCBraWRQQ29ubiA9IGtpZC5nZXRQQ29ubmVjdCgpO1xuICAgICAgaWYgKGtpZFBDb25uLmdldFJhd01ldGFkYXRhKCkubmFtZSA9PSAnVGFicycpIHtcbiAgICAgICAgdGhpcy5tYWluVGFicyA9IGtpZDtcbiAgICAgICAgdGhpcy5tYWluVGFiRGF0YSA9IHRoaXMubWFpblRhYnMuZ2V0UENvbm5lY3QoKS5nZXRDaGlsZHJlbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZ2VuZXJhdGVUYWJzRGF0YSgpO1xuICB9XG5cbiAgZ2VuZXJhdGVUYWJzRGF0YSgpIHtcbiAgICB0aGlzLm1haW5UYWJzXG4gICAgICAuZ2V0UENvbm5lY3QoKVxuICAgICAgLmdldENoaWxkcmVuKClcbiAgICAgID8uZm9yRWFjaCgoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2hpbGQuZ2V0UENvbm5lY3QoKS5yZXNvbHZlQ29uZmlnUHJvcHMoY2hpbGQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpKS5jb25maWc7XG4gICAgICAgIGxldCB7IGxhYmVsIH0gPSBjb25maWc7XG4gICAgICAgIGNvbnN0IHsgaW5oZXJpdGVkUHJvcHMsIHZpc2liaWxpdHkgfSA9IGNvbmZpZztcbiAgICAgICAgLy8gRm9yIHNvbWUgdGFicywgXCJsYWJlbFwiIHByb3BlcnR5IGlzIG5vdCBhdmFpYWxhYmxlIGluIHRoZVRhYkNvbXBDb25maWcsIHNvIHdpbGwgZ2V0IHRoZW0gZnJvbSBpbmhlcml0ZWRQcm9wc1xuICAgICAgICBpZiAoIWxhYmVsKSB7XG4gICAgICAgICAgaW5oZXJpdGVkUHJvcHMuZm9yRWFjaCgoaW5oZXJpdGVkUHJvcDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5oZXJpdGVkUHJvcC5wcm9wID09PSAnbGFiZWwnKSB7XG4gICAgICAgICAgICAgIGxhYmVsID0gaW5oZXJpdGVkUHJvcC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSdsbCBkaXNwbGF5IHRoZSB0YWJzIHdoZW4gZWl0aGVyIHZpc2liaWxpdHkgcHJvcGVydHkgZG9lc24ndCBleGlzdCBvciBpcyB0cnVlKGlmIGV4aXN0cylcbiAgICAgICAgaWYgKHZpc2liaWxpdHkgPT09IHVuZGVmaW5lZCB8fCB2aXNpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5jYXNlVGFicyQucHVzaCh7IG5hbWU6IGxhYmVsLCBpZDogaSB9KTtcbiAgICAgICAgICAvLyBUbyBtYWtlIGZpcnN0IHZpc2libGUgdGFiIGRpc3BsYXkgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgIGlmICghdGhpcy50YWJEYXRhJCkge1xuICAgICAgICAgICAgdGhpcy50YWJEYXRhJCA9IHsgdHlwZTogJ0RlZmVyTG9hZCcsIGNvbmZpZzogY2hpbGQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLmNvbmZpZyB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuZnVsbFVwZGF0ZSgpO1xuICB9XG5cbiAgb25UYWJDbGljayh0YWI6IGFueSkge1xuICAgIHRoaXMudGFiRGF0YSQgPSB0aGlzLm1haW5UYWJEYXRhW3RhYl0uZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgX2VkaXRDbGljaygpIHtcbiAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5hckF2YWlsYWJsZUFjdGlvbnMkLmZpbmQoYWN0aW9uID0+IGFjdGlvbi5JRCA9PT0gJ3B5VXBkYXRlQ2FzZURldGFpbHMnKTtcbiAgICBjb25zdCBhY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IG9wZW5Mb2NhbEFjdGlvbiA9IGFjdGlvbnNBUEkub3BlbkxvY2FsQWN0aW9uLmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICBvcGVuTG9jYWxBY3Rpb24oZWRpdEFjdGlvbi5JRCwgeyAuLi5lZGl0QWN0aW9uLCBjb250YWluZXJOYW1lOiAnbW9kYWwnLCB0eXBlOiAnZXhwcmVzcycgfSk7XG4gIH1cblxuICBfbWVudUFjdGlvbkNsaWNrKGRhdGEpIHtcbiAgICBjb25zdCBhY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIGNvbnN0IG9wZW5Mb2NhbEFjdGlvbiA9IGFjdGlvbnNBUEkub3BlbkxvY2FsQWN0aW9uLmJpbmQoYWN0aW9uc0FQSSk7XG5cbiAgICBvcGVuTG9jYWxBY3Rpb24oZGF0YS5JRCwgeyAuLi5kYXRhLCBjb250YWluZXJOYW1lOiAnbW9kYWwnLCB0eXBlOiAnZXhwcmVzcycgfSk7XG4gIH1cblxuICBfbWVudVByb2Nlc3NDbGljayhkYXRhKSB7XG4gICAgY29uc3QgYWN0aW9uc0FQSSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBvcGVuUHJvY2Vzc0FjdGlvbiA9IGFjdGlvbnNBUEkub3BlblByb2Nlc3NBY3Rpb24uYmluZChhY3Rpb25zQVBJKTtcblxuICAgIG9wZW5Qcm9jZXNzQWN0aW9uKGRhdGEuSUQsIHsgLi4uZGF0YSB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3XCIgaWQ9XCJjYXNlLXZpZXdcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LWluZm9cIj5cbiAgICA8bWF0LXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy10b29sYmFyXCI+XG4gICAgICA8bWF0LXRvb2xiYXItcm93IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAxcmVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWNhc2UtaWNvbi1kaXZcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay1jYXNlLXN2Zy1pY29uXCIgc3JjPVwie3sgc3ZnQ2FzZSQgfX1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstY2FzZS12aWV3LWhlYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgxIGlkPVwiY2FzZS1uYW1lXCI+e3sgaGVhZGluZyQgfX08L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJjdXJyZW50LWNhc2VJRFwiIFtoaWRkZW5dPVwidHJ1ZVwiPnt7IGN1cnJlbnRDYXNlSUQgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctaGVhZGluZy1pZFwiIGlkPVwiY2FzZUlkXCI+e3sgaWQkIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdG9vbGJhci1yb3c+XG4gICAgPC9tYXQtdG9vbGJhcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy1idXR0b25zXCI+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiZWRpdEFjdGlvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cIl9lZGl0Q2xpY2soKVwiPnt7IGxvY2FsaXplZFZhbCgnRWRpdCcsIGxvY2FsZUNhdGVnb3J5KSB9fTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInNlY29uZGFyeVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY3Rpb25NZW51XCI+e3sgbG9jYWxpemVkVmFsKCdBY3Rpb25zLi4uJywgbG9jYWxlQ2F0ZWdvcnkpIH19PC9idXR0b24+XG4gICAgICA8bWF0LW1lbnUgI2FjdGlvbk1lbnU9XCJtYXRNZW51XCIgb3ZlcmxhcFRyaWdnZXI9XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYXJBdmFpbGFibGVBY3Rpb25zJFwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiX21lbnVBY3Rpb25DbGljayhhY3Rpb24pXCI+XG4gICAgICAgICAgICB7eyBsb2NhbGl6ZWRWYWwoYWN0aW9uLm5hbWUsICcnLCBsb2NhbGVLZXkpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9jZXNzIG9mIGFyQXZhaWxhYmVQcm9jZXNzZXMkXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJfbWVudVByb2Nlc3NDbGljayhwcm9jZXNzKVwiPlxuICAgICAgICAgICAge3sgcHJvY2Vzcy5uYW1lIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLWNhc2Utdmlldy1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctc3VtbWFyeVwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIkNhc2VTdW1tYXJ5XCIgW3Byb3BzXT1cInsgcENvbm4kOiBjYXNlU3VtbWFyeVBDb25uJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICpuZ0lmPVwiY2FzZVRhYnMkLmxlbmd0aCA+IDFcIlxuICAgICAgbmFtZT1cIlZlcnRpY2FsVGFic1wiXG4gICAgICBbcHJvcHNdPVwieyB0YWJDb25maWckOiBjYXNlVGFicyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IHRhYkNsaWNrOiBvblRhYkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHNkay1jYXNlLXZpZXctbWFpblwiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAncmVnaW9uJyAmJiBraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpLm5hbWUudG9Mb3dlckNhc2UoKSA9PSAnc3RhZ2VzJ1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS5uYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ3RvZG8nXCJcbiAgICAgID5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIlJlZ2lvblwiIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCksIGZvcm1Hcm91cCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKS5uYW1lID09ICdNYWluJ1wiPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiUmVnaW9uXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIkRlZmVyTG9hZFwiIFtwcm9wc109XCJ7IHBDb25uJCwgbG9hZERhdGEkOiB0YWJEYXRhJCwgbmFtZTogdGFiRGF0YSQ/LmNvbmZpZz8ubmFtZSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiYXJDaGlsZHJlbiRcIiBjbGFzcz1cInBzZGstY2FzZS12aWV3LXV0aWxpdGllc1wiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGFyQ2hpbGRyZW4kXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRSYXdNZXRhZGF0YSgpPy50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ3JlZ2lvbicgJiYga2lkLmdldFBDb25uZWN0KCkuZ2V0UmF3TWV0YWRhdGEoKT8ubmFtZSA9PSAnVXRpbGl0aWVzJ1wiPlxuICAgICAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJSZWdpb25cIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -17,7 +17,7 @@ export class ConfirmationComponent {
17
17
  // First thing in initialization is registering and subscribing to the AngularPConnect service
18
18
  this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
19
19
  this.CONSTS = PCore.getConstants();
20
- const activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(this.pConn$.getTarget());
20
+ const activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(this.pConn$.getTarget() ?? null);
21
21
  this.rootInfo = PCore.getContainerUtils().getContainerItemData(this.pConn$.getTarget(), activeContainerItemID);
22
22
  this.checkAndUpdate();
23
23
  }
@@ -56,13 +56,13 @@ export class ConfirmationComponent {
56
56
  this.showConfirmView = false;
57
57
  PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CLOSE_CONFIRM_VIEW, this.rootInfo);
58
58
  }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmationComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfirmationComponent, isStandalone: true, selector: "app-confirmation", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <div *ngIf=\"showConfirmView\">\n <h2 id=\"confirm-label\" class=\"confirm-label\">{{ label }}</h2>\n <div *ngIf=\"showDetails\">\n <component-mapper name=\"Details\" [props]=\"{ pConn$ }\"></component-mapper>\n </div>\n <div *ngIf=\"showTasks && toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Open Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n <div class=\"done-button\">\n <button mat-raised-button color=\"primary\" (click)=\"onConfirmViewClose()\">Done</button>\n </div>\n </div>\n <div *ngIf=\"toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [".done-button{justify-content:flex-end;display:flex;padding-bottom:1rem}.confirm-label{padding:0 16px;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i3.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmationComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmationComponent, isStandalone: true, selector: "app-confirmation", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div>\n <div *ngIf=\"showConfirmView\">\n <h2 id=\"confirm-label\" class=\"confirm-label\">{{ label }}</h2>\n <div *ngIf=\"showDetails\">\n <component-mapper name=\"Details\" [props]=\"{ pConn$ }\"></component-mapper>\n </div>\n <div *ngIf=\"showTasks && toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Open Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n <div class=\"done-button\">\n <button mat-raised-button color=\"primary\" (click)=\"onConfirmViewClose()\">Done</button>\n </div>\n </div>\n <div *ngIf=\"!showConfirmView && toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [".done-button{justify-content:flex-end;display:flex;padding-bottom:1rem}.confirm-label{padding:0 16px;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i3.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
61
61
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmationComponent, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmationComponent, decorators: [{
63
63
  type: Component,
64
- args: [{ selector: 'app-confirmation', standalone: true, imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div *ngIf=\"showConfirmView\">\n <h2 id=\"confirm-label\" class=\"confirm-label\">{{ label }}</h2>\n <div *ngIf=\"showDetails\">\n <component-mapper name=\"Details\" [props]=\"{ pConn$ }\"></component-mapper>\n </div>\n <div *ngIf=\"showTasks && toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Open Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n <div class=\"done-button\">\n <button mat-raised-button color=\"primary\" (click)=\"onConfirmViewClose()\">Done</button>\n </div>\n </div>\n <div *ngIf=\"toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [".done-button{justify-content:flex-end;display:flex;padding-bottom:1rem}.confirm-label{padding:0 16px;margin:0}\n"] }]
64
+ args: [{ selector: 'app-confirmation', standalone: true, imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)], template: "<div>\n <div *ngIf=\"showConfirmView\">\n <h2 id=\"confirm-label\" class=\"confirm-label\">{{ label }}</h2>\n <div *ngIf=\"showDetails\">\n <component-mapper name=\"Details\" [props]=\"{ pConn$ }\"></component-mapper>\n </div>\n <div *ngIf=\"showTasks && toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Open Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n <div class=\"done-button\">\n <button mat-raised-button color=\"primary\" (click)=\"onConfirmViewClose()\">Done</button>\n </div>\n </div>\n <div *ngIf=\"!showConfirmView && toDoList?.length > 0\">\n <component-mapper\n name=\"Todo\"\n [props]=\"{ pConn$, datasource$: { source: toDoList }, headerText$: 'Tasks', type$: CONSTS.TODO, isConfirm: true }\"\n ></component-mapper>\n </div>\n</div>\n", styles: [".done-button{justify-content:flex-end;display:flex;padding-bottom:1rem}.confirm-label{padding:0 16px;margin:0}\n"] }]
65
65
  }], ctorParameters: () => [{ type: i1.AngularPConnectService }], propDecorators: { pConn$: [{
66
66
  type: Input
67
67
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jb25maXJtYXRpb24vY29uZmlybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jb25maXJtYXRpb24vY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7OztBQWlCeEcsTUFBTSxPQUFPLHFCQUFxQjtJQWdCaEMsWUFBb0IsZUFBdUM7UUFBdkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBYjNELHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFXOUMsb0JBQWUsR0FBRyxJQUFJLENBQUM7SUFFdUMsQ0FBQztJQUUvRCxRQUFRO1FBQ04sOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztRQUNaLGdFQUFnRTtRQUNoRSw0QkFBNEI7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSx3REFBd0Q7UUFDeEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQXVCLENBQUM7UUFDekUsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLEVBQUUsVUFBVSxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxFQUFFLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsRUFBRSxLQUFLLENBQUM7UUFDbkMsc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSw2Q0FBNkM7UUFDN0Msa0ZBQWtGO1FBQ2xGLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxjQUFjLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwSCxDQUFDOytHQWxFVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwwR0N2QmxDLDQ1QkF1QkEsNkxERlksWUFBWSw0S0FBRSxlQUFlLHNRQUFtQix3QkFBd0I7OzRGQUV2RSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7MkZBRzNFLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IHB1YmxpY0NvbnN0YW50cyB9IGZyb20gJ0BwZWdhL3Bjb3JlLXBjb25uZWN0LXR5cGVkZWZzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IGdldFRvRG9Bc3NpZ25tZW50cyB9IGZyb20gJy4uLy4uL2luZnJhL0NvbnRhaW5lcnMvZmxvdy1jb250YWluZXIvaGVscGVycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQ29uZmlybWF0aW9uUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGRhdGFzb3VyY2U6IHsgc291cmNlOiBhbnkgfTtcbiAgbGFiZWw6IHN0cmluZztcbiAgc2hvd0xhYmVsOiBib29sZWFuO1xuICBzaG93VGFza3M6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb25maXJtYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybWF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBDb25maXJtYXRpb25Qcm9wcztcblxuICByb290SW5mbzogYW55O1xuICBkYXRhc291cmNlOiBhbnk7XG4gIHNob3dUYXNrczogYW55O1xuICBkZXRhaWxQcm9wczogYW55O1xuICB0b0RvTGlzdDogYW55O1xuICBsYWJlbDogc3RyaW5nO1xuICBDT05TVFM6IHR5cGVvZiBwdWJsaWNDb25zdGFudHM7XG4gIHNob3dEZXRhaWxzOiBib29sZWFuO1xuICBzaG93Q29uZmlybVZpZXcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMuQ09OU1RTID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgY29uc3QgYWN0aXZlQ29udGFpbmVySXRlbUlEID0gUENvcmUuZ2V0Q29udGFpbmVyVXRpbHMoKS5nZXRBY3RpdmVDb250YWluZXJJdGVtTmFtZSh0aGlzLnBDb25uJC5nZXRUYXJnZXQoKSk7XG4gICAgdGhpcy5yb290SW5mbyA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVySXRlbURhdGEodGhpcy5wQ29ubiQuZ2V0VGFyZ2V0KCksIGFjdGl2ZUNvbnRhaW5lckl0ZW1JRCk7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIGNvbnN0IHRoZUNvbmZpZ1Byb3BzID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBDb25maXJtYXRpb25Qcm9wcztcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSB0aGVDb25maWdQcm9wcz8uZGF0YXNvdXJjZTtcbiAgICB0aGlzLnNob3dUYXNrcyA9IHRoZUNvbmZpZ1Byb3BzPy5zaG93VGFza3M7XG4gICAgdGhpcy5sYWJlbCA9IHRoZUNvbmZpZ1Byb3BzPy5sYWJlbDtcbiAgICAvLyBHZXQgdGhlIGluaGVyaXRlZCBwcm9wcyBmcm9tIHRoZSBwYXJlbnQgdG8gZGV0ZXJtaW5lIGxhYmVsIHNldHRpbmdzXG4gICAgLy8gTm90IHVzaW5nIHdoYXRzTmV4dCBhdCB0aGUgbW9tZW50LCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVzZSBvZiBpdFxuICAgIC8vIGNvbnN0IHdoYXRzTmV4dCA9IHRoaXMuZGF0YXNvdXJjZT8uc291cmNlO1xuICAgIC8vIGNvbnN0IGl0ZW1zID0gd2hhdHNOZXh0Py5sZW5ndGggPiAwID8gd2hhdHNOZXh0Lm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkgOiAnJztcbiAgICAvLyBjb25zdCB0b2RvUHJvcHMgPSB7IC4uLnRoZUNvbmZpZ1Byb3BzLCByZW5kZXJUb2RvSW5Db25maXJtOiB0cnVlIH07XG4gICAgdGhpcy50b0RvTGlzdCA9IGdldFRvRG9Bc3NpZ25tZW50cyh0aGlzLnBDb25uJCk7XG4gICAgdGhpcy5kZXRhaWxQcm9wcyA9IHsgLi4udGhlQ29uZmlnUHJvcHMsIHNob3dMYWJlbDogZmFsc2UgfTtcbiAgICB0aGlzLnNob3dEZXRhaWxzID0gdGhpcy5wQ29ubiQ/LmdldENoaWxkcmVuKCk/LlswXT8uZ2V0UENvbm5lY3QoKT8uZ2V0Q2hpbGRyZW4oKT8ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG9uQ29uZmlybVZpZXdDbG9zZSgpIHtcbiAgICB0aGlzLnNob3dDb25maXJtVmlldyA9IGZhbHNlO1xuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5DTE9TRV9DT05GSVJNX1ZJRVcsIHRoaXMucm9vdEluZm8pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0NvbmZpcm1WaWV3XCI+XG4gICAgPGgyIGlkPVwiY29uZmlybS1sYWJlbFwiIGNsYXNzPVwiY29uZmlybS1sYWJlbFwiPnt7IGxhYmVsIH19PC9oMj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RldGFpbHNcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJEZXRhaWxzXCIgW3Byb3BzXT1cInsgcENvbm4kIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dUYXNrcyAmJiB0b0RvTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgbmFtZT1cIlRvZG9cIlxuICAgICAgICBbcHJvcHNdPVwieyBwQ29ubiQsIGRhdGFzb3VyY2UkOiB7IHNvdXJjZTogdG9Eb0xpc3QgfSwgaGVhZGVyVGV4dCQ6ICdPcGVuIFRhc2tzJywgdHlwZSQ6IENPTlNUUy5UT0RPLCBpc0NvbmZpcm06IHRydWUgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkb25lLWJ1dHRvblwiPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25Db25maXJtVmlld0Nsb3NlKClcIj5Eb25lPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwidG9Eb0xpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIlRvZG9cIlxuICAgICAgW3Byb3BzXT1cInsgcENvbm4kLCBkYXRhc291cmNlJDogeyBzb3VyY2U6IHRvRG9MaXN0IH0sIGhlYWRlclRleHQkOiAnVGFza3MnLCB0eXBlJDogQ09OU1RTLlRPRE8sIGlzQ29uZmlybTogdHJ1ZSB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jb25maXJtYXRpb24vY29uZmlybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jb25maXJtYXRpb24vY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7OztBQWlCeEcsTUFBTSxPQUFPLHFCQUFxQjtJQWdCaEMsWUFBb0IsZUFBdUM7UUFBdkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBYjNELHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFXOUMsb0JBQWUsR0FBRyxJQUFJLENBQUM7SUFFdUMsQ0FBQztJQUUvRCxRQUFRO1FBQ04sOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWixnRUFBZ0U7UUFDaEUsNEJBQTRCO1FBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckUsd0RBQXdEO1FBQ3hELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUF1QixDQUFDO1FBQ3pFLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxTQUFTLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDO1FBQ25DLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsNkNBQTZDO1FBQzdDLGtGQUFrRjtRQUNsRixzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEgsQ0FBQzsrR0FsRVUscUJBQXFCO21HQUFyQixxQkFBcUIsMEdDdkJsQyxnN0JBdUJBLDZMREZZLFlBQVksNEtBQUUsZUFBZSxzUUFBbUIsd0JBQXdCOzs0RkFFdkUscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDOzJGQUczRSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBwdWJsaWNDb25zdGFudHMgfSBmcm9tICdAcGVnYS9wY29yZS1wY29ubmVjdC10eXBlZGVmcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBnZXRUb0RvQXNzaWdubWVudHMgfSBmcm9tICcuLi8uLi9pbmZyYS9Db250YWluZXJzL2Zsb3ctY29udGFpbmVyL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIENvbmZpcm1hdGlvblByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBkYXRhc291cmNlOiB7IHNvdXJjZTogYW55IH07XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNob3dMYWJlbDogYm9vbGVhbjtcbiAgc2hvd1Rhc2tzOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29uZmlybWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm1hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpcm1hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQ29uZmlybWF0aW9uUHJvcHM7XG5cbiAgcm9vdEluZm86IGFueTtcbiAgZGF0YXNvdXJjZTogYW55O1xuICBzaG93VGFza3M6IGFueTtcbiAgZGV0YWlsUHJvcHM6IGFueTtcbiAgdG9Eb0xpc3Q6IGFueTtcbiAgbGFiZWw6IHN0cmluZztcbiAgQ09OU1RTOiB0eXBlb2YgcHVibGljQ29uc3RhbnRzO1xuICBzaG93RGV0YWlsczogYm9vbGVhbjtcbiAgc2hvd0NvbmZpcm1WaWV3ID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLkNPTlNUUyA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IGFjdGl2ZUNvbnRhaW5lckl0ZW1JRCA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0QWN0aXZlQ29udGFpbmVySXRlbU5hbWUodGhpcy5wQ29ubiQuZ2V0VGFyZ2V0KCkgPz8gbnVsbCk7XG4gICAgdGhpcy5yb290SW5mbyA9IFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVySXRlbURhdGEodGhpcy5wQ29ubiQuZ2V0VGFyZ2V0KCksIGFjdGl2ZUNvbnRhaW5lckl0ZW1JRCk7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIGNvbnN0IHRoZUNvbmZpZ1Byb3BzID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSBhcyBDb25maXJtYXRpb25Qcm9wcztcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSB0aGVDb25maWdQcm9wcz8uZGF0YXNvdXJjZTtcbiAgICB0aGlzLnNob3dUYXNrcyA9IHRoZUNvbmZpZ1Byb3BzPy5zaG93VGFza3M7XG4gICAgdGhpcy5sYWJlbCA9IHRoZUNvbmZpZ1Byb3BzPy5sYWJlbDtcbiAgICAvLyBHZXQgdGhlIGluaGVyaXRlZCBwcm9wcyBmcm9tIHRoZSBwYXJlbnQgdG8gZGV0ZXJtaW5lIGxhYmVsIHNldHRpbmdzXG4gICAgLy8gTm90IHVzaW5nIHdoYXRzTmV4dCBhdCB0aGUgbW9tZW50LCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVzZSBvZiBpdFxuICAgIC8vIGNvbnN0IHdoYXRzTmV4dCA9IHRoaXMuZGF0YXNvdXJjZT8uc291cmNlO1xuICAgIC8vIGNvbnN0IGl0ZW1zID0gd2hhdHNOZXh0Py5sZW5ndGggPiAwID8gd2hhdHNOZXh0Lm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCkgOiAnJztcbiAgICAvLyBjb25zdCB0b2RvUHJvcHMgPSB7IC4uLnRoZUNvbmZpZ1Byb3BzLCByZW5kZXJUb2RvSW5Db25maXJtOiB0cnVlIH07XG4gICAgdGhpcy50b0RvTGlzdCA9IGdldFRvRG9Bc3NpZ25tZW50cyh0aGlzLnBDb25uJCk7XG4gICAgdGhpcy5kZXRhaWxQcm9wcyA9IHsgLi4udGhlQ29uZmlnUHJvcHMsIHNob3dMYWJlbDogZmFsc2UgfTtcbiAgICB0aGlzLnNob3dEZXRhaWxzID0gdGhpcy5wQ29ubiQ/LmdldENoaWxkcmVuKCk/LlswXT8uZ2V0UENvbm5lY3QoKT8uZ2V0Q2hpbGRyZW4oKT8ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG9uQ29uZmlybVZpZXdDbG9zZSgpIHtcbiAgICB0aGlzLnNob3dDb25maXJtVmlldyA9IGZhbHNlO1xuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkucHVibGlzaChQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5DTE9TRV9DT05GSVJNX1ZJRVcsIHRoaXMucm9vdEluZm8pO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0NvbmZpcm1WaWV3XCI+XG4gICAgPGgyIGlkPVwiY29uZmlybS1sYWJlbFwiIGNsYXNzPVwiY29uZmlybS1sYWJlbFwiPnt7IGxhYmVsIH19PC9oMj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RldGFpbHNcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJEZXRhaWxzXCIgW3Byb3BzXT1cInsgcENvbm4kIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dUYXNrcyAmJiB0b0RvTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgbmFtZT1cIlRvZG9cIlxuICAgICAgICBbcHJvcHNdPVwieyBwQ29ubiQsIGRhdGFzb3VyY2UkOiB7IHNvdXJjZTogdG9Eb0xpc3QgfSwgaGVhZGVyVGV4dCQ6ICdPcGVuIFRhc2tzJywgdHlwZSQ6IENPTlNUUy5UT0RPLCBpc0NvbmZpcm06IHRydWUgfVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkb25lLWJ1dHRvblwiPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25Db25maXJtVmlld0Nsb3NlKClcIj5Eb25lPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIXNob3dDb25maXJtVmlldyAmJiB0b0RvTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiVG9kb1wiXG4gICAgICBbcHJvcHNdPVwieyBwQ29ubiQsIGRhdGFzb3VyY2UkOiB7IHNvdXJjZTogdG9Eb0xpc3QgfSwgaGVhZGVyVGV4dCQ6ICdUYXNrcycsIHR5cGUkOiBDT05TVFMuVE9ETywgaXNDb25maXJtOiB0cnVlIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -31,7 +31,8 @@ export class DataReferenceComponent {
31
31
  this.updateSelf();
32
32
  if (this.firstChildMeta?.type === 'Dropdown' && this.rawViewMetadata.config?.parameters) {
33
33
  const { value, key, text } = this.firstChildMeta.config.datasource.fields;
34
- PCore.getDataApiUtils().getData(this.refList, {
34
+ PCore.getDataApiUtils()
35
+ .getData(this.refList, {
35
36
  dataViewParameters: this.parameters
36
37
  }, '')
37
38
  .then(res => {
@@ -86,7 +87,7 @@ export class DataReferenceComponent {
86
87
  this.refList = this.rawViewMetadata.config.referenceList;
87
88
  this.canBeChangedInReviewMode = theConfigProps.allowAndPersistChangesInReviewMode && (displayAs === 'autocomplete' || displayAs === 'dropdown');
88
89
  // this.childrenToRender = this.children;
89
- this.isDisplayModeEnabled = ['LABELS_LEFT', 'STACKED_LARGE_VAL'].includes(displayMode);
90
+ this.isDisplayModeEnabled = ['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(displayMode);
90
91
  if (this.firstChildMeta?.type !== 'Region') {
91
92
  this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect;
92
93
  /* remove refresh When condition from those old view so that it will not be used for runtime */
@@ -154,7 +155,9 @@ export class DataReferenceComponent {
154
155
  // AutoComplete sets value on event.id whereas Dropdown sets it on event.target.value
155
156
  const propValue = event?.id || event?.target?.value;
156
157
  if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) {
157
- PCore.getDataApiUtils().getCaseEditLock(caseKey, '').then(caseResponse => {
158
+ PCore.getDataApiUtils()
159
+ .getCaseEditLock(caseKey, '')
160
+ .then(caseResponse => {
158
161
  const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.');
159
162
  let curr = {};
160
163
  const commitData = curr;
@@ -175,7 +178,9 @@ export class DataReferenceComponent {
175
178
  curr = curr[element];
176
179
  }
177
180
  });
178
- PCore.getCaseUtils().updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, this.pConn$.getContextName()).then(response => {
181
+ PCore.getCaseUtils()
182
+ .updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, this.pConn$.getContextName())
183
+ .then(response => {
179
184
  PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName(), response.data.data.caseInfo.lastUpdateTime);
180
185
  PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName(), response.headers.etag);
181
186
  });
@@ -223,10 +228,10 @@ export class DataReferenceComponent {
223
228
  });
224
229
  }
225
230
  }
226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataReferenceComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DataReferenceComponent, isStandalone: true, selector: "app-data-reference", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div *ngIf=\"childrenToRender && childrenToRender.length > 0\">\n <div *ngIf=\"!displayMultiRef\">\n <div *ngFor=\"let kid of childrenToRender\">\n <component-mapper [name]=\"kid?.getPConnect().getComponentName()\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"displaySingleRef\">\n <component-mapper name=\"SingleReferenceReadOnly\" [props]=\"{ pConn$: firstChildPConnect() }\"></component-mapper>\n </div>\n <div *ngIf=\"displayMultiRef\">\n <component-mapper name=\"MultiReferenceReadOnly\" [props]=\"{ pConn$: firstChildPConnect() }\"></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
231
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataReferenceComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
232
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataReferenceComponent, isStandalone: true, selector: "app-data-reference", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div *ngIf=\"childrenToRender && childrenToRender.length > 0\">\n <div *ngIf=\"!displayMultiRef\">\n <div *ngFor=\"let kid of childrenToRender\">\n <component-mapper [name]=\"kid?.getPConnect().getComponentName()\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"displaySingleRef\">\n <component-mapper name=\"SingleReferenceReadOnly\" [props]=\"{ pConn$: firstChildPConnect() }\"></component-mapper>\n </div>\n <div *ngIf=\"displayMultiRef\">\n <component-mapper name=\"MultiReferenceReadOnly\" [props]=\"{ pConn$: firstChildPConnect() }\"></component-mapper>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
228
233
  }
229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataReferenceComponent, decorators: [{
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataReferenceComponent, decorators: [{
230
235
  type: Component,
231
236
  args: [{ selector: 'app-data-reference', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div *ngIf=\"childrenToRender && childrenToRender.length > 0\">\n <div *ngIf=\"!displayMultiRef\">\n <div *ngFor=\"let kid of childrenToRender\">\n <component-mapper [name]=\"kid?.getPConnect().getComponentName()\" [props]=\"{ pConn$: kid.getPConnect(), formGroup$ }\"></component-mapper>\n </div>\n </div>\n <div *ngIf=\"displaySingleRef\">\n <component-mapper name=\"SingleReferenceReadOnly\" [props]=\"{ pConn$: firstChildPConnect() }\"></component-mapper>\n </div>\n <div *ngIf=\"displayMultiRef\">\n <component-mapper name=\"MultiReferenceReadOnly\" [props]=\"{ pConn$: firstChildPConnect() }\"></component-mapper>\n </div>\n</div>\n" }]
232
237
  }], ctorParameters: () => [{ type: i1.AngularPConnectService }], propDecorators: { pConn$: [{
@@ -234,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
234
239
  }], formGroup$: [{
235
240
  type: Input
236
241
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yZWZlcmVuY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL2RhdGEtcmVmZXJlbmNlL2RhdGEtcmVmZXJlbmNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9kYXRhLXJlZmVyZW5jZS9kYXRhLXJlZmVyZW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7O0FBRXhHLE1BQU0sY0FBYyxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFTNUQsTUFBTSxPQUFPLHNCQUFzQjtJQTJCakMsWUFBb0IsZUFBdUM7UUFBdkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBdkIzRCw0QkFBNEI7UUFDNUIsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQUU5QyxjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFRLEVB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QUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGVBQWU7b0JBQzVELEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM5Rix1QkFBdUIsRUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUN4SCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2hEO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBaFFVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHNJQ2ZuQyx1cEJBYUEsNkVEQVksWUFBWSwrVEFBbUIsd0JBQXdCOzs0RkFFdEQsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLG9CQUFvQixjQUdsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7MkZBRzFELE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmNvbnN0IFNFTEVDVElPTl9NT0RFID0geyBTSU5HTEU6ICdzaW5nbGUnLCBNVUxUSTogJ211bHRpJyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGF0YS1yZWZlcmVuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXJlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIERhdGFSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgYXJGaWVsZHMkOiBhbnlbXSA9IFtdO1xuICByZWZlcmVuY2VUeXBlID0gJyc7XG4gIHNlbGVjdGlvbk1vZGUgPSAnJztcbiAgcGFyYW1ldGVycztcbiAgaGlkZUxhYmVsID0gZmFsc2U7XG4gIGNoaWxkcmVuVG9SZW5kZXI6IGFueVtdID0gW107XG4gIGRyb3BEb3duRGF0YVNvdXJjZSA9ICcnO1xuICBpc0Rpc3BsYXlNb2RlRW5hYmxlZCA9IGZhbHNlO1xuICBwcm9wc1RvVXNlOiBhbnkgPSB7fTtcbiAgcmF3Vmlld01ldGFkYXRhOiBhbnkgPSB7fTtcbiAgdmlld05hbWUgPSAnJztcbiAgZmlyc3RDaGlsZE1ldGE6IGFueSA9IHt9O1xuICBjYW5CZUNoYW5nZWRJblJldmlld01vZGUgPSBmYWxzZTtcbiAgcHJvcE5hbWUgPSAnJztcbiAgZmlyc3RDaGlsZFBDb25uZWN0O1xuICBjaGlsZHJlbjtcbiAgZGlzcGxheVNpbmdsZVJlZjogYm9vbGVhbjtcbiAgZGlzcGxheU11bHRpUmVmOiBib29sZWFuO1xuICByZWZMaXN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkgYXMgYW55W107XG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGE/LnR5cGUgPT09ICdEcm9wZG93bicgJiYgdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnPy5wYXJhbWV0ZXJzKSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBrZXksIHRleHQgfSA9IHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnLmRhdGFzb3VyY2UuZmllbGRzO1xuICAgICAgKFxuICAgICAgICBQQ29yZS5nZXREYXRhQXBpVXRpbHMoKS5nZXREYXRhKFxuICAgICAgICAgIHRoaXMucmVmTGlzdCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkYXRhVmlld1BhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVyc1xuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgICcnXG4gICAgICAgICkgYXMgUHJvbWlzZTxhbnk+XG4gICAgICApXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5kYXRhLmRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRkRGF0YVNvdXJjZSA9IHJlcy5kYXRhLmRhdGFcbiAgICAgICAgICAgICAgLm1hcChsaXN0SXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgIGtleTogbGlzdEl0ZW1ba2V5LnNwbGl0KCcgLicsIDIpWzFdXSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBsaXN0SXRlbVt0ZXh0LnNwbGl0KCcgLicsIDIpWzFdXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbGlzdEl0ZW1bdmFsdWUuc3BsaXQoJyAuJywgMilbMV1dXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkpO1xuICAgICAgICAgICAgLy8gRmlsdGVyaW5nIG91dCB1bmRlZmluZWQgZW50cmllcyB0aGF0IHdpbGwgYnJlYWsgcHJldmlld1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93bkRhdGFTb3VyY2UgPSBkZERhdGFTb3VyY2U7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGREYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZHJvcERvd25EYXRhU291cmNlID0gZGREYXRhU291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIGRhdGE6IHsgZGF0YTogW10gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIC8vIFVwZGF0ZSBwcm9wZXJ0aWVzIGJhc2VkIG9uIGNvbmZpZ1Byb3BzXG4gICAgY29uc3QgdGhlQ29uZmlnUHJvcHM6IGFueSA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgdGhpcy51cGRhdGVQcm9wZXJ0aWVzRnJvbVByb3BzKHRoZUNvbmZpZ1Byb3BzKTtcblxuICAgIGNvbnN0IGRpc3BsYXlBcyA9IHRoZUNvbmZpZ1Byb3BzLmRpc3BsYXlBcztcbiAgICBjb25zdCBkaXNwbGF5TW9kZSA9IHRoZUNvbmZpZ1Byb3BzLmRpc3BsYXlNb2RlO1xuICAgIHRoaXMucmF3Vmlld01ldGFkYXRhID0gdGhpcy5wQ29ubiQuZ2V0UmF3TWV0YWRhdGEoKTtcbiAgICB0aGlzLnZpZXdOYW1lID0gdGhpcy5yYXdWaWV3TWV0YWRhdGEubmFtZTtcbiAgICB0aGlzLmZpcnN0Q2hpbGRNZXRhID0gdGhpcy5yYXdWaWV3TWV0YWRhdGEuY2hpbGRyZW5bMF07XG4gICAgdGhpcy5yZWZMaXN0ID0gdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnLnJlZmVyZW5jZUxpc3Q7XG4gICAgdGhpcy5jYW5CZUNoYW5nZWRJblJldmlld01vZGUgPSB0aGVDb25maWdQcm9wcy5hbGxvd0FuZFBlcnNpc3RDaGFuZ2VzSW5SZXZpZXdNb2RlICYmIChkaXNwbGF5QXMgPT09ICdhdXRvY29tcGxldGUnIHx8IGRpc3BsYXlBcyA9PT0gJ2Ryb3Bkb3duJyk7XG4gICAgLy8gdGhpcy5jaGlsZHJlblRvUmVuZGVyID0gdGhpcy5jaGlsZHJlbjtcbiAgICB0aGlzLmlzRGlzcGxheU1vZGVFbmFibGVkID0gWydMQUJFTFNfTEVGVCcsICdTVEFDS0VEX0xBUkdFX1ZBTCddLmluY2x1ZGVzKGRpc3BsYXlNb2RlKTtcblxuICAgIGlmICh0aGlzLmZpcnN0Q2hpbGRNZXRhPy50eXBlICE9PSAnUmVnaW9uJykge1xuICAgICAgdGhpcy5maXJzdENoaWxkUENvbm5lY3QgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpWzBdLmdldFBDb25uZWN0O1xuXG4gICAgICAvKiByZW1vdmUgcmVmcmVzaCBXaGVuIGNvbmRpdGlvbiBmcm9tIHRob3NlIG9sZCB2aWV3IHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgdXNlZCBmb3IgcnVudGltZSAqL1xuICAgICAgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnPy5yZWFkT25seSkge1xuICAgICAgICBkZWxldGUgdGhpcy5maXJzdENoaWxkTWV0YS5jb25maWcucmVhZE9ubHk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maXJzdENoaWxkTWV0YT8udHlwZSA9PT0gJ0Ryb3Bkb3duJykge1xuICAgICAgICB0aGlzLmZpcnN0Q2hpbGRNZXRhLmNvbmZpZy5kYXRhc291cmNlLnNvdXJjZSA9IHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZz8ucGFyYW1ldGVyc1xuICAgICAgICAgID8gdGhpcy5kcm9wRG93bkRhdGFTb3VyY2VcbiAgICAgICAgICA6ICdAREFUQVNPVVJDRSAnLmNvbmNhdCh0aGlzLnJlZkxpc3QpLmNvbmNhdCgnLnB4UmVzdWx0cycpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmZpcnN0Q2hpbGRNZXRhPy50eXBlID09PSAnQXV0b0NvbXBsZXRlJykge1xuICAgICAgICB0aGlzLmZpcnN0Q2hpbGRNZXRhLmNvbmZpZy5kYXRhc291cmNlID0gdGhpcy5yZWZMaXN0O1xuXG4gICAgICAgIC8qIEluc2VydCB0aGUgcGFyYW1ldGVycyB0byB0aGUgY29tcG9uZW50IG9ubHkgaWYgcHJlc2VudCAqL1xuICAgICAgICBpZiAodGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnPy5wYXJhbWV0ZXJzKSB7XG4gICAgICAgICAgdGhpcy5maXJzdENoaWxkTWV0YS5jb25maWcucGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gc2V0IGRpc3BsYXlNb2RlIGNvbmRpdGlvbmFsbHlcbiAgICAgIGlmICghdGhpcy5jYW5CZUNoYW5nZWRJblJldmlld01vZGUpIHtcbiAgICAgICAgdGhpcy5maXJzdENoaWxkTWV0YS5jb25maWcuZGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpcnN0Q2hpbGRNZXRhLnR5cGUgPT09ICdTaW1wbGVUYWJsZVNlbGVjdCcgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5NVUxUSSkge1xuICAgICAgICB0aGlzLnByb3BOYW1lID0gUENvcmUuZ2V0QW5ub3RhdGlvblV0aWxzKCkuZ2V0UHJvcGVydHlOYW1lKHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnLnNlbGVjdGlvbkxpc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9wTmFtZSA9IFBDb3JlLmdldEFubm90YXRpb25VdGlscygpLmdldFByb3BlcnR5TmFtZSh0aGlzLmZpcnN0Q2hpbGRNZXRhLmNvbmZpZy52YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2VuZXJhdGVDaGlsZHJlblRvUmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUHJvcGVydGllc0Zyb21Qcm9wcyh0aGVDb25maWdQcm9wcykge1xuICAgIGNvbnN0IGxhYmVsID0gdGhlQ29uZmlnUHJvcHMubGFiZWw7XG4gICAgY29uc3Qgc2hvd0xhYmVsID0gdGhlQ29uZmlnUHJvcHMuc2hvd0xhYmVsO1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZSA9IHRoZUNvbmZpZ1Byb3BzLnJlZmVyZW5jZVR5cGU7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhlQ29uZmlnUHJvcHMuc2VsZWN0aW9uTW9kZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGVDb25maWdQcm9wcy5wYXJhbWV0ZXJzO1xuICAgIHRoaXMuaGlkZUxhYmVsID0gdGhlQ29uZmlnUHJvcHMuaGlkZUxhYmVsO1xuXG4gICAgdGhpcy5wcm9wc1RvVXNlID0geyBsYWJlbCwgc2hvd0xhYmVsLCAuLi50aGlzLnBDb25uJC5nZXRJbmhlcml0ZWRQcm9wcygpIH07XG4gICAgaWYgKHRoaXMucHJvcHNUb1VzZS5zaG93TGFiZWwgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnByb3BzVG9Vc2UubGFiZWwgPSAnJztcbiAgICB9XG4gIH1cblxuICBnZW5lcmF0ZUNoaWxkcmVuVG9SZW5kZXIoKSB7XG4gICAgY29uc3QgdGhlUmVjcmVhdGVkRmlyc3RDaGlsZCA9IHRoaXMucmVjcmVhdGVkRmlyc3RDaGlsZCgpO1xuICAgIGNvbnN0IHZpZXdzUmVnaW9uID0gdGhpcy5yYXdWaWV3TWV0YWRhdGEuY2hpbGRyZW5bMV07XG4gICAgaWYgKHZpZXdzUmVnaW9uPy5uYW1lID09PSAnVmlld3MnICYmIHZpZXdzUmVnaW9uLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdGhpcy5jaGlsZHJlblRvUmVuZGVyID0gW3RoZVJlY3JlYXRlZEZpcnN0Q2hpbGQsIC4uLnRoaXMuY2hpbGRyZW4uc2xpY2UoMSldO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoaWxkcmVuVG9SZW5kZXIgPSBbdGhlUmVjcmVhdGVkRmlyc3RDaGlsZF07XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU2VsZWN0aW9uKGV2ZW50KSB7XG4gICAgY29uc3QgY2FzZUtleSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0S2V5KCk7XG4gICAgY29uc3QgcmVmcmVzaE9wdGlvbnMgPSB7IGF1dG9EZXRlY3RSZWZyZXNoOiB0cnVlIH07XG4gICAgaWYgKHRoaXMuY2FuQmVDaGFuZ2VkSW5SZXZpZXdNb2RlICYmIHRoaXMucENvbm4kLmdldFZhbHVlKCdfX2N1cnJlbnRQYWdlVGFiVmlld05hbWUnKSkge1xuICAgICAgdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpLnJlZnJlc2hDYXNlVmlldyhjYXNlS2V5LCB0aGlzLnBDb25uJC5nZXRWYWx1ZSgnX19jdXJyZW50UGFnZVRhYlZpZXdOYW1lJyksICcnLCByZWZyZXNoT3B0aW9ucyk7XG4gICAgICBQQ29yZS5nZXREZWZlckxvYWRNYW5hZ2VyKCkucmVmcmVzaEFjdGl2ZUNvbXBvbmVudHModGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBnUmVmID0gdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLnJlcGxhY2UoJ2Nhc2VJbmZvLmNvbnRlbnQnLCAnJyk7XG4gICAgICB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCkucmVmcmVzaENhc2VWaWV3KGNhc2VLZXksIHRoaXMudmlld05hbWUsIHBnUmVmLCByZWZyZXNoT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gQXV0b0NvbXBsZXRlIHNldHMgdmFsdWUgb24gZXZlbnQuaWQgd2hlcmVhcyBEcm9wZG93biBzZXRzIGl0IG9uIGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIGNvbnN0IHByb3BWYWx1ZSA9IGV2ZW50Py5pZCB8fCBldmVudD8udGFyZ2V0Py52YWx1ZTtcbiAgICBpZiAocHJvcFZhbHVlICYmIHRoaXMuY2FuQmVDaGFuZ2VkSW5SZXZpZXdNb2RlICYmIHRoaXMuaXNEaXNwbGF5TW9kZUVuYWJsZWQpIHtcbiAgICAgIChQQ29yZS5nZXREYXRhQXBpVXRpbHMoKS5nZXRDYXNlRWRpdExvY2soY2FzZUtleSwgJycpIGFzIFByb21pc2U8YW55PikudGhlbihjYXNlUmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zdCBwYWdlVG9rZW5zID0gdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLnJlcGxhY2UoJ2Nhc2VJbmZvLmNvbnRlbnQnLCAnJykuc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGN1cnIgPSB7fTtcbiAgICAgICAgY29uc3QgY29tbWl0RGF0YSA9IGN1cnI7XG5cbiAgICAgICAgcGFnZVRva2Vucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICBpZiAoZWwgIT09ICcnKSB7XG4gICAgICAgICAgICBjdXJyW2VsXSA9IHt9O1xuICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gZXhwZWN0aW5nIGZvcm1hdCBsaWtlIHtDdXN0b21lcjoge3B5SUQ6XCJDLTEwMFwifX1cbiAgICAgICAgY29uc3QgcHJvcEFyciA9IHRoaXMucHJvcE5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgcHJvcEFyci5mb3JFYWNoKChlbGVtZW50LCBpZHgpID0+IHtcbiAgICAgICAgICBpZiAoaWR4ICsgMSA9PT0gcHJvcEFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgIGN1cnJbZWxlbWVudF0gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJbZWxlbWVudF0gPSB7fTtcbiAgICAgICAgICAgIGN1cnIgPSBjdXJyW2VsZW1lbnRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgKFxuICAgICAgICAgIFBDb3JlLmdldENhc2VVdGlscygpLnVwZGF0ZUNhc2VFZGl0RmllbGRzRGF0YShcbiAgICAgICAgICAgIGNhc2VLZXksXG4gICAgICAgICAgICB7IFtjYXNlS2V5XTogY29tbWl0RGF0YSB9LFxuICAgICAgICAgICAgY2FzZVJlc3BvbnNlLmhlYWRlcnMuZXRhZyxcbiAgICAgICAgICAgIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKClcbiAgICAgICAgICApIGFzIFByb21pc2U8YW55PlxuICAgICAgICApLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkudXBkYXRlUGFyZW50TGFzdFVwZGF0ZVRpbWUodGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSwgcmVzcG9uc2UuZGF0YS5kYXRhLmNhc2VJbmZvLmxhc3RVcGRhdGVUaW1lKTtcbiAgICAgICAgICBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLnVwZGF0ZVJlbGF0ZWRDb250ZXh0RXRhZyh0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpLCByZXNwb25zZS5oZWFkZXJzLmV0YWcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlLWNyZWF0ZSBmaXJzdCBjaGlsZCB3aXRoIG92ZXJyaWRkZW4gcHJvcHNcbiAgLy8gTWVtb2l6ZWQgY2hpbGQgaW4gb3JkZXIgdG8gc3RvcCB1bm1vdW50IGFuZCByZW1vdW50IG9mIHRoZSBjaGlsZCBjb21wb25lbnQgd2hlbiBkYXRhIHJlZmVyZW5jZVxuICAvLyByZXJlbmRlcnMgd2l0aG91dCBhbnkgYWN0dWFsIGNoYW5nZVxuICByZWNyZWF0ZWRGaXJzdENoaWxkKCkge1xuICAgIGNvbnN0IHsgdHlwZSwgY29uZmlnIH0gPSB0aGlzLmZpcnN0Q2hpbGRNZXRhO1xuICAgIGlmICh0aGlzLmZpcnN0Q2hpbGRNZXRhPy50eXBlICE9PSAnUmVnaW9uJykge1xuICAgICAgdGhpcy5wQ29ubiQuY2xlYXJFcnJvck1lc3NhZ2VzKHtcbiAgICAgICAgcHJvcGVydHk6IHRoaXMucHJvcE5hbWUsXG4gICAgICAgIGNhdGVnb3J5OiAnJyxcbiAgICAgICAgY29udGV4dDogJydcbiAgICAgIH0gYXMgYW55KTtcbiAgICAgIGlmICghdGhpcy5jYW5CZUNoYW5nZWRJblJldmlld01vZGUgJiYgdGhpcy5pc0Rpc3BsYXlNb2RlRW5hYmxlZCAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09IFNFTEVDVElPTl9NT0RFLlNJTkdMRSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlTaW5nbGVSZWYgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0Rpc3BsYXlNb2RlRW5hYmxlZCAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09IFNFTEVDVElPTl9NT0RFLk1VTFRJKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU11bHRpUmVmID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBkYXRhc291cmNlIHdpdGggcGFyYW1ldGVycyB5b3UgY2Fubm90IGxvYWQgdGhlIGRyb3Bkb3duIGJlZm9yZSB0aGUgcGFyYW1ldGVyc1xuICAgICAgaWYgKHR5cGUgPT09ICdEcm9wZG93bicgJiYgdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnPy5wYXJhbWV0ZXJzICYmIHRoaXMuZHJvcERvd25EYXRhU291cmNlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5maXJzdENoaWxkUENvbm5lY3QoKS5jcmVhdGVDb21wb25lbnQoe1xuICAgICAgICB0eXBlLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRoaXMucHJvcHNUb1VzZS5yZXF1aXJlZCxcbiAgICAgICAgICB2aXNpYmlsaXR5OiB0aGlzLnByb3BzVG9Vc2UudmlzaWJpbGl0eSxcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy5wcm9wc1RvVXNlLmRpc2FibGVkLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLnByb3BzVG9Vc2UubGFiZWwsXG4gICAgICAgICAgdmlld05hbWU6IHRoaXMucENvbm4kLmdldEN1cnJlbnRWaWV3KCksXG4gICAgICAgICAgcGFyYW1ldGVyczogdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnLnBhcmFtZXRlcnMsXG4gICAgICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgIGxvY2FsZVJlZmVyZW5jZTogdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnLmxvY2FsZVJlZmVyZW5jZSxcbiAgICAgICAgICAuLi4odGhpcy5zZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5TSU5HTEUgPyB7IHJlZmVyZW5jZVR5cGU6IHRoaXMucmVmZXJlbmNlVHlwZSB9IDogJycpLFxuICAgICAgICAgIGRhdGFSZWxhdGlvbnNoaXBDb250ZXh0OlxuICAgICAgICAgICAgdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnLmNvbnRleHRDbGFzcyAmJiB0aGlzLnJhd1ZpZXdNZXRhZGF0YS5jb25maWcubmFtZSA/IHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZy5uYW1lIDogbnVsbCxcbiAgICAgICAgICBoaWRlTGFiZWw6IHRoaXMuaGlkZUxhYmVsLFxuICAgICAgICAgIG9uUmVjb3JkQ2hhbmdlOiB0aGlzLmhhbmRsZVNlbGVjdGlvbi5iaW5kKHRoaXMpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImNoaWxkcmVuVG9SZW5kZXIgJiYgY2hpbGRyZW5Ub1JlbmRlci5sZW5ndGggPiAwXCI+XG4gIDxkaXYgKm5nSWY9XCIhZGlzcGxheU11bHRpUmVmXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQga2lkIG9mIGNoaWxkcmVuVG9SZW5kZXJcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIFtuYW1lXT1cImtpZD8uZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKClcIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGtpZC5nZXRQQ29ubmVjdCgpLCBmb3JtR3JvdXAkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZGlzcGxheVNpbmdsZVJlZlwiPlxuICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTaW5nbGVSZWZlcmVuY2VSZWFkT25seVwiIFtwcm9wc109XCJ7IHBDb25uJDogZmlyc3RDaGlsZFBDb25uZWN0KCkgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJkaXNwbGF5TXVsdGlSZWZcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiTXVsdGlSZWZlcmVuY2VSZWFkT25seVwiIFtwcm9wc109XCJ7IHBDb25uJDogZmlyc3RDaGlsZFBDb25uZWN0KCkgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yZWZlcmVuY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL2RhdGEtcmVmZXJlbmNlL2RhdGEtcmVmZXJlbmNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9kYXRhLXJlZmVyZW5jZS9kYXRhLXJlZmVyZW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7O0FBRXhHLE1BQU0sY0FBYyxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFTNUQsTUFBTSxPQUFPLHNCQUFzQjtJQTJCakMsWUFBb0IsZUFBdUM7UUFBdkMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBdkIzRCw0QkFBNEI7UUFDNUIsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQUU5QyxjQUFTLEdBQVUsRUFBRSxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIscUJBQWdCLEdBQVUsRUFBRSxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFRLEVB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ZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGVBQWU7b0JBQzVELEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM5Rix1QkFBdUIsRUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUN4SCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2hEO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBNVBVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHNJQ2ZuQyx1cEJBYUEsNkVEQVksWUFBWSwrVEFBbUIsd0JBQXdCOzs0RkFFdEQsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLG9CQUFvQixjQUdsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7MkZBRzFELE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmNvbnN0IFNFTEVDVElPTl9NT0RFID0geyBTSU5HTEU6ICdzaW5nbGUnLCBNVUxUSTogJ211bHRpJyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGF0YS1yZWZlcmVuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXJlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIERhdGFSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgYXJGaWVsZHMkOiBhbnlbXSA9IFtdO1xuICByZWZlcmVuY2VUeXBlID0gJyc7XG4gIHNlbGVjdGlvbk1vZGUgPSAnJztcbiAgcGFyYW1ldGVycztcbiAgaGlkZUxhYmVsID0gZmFsc2U7XG4gIGNoaWxkcmVuVG9SZW5kZXI6IGFueVtdID0gW107XG4gIGRyb3BEb3duRGF0YVNvdXJjZSA9ICcnO1xuICBpc0Rpc3BsYXlNb2RlRW5hYmxlZCA9IGZhbHNlO1xuICBwcm9wc1RvVXNlOiBhbnkgPSB7fTtcbiAgcmF3Vmlld01ldGFkYXRhOiBhbnkgPSB7fTtcbiAgdmlld05hbWUgPSAnJztcbiAgZmlyc3RDaGlsZE1ldGE6IGFueSA9IHt9O1xuICBjYW5CZUNoYW5nZWRJblJldmlld01vZGUgPSBmYWxzZTtcbiAgcHJvcE5hbWUgPSAnJztcbiAgZmlyc3RDaGlsZFBDb25uZWN0O1xuICBjaGlsZHJlbjtcbiAgZGlzcGxheVNpbmdsZVJlZjogYm9vbGVhbjtcbiAgZGlzcGxheU11bHRpUmVmOiBib29sZWFuO1xuICByZWZMaXN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCk7XG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGE/LnR5cGUgPT09ICdEcm9wZG93bicgJiYgdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnPy5wYXJhbWV0ZXJzKSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBrZXksIHRleHQgfSA9IHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnLmRhdGFzb3VyY2UuZmllbGRzO1xuICAgICAgUENvcmUuZ2V0RGF0YUFwaVV0aWxzKClcbiAgICAgICAgLmdldERhdGEoXG4gICAgICAgICAgdGhpcy5yZWZMaXN0LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFWaWV3UGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnJ1xuICAgICAgICApXG4gICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcy5kYXRhLmRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRkRGF0YVNvdXJjZSA9IHJlcy5kYXRhLmRhdGFcbiAgICAgICAgICAgICAgLm1hcChsaXN0SXRlbSA9PiAoe1xuICAgICAgICAgICAgICAgIGtleTogbGlzdEl0ZW1ba2V5LnNwbGl0KCcgLicsIDIpWzFdXSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBsaXN0SXRlbVt0ZXh0LnNwbGl0KCcgLicsIDIpWzFdXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbGlzdEl0ZW1bdmFsdWUuc3BsaXQoJyAuJywgMilbMV1dXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkpO1xuICAgICAgICAgICAgLy8gRmlsdGVyaW5nIG91dCB1bmRlZmluZWQgZW50cmllcyB0aGF0IHdpbGwgYnJlYWsgcHJldmlld1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93bkRhdGFTb3VyY2UgPSBkZERhdGFTb3VyY2U7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGREYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZHJvcERvd25EYXRhU291cmNlID0gZGREYXRhU291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIGRhdGE6IHsgZGF0YTogW10gfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIC8vIFVwZGF0ZSBwcm9wZXJ0aWVzIGJhc2VkIG9uIGNvbmZpZ1Byb3BzXG4gICAgY29uc3QgdGhlQ29uZmlnUHJvcHMgPSB0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpO1xuICAgIHRoaXMudXBkYXRlUHJvcGVydGllc0Zyb21Qcm9wcyh0aGVDb25maWdQcm9wcyk7XG5cbiAgICBjb25zdCBkaXNwbGF5QXMgPSB0aGVDb25maWdQcm9wcy5kaXNwbGF5QXM7XG4gICAgY29uc3QgZGlzcGxheU1vZGUgPSB0aGVDb25maWdQcm9wcy5kaXNwbGF5TW9kZTtcbiAgICB0aGlzLnJhd1ZpZXdNZXRhZGF0YSA9IHRoaXMucENvbm4kLmdldFJhd01ldGFkYXRhKCk7XG4gICAgdGhpcy52aWV3TmFtZSA9IHRoaXMucmF3Vmlld01ldGFkYXRhLm5hbWU7XG4gICAgdGhpcy5maXJzdENoaWxkTWV0YSA9IHRoaXMucmF3Vmlld01ldGFkYXRhLmNoaWxkcmVuWzBdO1xuICAgIHRoaXMucmVmTGlzdCA9IHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZy5yZWZlcmVuY2VMaXN0O1xuICAgIHRoaXMuY2FuQmVDaGFuZ2VkSW5SZXZpZXdNb2RlID0gdGhlQ29uZmlnUHJvcHMuYWxsb3dBbmRQZXJzaXN0Q2hhbmdlc0luUmV2aWV3TW9kZSAmJiAoZGlzcGxheUFzID09PSAnYXV0b2NvbXBsZXRlJyB8fCBkaXNwbGF5QXMgPT09ICdkcm9wZG93bicpO1xuICAgIC8vIHRoaXMuY2hpbGRyZW5Ub1JlbmRlciA9IHRoaXMuY2hpbGRyZW47XG4gICAgdGhpcy5pc0Rpc3BsYXlNb2RlRW5hYmxlZCA9IFsnRElTUExBWV9PTkxZJywgJ1NUQUNLRURfTEFSR0VfVkFMJ10uaW5jbHVkZXMoZGlzcGxheU1vZGUpO1xuXG4gICAgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGE/LnR5cGUgIT09ICdSZWdpb24nKSB7XG4gICAgICB0aGlzLmZpcnN0Q2hpbGRQQ29ubmVjdCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKClbMF0uZ2V0UENvbm5lY3Q7XG5cbiAgICAgIC8qIHJlbW92ZSByZWZyZXNoIFdoZW4gY29uZGl0aW9uIGZyb20gdGhvc2Ugb2xkIHZpZXcgc28gdGhhdCBpdCB3aWxsIG5vdCBiZSB1c2VkIGZvciBydW50aW1lICovXG4gICAgICBpZiAodGhpcy5maXJzdENoaWxkTWV0YS5jb25maWc/LnJlYWRPbmx5KSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmZpcnN0Q2hpbGRNZXRhLmNvbmZpZy5yZWFkT25seTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpcnN0Q2hpbGRNZXRhPy50eXBlID09PSAnRHJvcGRvd24nKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnLmRhdGFzb3VyY2Uuc291cmNlID0gdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnPy5wYXJhbWV0ZXJzXG4gICAgICAgICAgPyB0aGlzLmRyb3BEb3duRGF0YVNvdXJjZVxuICAgICAgICAgIDogJ0BEQVRBU09VUkNFICcuY29uY2F0KHRoaXMucmVmTGlzdCkuY29uY2F0KCcucHhSZXN1bHRzJyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGE/LnR5cGUgPT09ICdBdXRvQ29tcGxldGUnKSB7XG4gICAgICAgIHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnLmRhdGFzb3VyY2UgPSB0aGlzLnJlZkxpc3Q7XG5cbiAgICAgICAgLyogSW5zZXJ0IHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSBjb21wb25lbnQgb25seSBpZiBwcmVzZW50ICovXG4gICAgICAgIGlmICh0aGlzLnJhd1ZpZXdNZXRhZGF0YS5jb25maWc/LnBhcmFtZXRlcnMpIHtcbiAgICAgICAgICB0aGlzLmZpcnN0Q2hpbGRNZXRhLmNvbmZpZy5wYXJhbWV0ZXJzID0gdGhpcy5wYXJhbWV0ZXJzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBzZXQgZGlzcGxheU1vZGUgY29uZGl0aW9uYWxseVxuICAgICAgaWYgKCF0aGlzLmNhbkJlQ2hhbmdlZEluUmV2aWV3TW9kZSkge1xuICAgICAgICB0aGlzLmZpcnN0Q2hpbGRNZXRhLmNvbmZpZy5kaXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGEudHlwZSA9PT0gJ1NpbXBsZVRhYmxlU2VsZWN0JyAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09IFNFTEVDVElPTl9NT0RFLk1VTFRJKSB7XG4gICAgICAgIHRoaXMucHJvcE5hbWUgPSBQQ29yZS5nZXRBbm5vdGF0aW9uVXRpbHMoKS5nZXRQcm9wZXJ0eU5hbWUodGhpcy5maXJzdENoaWxkTWV0YS5jb25maWcuc2VsZWN0aW9uTGlzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb3BOYW1lID0gUENvcmUuZ2V0QW5ub3RhdGlvblV0aWxzKCkuZ2V0UHJvcGVydHlOYW1lKHRoaXMuZmlyc3RDaGlsZE1ldGEuY29uZmlnLnZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZW5lcmF0ZUNoaWxkcmVuVG9SZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQcm9wZXJ0aWVzRnJvbVByb3BzKHRoZUNvbmZpZ1Byb3BzKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGVDb25maWdQcm9wcy5sYWJlbDtcbiAgICBjb25zdCBzaG93TGFiZWwgPSB0aGVDb25maWdQcm9wcy5zaG93TGFiZWw7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlID0gdGhlQ29uZmlnUHJvcHMucmVmZXJlbmNlVHlwZTtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGUgPSB0aGVDb25maWdQcm9wcy5zZWxlY3Rpb25Nb2RlO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHRoZUNvbmZpZ1Byb3BzLnBhcmFtZXRlcnM7XG4gICAgdGhpcy5oaWRlTGFiZWwgPSB0aGVDb25maWdQcm9wcy5oaWRlTGFiZWw7XG5cbiAgICB0aGlzLnByb3BzVG9Vc2UgPSB7IGxhYmVsLCBzaG93TGFiZWwsIC4uLnRoaXMucENvbm4kLmdldEluaGVyaXRlZFByb3BzKCkgfTtcbiAgICBpZiAodGhpcy5wcm9wc1RvVXNlLnNob3dMYWJlbCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMucHJvcHNUb1VzZS5sYWJlbCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlQ2hpbGRyZW5Ub1JlbmRlcigpIHtcbiAgICBjb25zdCB0aGVSZWNyZWF0ZWRGaXJzdENoaWxkID0gdGhpcy5yZWNyZWF0ZWRGaXJzdENoaWxkKCk7XG4gICAgY29uc3Qgdmlld3NSZWdpb24gPSB0aGlzLnJhd1ZpZXdNZXRhZGF0YS5jaGlsZHJlblsxXTtcbiAgICBpZiAodmlld3NSZWdpb24/Lm5hbWUgPT09ICdWaWV3cycgJiYgdmlld3NSZWdpb24uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNoaWxkcmVuVG9SZW5kZXIgPSBbdGhlUmVjcmVhdGVkRmlyc3RDaGlsZCwgLi4udGhpcy5jaGlsZHJlbi5zbGljZSgxKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hpbGRyZW5Ub1JlbmRlciA9IFt0aGVSZWNyZWF0ZWRGaXJzdENoaWxkXTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWxlY3Rpb24oZXZlbnQpIHtcbiAgICBjb25zdCBjYXNlS2V5ID0gdGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRLZXkoKTtcbiAgICBjb25zdCByZWZyZXNoT3B0aW9ucyA9IHsgYXV0b0RldGVjdFJlZnJlc2g6IHRydWUgfTtcbiAgICBpZiAodGhpcy5jYW5CZUNoYW5nZWRJblJldmlld01vZGUgJiYgdGhpcy5wQ29ubiQuZ2V0VmFsdWUoJ19fY3VycmVudFBhZ2VUYWJWaWV3TmFtZScpKSB7XG4gICAgICB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCkucmVmcmVzaENhc2VWaWV3KGNhc2VLZXksIHRoaXMucENvbm4kLmdldFZhbHVlKCdfX2N1cnJlbnRQYWdlVGFiVmlld05hbWUnKSwgJycsIHJlZnJlc2hPcHRpb25zKTtcbiAgICAgIFBDb3JlLmdldERlZmVyTG9hZE1hbmFnZXIoKS5yZWZyZXNoQWN0aXZlQ29tcG9uZW50cyh0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGdSZWYgPSB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCkucmVwbGFjZSgnY2FzZUluZm8uY29udGVudCcsICcnKTtcbiAgICAgIHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKS5yZWZyZXNoQ2FzZVZpZXcoY2FzZUtleSwgdGhpcy52aWV3TmFtZSwgcGdSZWYsIHJlZnJlc2hPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBBdXRvQ29tcGxldGUgc2V0cyB2YWx1ZSBvbiBldmVudC5pZCB3aGVyZWFzIERyb3Bkb3duIHNldHMgaXQgb24gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgY29uc3QgcHJvcFZhbHVlID0gZXZlbnQ/LmlkIHx8IGV2ZW50Py50YXJnZXQ/LnZhbHVlO1xuICAgIGlmIChwcm9wVmFsdWUgJiYgdGhpcy5jYW5CZUNoYW5nZWRJblJldmlld01vZGUgJiYgdGhpcy5pc0Rpc3BsYXlNb2RlRW5hYmxlZCkge1xuICAgICAgUENvcmUuZ2V0RGF0YUFwaVV0aWxzKClcbiAgICAgICAgLmdldENhc2VFZGl0TG9jayhjYXNlS2V5LCAnJylcbiAgICAgICAgLnRoZW4oY2FzZVJlc3BvbnNlID0+IHtcbiAgICAgICAgICBjb25zdCBwYWdlVG9rZW5zID0gdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLnJlcGxhY2UoJ2Nhc2VJbmZvLmNvbnRlbnQnLCAnJykuc3BsaXQoJy4nKTtcbiAgICAgICAgICBsZXQgY3VyciA9IHt9O1xuICAgICAgICAgIGNvbnN0IGNvbW1pdERhdGEgPSBjdXJyO1xuXG4gICAgICAgICAgcGFnZVRva2Vucy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgIGlmIChlbCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgY3VycltlbF0gPSB7fTtcbiAgICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gZXhwZWN0aW5nIGZvcm1hdCBsaWtlIHtDdXN0b21lcjoge3B5SUQ6XCJDLTEwMFwifX1cbiAgICAgICAgICBjb25zdCBwcm9wQXJyID0gdGhpcy5wcm9wTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIHByb3BBcnIuZm9yRWFjaCgoZWxlbWVudCwgaWR4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaWR4ICsgMSA9PT0gcHJvcEFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY3VycltlbGVtZW50XSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGN1cnJbZWxlbWVudF0gPSB7fTtcbiAgICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxlbWVudF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBQQ29yZS5nZXRDYXNlVXRpbHMoKVxuICAgICAgICAgICAgLnVwZGF0ZUNhc2VFZGl0RmllbGRzRGF0YShjYXNlS2V5LCB7IFtjYXNlS2V5XTogY29tbWl0RGF0YSB9LCBjYXNlUmVzcG9uc2UuaGVhZGVycy5ldGFnLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICBQQ29yZS5nZXRDb250YWluZXJVdGlscygpLnVwZGF0ZVBhcmVudExhc3RVcGRhdGVUaW1lKHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksIHJlc3BvbnNlLmRhdGEuZGF0YS5jYXNlSW5mby5sYXN0VXBkYXRlVGltZSk7XG4gICAgICAgICAgICAgIFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkudXBkYXRlUmVsYXRlZENvbnRleHRFdGFnKHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksIHJlc3BvbnNlLmhlYWRlcnMuZXRhZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmUtY3JlYXRlIGZpcnN0IGNoaWxkIHdpdGggb3ZlcnJpZGRlbiBwcm9wc1xuICAvLyBNZW1vaXplZCBjaGlsZCBpbiBvcmRlciB0byBzdG9wIHVubW91bnQgYW5kIHJlbW91bnQgb2YgdGhlIGNoaWxkIGNvbXBvbmVudCB3aGVuIGRhdGEgcmVmZXJlbmNlXG4gIC8vIHJlcmVuZGVycyB3aXRob3V0IGFueSBhY3R1YWwgY2hhbmdlXG4gIHJlY3JlYXRlZEZpcnN0Q2hpbGQoKSB7XG4gICAgY29uc3QgeyB0eXBlLCBjb25maWcgfSA9IHRoaXMuZmlyc3RDaGlsZE1ldGE7XG4gICAgaWYgKHRoaXMuZmlyc3RDaGlsZE1ldGE/LnR5cGUgIT09ICdSZWdpb24nKSB7XG4gICAgICB0aGlzLnBDb25uJC5jbGVhckVycm9yTWVzc2FnZXMoe1xuICAgICAgICBwcm9wZXJ0eTogdGhpcy5wcm9wTmFtZSxcbiAgICAgICAgY2F0ZWdvcnk6ICcnLFxuICAgICAgICBjb250ZXh0OiAnJ1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRoaXMuY2FuQmVDaGFuZ2VkSW5SZXZpZXdNb2RlICYmIHRoaXMuaXNEaXNwbGF5TW9kZUVuYWJsZWQgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5TSU5HTEUpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5U2luZ2xlUmVmID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaXNEaXNwbGF5TW9kZUVuYWJsZWQgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSBTRUxFQ1RJT05fTU9ERS5NVUxUSSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlNdWx0aVJlZiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgZGF0YXNvdXJjZSB3aXRoIHBhcmFtZXRlcnMgeW91IGNhbm5vdCBsb2FkIHRoZSBkcm9wZG93biBiZWZvcmUgdGhlIHBhcmFtZXRlcnNcbiAgICAgIGlmICh0eXBlID09PSAnRHJvcGRvd24nICYmIHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZz8ucGFyYW1ldGVycyAmJiB0aGlzLmRyb3BEb3duRGF0YVNvdXJjZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZmlyc3RDaGlsZFBDb25uZWN0KCkuY3JlYXRlQ29tcG9uZW50KHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0aGlzLnByb3BzVG9Vc2UucmVxdWlyZWQsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy5wcm9wc1RvVXNlLnZpc2liaWxpdHksXG4gICAgICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHNUb1VzZS5kaXNhYmxlZCxcbiAgICAgICAgICBsYWJlbDogdGhpcy5wcm9wc1RvVXNlLmxhYmVsLFxuICAgICAgICAgIHZpZXdOYW1lOiB0aGlzLnBDb25uJC5nZXRDdXJyZW50VmlldygpLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZy5wYXJhbWV0ZXJzLFxuICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICBsb2NhbGVSZWZlcmVuY2U6IHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZy5sb2NhbGVSZWZlcmVuY2UsXG4gICAgICAgICAgLi4uKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gU0VMRUNUSU9OX01PREUuU0lOR0xFID8geyByZWZlcmVuY2VUeXBlOiB0aGlzLnJlZmVyZW5jZVR5cGUgfSA6ICcnKSxcbiAgICAgICAgICBkYXRhUmVsYXRpb25zaGlwQ29udGV4dDpcbiAgICAgICAgICAgIHRoaXMucmF3Vmlld01ldGFkYXRhLmNvbmZpZy5jb250ZXh0Q2xhc3MgJiYgdGhpcy5yYXdWaWV3TWV0YWRhdGEuY29uZmlnLm5hbWUgPyB0aGlzLnJhd1ZpZXdNZXRhZGF0YS5jb25maWcubmFtZSA6IG51bGwsXG4gICAgICAgICAgaGlkZUxhYmVsOiB0aGlzLmhpZGVMYWJlbCxcbiAgICAgICAgICBvblJlY29yZENoYW5nZTogdGhpcy5oYW5kbGVTZWxlY3Rpb24uYmluZCh0aGlzKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJjaGlsZHJlblRvUmVuZGVyICYmIGNoaWxkcmVuVG9SZW5kZXIubGVuZ3RoID4gMFwiPlxuICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlNdWx0aVJlZlwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBjaGlsZHJlblRvUmVuZGVyXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBbbmFtZV09XCJraWQ/LmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSwgZm9ybUdyb3VwJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImRpc3BsYXlTaW5nbGVSZWZcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiU2luZ2xlUmVmZXJlbmNlUmVhZE9ubHlcIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGZpcnN0Q2hpbGRQQ29ubmVjdCgpIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZGlzcGxheU11bHRpUmVmXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIk11bHRpUmVmZXJlbmNlUmVhZE9ubHlcIiBbcHJvcHNdPVwieyBwQ29ubiQ6IGZpcnN0Q2hpbGRQQ29ubmVjdCgpIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=