@pega/angular-sdk-components 0.24.9 → 0.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/fesm2022/pega-angular-sdk-components.mjs +6103 -4676
  2. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  3. package/lib/_bridge/angular-pconnect.d.ts +1 -1
  4. package/lib/_bridge/component-mapper/component-mapper.component.d.ts +1 -1
  5. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +18 -0
  6. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  7. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  8. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  9. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
  10. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  11. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
  12. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +15 -38
  13. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +7 -6
  14. package/lib/_components/field/check-box/check-box.component.d.ts +10 -33
  15. package/lib/_components/field/currency/currency.component.d.ts +25 -38
  16. package/lib/_components/field/date/date.component.d.ts +9 -49
  17. package/lib/_components/field/date-time/date-time.component.d.ts +11 -34
  18. package/lib/_components/field/decimal/decimal.component.d.ts +20 -35
  19. package/lib/_components/field/dropdown/dropdown.component.d.ts +22 -35
  20. package/lib/_components/field/email/email.component.d.ts +7 -33
  21. package/lib/_components/field/field.base.d.ts +57 -0
  22. package/lib/_components/field/group/group.component.d.ts +5 -3
  23. package/lib/_components/field/integer/integer.component.d.ts +7 -32
  24. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  25. package/lib/_components/field/location/location.component.d.ts +71 -0
  26. package/lib/_components/field/multiselect/multiselect.component.d.ts +8 -39
  27. package/lib/_components/field/object-reference/object-reference.component.d.ts +45 -0
  28. package/lib/_components/field/percentage/percentage.component.d.ts +22 -36
  29. package/lib/_components/field/phone/phone.component.d.ts +9 -37
  30. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +13 -33
  31. package/lib/_components/field/rich-text/rich-text.component.d.ts +7 -29
  32. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +6 -22
  33. package/lib/_components/field/selectable-card/selectable-card.component.d.ts +62 -0
  34. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +21 -1
  35. package/lib/_components/field/text/text.component.d.ts +3 -2
  36. package/lib/_components/field/text-area/text-area.component.d.ts +6 -32
  37. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  38. package/lib/_components/field/text-input/text-input.component.d.ts +6 -33
  39. package/lib/_components/field/time/time.component.d.ts +7 -33
  40. package/lib/_components/field/url/url.component.d.ts +6 -33
  41. package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
  42. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
  43. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
  44. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  45. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +5 -10
  46. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  47. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  48. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  49. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  50. package/lib/_components/infra/assignment/assignment.component.d.ts +8 -6
  51. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +3 -3
  52. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  53. package/lib/_components/infra/defer-load/defer-load.component.d.ts +9 -9
  54. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  55. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  56. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -4
  57. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  58. package/lib/_components/infra/region/region.component.d.ts +0 -1
  59. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
  60. package/lib/_components/infra/stages/stages.component.d.ts +2 -2
  61. package/lib/_components/infra/view/view.component.d.ts +1 -1
  62. package/lib/_components/template/advanced-search/advanced-search.component.d.ts +21 -0
  63. package/lib/_components/template/advanced-search/search-group/persist-utils.d.ts +23 -0
  64. package/lib/_components/template/advanced-search/search-groups/search-groups.component.d.ts +47 -0
  65. package/lib/_components/template/advanced-search/search-groups/utils.d.ts +15 -0
  66. package/lib/_components/template/app-shell/app-shell.component.d.ts +6 -3
  67. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  68. package/lib/_components/template/base/details-template-base.d.ts +21 -0
  69. package/lib/_components/template/base/form-template-base.d.ts +10 -0
  70. package/lib/_components/template/case-summary/case-summary.component.d.ts +3 -3
  71. package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
  72. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  73. package/lib/_components/template/data-reference/data-reference-advanced-search.service.d.ts +9 -0
  74. package/lib/_components/template/data-reference/data-reference.component.d.ts +27 -3
  75. package/lib/_components/template/data-reference/search-form/search-form.component.d.ts +39 -0
  76. package/lib/_components/template/data-reference/search-form/tabsData.d.ts +2 -0
  77. package/lib/_components/template/data-reference/utils.d.ts +14 -0
  78. package/lib/_components/template/default-form/default-form.component.d.ts +10 -8
  79. package/lib/_components/template/default-page/default-page.component.d.ts +29 -0
  80. package/lib/_components/template/details/details.component.d.ts +3 -12
  81. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
  82. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
  83. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
  84. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
  85. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
  86. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
  87. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
  88. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  89. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  90. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  91. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  92. package/lib/_components/template/list-view/list-view.component.d.ts +20 -5
  93. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  94. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  95. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  96. package/lib/_components/template/object-page/object-page.component.d.ts +8 -0
  97. package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
  98. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  99. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  100. package/lib/_components/template/page/page.component.d.ts +0 -1
  101. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  102. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  103. package/lib/_components/template/self-service-case-view/self-service-case-view.component.d.ts +59 -0
  104. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  105. package/lib/_components/template/simple-table-manual/helpers.d.ts +19 -4
  106. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +11 -4
  107. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  108. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +18 -3
  109. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  110. package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
  111. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  112. package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
  113. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  114. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  115. package/lib/_components/template/utils.d.ts +11 -0
  116. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
  117. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
  118. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +4 -7
  119. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  120. package/lib/_components/widget/attachment/Attachment.types.d.ts +87 -0
  121. package/lib/_components/widget/attachment/AttachmentUtils.d.ts +17 -0
  122. package/lib/_components/widget/attachment/attachment.component.d.ts +20 -36
  123. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  124. package/lib/_components/widget/feed-container/feed-container.component.d.ts +4 -5
  125. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
  126. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  127. package/lib/_components/widget/todo/todo.component.d.ts +13 -15
  128. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  129. package/lib/_helpers/common.d.ts +1 -1
  130. package/lib/_helpers/createstage-utils.d.ts +1 -0
  131. package/lib/_helpers/field-group-utils.d.ts +1 -3
  132. package/lib/_helpers/filter-utils.d.ts +1 -3
  133. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  134. package/lib/_helpers/formatters/common.d.ts +2 -2
  135. package/lib/_helpers/formatters/currency.d.ts +1 -2
  136. package/lib/_helpers/formatters/date.d.ts +1 -2
  137. package/lib/_helpers/formatters/index.d.ts +1 -2
  138. package/lib/_helpers/objectReference-utils.d.ts +6 -0
  139. package/lib/_helpers/semanticLink-utils.d.ts +9 -0
  140. package/lib/_helpers/tab-utils.d.ts +4 -0
  141. package/lib/_helpers/utils.d.ts +13 -1
  142. package/lib/_messages/error-messages.service.d.ts +1 -1
  143. package/lib/_services/banner.service.d.ts +8 -0
  144. package/lib/_services/case.service.d.ts +1 -1
  145. package/lib/_services/datapage.service.d.ts +1 -1
  146. package/lib/_services/endpoints.d.ts +0 -1
  147. package/lib/_services/google-maps-loader.service.d.ts +7 -0
  148. package/lib/doc/KeyReleaseUpdates.md +35 -1
  149. package/package.json +20 -6
  150. package/public-api.d.ts +27 -11
  151. package/esm2022/lib/_bridge/angular-pconnect.mjs +0 -428
  152. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +0 -114
  153. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +0 -239
  154. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +0 -142
  155. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +0 -50
  156. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +0 -29
  157. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +0 -31
  158. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +0 -51
  159. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +0 -31
  160. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +0 -83
  161. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +0 -37
  162. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +0 -31
  163. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +0 -36
  164. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +0 -25
  165. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +0 -28
  166. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +0 -42
  167. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +0 -143
  168. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +0 -33
  169. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +0 -93
  170. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +0 -18
  171. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +0 -286
  172. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +0 -96
  173. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +0 -223
  174. package/esm2022/lib/_components/field/currency/currency.component.mjs +0 -177
  175. package/esm2022/lib/_components/field/date/date.component.mjs +0 -225
  176. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +0 -181
  177. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +0 -185
  178. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +0 -192
  179. package/esm2022/lib/_components/field/email/email.component.mjs +0 -150
  180. package/esm2022/lib/_components/field/group/group.component.mjs +0 -64
  181. package/esm2022/lib/_components/field/integer/integer.component.mjs +0 -155
  182. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +0 -44
  183. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +0 -307
  184. package/esm2022/lib/_components/field/multiselect/utils.mjs +0 -187
  185. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +0 -174
  186. package/esm2022/lib/_components/field/phone/phone.component.mjs +0 -167
  187. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +0 -184
  188. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +0 -103
  189. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +0 -96
  190. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +0 -57
  191. package/esm2022/lib/_components/field/text/text.component.mjs +0 -138
  192. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +0 -153
  193. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +0 -69
  194. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +0 -152
  195. package/esm2022/lib/_components/field/time/time.component.mjs +0 -153
  196. package/esm2022/lib/_components/field/url/url.component.mjs +0 -152
  197. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +0 -187
  198. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +0 -18
  199. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +0 -71
  200. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +0 -487
  201. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +0 -68
  202. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +0 -24
  203. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +0 -342
  204. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +0 -32
  205. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +0 -218
  206. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +0 -31
  207. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +0 -383
  208. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +0 -47
  209. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +0 -87
  210. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +0 -141
  211. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +0 -18
  212. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +0 -80
  213. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +0 -136
  214. package/esm2022/lib/_components/infra/reference/reference.component.mjs +0 -133
  215. package/esm2022/lib/_components/infra/region/region.component.mjs +0 -33
  216. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +0 -228
  217. package/esm2022/lib/_components/infra/stages/stages.component.mjs +0 -62
  218. package/esm2022/lib/_components/infra/view/view.component.mjs +0 -173
  219. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +0 -140
  220. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +0 -43
  221. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +0 -101
  222. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +0 -190
  223. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +0 -68
  224. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +0 -237
  225. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +0 -61
  226. package/esm2022/lib/_components/template/details/details.component.mjs +0 -103
  227. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +0 -72
  228. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +0 -71
  229. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +0 -66
  230. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +0 -80
  231. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +0 -77
  232. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +0 -77
  233. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +0 -64
  234. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +0 -23
  235. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +0 -124
  236. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +0 -24
  237. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +0 -22
  238. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +0 -40
  239. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +0 -14
  240. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +0 -208
  241. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +0 -1202
  242. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +0 -60
  243. package/esm2022/lib/_components/template/list-view/utils.mjs +0 -662
  244. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +0 -44
  245. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +0 -30
  246. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +0 -30
  247. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +0 -16
  248. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +0 -30
  249. package/esm2022/lib/_components/template/page/page.component.mjs +0 -52
  250. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +0 -149
  251. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +0 -138
  252. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +0 -104
  253. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +0 -270
  254. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +0 -781
  255. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +0 -129
  256. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +0 -16
  257. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +0 -67
  258. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +0 -30
  259. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +0 -16
  260. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +0 -30
  261. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +0 -40
  262. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +0 -30
  263. package/esm2022/lib/_components/template/utils.mjs +0 -22
  264. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +0 -30
  265. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +0 -53
  266. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +0 -137
  267. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +0 -24
  268. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +0 -395
  269. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +0 -80
  270. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +0 -521
  271. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +0 -638
  272. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +0 -57
  273. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +0 -75
  274. package/esm2022/lib/_components/widget/todo/todo.component.mjs +0 -214
  275. package/esm2022/lib/_components/widget/utility/utility.component.mjs +0 -34
  276. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +0 -28
  277. package/esm2022/lib/_helpers/case-utils.mjs +0 -71
  278. package/esm2022/lib/_helpers/common.mjs +0 -20
  279. package/esm2022/lib/_helpers/currency-utils.mjs +0 -57
  280. package/esm2022/lib/_helpers/date-format-utils.mjs +0 -68
  281. package/esm2022/lib/_helpers/event-util.mjs +0 -18
  282. package/esm2022/lib/_helpers/field-group-utils.mjs +0 -47
  283. package/esm2022/lib/_helpers/filter-utils.mjs +0 -106
  284. package/esm2022/lib/_helpers/formatters/boolean.mjs +0 -20
  285. package/esm2022/lib/_helpers/formatters/common.mjs +0 -16
  286. package/esm2022/lib/_helpers/formatters/currency-map.mjs +0 -903
  287. package/esm2022/lib/_helpers/formatters/currency.mjs +0 -68
  288. package/esm2022/lib/_helpers/formatters/date.mjs +0 -69
  289. package/esm2022/lib/_helpers/formatters/format-utils.mjs +0 -68
  290. package/esm2022/lib/_helpers/formatters/index.mjs +0 -110
  291. package/esm2022/lib/_helpers/instructions-utils.mjs +0 -36
  292. package/esm2022/lib/_helpers/tab-utils.mjs +0 -59
  293. package/esm2022/lib/_helpers/template-utils.mjs +0 -56
  294. package/esm2022/lib/_helpers/utils.mjs +0 -386
  295. package/esm2022/lib/_helpers/versionHelpers.mjs +0 -12
  296. package/esm2022/lib/_messages/error-messages.service.mjs +0 -31
  297. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  298. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  299. package/esm2022/lib/_messages/progress-spinner.service.mjs +0 -30
  300. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  301. package/esm2022/lib/_messages/update-worklist.service.mjs +0 -30
  302. package/esm2022/lib/_services/case.service.mjs +0 -32
  303. package/esm2022/lib/_services/datapage.service.mjs +0 -52
  304. package/esm2022/lib/_services/endpoints.mjs +0 -61
  305. package/esm2022/lib/_services/server-config.service.mjs +0 -52
  306. package/esm2022/lib/_types/PConnProps.interface.mjs +0 -2
  307. package/esm2022/pega-angular-sdk-components.mjs +0 -5
  308. package/esm2022/public-api.mjs +0 -141
  309. package/esm2022/sdk-local-component-map.mjs +0 -9
  310. package/lib/_messages/get-login-status.service.d.ts +0 -10
  311. package/lib/_messages/oauth-response.service.d.ts +0 -14
  312. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -1,428 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { interval } from 'rxjs';
3
- import isEqual from 'fast-deep-equal';
4
- import { Utils } from '../_helpers/utils';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../_messages/progress-spinner.service";
7
- import * as i2 from "../_messages/error-messages.service";
8
- import * as i3 from "../_helpers/utils";
9
- export class AngularPConnectService {
10
- /* Used to toggle some class-wide logging */
11
- static { this.bLogging = false; }
12
- constructor(psService, erService, utils) {
13
- this.psService = psService;
14
- this.erService = erService;
15
- this.utils = utils;
16
- /**
17
- * Local variable for access to the store once the service is connected to it.
18
- */
19
- this.theStore = null;
20
- /**
21
- * Local variable used to compute the next componentID
22
- */
23
- this.counterComponentID = 0;
24
- /**
25
- * Local array used to store the association of an component to its most recent "props"
26
- * where "props" is the object containing the component's getConfigProps along with
27
- * anything added by populateAdditionalProps.
28
- * Each entry is: { __componentID__: _the component's most recent props_ }
29
- */
30
- this.componentPropsArr = [];
31
- // Establish necessary override flags for our use of Core
32
- // const coreOverrides = { "dynamicLoadComponents": false };
33
- // let coreOverrides = PCore.getBehaviorOverrides();
34
- // coreOverrides["dynamicLoadComponents"] = false;
35
- // PCore.setBehaviorOverrides( coreOverrides );
36
- PCore.setBehaviorOverride('dynamicLoadComponents', false);
37
- // Always best to use deep object compare when it's available
38
- // if (isEqual !== undefined) {
39
- // console.log(`AngularPConnect is using deep object compare`);
40
- // } else {
41
- // console.log(`AngularPConnect is using JSON.stringify compare`);
42
- // }
43
- }
44
- /**
45
- * Returns a unique (for this session) ComponentID that should
46
- * be used for that component to update its most recent props
47
- * (which can also be compared against its previous value
48
- * before updating). Note that this returns a string so we can use
49
- * it as a key in an associative array
50
- * @returns the next componentID
51
- */
52
- getNextComponentId() {
53
- this.counterComponentID += 1;
54
- // Note that we use the string version of the number so we have an
55
- // associative array that we can clean up later, if needed.
56
- return this.counterComponentID.toString();
57
- }
58
- /**
59
- * The Calling object (inComp) subscribes to store changes.
60
- * @param inComp The component that's subscribing to the store
61
- * @param inCallback The component's callback function (typically called onStateChange) that will
62
- * be called when the store changes.
63
- * @returns The **unsubscribe** function that should be called when the component needs
64
- * to unsubscribe from the store. (Typically during ngOnDestroy)
65
- */
66
- subscribeToStore(inComp = null, inCallback = null) {
67
- // const theCompName: string = inComp ? `${inComp.constructor.name}` : 'no component provided';
68
- let fnUnsubscribe;
69
- // console.log( `Bridge subscribing: ${theCompName} `);
70
- if (inComp) {
71
- fnUnsubscribe = this.getStore().subscribe(inCallback);
72
- }
73
- return fnUnsubscribe;
74
- }
75
- /**
76
- * Gets the Component's properties that are used (a) to populate componentPropsArr
77
- // and (b) to determine whether the component should update itself (re-render)
78
- * @param inComp The component whose properties are being obtained
79
- */
80
- getComponentProps(inComp = null) {
81
- let compProps = {};
82
- let addProps = {};
83
- if (inComp === null) {
84
- console.error(`AngularPConnect: getComponentProps called with bad component: ${inComp}`);
85
- }
86
- // if ((inComp.constructor.name === "FlowContainerComponent") || (inComp.constructor.name === "ViewContainerComponent")
87
- // || (inComp.constructor.name === "ViewComponent") || (inComp.constructor.name === "DeferLoadComponent")) {
88
- // console.log(`--> AngularPConnect getComponentProps: ${inComp.constructor.name}`);
89
- // }
90
- if (inComp.additionalProps !== undefined) {
91
- if (typeof inComp.additionalProps === 'object') {
92
- addProps = inComp.pConn$.resolveConfigProps(inComp.additionalProps);
93
- }
94
- else if (typeof inComp.additionalProps === 'function') {
95
- const propsToAdd = inComp.additionalProps(PCore.getStore().getState(), inComp.pConn$);
96
- addProps = inComp.pConn$.resolveConfigProps(propsToAdd);
97
- }
98
- }
99
- compProps = inComp.pConn$.getConfigProps();
100
- // const componentName = inComp.constructor.name;
101
- // The following comment is from the Nebula/Constellation version of this code. Meant as a reminder to check this occasionally
102
- // populate additional props which are component specific and not present in configurations
103
- // This block can be removed once all these props will be added as part of configs
104
- inComp.pConn$.populateAdditionalProps(compProps);
105
- compProps = inComp.pConn$.resolveConfigProps(compProps);
106
- if (compProps && undefined !== compProps.validatemessage && compProps.validatemessage != '') {
107
- // console.log( ` validatemessage for ${inComp.constructor.name} ${inComp.angularPConnectData.compID}: ${compProps.validatemessage}`);
108
- }
109
- return {
110
- ...compProps,
111
- ...addProps
112
- };
113
- }
114
- /**
115
- * Returns the unique id for given component created when registering
116
- * Otherwise, return undefined.
117
- * @param inComp The component whose property is being requested.
118
- */
119
- getComponentID(inComp) {
120
- return inComp.bridgeComponentID || inComp.angularPConnectData.compID;
121
- }
122
- /**
123
- * Returns the value of requested property for the component if it exists.
124
- * Otherwise, return undefined.
125
- * @param inComp The component whose property is being requested.
126
- * @param inProp The property being requested.
127
- */
128
- getComponentProp(inComp = null, inProp = '') {
129
- if (inComp === null) {
130
- console.error(`AngularPConnect: getComponentProp called with bad component: ${inComp}`);
131
- }
132
- const compID = inComp.angularPConnectData.compID;
133
- // Look up property in the component's entry in componentPropArray (which should have the most recent value)
134
- return this.componentPropsArr[compID][inProp];
135
- }
136
- /**
137
- *
138
- * @returns The current complete set of resolved properties that are associated with
139
- * this component.
140
- * This is the full set of properties that are tracked in Redux for this component.
141
- */
142
- getCurrentCompleteProps(inComp = null) {
143
- if (inComp === null) {
144
- console.error(`AngularPConnect: getCurrentCompleteProps called with bad component: ${inComp}`);
145
- }
146
- return this.componentPropsArr[inComp.angularPConnectData.compID];
147
- }
148
- /**
149
- * Registers the component and its callback function. When a component calls this method
150
- * (typically from its ngOnInit), the component is given a unique componentID (for this session)
151
- * and subscribes the component to the store. As a side effect, it also assigns the component's
152
- * actions (from its metadata) to the component's ___actions___ and binds the component's callback
153
- * (passed in as ___inCallback___) to the component. If a problem is encountered, an empty object,
154
- * {}, is returned.
155
- * @param inComp The component being registered and subscribed
156
- * @param inCallback The component's callback function (typically called onStateChange) that
157
- * will be called whenever the state changes.
158
- * @returns A JSON object with the following keys:
159
- * compID: the unique ID associated with this component,
160
- * unsubscribeFn: the function to be called when the component needs to unsubscribe from the store,
161
- * validateMessage: any validation/error message that gets generated for this object,
162
- * actions: any actions that are defined for this object
163
- */
164
- registerAndSubscribeComponent(inComp, inCallback = null) {
165
- // Create an initial object to be returned.
166
- const returnObject = {
167
- compID: '',
168
- unsubscribeFn: undefined,
169
- validateMessage: '',
170
- actions: undefined
171
- };
172
- if (inComp === null || inCallback === null) {
173
- console.error(`AngularPConnect: bad call to registerAndSubscribe: inComp: ${inComp} inCallback: ${inCallback}`);
174
- return returnObject;
175
- }
176
- const compType = inComp.constructor.name;
177
- if (AngularPConnectService.bLogging) {
178
- console.log(`registerAndSubscribeComponent: ${compType}`);
179
- }
180
- if (undefined !== inComp.bridgeComponentID) {
181
- console.error(`OLD SCHOOL: ${compType}`);
182
- }
183
- if (undefined === inComp.actions && undefined === inComp.angularPConnectData) {
184
- console.error(`AngularPConnect: bad call to registerAndSubscribe from ${compType}: actions not defined as a class variable for inComp`);
185
- return returnObject;
186
- }
187
- if (undefined === inComp.bridgeComponentID && undefined === inComp.angularPConnectData) {
188
- console.error(`AngularPConnect: bad call to registerAndSubscribe from ${compType}: bridgeComponentID not defined as a class variable for inComp`);
189
- return returnObject;
190
- }
191
- if (undefined === inComp.unsubscribeStore && undefined === inComp.angularPConnectData) {
192
- console.error(`AngularPConnect: bad call to registerAndSubscribe from ${compType}: unsubscribeStore not defined as a class variable for inComp`);
193
- return returnObject;
194
- }
195
- if (undefined === inComp.validateMessage && undefined === inComp.angularPConnectData) {
196
- console.error(`AngularPConnect: bad call to registerAndSubscribe from ${compType}: validateMessage not defined as a class variable for inComp`);
197
- return returnObject;
198
- }
199
- // call processActions to populate metadata with actions as in PConnectHOR initialize
200
- this.processActions(inComp);
201
- if (undefined === inComp.actions) {
202
- returnObject.actions = inComp.pConn$.getActions();
203
- }
204
- else {
205
- inComp.actions = inComp.pConn$.getActions();
206
- }
207
- // bind the provided callback to the component it's associated with
208
- inCallback = inCallback.bind(inComp);
209
- // Now proceed to register and subscribe...
210
- const theCompID = this.getNextComponentId();
211
- const theUnsub = this.subscribeToStore(inComp, inCallback);
212
- if (undefined === inComp.angularPConnectData) {
213
- inComp.bridgeComponentID = theCompID;
214
- }
215
- else {
216
- returnObject.compID = theCompID;
217
- returnObject.unsubscribeFn = () => {
218
- this.removeFormField(inComp);
219
- theUnsub();
220
- };
221
- }
222
- // initialize this components entry in the componentPropsArr
223
- this.componentPropsArr[theCompID] = {};
224
- this.addFormField(inComp);
225
- // return object with compID and unsubscribe...
226
- return returnObject;
227
- }
228
- addFormField(inComp) {
229
- inComp.pConn$?.addFormField();
230
- }
231
- removeFormField(inComp) {
232
- if (inComp.pConn$?.removeFormField) {
233
- inComp.pConn$?.removeFormField();
234
- }
235
- }
236
- // Returns true if the component's entry in ___componentPropsArr___ is
237
- // the same as the inCompProps passed in.
238
- // As a side effect, update the component's entry in componentPropsArr
239
- // NOTE: It is assumed that the incoming component has the following:
240
- // * a bridgeComponentID <string> property - used as lookup key in componentPropsArr
241
- // * a pConn$ <?> property - used to access functions accessed in getComponentProps
242
- // Return true: means the component props are different and the component should update itself (re-render)
243
- // Return false: means the component props are the same and the component doesn't need to update (re-render)
244
- // On bad input, return false;
245
- /**
246
- * Returns **true** if the component's entry in ___componentPropsArr___ is
247
- * the same as the properties that are current associated with the component (___inComp___) passed in.
248
- * As a side effect, the component's entry in ___componentPropsArr___ is updated.
249
- * **Note**: It is assumed that the incoming component has the following:
250
- * (a) a bridgeComponentID _string_ property used as lookup key in ___componentPropsArr___
251
- * and (b) a ___pConn$___ property used to access functions called in ___getComponentProps___
252
- *
253
- * @param inComp The component asking if it should update itself
254
- * @returns Return **true**: means the component props are different and the component should update itself (re-render).
255
- * Return **false**: means the component props are the same and the component doesn't need to update (re-render).
256
- * If the ***inComp*** input is bad, false is also returned.
257
- */
258
- shouldComponentUpdate(inComp) {
259
- // const bShowLogging = false;
260
- let bRet = false;
261
- // check for reasonable input
262
- if (Utils.isEmptyObject(inComp)) {
263
- console.error(`AngularPConnect: bad call to shouldComponentUpdate: inComp: ${JSON.stringify(inComp)}`);
264
- return bRet;
265
- }
266
- if (undefined === inComp.validateMessage && undefined === inComp.angularPConnectData) {
267
- console.error(`AngularPConnect: bad call to shouldComponentUpdate: ${inComp.constructor.name} does not have a validateMessage property.`);
268
- }
269
- const compID = this.getComponentID(inComp);
270
- const currentProps = this.componentPropsArr[compID];
271
- const currentPropsAsStr = JSON.stringify(currentProps);
272
- const incomingProps = this.getComponentProps(inComp);
273
- // if have pageMessages, and it is blank, remove it. This causes issues of making it appear
274
- // that a will cause an update, when there is no change
275
- if (this.isPageMessagesEmpty(incomingProps)) {
276
- inComp.angularPConnectData.pageMessages = incomingProps.pageMessages;
277
- delete incomingProps.pageMessages;
278
- }
279
- if (incomingProps.httpMessages) {
280
- inComp.angularPConnectData.httpMessages = incomingProps.httpMessages;
281
- incomingProps.httpMessages = undefined;
282
- }
283
- const incomingPropsAsStr = JSON.stringify(incomingProps);
284
- bRet = isEqual ? !isEqual(currentProps, incomingProps) : currentPropsAsStr != incomingPropsAsStr;
285
- // Below piece of code is needed to re-render the component since we wanna evaluate the Visibility expression within View component in such cases
286
- if (inComp.pConn$.meta.config.context?.length > 0 && inComp.pConn$.getPageReference().length > 'caseInfo.content'.length) {
287
- return true;
288
- }
289
- // Now update the entry in componentPropsArr with the incoming value so
290
- // we can compare against that next time...
291
- this.componentPropsArr[compID] = incomingProps;
292
- const validatemessage = incomingProps.validatemessage === undefined ? '' : this.utils.htmlDecode(incomingProps.validatemessage);
293
- // and update the component's validation message (if undefined, it should be set to "")
294
- if (undefined !== inComp.angularPConnectData) {
295
- inComp.angularPConnectData.validateMessage = validatemessage;
296
- if (inComp.angularPConnectData.validateMessage != '') {
297
- // if have a validate message, turn off spinner
298
- const timer = interval(100).subscribe(() => {
299
- this.psService.sendMessage(false);
300
- timer.unsubscribe();
301
- });
302
- let sErrorMessage = currentProps && currentProps.label ? currentProps.label.concat(' - ') : '';
303
- sErrorMessage = sErrorMessage.concat(inComp.angularPConnectData.validateMessage);
304
- this.erService.sendMessage('update', sErrorMessage);
305
- }
306
- }
307
- else {
308
- inComp.validateMessage = validatemessage;
309
- }
310
- if (bRet && compID === undefined) {
311
- bRet = false;
312
- }
313
- // console.log( `AngularPConnect component ${compID} - ${inComp.constructor.name} - shouldComponentUpdate: ${bRet}`);
314
- // console.log("current props: " + currentPropsAsStr);
315
- if (bRet) {
316
- // console.log(`**** change for: ${inComp.constructor.name}`);
317
- // console.log("current props: " + currentPropsAsStr);
318
- // console.log("incoming props: " + incomingPropsAsStr);
319
- // console.log(` ${inComp.constructor.name}: shouldComponentUpdate returning: ${bRet}, compId: ${compID}` );
320
- // console.log( ` Updating with componentProps for ${inComp.constructor.name}: ${JSON.stringify(this.componentPropsArr[compID])}`);
321
- // console.log( ` and validateMessage: ${inComp.validateMessage}`);
322
- }
323
- // else if (inComp.constructor.name.indexOf("View") >= 0 || inComp.constructor.name.indexOf("Root") >= 0) {
324
- // console.log("no change");
325
- // console.log("current props: " + currentPropsAsStr);
326
- // console.log("incoming props: " + incomingPropsAsStr);
327
- // console.log(` ${inComp.constructor.name}: shouldComponentUpdate returning: ${bRet}, compId: ${compID}` );
328
- // }
329
- // console.log(` ${inComp.constructor.name}: shouldComponentUpdate returning: ${bRet}`);
330
- return bRet;
331
- }
332
- isPageMessagesEmpty(incomingProps) {
333
- return incomingProps.pageMessages && incomingProps.pageMessages.length === 0;
334
- }
335
- /**
336
- * Can be called when the component has encountered a change event
337
- * @param inComp The component calling the change event
338
- * @param event The event
339
- */
340
- changeHandler(inComp, event) {
341
- const bLogging = false;
342
- if (bLogging) {
343
- // console.log(`AngularPConnect.changeHandler`);
344
- }
345
- // check for reasonable input
346
- if (undefined === inComp || Utils.isEmptyObject(inComp)) {
347
- console.error(`AngularPConnect: bad call to changeHandler: inComp: ${JSON.stringify(inComp)}`);
348
- return;
349
- }
350
- const pConnect = inComp.pConn$;
351
- if (undefined === pConnect) {
352
- console.error(`AngularPConnect: bad call to changeHandler: inComp.pConn$: ${pConnect}`);
353
- return;
354
- }
355
- // clear out errors
356
- this.erService.sendMessage('dismiss', '');
357
- pConnect.getActionsApi().changeHandler(pConnect, event);
358
- }
359
- /**
360
- * Can be called when the component has encountered an event (such as blur)
361
- * @param inComp The component calling the event
362
- * @param event The event
363
- */
364
- eventHandler(inComp, event) {
365
- const bLogging = false;
366
- if (bLogging) {
367
- // console.log(`AngularPConnect.eventHandler`);
368
- }
369
- // check for reasonable input
370
- if (undefined === inComp || Utils.isEmptyObject(inComp)) {
371
- console.error(`AngularPConnect: bad call to eventHandler: inComp: ${JSON.stringify(inComp)}`);
372
- return;
373
- }
374
- const pConnect = inComp.pConn$;
375
- if (undefined === pConnect) {
376
- console.error(`AngularPConnect: bad call to eventHandler: inComp.pConn$: ${pConnect}`);
377
- return;
378
- }
379
- pConnect.getActionsApi().eventHandler(pConnect, event);
380
- }
381
- /**
382
- * @returns A handle to the application's store
383
- */
384
- getStore() {
385
- if (this.theStore === null) {
386
- this.theStore = PCore.getStore();
387
- }
388
- return this.theStore;
389
- }
390
- /**
391
- * @param bLogMsg If true, will write the stringified state to the store for debugging/inspection
392
- * @param inComp If supplied, the component that is requesting the store's state
393
- * @returns A handle to the __state__ of application's store
394
- */
395
- getState(bLogMsg = false, inComp = null) {
396
- const theState = this.getStore().getState();
397
- if (bLogMsg) {
398
- const theCompName = inComp ? `${inComp.constructor.name}: ` : '';
399
- console.log(`${theCompName} Store state: ${JSON.stringify(theState)}`);
400
- }
401
- return theState;
402
- }
403
- // processActions - carried over from PConnectHOC initialize
404
- /**
405
- * processActions exposes all actions in the metadata.
406
- * Attaches common handler (eventHandler) for all actions.
407
- */
408
- processActions(inComp) {
409
- const pConnect = inComp.pConn$;
410
- if (undefined === pConnect) {
411
- console.error(`AngularPConnect: bad call to processActions: pConn$: ${pConnect} from component: ${inComp.constructor.name}`);
412
- return;
413
- }
414
- if (inComp.pConn$.isEditable()) {
415
- inComp.pConn$.setAction('onChange', this.changeHandler.bind(this));
416
- inComp.pConn$.setAction('onBlur', this.eventHandler.bind(this));
417
- }
418
- }
419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularPConnectService, deps: [{ token: i1.ProgressSpinnerService }, { token: i2.ErrorMessagesService }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Injectable }); }
420
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularPConnectService, providedIn: 'root' }); }
421
- }
422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AngularPConnectService, decorators: [{
423
- type: Injectable,
424
- args: [{
425
- providedIn: 'root'
426
- }]
427
- }], ctorParameters: () => [{ type: i1.ProgressSpinnerService }, { type: i2.ErrorMessagesService }, { type: i3.Utils }] });
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1wY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFlMUMsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsNENBQTRDO2FBQzdCLGFBQVEsR0FBRyxLQUFLLEFBQVIsQ0FBUztJQUVoQyxZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLEtBQVk7UUFGWixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBeEJ0Qjs7V0FFRztRQUNLLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFFN0I7O1dBRUc7UUFDSyx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFFL0I7Ozs7O1dBS0c7UUFDSyxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFVdkMseURBQXlEO1FBQ3pELDREQUE0RDtRQUM1RCxvREFBb0Q7UUFDcEQsa0RBQWtEO1FBQ2xELCtDQUErQztRQUMvQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFMUQsNkRBQTZEO1FBQzdELCtCQUErQjtRQUMvQiwrREFBK0Q7UUFDL0QsV0FBVztRQUNYLGtFQUFrRTtRQUNsRSxJQUFJO0lBQ04sQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixJ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QW9CLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3SCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDOytHQTlkVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vX21lc3NhZ2VzL3Byb2dyZXNzLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uL19tZXNzYWdlcy9lcnJvci1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vX2hlbHBlcnMvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFuZ3VsYXJQQ29ubmVjdERhdGEge1xuICBjb21wSUQ/OiBzdHJpbmc7XG4gIHVuc3Vic2NyaWJlRm4/OiBGdW5jdGlvbjtcbiAgdmFsaWRhdGVNZXNzYWdlPzogc3RyaW5nO1xuICBhY3Rpb25zPzoge1xuICAgIG9uQ2hhbmdlOiBGdW5jdGlvbjtcbiAgICBvbkJsdXI6IEZ1bmN0aW9uO1xuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIExvY2FsIHZhcmlhYmxlIGZvciBhY2Nlc3MgdG8gdGhlIHN0b3JlIG9uY2UgdGhlIHNlcnZpY2UgaXMgY29ubmVjdGVkIHRvIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSB0aGVTdG9yZTogYW55ID0gbnVsbDtcblxuICAvKipcbiAgICogTG9jYWwgdmFyaWFibGUgdXNlZCB0byBjb21wdXRlIHRoZSBuZXh0IGNvbXBvbmVudElEXG4gICAqL1xuICBwcml2YXRlIGNvdW50ZXJDb21wb25lbnRJRCA9IDA7XG5cbiAgLyoqXG4gICAqIExvY2FsIGFycmF5IHVzZWQgdG8gc3RvcmUgdGhlIGFzc29jaWF0aW9uIG9mIGFuIGNvbXBvbmVudCB0byBpdHMgbW9zdCByZWNlbnQgXCJwcm9wc1wiXG4gICAqICB3aGVyZSBcInByb3BzXCIgaXMgdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBjb21wb25lbnQncyBnZXRDb25maWdQcm9wcyBhbG9uZyB3aXRoXG4gICAqIGFueXRoaW5nIGFkZGVkIGJ5IHBvcHVsYXRlQWRkaXRpb25hbFByb3BzLlxuICAgKiBFYWNoIGVudHJ5IGlzOiB7IF9fY29tcG9uZW50SURfXzogX3RoZSBjb21wb25lbnQncyBtb3N0IHJlY2VudCBwcm9wc18gfVxuICAgKi9cbiAgcHJpdmF0ZSBjb21wb25lbnRQcm9wc0FycjogT2JqZWN0W10gPSBbXTtcblxuICAvKiBVc2VkIHRvIHRvZ2dsZSBzb21lIGNsYXNzLXdpZGUgbG9nZ2luZyAqL1xuICBwcml2YXRlIHN0YXRpYyBiTG9nZ2luZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJTZXJ2aWNlOiBFcnJvck1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHtcbiAgICAvLyBFc3RhYmxpc2ggbmVjZXNzYXJ5IG92ZXJyaWRlIGZsYWdzIGZvciBvdXIgdXNlIG9mIENvcmVcbiAgICAvLyBjb25zdCBjb3JlT3ZlcnJpZGVzID0geyBcImR5bmFtaWNMb2FkQ29tcG9uZW50c1wiOiBmYWxzZSB9O1xuICAgIC8vIGxldCBjb3JlT3ZlcnJpZGVzID0gUENvcmUuZ2V0QmVoYXZpb3JPdmVycmlkZXMoKTtcbiAgICAvLyBjb3JlT3ZlcnJpZGVzW1wiZHluYW1pY0xvYWRDb21wb25lbnRzXCJdID0gZmFsc2U7XG4gICAgLy8gUENvcmUuc2V0QmVoYXZpb3JPdmVycmlkZXMoIGNvcmVPdmVycmlkZXMgKTtcbiAgICBQQ29yZS5zZXRCZWhhdmlvck92ZXJyaWRlKCdkeW5hbWljTG9hZENvbXBvbmVudHMnLCBmYWxzZSk7XG5cbiAgICAvLyBBbHdheXMgYmVzdCB0byB1c2UgZGVlcCBvYmplY3QgY29tcGFyZSB3aGVuIGl0J3MgYXZhaWxhYmxlXG4gICAgLy8gaWYgKGlzRXF1YWwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBBbmd1bGFyUENvbm5lY3QgaXMgdXNpbmcgZGVlcCBvYmplY3QgY29tcGFyZWApO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gY29uc29sZS5sb2coYEFuZ3VsYXJQQ29ubmVjdCBpcyB1c2luZyBKU09OLnN0cmluZ2lmeSBjb21wYXJlYCk7XG4gICAgLy8gfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB1bmlxdWUgKGZvciB0aGlzIHNlc3Npb24pIENvbXBvbmVudElEIHRoYXQgc2hvdWxkXG4gICAqIGJlIHVzZWQgZm9yIHRoYXQgY29tcG9uZW50IHRvIHVwZGF0ZSBpdHMgbW9zdCByZWNlbnQgcHJvcHNcbiAgICogKHdoaWNoIGNhbiBhbHNvIGJlIGNvbXBhcmVkIGFnYWluc3QgaXRzIHByZXZpb3VzIHZhbHVlXG4gICAqIGJlZm9yZSB1cGRhdGluZykuIE5vdGUgdGhhdCB0aGlzIHJldHVybnMgYSBzdHJpbmcgc28gd2UgY2FuIHVzZVxuICAgKiBpdCBhcyBhIGtleSBpbiBhbiBhc3NvY2lhdGl2ZSBhcnJheVxuICAgKiBAcmV0dXJucyB0aGUgbmV4dCBjb21wb25lbnRJRFxuICAgKi9cbiAgcHJpdmF0ZSBnZXROZXh0Q29tcG9uZW50SWQoKTogc3RyaW5nIHtcbiAgICB0aGlzLmNvdW50ZXJDb21wb25lbnRJRCArPSAxO1xuICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgdGhlIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSBudW1iZXIgc28gd2UgaGF2ZSBhblxuICAgIC8vICBhc3NvY2lhdGl2ZSBhcnJheSB0aGF0IHdlIGNhbiBjbGVhbiB1cCBsYXRlciwgaWYgbmVlZGVkLlxuICAgIHJldHVybiB0aGlzLmNvdW50ZXJDb21wb25lbnRJRC50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBDYWxsaW5nIG9iamVjdCAoaW5Db21wKSBzdWJzY3JpYmVzIHRvIHN0b3JlIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCB0aGF0J3Mgc3Vic2NyaWJpbmcgdG8gdGhlIHN0b3JlXG4gICAqIEBwYXJhbSBpbkNhbGxiYWNrIFRoZSBjb21wb25lbnQncyBjYWxsYmFjayBmdW5jdGlvbiAodHlwaWNhbGx5IGNhbGxlZCBvblN0YXRlQ2hhbmdlKSB0aGF0IHdpbGxcbiAgICogYmUgY2FsbGVkIHdoZW4gdGhlIHN0b3JlIGNoYW5nZXMuXG4gICAqIEByZXR1cm5zIFRoZSAqKnVuc3Vic2NyaWJlKiogZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBuZWVkc1xuICAgKiB0byB1bnN1YnNjcmliZSBmcm9tIHRoZSBzdG9yZS4gKFR5cGljYWxseSBkdXJpbmcgbmdPbkRlc3Ryb3kpXG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvU3RvcmUoaW5Db21wOiBhbnkgPSBudWxsLCBpbkNhbGxiYWNrOiBGdW5jdGlvbiB8IG51bGwgPSBudWxsKTogRnVuY3Rpb24ge1xuICAgIC8vIGNvbnN0IHRoZUNvbXBOYW1lOiBzdHJpbmcgPSBpbkNvbXAgPyBgJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX1gIDogJ25vIGNvbXBvbmVudCBwcm92aWRlZCc7XG4gICAgbGV0IGZuVW5zdWJzY3JpYmU7XG4gICAgLy8gY29uc29sZS5sb2coIGBCcmlkZ2Ugc3Vic2NyaWJpbmc6ICR7dGhlQ29tcE5hbWV9IGApO1xuICAgIGlmIChpbkNvbXApIHtcbiAgICAgIGZuVW5zdWJzY3JpYmUgPSB0aGlzLmdldFN0b3JlKCkuc3Vic2NyaWJlKGluQ2FsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gZm5VbnN1YnNjcmliZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBDb21wb25lbnQncyBwcm9wZXJ0aWVzIHRoYXQgYXJlIHVzZWQgKGEpIHRvIHBvcHVsYXRlIGNvbXBvbmVudFByb3BzQXJyXG4gIC8vICBhbmQgKGIpIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IHdob3NlIHByb3BlcnRpZXMgYXJlIGJlaW5nIG9idGFpbmVkXG4gICAqL1xuICBwcml2YXRlIGdldENvbXBvbmVudFByb3BzKGluQ29tcDogYW55ID0gbnVsbCk6IE9iamVjdCB7XG4gICAgbGV0IGNvbXBQcm9wczogYW55ID0ge307XG4gICAgbGV0IGFkZFByb3BzID0ge307XG5cbiAgICBpZiAoaW5Db21wID09PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGdldENvbXBvbmVudFByb3BzIGNhbGxlZCB3aXRoIGJhZCBjb21wb25lbnQ6ICR7aW5Db21wfWApO1xuICAgIH1cblxuICAgIC8vIGlmICgoaW5Db21wLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiRmxvd0NvbnRhaW5lckNvbXBvbmVudFwiKSB8fCAoaW5Db21wLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiVmlld0NvbnRhaW5lckNvbXBvbmVudFwiKVxuICAgIC8vICAgICB8fCAoaW5Db21wLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiVmlld0NvbXBvbmVudFwiKSB8fCAoaW5Db21wLmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiRGVmZXJMb2FkQ29tcG9uZW50XCIpKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhgLS0+IEFuZ3VsYXJQQ29ubmVjdCBnZXRDb21wb25lbnRQcm9wczogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAvLyB9XG5cbiAgICBpZiAoaW5Db21wLmFkZGl0aW9uYWxQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIGluQ29tcC5hZGRpdGlvbmFsUHJvcHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGFkZFByb3BzID0gaW5Db21wLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHMoaW5Db21wLmFkZGl0aW9uYWxQcm9wcyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbkNvbXAuYWRkaXRpb25hbFByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHByb3BzVG9BZGQgPSBpbkNvbXAuYWRkaXRpb25hbFByb3BzKFBDb3JlLmdldFN0b3JlKCkuZ2V0U3RhdGUoKSwgaW5Db21wLnBDb25uJCk7XG4gICAgICAgIGFkZFByb3BzID0gaW5Db21wLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHMocHJvcHNUb0FkZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcFByb3BzID0gaW5Db21wLnBDb25uJC5nZXRDb25maWdQcm9wcygpO1xuXG4gICAgLy8gY29uc3QgY29tcG9uZW50TmFtZSA9IGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lO1xuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBjb21tZW50IGlzIGZyb20gdGhlIE5lYnVsYS9Db25zdGVsbGF0aW9uIHZlcnNpb24gb2YgdGhpcyBjb2RlLiBNZWFudCBhcyBhIHJlbWluZGVyIHRvIGNoZWNrIHRoaXMgb2NjYXNpb25hbGx5XG4gICAgLy8gcG9wdWxhdGUgYWRkaXRpb25hbCBwcm9wcyB3aGljaCBhcmUgY29tcG9uZW50IHNwZWNpZmljIGFuZCBub3QgcHJlc2VudCBpbiBjb25maWd1cmF0aW9uc1xuICAgIC8vIFRoaXMgYmxvY2sgY2FuIGJlIHJlbW92ZWQgb25jZSBhbGwgdGhlc2UgcHJvcHMgd2lsbCBiZSBhZGRlZCBhcyBwYXJ0IG9mIGNvbmZpZ3NcbiAgICBpbkNvbXAucENvbm4kLnBvcHVsYXRlQWRkaXRpb25hbFByb3BzKGNvbXBQcm9wcyk7XG5cbiAgICBjb21wUHJvcHMgPSBpbkNvbXAucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyhjb21wUHJvcHMpO1xuXG4gICAgaWYgKGNvbXBQcm9wcyAmJiB1bmRlZmluZWQgIT09IGNvbXBQcm9wcy52YWxpZGF0ZW1lc3NhZ2UgJiYgY29tcFByb3BzLnZhbGlkYXRlbWVzc2FnZSAhPSAnJykge1xuICAgICAgLy8gY29uc29sZS5sb2coIGAgICB2YWxpZGF0ZW1lc3NhZ2UgZm9yICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9ICR7aW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEuY29tcElEfTogJHtjb21wUHJvcHMudmFsaWRhdGVtZXNzYWdlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb21wUHJvcHMsXG4gICAgICAuLi5hZGRQcm9wc1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGlkIGZvciBnaXZlbiBjb21wb25lbnQgY3JlYXRlZCB3aGVuIHJlZ2lzdGVyaW5nXG4gICAqIE90aGVyd2lzZSwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IHdob3NlIHByb3BlcnR5IGlzIGJlaW5nIHJlcXVlc3RlZC5cbiAgICovXG4gIHB1YmxpYyBnZXRDb21wb25lbnRJRChpbkNvbXApOiBzdHJpbmcge1xuICAgIHJldHVybiBpbkNvbXAuYnJpZGdlQ29tcG9uZW50SUQgfHwgaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEuY29tcElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHJlcXVlc3RlZCBwcm9wZXJ0eSBmb3IgdGhlIGNvbXBvbmVudCBpZiBpdCBleGlzdHMuXG4gICAqIE90aGVyd2lzZSwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IHdob3NlIHByb3BlcnR5IGlzIGJlaW5nIHJlcXVlc3RlZC5cbiAgICogQHBhcmFtIGluUHJvcCBUaGUgcHJvcGVydHkgYmVpbmcgcmVxdWVzdGVkLlxuICAgKi9cbiAgcHVibGljIGdldENvbXBvbmVudFByb3AoaW5Db21wOiBhbnkgPSBudWxsLCBpblByb3AgPSAnJykge1xuICAgIGlmIChpbkNvbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogZ2V0Q29tcG9uZW50UHJvcCBjYWxsZWQgd2l0aCBiYWQgY29tcG9uZW50OiAke2luQ29tcH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wSUQgPSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS5jb21wSUQ7XG5cbiAgICAvLyBMb29rIHVwIHByb3BlcnR5IGluIHRoZSBjb21wb25lbnQncyBlbnRyeSBpbiBjb21wb25lbnRQcm9wQXJyYXkgKHdoaWNoIHNob3VsZCBoYXZlIHRoZSBtb3N0IHJlY2VudCB2YWx1ZSlcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRQcm9wc0Fycltjb21wSURdW2luUHJvcF07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgY29tcGxldGUgc2V0IG9mIHJlc29sdmVkIHByb3BlcnRpZXMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoXG4gICAqIHRoaXMgY29tcG9uZW50LlxuICAgKiBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBwcm9wZXJ0aWVzIHRoYXQgYXJlIHRyYWNrZWQgaW4gUmVkdXggZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnRDb21wbGV0ZVByb3BzKGluQ29tcDogYW55ID0gbnVsbCkge1xuICAgIGlmIChpbkNvbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogZ2V0Q3VycmVudENvbXBsZXRlUHJvcHMgY2FsbGVkIHdpdGggYmFkIGNvbXBvbmVudDogJHtpbkNvbXB9YCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFByb3BzQXJyW2luQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLmNvbXBJRF07XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBjb21wb25lbnQgYW5kIGl0cyBjYWxsYmFjayBmdW5jdGlvbi4gV2hlbiBhIGNvbXBvbmVudCBjYWxscyB0aGlzIG1ldGhvZFxuICAgKiAodHlwaWNhbGx5IGZyb20gaXRzIG5nT25Jbml0KSwgdGhlIGNvbXBvbmVudCBpcyBnaXZlbiBhIHVuaXF1ZSBjb21wb25lbnRJRCAoZm9yIHRoaXMgc2Vzc2lvbilcbiAgICogYW5kIHN1YnNjcmliZXMgdGhlIGNvbXBvbmVudCB0byB0aGUgc3RvcmUuIEFzIGEgc2lkZSBlZmZlY3QsIGl0IGFsc28gYXNzaWducyB0aGUgY29tcG9uZW50J3NcbiAgICogYWN0aW9ucyAoZnJvbSBpdHMgbWV0YWRhdGEpIHRvIHRoZSBjb21wb25lbnQncyBfX19hY3Rpb25zX19fIGFuZCBiaW5kcyB0aGUgY29tcG9uZW50J3MgY2FsbGJhY2tcbiAgICogKHBhc3NlZCBpbiBhcyBfX19pbkNhbGxiYWNrX19fKSB0byB0aGUgY29tcG9uZW50LiBJZiBhIHByb2JsZW0gaXMgZW5jb3VudGVyZWQsIGFuIGVtcHR5IG9iamVjdCxcbiAgICoge30sIGlzIHJldHVybmVkLlxuICAgKiBAcGFyYW0gaW5Db21wIFRoZSBjb21wb25lbnQgYmVpbmcgcmVnaXN0ZXJlZCBhbmQgc3Vic2NyaWJlZFxuICAgKiBAcGFyYW0gaW5DYWxsYmFjayBUaGUgY29tcG9uZW50J3MgY2FsbGJhY2sgZnVuY3Rpb24gKHR5cGljYWxseSBjYWxsZWQgb25TdGF0ZUNoYW5nZSkgdGhhdFxuICAgKiB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgc3RhdGUgY2hhbmdlcy5cbiAgICogQHJldHVybnMgQSBKU09OIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcga2V5czpcbiAgICogY29tcElEOiB0aGUgdW5pcXVlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBvbmVudCxcbiAgICogdW5zdWJzY3JpYmVGbjogdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgbmVlZHMgdG8gdW5zdWJzY3JpYmUgZnJvbSB0aGUgc3RvcmUsXG4gICAqIHZhbGlkYXRlTWVzc2FnZTogYW55IHZhbGlkYXRpb24vZXJyb3IgbWVzc2FnZSB0aGF0IGdldHMgZ2VuZXJhdGVkIGZvciB0aGlzIG9iamVjdCxcbiAgICogYWN0aW9uczogYW55IGFjdGlvbnMgdGhhdCBhcmUgZGVmaW5lZCBmb3IgdGhpcyBvYmplY3RcbiAgICovXG4gIHJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KGluQ29tcCwgaW5DYWxsYmFjazogRnVuY3Rpb24gfCBudWxsID0gbnVsbCk6IEFuZ3VsYXJQQ29ubmVjdERhdGEge1xuICAgIC8vIENyZWF0ZSBhbiBpbml0aWFsIG9iamVjdCB0byBiZSByZXR1cm5lZC5cbiAgICBjb25zdCByZXR1cm5PYmplY3Q6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7XG4gICAgICBjb21wSUQ6ICcnLFxuICAgICAgdW5zdWJzY3JpYmVGbjogdW5kZWZpbmVkLFxuICAgICAgdmFsaWRhdGVNZXNzYWdlOiAnJyxcbiAgICAgIGFjdGlvbnM6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoaW5Db21wID09PSBudWxsIHx8IGluQ2FsbGJhY2sgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gcmVnaXN0ZXJBbmRTdWJzY3JpYmU6IGluQ29tcDogJHtpbkNvbXB9IGluQ2FsbGJhY2s6ICR7aW5DYWxsYmFja31gKTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcFR5cGUgPSBpbkNvbXAuY29uc3RydWN0b3IubmFtZTtcblxuICAgIGlmIChBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLmJMb2dnaW5nKSB7XG4gICAgICBjb25zb2xlLmxvZyhgcmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQ6ICR7Y29tcFR5cGV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHVuZGVmaW5lZCAhPT0gaW5Db21wLmJyaWRnZUNvbXBvbmVudElEKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBPTEQgU0NIT09MOiAke2NvbXBUeXBlfWApO1xuICAgIH1cblxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC5hY3Rpb25zICYmIHVuZGVmaW5lZCA9PT0gaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gcmVnaXN0ZXJBbmRTdWJzY3JpYmUgZnJvbSAke2NvbXBUeXBlfTogYWN0aW9ucyBub3QgZGVmaW5lZCBhcyBhIGNsYXNzIHZhcmlhYmxlIGZvciBpbkNvbXBgKTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG4gICAgfVxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC5icmlkZ2VDb21wb25lbnRJRCAmJiB1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byByZWdpc3RlckFuZFN1YnNjcmliZSBmcm9tICR7Y29tcFR5cGV9OiBicmlkZ2VDb21wb25lbnRJRCBub3QgZGVmaW5lZCBhcyBhIGNsYXNzIHZhcmlhYmxlIGZvciBpbkNvbXBgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdDtcbiAgICB9XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLnVuc3Vic2NyaWJlU3RvcmUgJiYgdW5kZWZpbmVkID09PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gcmVnaXN0ZXJBbmRTdWJzY3JpYmUgZnJvbSAke2NvbXBUeXBlfTogdW5zdWJzY3JpYmVTdG9yZSBub3QgZGVmaW5lZCBhcyBhIGNsYXNzIHZhcmlhYmxlIGZvciBpbkNvbXBgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdDtcbiAgICB9XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLnZhbGlkYXRlTWVzc2FnZSAmJiB1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHJlZ2lzdGVyQW5kU3Vic2NyaWJlIGZyb20gJHtjb21wVHlwZX06IHZhbGlkYXRlTWVzc2FnZSBub3QgZGVmaW5lZCBhcyBhIGNsYXNzIHZhcmlhYmxlIGZvciBpbkNvbXBgKTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG4gICAgfVxuXG4gICAgLy8gY2FsbCBwcm9jZXNzQWN0aW9ucyB0byBwb3B1bGF0ZSBtZXRhZGF0YSB3aXRoIGFjdGlvbnMgYXMgaW4gUENvbm5lY3RIT1IgaW5pdGlhbGl6ZVxuICAgIHRoaXMucHJvY2Vzc0FjdGlvbnMoaW5Db21wKTtcbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAuYWN0aW9ucykge1xuICAgICAgcmV0dXJuT2JqZWN0LmFjdGlvbnMgPSBpbkNvbXAucENvbm4kLmdldEFjdGlvbnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5Db21wLmFjdGlvbnMgPSBpbkNvbXAucENvbm4kLmdldEFjdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvLyBiaW5kIHRoZSBwcm92aWRlZCBjYWxsYmFjayB0byB0aGUgY29tcG9uZW50IGl0J3MgYXNzb2NpYXRlZCB3aXRoXG4gICAgaW5DYWxsYmFjayA9IGluQ2FsbGJhY2suYmluZChpbkNvbXApO1xuXG4gICAgLy8gTm93IHByb2NlZWQgdG8gcmVnaXN0ZXIgYW5kIHN1YnNjcmliZS4uLlxuICAgIGNvbnN0IHRoZUNvbXBJRDogc3RyaW5nID0gdGhpcy5nZXROZXh0Q29tcG9uZW50SWQoKTtcbiAgICBjb25zdCB0aGVVbnN1YjogRnVuY3Rpb24gfCBudWxsID0gdGhpcy5zdWJzY3JpYmVUb1N0b3JlKGluQ29tcCwgaW5DYWxsYmFjayk7XG5cbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgaW5Db21wLmJyaWRnZUNvbXBvbmVudElEID0gdGhlQ29tcElEO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5PYmplY3QuY29tcElEID0gdGhlQ29tcElEO1xuICAgICAgcmV0dXJuT2JqZWN0LnVuc3Vic2NyaWJlRm4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlRm9ybUZpZWxkKGluQ29tcCk7XG4gICAgICAgIHRoZVVuc3ViKCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGluaXRpYWxpemUgdGhpcyBjb21wb25lbnRzIGVudHJ5IGluIHRoZSBjb21wb25lbnRQcm9wc0FyclxuICAgIHRoaXMuY29tcG9uZW50UHJvcHNBcnJbdGhlQ29tcElEXSA9IHt9O1xuXG4gICAgdGhpcy5hZGRGb3JtRmllbGQoaW5Db21wKTtcblxuICAgIC8vIHJldHVybiBvYmplY3Qgd2l0aCBjb21wSUQgYW5kIHVuc3Vic2NyaWJlLi4uXG4gICAgcmV0dXJuIHJldHVybk9iamVjdDtcbiAgfVxuXG4gIGFkZEZvcm1GaWVsZChpbkNvbXApIHtcbiAgICBpbkNvbXAucENvbm4kPy5hZGRGb3JtRmllbGQoKTtcbiAgfVxuXG4gIHJlbW92ZUZvcm1GaWVsZChpbkNvbXApIHtcbiAgICBpZiAoaW5Db21wLnBDb25uJD8ucmVtb3ZlRm9ybUZpZWxkKSB7XG4gICAgICBpbkNvbXAucENvbm4kPy5yZW1vdmVGb3JtRmllbGQoKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbXBvbmVudCdzIGVudHJ5IGluIF9fX2NvbXBvbmVudFByb3BzQXJyX19fIGlzXG4gIC8vICB0aGUgc2FtZSBhcyB0aGUgaW5Db21wUHJvcHMgcGFzc2VkIGluLlxuICAvLyAgQXMgYSBzaWRlIGVmZmVjdCwgdXBkYXRlIHRoZSBjb21wb25lbnQncyBlbnRyeSBpbiBjb21wb25lbnRQcm9wc0FyclxuICAvLyAgTk9URTogSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBpbmNvbWluZyBjb21wb25lbnQgaGFzIHRoZSBmb2xsb3dpbmc6XG4gIC8vICAqIGEgYnJpZGdlQ29tcG9uZW50SUQgPHN0cmluZz4gcHJvcGVydHkgLSB1c2VkIGFzIGxvb2t1cCBrZXkgaW4gY29tcG9uZW50UHJvcHNBcnJcbiAgLy8gICogYSBwQ29ubiQgPD8+IHByb3BlcnR5IC0gdXNlZCB0byBhY2Nlc3MgZnVuY3Rpb25zIGFjY2Vzc2VkIGluIGdldENvbXBvbmVudFByb3BzXG4gIC8vIFJldHVybiB0cnVlOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSBkaWZmZXJlbnQgYW5kIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgLy8gUmV0dXJuIGZhbHNlOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSB0aGUgc2FtZSBhbmQgdGhlIGNvbXBvbmVudCBkb2Vzbid0IG5lZWQgdG8gdXBkYXRlIChyZS1yZW5kZXIpXG4gIC8vICBPbiBiYWQgaW5wdXQsIHJldHVybiBmYWxzZTtcbiAgLyoqXG4gICAqIFJldHVybnMgKip0cnVlKiogaWYgdGhlIGNvbXBvbmVudCdzIGVudHJ5IGluIF9fX2NvbXBvbmVudFByb3BzQXJyX19fIGlzXG4gICAqIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGN1cnJlbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21wb25lbnQgKF9fX2luQ29tcF9fXykgcGFzc2VkIGluLlxuICAgKiBBcyBhIHNpZGUgZWZmZWN0LCB0aGUgY29tcG9uZW50J3MgZW50cnkgaW4gX19fY29tcG9uZW50UHJvcHNBcnJfX18gaXMgdXBkYXRlZC5cbiAgICogKipOb3RlKio6IEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgaW5jb21pbmcgY29tcG9uZW50IGhhcyB0aGUgZm9sbG93aW5nOlxuICAgKiAoYSkgYSBicmlkZ2VDb21wb25lbnRJRCBfc3RyaW5nXyBwcm9wZXJ0eSB1c2VkIGFzIGxvb2t1cCBrZXkgaW4gX19fY29tcG9uZW50UHJvcHNBcnJfX19cbiAgICogYW5kIChiKSBhIF9fX3BDb25uJF9fXyBwcm9wZXJ0eSB1c2VkIHRvIGFjY2VzcyBmdW5jdGlvbnMgY2FsbGVkIGluIF9fX2dldENvbXBvbmVudFByb3BzX19fXG4gICAqXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCBhc2tpbmcgaWYgaXQgc2hvdWxkIHVwZGF0ZSBpdHNlbGZcbiAgICogQHJldHVybnMgUmV0dXJuICoqdHJ1ZSoqOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSBkaWZmZXJlbnQgYW5kIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcikuXG4gICAqIFJldHVybiAqKmZhbHNlKio6IG1lYW5zIHRoZSBjb21wb25lbnQgcHJvcHMgYXJlIHRoZSBzYW1lIGFuZCB0aGUgY29tcG9uZW50IGRvZXNuJ3QgbmVlZCB0byB1cGRhdGUgKHJlLXJlbmRlcikuXG4gICAqIElmIHRoZSAqKippbkNvbXAqKiogaW5wdXQgaXMgYmFkLCBmYWxzZSBpcyBhbHNvIHJldHVybmVkLlxuICAgKi9cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKGluQ29tcCk6IGJvb2xlYW4ge1xuICAgIC8vIGNvbnN0IGJTaG93TG9nZ2luZyA9IGZhbHNlO1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG4gICAgLy8gY2hlY2sgZm9yIHJlYXNvbmFibGUgaW5wdXRcbiAgICBpZiAoVXRpbHMuaXNFbXB0eU9iamVjdChpbkNvbXApKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHNob3VsZENvbXBvbmVudFVwZGF0ZTogaW5Db21wOiAke0pTT04uc3RyaW5naWZ5KGluQ29tcCl9YCk7XG4gICAgICByZXR1cm4gYlJldDtcbiAgICB9XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLnZhbGlkYXRlTWVzc2FnZSAmJiB1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3QgaGF2ZSBhIHZhbGlkYXRlTWVzc2FnZSBwcm9wZXJ0eS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wSUQgPSB0aGlzLmdldENvbXBvbmVudElEKGluQ29tcCk7XG5cbiAgICBjb25zdCBjdXJyZW50UHJvcHM6IGFueSA9IHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXTtcbiAgICBjb25zdCBjdXJyZW50UHJvcHNBc1N0cjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByb3BzKTtcblxuICAgIGNvbnN0IGluY29taW5nUHJvcHM6IGFueSA9IHRoaXMuZ2V0Q29tcG9uZW50UHJvcHMoaW5Db21wKTtcblxuICAgIC8vIGlmIGhhdmUgcGFnZU1lc3NhZ2VzLCBhbmQgaXQgaXMgYmxhbmssIHJlbW92ZSBpdC4gIFRoaXMgY2F1c2VzIGlzc3VlcyBvZiBtYWtpbmcgaXQgYXBwZWFyXG4gICAgLy8gdGhhdCBhIHdpbGwgY2F1c2UgYW4gdXBkYXRlLCB3aGVuIHRoZXJlIGlzIG5vIGNoYW5nZVxuICAgIGlmICh0aGlzLmlzUGFnZU1lc3NhZ2VzRW1wdHkoaW5jb21pbmdQcm9wcykpIHtcbiAgICAgIGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLnBhZ2VNZXNzYWdlcyA9IGluY29taW5nUHJvcHMucGFnZU1lc3NhZ2VzO1xuICAgICAgZGVsZXRlIGluY29taW5nUHJvcHMucGFnZU1lc3NhZ2VzO1xuICAgIH1cblxuICAgIGlmIChpbmNvbWluZ1Byb3BzLmh0dHBNZXNzYWdlcykge1xuICAgICAgaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEuaHR0cE1lc3NhZ2VzID0gaW5jb21pbmdQcm9wcy5odHRwTWVzc2FnZXM7XG4gICAgICBpbmNvbWluZ1Byb3BzLmh0dHBNZXNzYWdlcyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNvbWluZ1Byb3BzQXNTdHI6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGluY29taW5nUHJvcHMpO1xuXG4gICAgYlJldCA9IGlzRXF1YWwgPyAhaXNFcXVhbChjdXJyZW50UHJvcHMsIGluY29taW5nUHJvcHMpIDogY3VycmVudFByb3BzQXNTdHIgIT0gaW5jb21pbmdQcm9wc0FzU3RyO1xuXG4gICAgLy8gQmVsb3cgcGllY2Ugb2YgY29kZSBpcyBuZWVkZWQgdG8gcmUtcmVuZGVyIHRoZSBjb21wb25lbnQgc2luY2Ugd2Ugd2FubmEgZXZhbHVhdGUgdGhlIFZpc2liaWxpdHkgZXhwcmVzc2lvbiB3aXRoaW4gVmlldyBjb21wb25lbnQgaW4gc3VjaCBjYXNlc1xuICAgIGlmIChpbkNvbXAucENvbm4kLm1ldGEuY29uZmlnLmNvbnRleHQ/Lmxlbmd0aCA+IDAgJiYgaW5Db21wLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCkubGVuZ3RoID4gJ2Nhc2VJbmZvLmNvbnRlbnQnLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTm93IHVwZGF0ZSB0aGUgZW50cnkgaW4gY29tcG9uZW50UHJvcHNBcnIgd2l0aCB0aGUgaW5jb21pbmcgdmFsdWUgc29cbiAgICAvLyAgd2UgY2FuIGNvbXBhcmUgYWdhaW5zdCB0aGF0IG5leHQgdGltZS4uLlxuICAgIHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXSA9IGluY29taW5nUHJvcHM7XG4gICAgY29uc3QgdmFsaWRhdGVtZXNzYWdlID0gaW5jb21pbmdQcm9wcy52YWxpZGF0ZW1lc3NhZ2UgPT09IHVuZGVmaW5lZCA/ICcnIDogdGhpcy51dGlscy5odG1sRGVjb2RlKGluY29taW5nUHJvcHMudmFsaWRhdGVtZXNzYWdlKTtcbiAgICAvLyBhbmQgdXBkYXRlIHRoZSBjb21wb25lbnQncyB2YWxpZGF0aW9uIG1lc3NhZ2UgKGlmIHVuZGVmaW5lZCwgaXQgc2hvdWxkIGJlIHNldCB0byBcIlwiKVxuICAgIGlmICh1bmRlZmluZWQgIT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgPSB2YWxpZGF0ZW1lc3NhZ2U7XG5cbiAgICAgIGlmIChpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gJycpIHtcbiAgICAgICAgLy8gaWYgaGF2ZSBhIHZhbGlkYXRlIG1lc3NhZ2UsIHR1cm4gb2ZmIHNwaW5uZXJcbiAgICAgICAgY29uc3QgdGltZXIgPSBpbnRlcnZhbCgxMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuXG4gICAgICAgICAgdGltZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHNFcnJvck1lc3NhZ2UgPSBjdXJyZW50UHJvcHMgJiYgY3VycmVudFByb3BzLmxhYmVsID8gY3VycmVudFByb3BzLmxhYmVsLmNvbmNhdCgnIC0gJykgOiAnJztcbiAgICAgICAgc0Vycm9yTWVzc2FnZSA9IHNFcnJvck1lc3NhZ2UuY29uY2F0KGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSk7XG4gICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCd1cGRhdGUnLCBzRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5Db21wLnZhbGlkYXRlTWVzc2FnZSA9IHZhbGlkYXRlbWVzc2FnZTtcbiAgICB9XG5cbiAgICBpZiAoYlJldCAmJiBjb21wSUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYlJldCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKCBgQW5ndWxhclBDb25uZWN0IGNvbXBvbmVudCAke2NvbXBJRH0gLSAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfSAtIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJHtiUmV0fWApO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcm9wczogXCIgKyBjdXJyZW50UHJvcHNBc1N0cik7XG5cbiAgICBpZiAoYlJldCkge1xuICAgICAgLy8gY29uc29sZS5sb2coYCoqKiogY2hhbmdlIGZvcjogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcm9wczogXCIgKyBjdXJyZW50UHJvcHNBc1N0cik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcImluY29taW5nIHByb3BzOiBcIiArIGluY29taW5nUHJvcHNBc1N0cik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgICAgICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9OiBzaG91bGRDb21wb25lbnRVcGRhdGUgcmV0dXJuaW5nOiAke2JSZXR9LCBjb21wSWQ6ICR7Y29tcElEfWAgKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCBgICAgIFVwZGF0aW5nIHdpdGggY29tcG9uZW50UHJvcHMgZm9yICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9OiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXSl9YCk7XG4gICAgICAvLyBjb25zb2xlLmxvZyggYCAgICAgICAgICBhbmQgdmFsaWRhdGVNZXNzYWdlOiAke2luQ29tcC52YWxpZGF0ZU1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIC8vIGVsc2UgaWYgKGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lLmluZGV4T2YoXCJWaWV3XCIpID49IDAgfHwgaW5Db21wLmNvbnN0cnVjdG9yLm5hbWUuaW5kZXhPZihcIlJvb3RcIikgPj0gMCkge1xuICAgIC8vICAgY29uc29sZS5sb2coXCJubyBjaGFuZ2VcIik7XG4gICAgLy8gICBjb25zb2xlLmxvZyhcImN1cnJlbnQgcHJvcHM6IFwiICsgY3VycmVudFByb3BzQXNTdHIpO1xuICAgIC8vICAgY29uc29sZS5sb2coXCJpbmNvbWluZyBwcm9wczogXCIgKyBpbmNvbWluZ1Byb3BzQXNTdHIpO1xuICAgIC8vICAgY29uc29sZS5sb2coYCAgICAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogc2hvdWxkQ29tcG9uZW50VXBkYXRlIHJldHVybmluZzogJHtiUmV0fSwgY29tcElkOiAke2NvbXBJRH1gICk7XG5cbiAgICAvLyB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgICAgICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9OiBzaG91bGRDb21wb25lbnRVcGRhdGUgcmV0dXJuaW5nOiAke2JSZXR9YCk7XG5cbiAgICByZXR1cm4gYlJldDtcbiAgfVxuXG4gIGlzUGFnZU1lc3NhZ2VzRW1wdHkoaW5jb21pbmdQcm9wcykge1xuICAgIHJldHVybiBpbmNvbWluZ1Byb3BzLnBhZ2VNZXNzYWdlcyAmJiBpbmNvbWluZ1Byb3BzLnBhZ2VNZXNzYWdlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogQ2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGVuY291bnRlcmVkIGEgY2hhbmdlIGV2ZW50XG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCBjYWxsaW5nIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudFxuICAgKi9cbiAgY2hhbmdlSGFuZGxlcihpbkNvbXAsIGV2ZW50KSB7XG4gICAgY29uc3QgYkxvZ2dpbmcgPSBmYWxzZTtcbiAgICBpZiAoYkxvZ2dpbmcpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBBbmd1bGFyUENvbm5lY3QuY2hhbmdlSGFuZGxlcmApO1xuICAgIH1cbiAgICAvLyBjaGVjayBmb3IgcmVhc29uYWJsZSBpbnB1dFxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcCB8fCBVdGlscy5pc0VtcHR5T2JqZWN0KGluQ29tcCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gY2hhbmdlSGFuZGxlcjogaW5Db21wOiAke0pTT04uc3RyaW5naWZ5KGluQ29tcCl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcENvbm5lY3QgPSBpbkNvbXAucENvbm4kO1xuICAgIGlmICh1bmRlZmluZWQgPT09IHBDb25uZWN0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIGNoYW5nZUhhbmRsZXI6IGluQ29tcC5wQ29ubiQ6ICR7cENvbm5lY3R9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgb3V0IGVycm9yc1xuICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdkaXNtaXNzJywgJycpO1xuXG4gICAgcENvbm5lY3QuZ2V0QWN0aW9uc0FwaSgpLmNoYW5nZUhhbmRsZXIocENvbm5lY3QsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW4gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgZW5jb3VudGVyZWQgYW4gZXZlbnQgKHN1Y2ggYXMgYmx1cilcbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IGNhbGxpbmcgdGhlIGV2ZW50XG4gICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnRcbiAgICovXG4gIGV2ZW50SGFuZGxlcihpbkNvbXAsIGV2ZW50KSB7XG4gICAgY29uc3QgYkxvZ2dpbmcgPSBmYWxzZTtcbiAgICBpZiAoYkxvZ2dpbmcpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBBbmd1bGFyUENvbm5lY3QuZXZlbnRIYW5kbGVyYCk7XG4gICAgfVxuICAgIC8vIGNoZWNrIGZvciByZWFzb25hYmxlIGlucHV0XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wIHx8IFV0aWxzLmlzRW1wdHlPYmplY3QoaW5Db21wKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBldmVudEhhbmRsZXI6IGluQ29tcDogJHtKU09OLnN0cmluZ2lmeShpbkNvbXApfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBDb25uZWN0ID0gaW5Db21wLnBDb25uJDtcbiAgICBpZiAodW5kZWZpbmVkID09PSBwQ29ubmVjdCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBldmVudEhhbmRsZXI6IGluQ29tcC5wQ29ubiQ6ICR7cENvbm5lY3R9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcENvbm5lY3QuZ2V0QWN0aW9uc0FwaSgpLmV2ZW50SGFuZGxlcihwQ29ubmVjdCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIEEgaGFuZGxlIHRvIHRoZSBhcHBsaWNhdGlvbidzIHN0b3JlXG4gICAqL1xuICBnZXRTdG9yZSgpIHtcbiAgICBpZiAodGhpcy50aGVTdG9yZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy50aGVTdG9yZSA9IFBDb3JlLmdldFN0b3JlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRoZVN0b3JlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBiTG9nTXNnIElmIHRydWUsIHdpbGwgd3JpdGUgdGhlIHN0cmluZ2lmaWVkIHN0YXRlIHRvIHRoZSBzdG9yZSBmb3IgZGVidWdnaW5nL2luc3BlY3Rpb25cbiAgICogQHBhcmFtIGluQ29tcCBJZiBzdXBwbGllZCwgdGhlIGNvbXBvbmVudCB0aGF0IGlzIHJlcXVlc3RpbmcgdGhlIHN0b3JlJ3Mgc3RhdGVcbiAgICogQHJldHVybnMgQSBoYW5kbGUgdG8gdGhlIF9fc3RhdGVfXyBvZiBhcHBsaWNhdGlvbidzIHN0b3JlXG4gICAqL1xuICBnZXRTdGF0ZShiTG9nTXNnOiBib29sZWFuID0gZmFsc2UsIGluQ29tcDogYW55ID0gbnVsbCkge1xuICAgIGNvbnN0IHRoZVN0YXRlOiBvYmplY3QgPSB0aGlzLmdldFN0b3JlKCkuZ2V0U3RhdGUoKTtcbiAgICBpZiAoYkxvZ01zZykge1xuICAgICAgY29uc3QgdGhlQ29tcE5hbWU6IHN0cmluZyA9IGluQ29tcCA/IGAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogYCA6ICcnO1xuICAgICAgY29uc29sZS5sb2coYCR7dGhlQ29tcE5hbWV9IFN0b3JlIHN0YXRlOiAke0pTT04uc3RyaW5naWZ5KHRoZVN0YXRlKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoZVN0YXRlO1xuICB9XG5cbiAgLy8gcHJvY2Vzc0FjdGlvbnMgLSBjYXJyaWVkIG92ZXIgZnJvbSBQQ29ubmVjdEhPQyBpbml0aWFsaXplXG4gIC8qKlxuICAgKiAgcHJvY2Vzc0FjdGlvbnMgZXhwb3NlcyBhbGwgYWN0aW9ucyBpbiB0aGUgbWV0YWRhdGEuXG4gICAqICBBdHRhY2hlcyBjb21tb24gaGFuZGxlciAoZXZlbnRIYW5kbGVyKSBmb3IgYWxsIGFjdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NBY3Rpb25zKGluQ29tcCkge1xuICAgIGNvbnN0IHBDb25uZWN0ID0gaW5Db21wLnBDb25uJDtcbiAgICBpZiAodW5kZWZpbmVkID09PSBwQ29ubmVjdCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBwcm9jZXNzQWN0aW9uczogcENvbm4kOiAke3BDb25uZWN0fSBmcm9tIGNvbXBvbmVudDogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaW5Db21wLnBDb25uJC5pc0VkaXRhYmxlKCkpIHtcbiAgICAgIGluQ29tcC5wQ29ubiQuc2V0QWN0aW9uKCdvbkNoYW5nZScsIHRoaXMuY2hhbmdlSGFuZGxlci5iaW5kKHRoaXMpKTtcbiAgICAgIGluQ29tcC5wQ29ubiQuc2V0QWN0aW9uKCdvbkJsdXInLCB0aGlzLmV2ZW50SGFuZGxlci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,114 +0,0 @@
1
- import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { getComponentFromMap } from '../helpers/sdk_component_map';
4
- import { ErrorBoundaryComponent } from '../../_components/infra/error-boundary/error-boundary.component';
5
- import * as i0 from "@angular/core";
6
- const componentsRequireDisplayOnlyFAProp = [
7
- 'HybridViewContainer',
8
- 'ModalViewContainer',
9
- 'ViewContainer',
10
- 'RootContainer',
11
- 'View',
12
- 'CaseView'
13
- ];
14
- export class ComponentMapperComponent {
15
- constructor() {
16
- this.isInitialized = false;
17
- this.name = '';
18
- this.errorMsg = '';
19
- }
20
- ngOnInit() {
21
- this.loadComponent();
22
- this.isInitialized = true;
23
- }
24
- ngOnChanges(changes) {
25
- const { name } = changes;
26
- if (name) {
27
- const { previousValue, currentValue } = name;
28
- if (previousValue && previousValue !== currentValue) {
29
- this.loadComponent();
30
- }
31
- }
32
- else if (this.isInitialized) {
33
- this.bindInputProps();
34
- }
35
- }
36
- loadComponent() {
37
- const component = getComponentFromMap(this.name);
38
- if (this.dynamicComponent) {
39
- this.dynamicComponent.clear();
40
- this.componentRef = this.dynamicComponent.createComponent(component);
41
- if (component === ErrorBoundaryComponent) {
42
- this.componentRef.instance.message = this.errorMsg;
43
- }
44
- else {
45
- this.bindInputProps();
46
- this.bindOutputEvents();
47
- }
48
- }
49
- }
50
- bindInputProps() {
51
- try {
52
- if (this.props) {
53
- const propsKeys = Object.keys(this.props);
54
- const propsValues = Object.values(this.props);
55
- for (let i = 0; i < propsKeys.length; i++) {
56
- if (propsValues[i] !== undefined) {
57
- // We'll set 'displayOnlyFA$' prop only to the components which really need it
58
- // Eventual plan is to get rid of this particular prop
59
- if (propsKeys[i] === 'displayOnlyFA$' && !componentsRequireDisplayOnlyFAProp.includes(this.name)) {
60
- // eslint-disable-next-line no-continue
61
- continue;
62
- }
63
- this.componentRef?.setInput(propsKeys[i], propsValues[i]);
64
- }
65
- }
66
- }
67
- }
68
- catch (e) {
69
- console.log(e);
70
- }
71
- }
72
- bindOutputEvents() {
73
- try {
74
- if (this.outputEvents) {
75
- const propsKeys = Object.keys(this.outputEvents);
76
- const propsValues = Object.values(this.outputEvents);
77
- for (let i = 0; i < propsKeys.length; i++) {
78
- this.componentRef?.instance[propsKeys[i]].subscribe(value => {
79
- const callbackFn = propsValues[i].bind(this.parent);
80
- callbackFn(value);
81
- });
82
- }
83
- }
84
- }
85
- catch (e) {
86
- console.log(e);
87
- }
88
- }
89
- ngOnDestroy() {
90
- if (this.componentRef) {
91
- this.componentRef.destroy();
92
- }
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentMapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ComponentMapperComponent, isStandalone: true, selector: "component-mapper", inputs: { name: "name", props: "props", errorMsg: "errorMsg", outputEvents: "outputEvents", parent: "parent" }, viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: ["dynamicComponent"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #dynamicComponent></ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentMapperComponent, decorators: [{
98
- type: Component,
99
- args: [{ selector: 'component-mapper', standalone: true, imports: [CommonModule, ErrorBoundaryComponent], template: "<ng-container #dynamicComponent></ng-container>\n" }]
100
- }], propDecorators: { dynamicComponent: [{
101
- type: ViewChild,
102
- args: ['dynamicComponent', { read: ViewContainerRef, static: true }]
103
- }], name: [{
104
- type: Input
105
- }], props: [{
106
- type: Input
107
- }], errorMsg: [{
108
- type: Input
109
- }], outputEvents: [{
110
- type: Input
111
- }], parent: [{
112
- type: Input
113
- }] } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBK0MsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7QUFFekcsTUFBTSxrQ0FBa0MsR0FBYTtJQUNuRCxxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixlQUFlO0lBQ2YsTUFBTTtJQUNOLFVBQVU7Q0FDWCxDQUFDO0FBU0YsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVlTLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXBCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVixhQUFRLEdBQUcsRUFBRSxDQUFDO0tBa0Z4QjtJQTdFQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8s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QUFDLEVBQUU7d0JBQzFELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7K0dBMUZVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDZSQUNJLGdCQUFnQixnRUN0QnpELG1EQUNBLHlERGtCWSxZQUFZOzs0RkFFWCx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzs4QkFJeEMsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTTlELElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50RnJvbU1hcCB9IGZyb20gJy4uL2hlbHBlcnMvc2RrX2NvbXBvbmVudF9tYXAnO1xuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2luZnJhL2Vycm9yLWJvdW5kYXJ5L2Vycm9yLWJvdW5kYXJ5LmNvbXBvbmVudCc7XG5cbmNvbnN0IGNvbXBvbmVudHNSZXF1aXJlRGlzcGxheU9ubHlGQVByb3A6IHN0cmluZ1tdID0gW1xuICAnSHlicmlkVmlld0NvbnRhaW5lcicsXG4gICdNb2RhbFZpZXdDb250YWluZXInLFxuICAnVmlld0NvbnRhaW5lcicsXG4gICdSb290Q29udGFpbmVyJyxcbiAgJ1ZpZXcnLFxuICAnQ2FzZVZpZXcnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb21wb25lbnQtbWFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEVycm9yQm91bmRhcnlDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudE1hcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdkeW5hbWljQ29tcG9uZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIGR5bmFtaWNDb21wb25lbnQ6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbmFtZSA9ICcnO1xuICBASW5wdXQoKSBwcm9wczogYW55O1xuICBASW5wdXQoKSBlcnJvck1zZyA9ICcnO1xuICBASW5wdXQoKSBvdXRwdXRFdmVudHM6IGFueTtcbiAgLy8gcGFyZW50IHByb3AgaXMgY29tcHVsc29yeSB3aGVuIG91dHB1dEV2ZW50cyBpcyBwcmVzZW50XG4gIEBJbnB1dCgpIHBhcmVudDogYW55O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBjaGFuZ2VzO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBjb25zdCB7IHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSB9ID0gbmFtZTtcbiAgICAgIGlmIChwcmV2aW91c1ZhbHVlICYmIHByZXZpb3VzVmFsdWUgIT09IGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5iaW5kSW5wdXRQcm9wcygpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRDb21wb25lbnQoKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gZ2V0Q29tcG9uZW50RnJvbU1hcCh0aGlzLm5hbWUpO1xuXG4gICAgaWYgKHRoaXMuZHluYW1pY0NvbXBvbmVudCkge1xuICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50LmNsZWFyKCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuZHluYW1pY0NvbXBvbmVudC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcblxuICAgICAgaWYgKGNvbXBvbmVudCA9PT0gRXJyb3JCb3VuZGFyeUNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tZXNzYWdlID0gdGhpcy5lcnJvck1zZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmluZElucHV0UHJvcHMoKTtcbiAgICAgICAgdGhpcy5iaW5kT3V0cHV0RXZlbnRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYmluZElucHV0UHJvcHMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICAgIGNvbnN0IHByb3BzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcHMpO1xuICAgICAgICBjb25zdCBwcm9wc1ZhbHVlcyA9IE9iamVjdC52YWx1ZXModGhpcy5wcm9wcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHByb3BzVmFsdWVzW2ldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFdlJ2xsIHNldCAnZGlzcGxheU9ubHlGQSQnIHByb3Agb25seSB0byB0aGUgY29tcG9uZW50cyB3aGljaCByZWFsbHkgbmVlZCBpdFxuICAgICAgICAgICAgLy8gRXZlbnR1YWwgcGxhbiBpcyB0byBnZXQgcmlkIG9mIHRoaXMgcGFydGljdWxhciBwcm9wXG4gICAgICAgICAgICBpZiAocHJvcHNLZXlzW2ldID09PSAnZGlzcGxheU9ubHlGQSQnICYmICFjb21wb25lbnRzUmVxdWlyZURpc3BsYXlPbmx5RkFQcm9wLmluY2x1ZGVzKHRoaXMubmFtZSkpIHtcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KHByb3BzS2V5c1tpXSwgcHJvcHNWYWx1ZXNbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH1cbiAgfVxuXG4gIGJpbmRPdXRwdXRFdmVudHMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLm91dHB1dEV2ZW50cykge1xuICAgICAgICBjb25zdCBwcm9wc0tleXMgPSBPYmplY3Qua2V5cyh0aGlzLm91dHB1dEV2ZW50cyk7XG4gICAgICAgIGNvbnN0IHByb3BzVmFsdWVzOiBhbnkgPSBPYmplY3QudmFsdWVzKHRoaXMub3V0cHV0RXZlbnRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wc0tleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2VbcHJvcHNLZXlzW2ldXS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2tGbiA9IHByb3BzVmFsdWVzW2ldLmJpbmQodGhpcy5wYXJlbnQpO1xuICAgICAgICAgICAgY2FsbGJhY2tGbih2YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI2R5bmFtaWNDb21wb25lbnQ+PC9uZy1jb250YWluZXI+XG4iXX0=