@eo-sdk/client 10.0.0-beta.4 → 10.0.0-beta.5

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 (254) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/dashboard.component.d.ts +6 -7
  3. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  4. package/app/eo-client/favorite-state/favorite-state.component.d.ts +7 -8
  5. package/app/eo-client/favorite-state/favorite-state.component.d.ts.map +1 -1
  6. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +8 -10
  7. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  8. package/app/eo-client/login/login.component.d.ts +4 -2
  9. package/app/eo-client/login/login.component.d.ts.map +1 -1
  10. package/app/eo-client/notifications-state/notifications-state.component.d.ts +9 -11
  11. package/app/eo-client/notifications-state/notifications-state.component.d.ts.map +1 -1
  12. package/app/eo-client/object-state/object-state/object-state.component.d.ts +10 -11
  13. package/app/eo-client/object-state/object-state/object-state.component.d.ts.map +1 -1
  14. package/app/eo-client/prepare-state/prepare-state/prepare-state.component.d.ts +8 -9
  15. package/app/eo-client/prepare-state/prepare-state/prepare-state.component.d.ts.map +1 -1
  16. package/app/eo-client/process-state/process-state.component.d.ts +8 -10
  17. package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
  18. package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts +5 -6
  19. package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts.map +1 -1
  20. package/app/eo-client/result-state/result-state.component.d.ts +3 -5
  21. package/app/eo-client/result-state/result-state.component.d.ts.map +1 -1
  22. package/app/eo-client/settings/settings.component.d.ts +6 -7
  23. package/app/eo-client/settings/settings.component.d.ts.map +1 -1
  24. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts +8 -10
  25. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
  26. package/app/eo-client/version-state/version-state.component.d.ts +5 -7
  27. package/app/eo-client/version-state/version-state.component.d.ts.map +1 -1
  28. package/app/eo-framework/accordion/accordion.module.d.ts +1 -2
  29. package/app/eo-framework/accordion/accordion.module.d.ts.map +1 -1
  30. package/app/eo-framework/actions/action-menu/action-menu.component.d.ts +4 -5
  31. package/app/eo-framework/actions/action-menu/action-menu.component.d.ts.map +1 -1
  32. package/app/eo-framework/actions/action.module.d.ts +11 -10
  33. package/app/eo-framework/actions/action.module.d.ts.map +1 -1
  34. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +3 -2
  35. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts.map +1 -1
  36. package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts +9 -13
  37. package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts.map +1 -1
  38. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +3 -4
  39. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts.map +1 -1
  40. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  41. package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts +1 -2
  42. package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts.map +1 -1
  43. package/app/eo-framework/app-shell/app-shell.module.d.ts +18 -20
  44. package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
  45. package/app/eo-framework/app-shell/index.d.ts +0 -1
  46. package/app/eo-framework/app-shell/index.d.ts.map +1 -1
  47. package/app/eo-framework/eo-framework.module.d.ts +37 -38
  48. package/app/eo-framework/eo-framework.module.d.ts.map +1 -1
  49. package/app/eo-framework/form-elements/date/date.component.d.ts +0 -2
  50. package/app/eo-framework/form-elements/date/date.component.d.ts.map +1 -1
  51. package/app/eo-framework/form-elements/form-elements.module.d.ts +9 -18
  52. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  53. package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +1 -0
  54. package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts.map +1 -1
  55. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -2
  56. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
  57. package/app/eo-framework/grid/grid.component.d.ts +7 -8
  58. package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
  59. package/app/eo-framework/grid/grid.module.d.ts +7 -8
  60. package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
  61. package/app/eo-framework/inbox-details/inbox-details.component.d.ts +1 -2
  62. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  63. package/app/eo-framework/index.d.ts +0 -4
  64. package/app/eo-framework/index.d.ts.map +1 -1
  65. package/app/eo-framework/media/media.component.d.ts +4 -3
  66. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  67. package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +2 -3
  68. package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts.map +1 -1
  69. package/app/eo-framework/object-details/object-details.component.d.ts +5 -4
  70. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  71. package/app/eo-framework/object-details/object-details.module.d.ts +2 -1
  72. package/app/eo-framework/object-details/object-details.module.d.ts.map +1 -1
  73. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +2 -3
  74. package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
  75. package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts +10 -0
  76. package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts.map +1 -0
  77. package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +8 -3
  78. package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts.map +1 -1
  79. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -2
  80. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  81. package/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.d.ts +7 -2
  82. package/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.d.ts.map +1 -1
  83. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +28 -11
  84. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
  85. package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
  86. package/app/eo-framework/object-form/object-form/object-form.component.d.ts +1 -2
  87. package/app/eo-framework/object-form/object-form/object-form.component.d.ts.map +1 -1
  88. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  89. package/app/eo-framework/object-form/object-form.module.d.ts +9 -9
  90. package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -2
  91. package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
  92. package/app/eo-framework/prepare-details/prepare-details.component.d.ts +8 -9
  93. package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
  94. package/app/eo-framework/process/details/process-details.component.d.ts +7 -8
  95. package/app/eo-framework/process/details/process-details.component.d.ts.map +1 -1
  96. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +9 -11
  97. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts.map +1 -1
  98. package/app/eo-framework/result-list/result-list.component.d.ts +5 -6
  99. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  100. package/app/eo-framework/settings/settings.module.d.ts +3 -4
  101. package/app/eo-framework/settings/settings.module.d.ts.map +1 -1
  102. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +4 -5
  103. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
  104. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +2 -3
  105. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  106. package/app/eo-framework/ui/outside-click/outside-click.directive.d.ts +1 -2
  107. package/app/eo-framework/ui/outside-click/outside-click.directive.d.ts.map +1 -1
  108. package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts +0 -1
  109. package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts.map +1 -1
  110. package/app/eo-framework/util/index.d.ts +0 -1
  111. package/app/eo-framework/util/index.d.ts.map +1 -1
  112. package/app/eo-framework/util/util.module.d.ts +0 -1
  113. package/app/eo-framework/util/util.module.d.ts.map +1 -1
  114. package/app/eo-framework-core/layout/layout.service.d.ts +2 -26
  115. package/app/eo-framework-core/layout/layout.service.d.ts.map +1 -1
  116. package/app/eo-framework-core/pipes/locale-number.pipe.d.ts +2 -3
  117. package/app/eo-framework-core/pipes/locale-number.pipe.d.ts.map +1 -1
  118. package/assets/_default/i18n/de.json +2 -1
  119. package/assets/_default/i18n/en.json +7 -6
  120. package/assets/_default/svg/ic_add_document_file_as_new_version.svg +1 -0
  121. package/assets/_default/svg/ic_create_document.svg +1 -0
  122. package/assets/_default/svg/ic_create_document_in_folder.svg +1 -0
  123. package/esm2020/app/eo-client/about-state/about-state.component.mjs +5 -5
  124. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +17 -14
  125. package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +15 -14
  126. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +14 -11
  127. package/esm2020/app/eo-client/login/login.component.mjs +3 -3
  128. package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +16 -12
  129. package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +27 -23
  130. package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +12 -9
  131. package/esm2020/app/eo-client/process-state/process-state.component.mjs +6 -9
  132. package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +14 -11
  133. package/esm2020/app/eo-client/result-state/result-state.component.mjs +11 -8
  134. package/esm2020/app/eo-client/settings/settings.component.mjs +16 -12
  135. package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +16 -13
  136. package/esm2020/app/eo-client/version-state/version-state.component.mjs +13 -10
  137. package/esm2020/app/eo-framework/accordion/accordion.module.mjs +3 -7
  138. package/esm2020/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +3 -3
  139. package/esm2020/app/eo-framework/actions/action-menu/action-menu.component.mjs +15 -11
  140. package/esm2020/app/eo-framework/actions/action.module.mjs +5 -2
  141. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +5 -7
  142. package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +3 -3
  143. package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +2 -2
  144. package/esm2020/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +43 -48
  145. package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +2 -2
  146. package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +2 -2
  147. package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +16 -14
  148. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +7 -3
  149. package/esm2020/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +3 -5
  150. package/esm2020/app/eo-framework/app-shell/app-shell.module.mjs +1 -8
  151. package/esm2020/app/eo-framework/app-shell/index.mjs +1 -2
  152. package/esm2020/app/eo-framework/eo-framework.module.mjs +35 -43
  153. package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +2 -12
  154. package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +3 -3
  155. package/esm2020/app/eo-framework/form-elements/form-elements.module.mjs +28 -37
  156. package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +10 -6
  157. package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +3 -3
  158. package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +4 -5
  159. package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +2 -6
  160. package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
  161. package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
  162. package/esm2020/app/eo-framework/grid/grid.component.mjs +16 -12
  163. package/esm2020/app/eo-framework/grid/grid.module.mjs +1 -5
  164. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +16 -11
  165. package/esm2020/app/eo-framework/index.mjs +1 -5
  166. package/esm2020/app/eo-framework/media/media.component.mjs +31 -12
  167. package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +13 -10
  168. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +42 -30
  169. package/esm2020/app/eo-framework/object-details/object-details.module.mjs +7 -3
  170. package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +13 -9
  171. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +18 -0
  172. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +20 -6
  173. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +21 -22
  174. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +1 -1
  175. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +94 -32
  176. package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +6 -4
  177. package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +2 -3
  178. package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -5
  179. package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +2 -2
  180. package/esm2020/app/eo-framework/object-form/object-form.module.mjs +9 -10
  181. package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +15 -13
  182. package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +16 -14
  183. package/esm2020/app/eo-framework/process/details/process-details.component.mjs +16 -12
  184. package/esm2020/app/eo-framework/process-form/process-form.component.mjs +2 -2
  185. package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +25 -17
  186. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +18 -14
  187. package/esm2020/app/eo-framework/settings/settings.module.mjs +1 -5
  188. package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +17 -13
  189. package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +12 -8
  190. package/esm2020/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +2 -2
  191. package/esm2020/app/eo-framework/ui/outside-click/outside-click.directive.mjs +11 -8
  192. package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +3 -6
  193. package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +3 -3
  194. package/esm2020/app/eo-framework/util/index.mjs +1 -2
  195. package/esm2020/app/eo-framework/util/util.module.mjs +2 -3
  196. package/esm2020/app/eo-framework-core/layout/layout.service.mjs +61 -63
  197. package/esm2020/app/eo-framework-core/pipes/locale-number.pipe.mjs +11 -8
  198. package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +8 -8
  199. package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +2 -6
  200. package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +14 -16
  201. package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +15 -12
  202. package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +2 -6
  203. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +3 -3
  204. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +157 -165
  205. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  206. package/fesm2015/eo-sdk-client.mjs +15791 -16532
  207. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  208. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +157 -165
  209. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  210. package/fesm2020/eo-sdk-client.mjs +15665 -16407
  211. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  212. package/package.json +4 -5
  213. package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +1 -1
  214. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +1 -1
  215. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +10 -8
  216. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +1 -1
  217. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +1 -0
  218. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +1 -1
  219. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +1 -1
  220. package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -4
  221. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +1 -1
  222. package/scss/_main.scss +1 -1
  223. package/scss/_mixins.scss +6 -6
  224. package/styles.css +1 -1
  225. package/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.d.ts +0 -24
  226. package/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.d.ts.map +0 -1
  227. package/app/eo-framework/split/index.d.ts +0 -5
  228. package/app/eo-framework/split/index.d.ts.map +0 -1
  229. package/app/eo-framework/split/split/split.component.d.ts +0 -83
  230. package/app/eo-framework/split/split/split.component.d.ts.map +0 -1
  231. package/app/eo-framework/split/split-area/split-area.component.d.ts +0 -37
  232. package/app/eo-framework/split/split-area/split-area.component.d.ts.map +0 -1
  233. package/app/eo-framework/split/split-gutter/split-gutter.directive.d.ts +0 -21
  234. package/app/eo-framework/split/split-gutter/split-gutter.directive.d.ts.map +0 -1
  235. package/app/eo-framework/split/split.module.d.ts +0 -12
  236. package/app/eo-framework/split/split.module.d.ts.map +0 -1
  237. package/app/eo-framework/undock-split/undock-split.component.d.ts +0 -28
  238. package/app/eo-framework/undock-split/undock-split.component.d.ts.map +0 -1
  239. package/app/eo-framework/undock-split/undock-split.service.d.ts +0 -43
  240. package/app/eo-framework/undock-split/undock-split.service.d.ts.map +0 -1
  241. package/app/eo-framework/undock-split/undock-state.interface.d.ts +0 -6
  242. package/app/eo-framework/undock-split/undock-state.interface.d.ts.map +0 -1
  243. package/app/eo-framework/util/unsubscribe/unsubscribe.component.d.ts +0 -11
  244. package/app/eo-framework/util/unsubscribe/unsubscribe.component.d.ts.map +0 -1
  245. package/esm2020/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.mjs +0 -67
  246. package/esm2020/app/eo-framework/split/index.mjs +0 -5
  247. package/esm2020/app/eo-framework/split/split/split.component.mjs +0 -373
  248. package/esm2020/app/eo-framework/split/split-area/split-area.component.mjs +0 -131
  249. package/esm2020/app/eo-framework/split/split-gutter/split-gutter.directive.mjs +0 -73
  250. package/esm2020/app/eo-framework/split/split.module.mjs +0 -28
  251. package/esm2020/app/eo-framework/undock-split/undock-split.component.mjs +0 -89
  252. package/esm2020/app/eo-framework/undock-split/undock-split.service.mjs +0 -135
  253. package/esm2020/app/eo-framework/undock-split/undock-state.interface.mjs +0 -2
  254. package/esm2020/app/eo-framework/util/unsubscribe/unsubscribe.component.mjs +0 -23
@@ -19,6 +19,14 @@ export class PrepareService {
19
19
  this.preparedItems$ = this.preparedItemsSource.asObservable();
20
20
  this.preparedItemCountSource = new ReplaySubject(1);
21
21
  this.preparedItemCount$ = this.preparedItemCountSource.asObservable();
22
+ /**
23
+ * Creates a prepared item on the backed side.
24
+ *
25
+ * @param parentId The ID of the parent dms object to add the prepared item to
26
+ * @param childType The type of object to be created
27
+ * @returns Observable<any>
28
+ */
29
+ this.i = 0;
22
30
  }
23
31
  /**
24
32
  * Public Fetch Prepare items
@@ -37,14 +45,9 @@ export class PrepareService {
37
45
  this.preparedItemCountSource.next(this.preparedItemCount);
38
46
  });
39
47
  }
40
- /**
41
- * Creates a prepared item on the backed side.
42
- *
43
- * @param parentId The ID of the parent dms object to add the prepared item to
44
- * @param childType The type of object to be created
45
- * @returns Observable<any>
46
- */
47
48
  createPreparedItem(parentId, childType) {
49
+ console.log('tick');
50
+ this.i++;
48
51
  return this.backend
49
52
  .post(this.createPreparedItemPostUrl({
50
53
  parentId: parentId,
@@ -211,7 +214,7 @@ export class PrepareService {
211
214
  * @returns Observable<any>
212
215
  */
213
216
  uploadContent(preparedItemId, file) {
214
- const uri = `${this.backend.getServiceBase()}/prepare/${preparedItemId}/content.json?form=true&contentmeta=true`;
217
+ const uri = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/prepare/${preparedItemId}/content.json?form=true&contentmeta=true`;
215
218
  return this.uploadService
216
219
  .upload(uri, [file])
217
220
  .pipe(
@@ -247,7 +250,7 @@ export class PrepareService {
247
250
  *
248
251
  * @type string
249
252
  */
250
- uri = this.backend.getServiceBase() + this.createPreparedItemPostUrl({
253
+ uri = this.backend.getBaseWithContext(this.backend.getServiceBase()) + this.createPreparedItemPostUrl({
251
254
  parentId: null,
252
255
  createMany: !useBatchUpload
253
256
  });
@@ -257,7 +260,7 @@ export class PrepareService {
257
260
  * upload to dms object, means adding or replacing content file
258
261
  */
259
262
  const { referenceObject } = uploadTarget;
260
- uri = `${this.backend.getServiceBase()}/dms/${referenceObject.id}/contents?type=${referenceObject.type.name}`;
263
+ uri = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/dms/${referenceObject.id}/contents?type=${referenceObject.type.name}`;
261
264
  }
262
265
  else if (uploadTarget.type === UploadTarget.CONTEXT || uploadTarget.type === UploadTarget.CONTEXT_TREE) {
263
266
  /**
@@ -267,7 +270,7 @@ export class PrepareService {
267
270
  *
268
271
  * @type string
269
272
  */
270
- uri = this.backend.getServiceBase() + this.createPreparedItemPostUrl({
273
+ uri = this.backend.getBaseWithContext(this.backend.getServiceBase()) + this.createPreparedItemPostUrl({
271
274
  parentId: uploadTarget.referenceObject.id,
272
275
  createMany: !useBatchUpload,
273
276
  childType: uploadTarget.subFolder && uploadTarget.subFolder.data.type ? uploadTarget.subFolder.data.type : null
@@ -299,4 +302,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
299
302
  providedIn: 'root'
300
303
  }]
301
304
  }], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i2.UploadService }]; } });
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXZDLE9BQU8sRUFBYSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxZQUFZLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFFbkYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBaUI3RDs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQW9CLE9BQXVCLEVBQ3ZCLGFBQTRCO1FBRDVCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUnhDLHdCQUFtQixHQUFHLElBQUksYUFBYSxDQUFpQixDQUFDLENBQUMsQ0FBQztRQUM1RCxtQkFBYyxHQUErQixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHcEYsNEJBQXVCLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsdUJBQWtCLEdBQXVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUk1RixDQUFDO0lBRUQ7O09BRUc7SUFDSCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7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UyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNoSCxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0kseUJBQXlCLENBQUMsY0FBc0IsRUFBRSxLQUFjO1FBQ3JFLE1BQU0sR0FBRyxHQUFHLFlBQVksY0FBYyxVQUFVLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRyxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDUixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbEMsQ0FBQztJQUNOLENBQUM7OzJHQWpWVSxjQUFjOytHQUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZXJnZU1hcCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcbmltcG9ydCB7UHJlcGFyZWRJdGVtLCBQcmVwYXJlZEl0ZW1UZW1wbGF0ZX0gZnJvbSAnLi4vLi4vbW9kZWwvcHJlcGFyZWQtaXRlbS5tb2RlbCc7XG5pbXBvcnQge1VwbG9hZFNlcnZpY2V9IGZyb20gJy4uL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQge1VwbG9hZFRhcmdldH0gZnJvbSAnLi4vLi4vbW9kZWwvdXBsb2FkLXRhcmdldC5tb2RlbCc7XG5pbXBvcnQge1VwbG9hZEZpbGVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbC91cGxvYWQtZmlsZS1pdGVtLm1vZGVsJztcbmltcG9ydCB7SVByZXBhcmVDaGlsZFR5cGVzfSBmcm9tICcuL29iamVjdFR5cGVzLmludGVyZmFjZSc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkUG9zdFBhcmFtIHtcbiAgcGFyZW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBjcmVhdGUgb25lIFByZXBhcmVkSXRlbSB1c2luZyBtdWx0aXBsZSBmaWxlcyB1cGxvYWRlZCAoZmFsc2UpXG4gICAqIG9yIGNyZWF0aW5nIGEgUHJlcGFyZWRJdGVtIGZvciBlYWNoIGZpbGUgcG9zdGVkIHRvIHRoZSBVUkwgKHRydWUpXG4gICAqL1xuICBjcmVhdGVNYW55PzogYm9vbGVhbjtcbiAgY2hpbGRUeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgUHJlcGFyZSBTZXJ2aWNlc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcmVwYXJlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1zOiBQcmVwYXJlZEl0ZW1bXTtcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJlcGFyZWRJdGVtW10+KDEpO1xuICBwdWJsaWMgcHJlcGFyZWRJdGVtcyQ6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtW10+ID0gdGhpcy5wcmVwYXJlZEl0ZW1zU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcHJlcGFyZWRJdGVtQ291bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1Db3VudFNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHB1YmxpYyBwcmVwYXJlZEl0ZW1Db3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMucHJlcGFyZWRJdGVtQ291bnRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlKSB7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIEZldGNoIFByZXBhcmUgaXRlbXNcbiAgICovXG4gIHJlZnJlc2hQcmVwYXJlZEl0ZW1zQ291bnQoKSB7XG4gICAgdGhpcy5mZXRjaFByZXBhcmVkSXRlbXNDb3VudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIG51bWJlciBvZiBwcmVwYXJlZCBpdGVtcyBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIHByaXZhdGUgZmV0Y2hQcmVwYXJlZEl0ZW1zQ291bnQoKSB7XG4gICAgdGhpcy5iYWNrZW5kLmdldEpzb24oJy9wcmVwYXJlL3N0YXRlJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4gcmVzLmNvdW50KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtQ291bnQgPSByZXM7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtQ291bnRTb3VyY2UubmV4dCh0aGlzLnByZXBhcmVkSXRlbUNvdW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwcmVwYXJlZCBpdGVtIG9uIHRoZSBiYWNrZWQgc2lkZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudElkIFRoZSBJRCBvZiB0aGUgcGFyZW50IGRtcyBvYmplY3QgdG8gYWRkIHRoZSBwcmVwYXJlZCBpdGVtIHRvXG4gICAqIEBwYXJhbSBjaGlsZFR5cGUgVGhlIHR5cGUgb2Ygb2JqZWN0IHRvIGJlIGNyZWF0ZWRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBwdWJsaWMgY3JlYXRlUHJlcGFyZWRJdGVtKHBhcmVudElkOiBzdHJpbmcsIGNoaWxkVHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAucG9zdCh0aGlzLmNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwoe1xuICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQsXG4gICAgICAgIGNoaWxkVHlwZTogY2hpbGRUeXBlID8gY2hpbGRUeXBlIDogbnVsbFxuICAgICAgfSksIHt9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVQcmVwYXJlZEl0ZW1JbmRleERhdGEocHJlcGFyZWRJdGVtSWQsIGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAucHV0KCcvcHJlcGFyZS8nICsgcHJlcGFyZWRJdGVtSWQsIGRhdGEpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBVUkwgZm9yIGNyZWF0aW5nIGEgUHJlcGFyZWRJdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtcyBmb3IgZ2VuZXJhdGluZyBhcHByb3ByaWF0ZSB1cmkuXG4gICAqIEByZXR1cm5zIHN0cmluZyBBIFBPU1QgVVJMIGZvciBjcmVhdGluZyBQcmVwYXJlZEl0ZW1zXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlUHJlcGFyZWRJdGVtUG9zdFVybChwYXJhbXM6IFByZXBhcmVkUG9zdFBhcmFtKTogc3RyaW5nIHtcblxuICAgIGxldCB1cmwgPSBwYXJhbXMuY3JlYXRlTWFueSA/ICcvcHJlcGFyZS9jcmVhdGVtYW55JyA6ICcvcHJlcGFyZS9jcmVhdGUnO1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHVybCA9IFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHRoZSB1c2VycyBwcmVwYXJlZCBpdGVtcy5cbiAgICpcbiAgICogQHBhcmFtIG5vRm9ybXMgSWYgc2V0IHRvIHRydWUgdGhlIHByZXBhcmVkIGl0ZW1zIHdpbGwgYmUgZmV0Y2hlZCB3aXRob3V0IHRoZSBmb3JtIHdoaWNoIGlzIGZhc3RlclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPiBBIGNvbGxlY3Rpb24gb2YgcHJlcGFyZWQgaXRlbSBvYmplY3RzXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJlcGFyZWRJdGVtcyQobm9Gb3Jtcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPiB7XG4gICAgdGhpcy5mZXRjaFByZXBhcmVkSXRlbXMobm9Gb3Jtcykuc3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZWRJdGVtcyQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgUHJlcGFyZUl0ZW1zIGFuZCBmb3JtIHRoZW1cbiAgICpcbiAgICogQHBhcmFtIGJvb2xlYW4gbm9Gb3Jtc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPlxuICAgKi9cbiAgcHJpdmF0ZSBmZXRjaFByZXBhcmVkSXRlbXMobm9Gb3Jtcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPiB7XG4gICAgbGV0IHVyaSA9IChub0Zvcm1zKSA/ICcvcHJlcGFyZScgOiAnL3ByZXBhcmU/Zm9ybT10cnVlJztcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0SnNvbih1cmkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLm1hcChpID0+IG5ldyBQcmVwYXJlZEl0ZW0oaSkpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZmV0Y2hQcmVwYXJlZEl0ZW1zQ291bnQoKSksXG4gICAgICAgIHRhcCgocHJlcGFyZWRJdGVtczogUHJlcGFyZWRJdGVtW10pID0+IHRoaXMucHJlcGFyZWRJdGVtc1NvdXJjZS5uZXh0KHByZXBhcmVkSXRlbXMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdjcmVhdGVkJywgJ2Rlc2MnKSkpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcHJlcGFyZWQgaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbUlkIElEIG9mIHRoZSBpdGVtIHRvIGJlIHJlbW92ZWRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+IFNlcnZlciByZXNwb25zZVxuICAgKi9cbiAgZGVsZXRlUHJlcGFyZWRJdGVtKHByZXBhcmVkSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5kZWwoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5nZXRQcmVwYXJlZEl0ZW1zJCgpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBvYmplY3QgdHlwZXMgYWxsb3dlZCB0byBiZSBwbGFjZWQgZGlyZWN0bHkgYmVsb3cgcm9vdC5cbiAgICpcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPYmplY3RUeXBlW10+IEEgbGlzdCBvZiBzdXBwb3J0ZWQgb2JqZWN0IHR5cGVzXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJlcGFyZVJvb3RUeXBlcygpOiBPYnNlcnZhYmxlPE9iamVjdFR5cGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUoJy9wcmVwYXJlL3R5cGVzJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4gcmVzLnR5cGVzLm1hcCgodHlwZSkgPT4gbmV3IE9iamVjdFR5cGUodHlwZSkpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBhbGxvd2VkIGNoaWxkIG9iamVjdCB0eXBlcyBmb3IgYSBzZWxlY3RlZCBwYXJlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJlbnRJZCBUaGUgaWQgb2YgdGhlIHBhcmVudCBkbXMgb2JqZWN0IChjb250ZXh0IGZvbGRlcilcbiAgICogQHBhcmFtIHdpdGhDb250ZW50T25seSBJZiBzZXQgdG8gdHJ1ZSBvbmx5IGNoaWxkIHR5cGVzLCB0aGF0IHN1cHBvcnQgY29udGVudCBhcmUgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8SVByZXBhcmVDaGlsZFR5cGVzPiBBIGxpc3Qgb2Ygc3VwcG9ydGVkIG9iamVjdCB0eXBlc1xuICAgKi9cbiAgcHVibGljIGdldFByZXBhcmVDaGlsZFR5cGVzKHBhcmVudElkOiBzdHJpbmcsIHdpdGhDb250ZW50T25seT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPElQcmVwYXJlQ2hpbGRUeXBlcz4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmVudElkID8ge3BhcmVudElkLCB3aXRoY29udGVudDogd2l0aENvbnRlbnRPbmx5fSA6IHt3aXRoY29udGVudDogd2l0aENvbnRlbnRPbmx5fVxuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKCcvcHJlcGFyZS90eXBlcycsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldFZpYVRlbXBDYWNoZSh1cmkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiAoe3BhcmVudDogcmVzLnBhcmVudCwgdHlwZXM6IHJlcy50eXBlcy5tYXAoKHR5cGUpID0+IG5ldyBPYmplY3RUeXBlKHR5cGUpKX0pKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmZXRjaCB0aGUgcHJldmlldyB1cmkgZm9yIGEgcHJlcGFyZWQgaXRlbVxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBwcmVwYXJlZCBpdGVtXG4gICAqIEBwYXJhbSBpbmRleCBXaGVuIGEgcHJlcGFyZWQgaXRlbSBjb250YWlucyBtb3JlIHRoYW4gb25lIGNvbnRlbnRzLCB0aGUgaW5kZXggc3BlY2lmaWVzIHdoaWNoIGNvbnRlbnRcbiAgICogQHBhcmFtIHJlbmRpdGlvbiBUYXJnZXQgcmVuZGl0aW9uIChQREYpXG4gICAqIHRvIHJldHJpZXZlIHRoZSBwcmV2aWV3IHVyaSBmb3JcbiAgICogQHJldHVybnMgc3RyaW5nIFByZXZpZXcgdXJpXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJldmlld1VyaShpZDogc3RyaW5nLCBpbmRleD86IG51bWJlciwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoYCR7dGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCl9L3ByZXBhcmUvJHtpZH0vY29udGVudGAsIHtyZW5kaXRpb24sIGluZGV4fSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcHJlcGFyZWQgaXRlbXMgdGFyZ2V0IG9iamVjdCB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZSBUaGUgdGFyZ2V0IG9iamVjdCB0eXBlcyBuYW1lXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBUaGUgaWQgb2YgdGhlIHByZXBhcmVkIGl0ZW0gdG8gc2V0IHRoZSB0eXBlIGZvclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4gVGhlIHVwZGF0ZWQgcHJlcGFyZWQgaXRlbVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUNoaWxkVHlwZShvYmplY3RUeXBlOiBzdHJpbmcsIHByZXBhcmVkSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5wdXQoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9LyR7b2JqZWN0VHlwZX0/Zm9ybT10cnVlJmNvbnRlbnRtZXRhPXRydWVgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gbmV3IFByZXBhcmVkSXRlbShyZXMpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0ZW1wbGF0ZSB0byBhIHByZXBhcmVkIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBUaGUgaWQgb2YgdGhlIHByZXBhcmVkIGl0ZW0gdG8gYWRkIHRoZSB0ZW1wbGF0ZSB0b1xuICAgKiBAcGFyYW0gdGVtcGxhdGVJZCBUaGUgaWQgb2YgdGhlIHRlbXBsYXRlIHRvIGJlIGFkZGVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJlcGFyZWRJdGVtPiAgVGhlIHVwZGF0ZWQgcHJlcGFyZWQgaXRlbVxuICAgKi9cbiAgcHVibGljIGFkZFRlbXBsYXRlKHByZXBhcmVkSXRlbUlkLCB0ZW1wbGF0ZUlkKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW0+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAucHV0KGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS90ZW1wbGF0ZT90ZW1wbGF0ZWlkPSR7dGVtcGxhdGVJZH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gbmV3IFByZXBhcmVkSXRlbShyZXMpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBhdmFpbGFibGUgdGVtcGxhdGVzIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdPiBvYmplY3RUeXBlTmFtZVxuICAgKi9cbiAgcHVibGljIGdldFRlbXBsYXRlcyhvYmplY3RUeXBlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24oJy90ZW1wbGF0ZS9saXN0P3R5cGU9JyArIG9iamVjdFR5cGVOYW1lKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcyBhcyBQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHVybCBvZiBhIHRlbXBsYXRlIHByZXZpZXdcbiAgICpcbiAgICogQHBhcmFtIGlkIFRlbXBsYXRlIElEXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxuICAgKiBAcmV0dXJucyBzdHJpbmcgVGhlIHRlbXBsYXRlIHByZXZpZXcgdXJsLlxuICAgKi9cbiAgcHVibGljIGdldFRlbXBsYXRlUHJldmlld1VyaShpZCwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoYCR7dGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCl9L3RlbXBsYXRlLyR7aWR9L2NvbnRlbnRgLCB7cmVuZGl0aW9ufSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0IGEgcHJlcGFyZWQgaXRlbS4gVGhpcyB3aWxsIGNyZWF0ZSBhbiBhY3R1YWwgZG1zIG9iamVjdC5cbiAgICogVXBkYXRlcyB0aGUgcHJlcGFyZWQgY3JlYXRpb24gb2JqZWN0IHRhcmdldCB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBJRCBvZiB0aGUgcHJlcGFyZWQgaXRlbVxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtVHlwZSBOYW1lIG9mIHRoZSBwcmVwYXJlZCBpdGVtcyB0YXJnZXQgb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbURhdGEgT2JqZWN0IGhvbGRpbmcgZGF0YSBvZiB0aGUgcHJlcGFyZWQgaXRlbVxuICAgKiBAcmV0dXJucyBUaGUgaWQgb2YgdGhlIGNyZWF0ZWQgZG1zIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGNvbW1pdFByZXBhcmVkSXRlbShwcmVwYXJlZEl0ZW1JZCwgcHJlcGFyZWRJdGVtVHlwZSwgcHJlcGFyZWRJdGVtRGF0YSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLnB1dChgL3ByZXBhcmUvJHtwcmVwYXJlZEl0ZW1JZH0vJHtwcmVwYXJlZEl0ZW1UeXBlfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5iYWNrZW5kLnBvc3QoYC9wcmVwYXJlL2NvbW1pdC8ke3ByZXBhcmVkSXRlbUlkfWAsIHByZXBhcmVkSXRlbURhdGEpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSksXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmlkKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgQ29udGVudFxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIHByZXBhcmVkSXRlbUlkXG4gICAqIEBwYXJhbSBGaWxlIGZpbGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICB1cGxvYWRDb250ZW50KHByZXBhcmVkSXRlbUlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpIHtcbiAgICBjb25zdCB1cmkgPSBgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS9jb250ZW50Lmpzb24/Zm9ybT10cnVlJmNvbnRlbnRtZXRhPXRydWVgO1xuICAgIHJldHVybiB0aGlzLnVwbG9hZFNlcnZpY2VcbiAgICAgIC51cGxvYWQodXJpLCBbZmlsZV0pXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkcyBmaWxlcyB0byBhbiB1cGxvYWQgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0gdXBsb2FkVGFyZ2V0IFRoZSB1cGxvYWQgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xuICAgKiBAcGFyYW0gdXBsb2FkRmlsZXMgRmlsZXMgdG8gYmUgdXBsb2FkZWRcbiAgICogQHBhcmFtIHVzZUJhdGNoVXBsb2FkIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byB1c2UgYmF0Y2ggcHJvY2Vzc2luZyBvbiB0aGUgYmFja2VuZCBzaWRlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgdXBsb2FkVG9UYXJnZXQodXBsb2FkVGFyZ2V0OiBVcGxvYWRUYXJnZXQsIHVwbG9hZEZpbGVzOiBVcGxvYWRGaWxlSXRlbVtdLCB1c2VCYXRjaFVwbG9hZD86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgY29uc3QgZmlsZXMgPSB1cGxvYWRGaWxlcy5tYXAoZiA9PiBmLl9maWxlKTtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlXG4gICAgICAudXBsb2FkKHRoaXMuZ2V0VXBsb2FkVGFyZ2V0KHVwbG9hZFRhcmdldCwgdXNlQmF0Y2hVcGxvYWQpLCBmaWxlcylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5nZXRQcmVwYXJlZEl0ZW1zJCgpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVyaSB0byBwb3N0IGZpbGVzIHRvIGJhc2VkIG9uIHRoZSB1cGxvYWQgdGFyZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0gdXBsb2FkVGFyZ2V0IFRoZSB0YXJnZXQgdG8gdXBsb2FkIGZpbGVzIHRvXG4gICAqIEBwYXJhbSB1c2VCYXRjaFVwbG9hZCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXBsb2FkIGFsbCBmaWxlcyBpbiBhIHNpbmdsZSBwb3N0XG4gICAqIEByZXR1cm5zIHN0cmluZyB0aGUgdXJpXG4gICAqL1xuICBwcml2YXRlIGdldFVwbG9hZFRhcmdldCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCwgdXNlQmF0Y2hVcGxvYWQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgdXJpO1xuXG4gICAgaWYgKHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuUk9PVCkge1xuICAgICAgLyoqXG4gICAgICAgKiB1cGxvYWQgdG8gZ2VuZXJhbCBmaWxpbmcgbG9jYXRpb25cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgICAqL1xuICAgICAgdXJpID0gdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyB0aGlzLmNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwoe1xuICAgICAgICAgIHBhcmVudElkOiBudWxsLFxuICAgICAgICAgIGNyZWF0ZU1hbnk6ICF1c2VCYXRjaFVwbG9hZFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgfSBlbHNlIGlmICh1cGxvYWRUYXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0Lk9CSkVDVCkge1xuICAgICAgLyoqXG4gICAgICAgKiB1cGxvYWQgdG8gZG1zIG9iamVjdCwgbWVhbnMgYWRkaW5nIG9yIHJlcGxhY2luZyBjb250ZW50IGZpbGVcbiAgICAgICAqL1xuICAgICAgY29uc3Qge3JlZmVyZW5jZU9iamVjdH0gPSB1cGxvYWRUYXJnZXQ7XG4gICAgICB1cmkgPSBgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vZG1zLyR7cmVmZXJlbmNlT2JqZWN0LmlkfS9jb250ZW50cz90eXBlPSR7cmVmZXJlbmNlT2JqZWN0LnR5cGUubmFtZX1gO1xuXG4gICAgfSBlbHNlIGlmICh1cGxvYWRUYXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LkNPTlRFWFQgfHwgdXBsb2FkVGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5DT05URVhUX1RSRUUpIHtcbiAgICAgIC8qKlxuICAgICAgICogdXBsb2FkIHRvIGNvbnRleHQgZm9sZGVyLCBtZWFucyBhZGRpbmcgYSBuZXcgZG1zIG9iamVjdCB0byBhIHNwZWNpZmljXG4gICAgICAgKiBjb250ZXh0IGZvbGRlciAuLi5cbiAgICAgICAqIC4uLiBpZiB3ZSBnb3QgYSBzdWJGb2xkZXIgKG5vZGUgZnJvbSB0aGUgY29udGV4dCB0cmVlKSBzZXQgdXAgd2UnbGwgYWRkIHRoYXQgdG9vXG4gICAgICAgKlxuICAgICAgICogQHR5cGUgc3RyaW5nXG4gICAgICAgKi9cbiAgICAgIHVyaSA9IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgdGhpcy5jcmVhdGVQcmVwYXJlZEl0ZW1Qb3N0VXJsKHtcbiAgICAgICAgcGFyZW50SWQ6IHVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QuaWQsXG4gICAgICAgIGNyZWF0ZU1hbnk6ICF1c2VCYXRjaFVwbG9hZCxcbiAgICAgICAgY2hpbGRUeXBlOiB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyICYmIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS50eXBlID8gdXBsb2FkVGFyZ2V0LnN1YkZvbGRlci5kYXRhLnR5cGUgOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgcHJlcGFyZWQgY3JlYXRpb24gb2JqZWN0IGNvbnRlbnQgZWxlbWVudCBieSBpbmRleCBvciB0aGUgY29tcGxldGUgY29udGVudC5cbiAgICogSWYgeW91IHByb3ZpZGUgYW4gaW5kZXggdGhlIGNvbnRlbnQgY29uc2lzdHMgb25seSBvZiBvbmUgZWxlbWVudCxcbiAgICogdGhlIGNvbnRlbnQgaXMgY29tcGxldGVseSByZW1vdmVkIGZyb20gdGhlIHByZXBhcmVkIGNyZWF0aW9uIG9iamVjdC5cbiAgICogXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBJRCBvZiB0aGUgaXRlbSB3aXRoIHRoZSBjb250ZW50IHRvIGJlIHJlbW92ZWRcbiAgICogQHBhcmFtIGluZGV4IFBhcmFtZXRlciB0aGF0IGRldGVybWluZXMgd2hpY2ggY29udGVudCBlbGVtZW50IHNob3VsZCBiZSBkZWxldGVkLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4gVGhlIHVwZGF0ZWQgcHJlcGFyZWQgaXRlbVxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVByZXBhcmVkSXRlbUNvbnRlbnQocHJlcGFyZWRJdGVtSWQ6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4ge1xuICAgIGNvbnN0IHVybCA9IGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS9jb250ZW50YCArIChpbmRleCAhPT0gdW5kZWZpbmVkID8gYD9pbmRleD0ke2luZGV4fWAgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmRlbCh1cmwpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiBuZXcgUHJlcGFyZWRJdGVtKHJlcykpXG4gICAgICApO1xuICB9XG59XG4iXX0=
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXZDLE9BQU8sRUFBYSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxZQUFZLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFFbkYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBaUI3RDs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQW9CLE9BQXVCLEVBQ3ZCLGFBQTRCO1FBRDVCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUnhDLHdCQUFtQixHQUFHLElBQUksYUFBYSxDQUFpQixDQUFDLENBQUMsQ0FBQztRQUM1RCxtQkFBYyxHQUErQixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHcEYsNEJBQXVCLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsdUJBQWtCLEdBQXVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQTJCNUY7Ozs7OztXQU1HO1FBQ0gsTUFBQyxHQUFHLENBQUMsQ0FBQztJQTlCTixDQUFDO0lBRUQ7O09BRUc7SUFDSCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO2FBQ25DLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FDeEI7YUFDQSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO1lBQzdCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBVU0sa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxTQUFrQjtRQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVMLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUNuQyxRQUFRLEVBQUUsUUFBUTtZQUNsQixTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDeEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUNOLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDcEMsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDJCQUEyQixDQUFDLGNBQWMsRUFBRSxJQUFJO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLFdBQVcsR0FBRyxjQUFjLEVBQUUsSUFBSSxDQUFDO2FBQ3ZDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDcEMsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHlCQUF5QixDQUFDLE1BQXlCO1FBRXhELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUN4RSxJQUFJLE1BQU0sRUFBRTtZQUNWLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksaUJBQWlCLENBQUMsT0FBaUI7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxrQkFBa0IsQ0FBQyxPQUFpQjtRQUMxQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNaLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxFQUN6QyxHQUFHLENBQUMsQ0FBQyxhQUE2QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9ILENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLEdBQUcsQ0FBQyxZQUFZLGNBQWMsRUFBRSxDQUFDO2FBQ2pDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDcEMsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsZUFBZSxDQUFDLGdCQUFnQixDQUFDO2FBQ2pDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQzVELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxlQUF5QjtRQUNyRSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFDLENBQUE7UUFDbkcsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLGVBQWUsQ0FBQyxHQUFHLENBQUM7YUFDcEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQ3pGLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxhQUFhLENBQUMsRUFBVSxFQUFFLEtBQWMsRUFBRSxTQUFrQjtRQUNqRSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWUsQ0FBQyxVQUFrQixFQUFFLGNBQXNCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLFlBQVksY0FBYyxJQUFJLFVBQVUsNkJBQTZCLENBQUM7YUFDMUUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2xDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVyxDQUFDLGNBQWMsRUFBRSxVQUFVO1FBQzNDLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLFlBQVksY0FBYyx3QkFBd0IsVUFBVSxFQUFFLENBQUM7YUFDbkUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2xDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVksQ0FBQyxjQUFzQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLE9BQU8sQ0FBQyxzQkFBc0IsR0FBRyxjQUFjLENBQUM7YUFDaEQsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBNkIsQ0FBQyxDQUNqRCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxTQUFrQjtRQUNqRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEVBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLFlBQVksY0FBYyxJQUFJLGdCQUFnQixFQUFFLENBQUM7YUFDckQsSUFBSSxDQUNILFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsY0FBYyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUN4RixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUNuQixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxjQUFzQixFQUFFLElBQVU7UUFDOUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsWUFBWSxjQUFjLDBDQUEwQyxDQUFDO1FBQ2xKLE9BQU8sSUFBSSxDQUFDLGFBQWE7YUFDdEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CLElBQUk7UUFDSCxzQ0FBc0M7U0FDdkMsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsY0FBYyxDQUFDLFlBQTBCLEVBQUUsV0FBNkIsRUFBRSxjQUF3QjtRQUVoRyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLGFBQWE7YUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQzthQUNqRSxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQ3BDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssZUFBZSxDQUFDLFlBQTBCLEVBQUUsY0FBd0I7UUFDMUUsSUFBSSxHQUFHLENBQUM7UUFFUixJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTtZQUMzQzs7OztlQUlHO1lBQ0gsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztnQkFDbEcsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsVUFBVSxFQUFFLENBQUMsY0FBYzthQUM1QixDQUNGLENBQUM7U0FFSDthQUFNLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ3BEOztlQUVHO1lBQ0gsTUFBTSxFQUFDLGVBQWUsRUFBQyxHQUFHLFlBQVksQ0FBQztZQUN2QyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxlQUFlLENBQUMsRUFBRSxrQkFBa0IsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUVoSjthQUFNLElBQUksWUFBWSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFlBQVksRUFBRTtZQUN4Rzs7Ozs7O2VBTUc7WUFDSCxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDO2dCQUNwRyxRQUFRLEVBQUUsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUN6QyxVQUFVLEVBQUUsQ0FBQyxjQUFjO2dCQUMzQixTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNoSCxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0kseUJBQXlCLENBQUMsY0FBc0IsRUFBRSxLQUFjO1FBQ3JFLE1BQU0sR0FBRyxHQUFHLFlBQVksY0FBYyxVQUFVLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRyxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDUixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbEMsQ0FBQztJQUNOLENBQUM7OzJHQXBWVSxjQUFjOytHQUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZXJnZU1hcCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcbmltcG9ydCB7UHJlcGFyZWRJdGVtLCBQcmVwYXJlZEl0ZW1UZW1wbGF0ZX0gZnJvbSAnLi4vLi4vbW9kZWwvcHJlcGFyZWQtaXRlbS5tb2RlbCc7XG5pbXBvcnQge1VwbG9hZFNlcnZpY2V9IGZyb20gJy4uL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQge1VwbG9hZFRhcmdldH0gZnJvbSAnLi4vLi4vbW9kZWwvdXBsb2FkLXRhcmdldC5tb2RlbCc7XG5pbXBvcnQge1VwbG9hZEZpbGVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbC91cGxvYWQtZmlsZS1pdGVtLm1vZGVsJztcbmltcG9ydCB7SVByZXBhcmVDaGlsZFR5cGVzfSBmcm9tICcuL29iamVjdFR5cGVzLmludGVyZmFjZSc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkUG9zdFBhcmFtIHtcbiAgcGFyZW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBjcmVhdGUgb25lIFByZXBhcmVkSXRlbSB1c2luZyBtdWx0aXBsZSBmaWxlcyB1cGxvYWRlZCAoZmFsc2UpXG4gICAqIG9yIGNyZWF0aW5nIGEgUHJlcGFyZWRJdGVtIGZvciBlYWNoIGZpbGUgcG9zdGVkIHRvIHRoZSBVUkwgKHRydWUpXG4gICAqL1xuICBjcmVhdGVNYW55PzogYm9vbGVhbjtcbiAgY2hpbGRUeXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgUHJlcGFyZSBTZXJ2aWNlc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcmVwYXJlU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1zOiBQcmVwYXJlZEl0ZW1bXTtcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJlcGFyZWRJdGVtW10+KDEpO1xuICBwdWJsaWMgcHJlcGFyZWRJdGVtcyQ6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtW10+ID0gdGhpcy5wcmVwYXJlZEl0ZW1zU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcHJlcGFyZWRJdGVtQ291bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1Db3VudFNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHB1YmxpYyBwcmVwYXJlZEl0ZW1Db3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMucHJlcGFyZWRJdGVtQ291bnRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlKSB7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIEZldGNoIFByZXBhcmUgaXRlbXNcbiAgICovXG4gIHJlZnJlc2hQcmVwYXJlZEl0ZW1zQ291bnQoKSB7XG4gICAgdGhpcy5mZXRjaFByZXBhcmVkSXRlbXNDb3VudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIG51bWJlciBvZiBwcmVwYXJlZCBpdGVtcyBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIHByaXZhdGUgZmV0Y2hQcmVwYXJlZEl0ZW1zQ291bnQoKSB7XG4gICAgdGhpcy5iYWNrZW5kLmdldEpzb24oJy9wcmVwYXJlL3N0YXRlJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4gcmVzLmNvdW50KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtQ291bnQgPSByZXM7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtQ291bnRTb3VyY2UubmV4dCh0aGlzLnByZXBhcmVkSXRlbUNvdW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwcmVwYXJlZCBpdGVtIG9uIHRoZSBiYWNrZWQgc2lkZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudElkIFRoZSBJRCBvZiB0aGUgcGFyZW50IGRtcyBvYmplY3QgdG8gYWRkIHRoZSBwcmVwYXJlZCBpdGVtIHRvXG4gICAqIEBwYXJhbSBjaGlsZFR5cGUgVGhlIHR5cGUgb2Ygb2JqZWN0IHRvIGJlIGNyZWF0ZWRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBpID0gMDtcbiAgcHVibGljIGNyZWF0ZVByZXBhcmVkSXRlbShwYXJlbnRJZDogc3RyaW5nLCBjaGlsZFR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuY29uc29sZS5sb2coJ3RpY2snKTtcbnRoaXMuaSsrO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLnBvc3QodGhpcy5jcmVhdGVQcmVwYXJlZEl0ZW1Qb3N0VXJsKHtcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkLFxuICAgICAgICBjaGlsZFR5cGU6IGNoaWxkVHlwZSA/IGNoaWxkVHlwZSA6IG51bGxcbiAgICAgIH0pLCB7fSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5nZXRQcmVwYXJlZEl0ZW1zJCgpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWRcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlUHJlcGFyZWRJdGVtSW5kZXhEYXRhKHByZXBhcmVkSXRlbUlkLCBkYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLnB1dCgnL3ByZXBhcmUvJyArIHByZXBhcmVkSXRlbUlkLCBkYXRhKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gVVJMIGZvciBjcmVhdGluZyBhIFByZXBhcmVkSXRlbS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbXMgZm9yIGdlbmVyYXRpbmcgYXBwcm9wcmlhdGUgdXJpLlxuICAgKiBAcmV0dXJucyBzdHJpbmcgQSBQT1NUIFVSTCBmb3IgY3JlYXRpbmcgUHJlcGFyZWRJdGVtc1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwocGFyYW1zOiBQcmVwYXJlZFBvc3RQYXJhbSk6IHN0cmluZyB7XG5cbiAgICBsZXQgdXJsID0gcGFyYW1zLmNyZWF0ZU1hbnkgPyAnL3ByZXBhcmUvY3JlYXRlbWFueScgOiAnL3ByZXBhcmUvY3JlYXRlJztcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICB1cmwgPSBVdGlscy5idWlsZFVyaSh1cmwsIHBhcmFtcyk7XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiB0aGUgdXNlcnMgcHJlcGFyZWQgaXRlbXMuXG4gICAqXG4gICAqIEBwYXJhbSBub0Zvcm1zIElmIHNldCB0byB0cnVlIHRoZSBwcmVwYXJlZCBpdGVtcyB3aWxsIGJlIGZldGNoZWQgd2l0aG91dCB0aGUgZm9ybSB3aGljaCBpcyBmYXN0ZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT4gQSBjb2xsZWN0aW9uIG9mIHByZXBhcmVkIGl0ZW0gb2JqZWN0c1xuICAgKi9cbiAgcHVibGljIGdldFByZXBhcmVkSXRlbXMkKG5vRm9ybXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT4ge1xuICAgIHRoaXMuZmV0Y2hQcmVwYXJlZEl0ZW1zKG5vRm9ybXMpLnN1YnNjcmliZSgpO1xuICAgIHJldHVybiB0aGlzLnByZXBhcmVkSXRlbXMkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIFByZXBhcmVJdGVtcyBhbmQgZm9ybSB0aGVtXG4gICAqXG4gICAqIEBwYXJhbSBib29sZWFuIG5vRm9ybXNcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT5cbiAgICovXG4gIHByaXZhdGUgZmV0Y2hQcmVwYXJlZEl0ZW1zKG5vRm9ybXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT4ge1xuICAgIGxldCB1cmkgPSAobm9Gb3JtcykgPyAnL3ByZXBhcmUnIDogJy9wcmVwYXJlP2Zvcm09dHJ1ZSc7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24odXJpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5tYXAoaSA9PiBuZXcgUHJlcGFyZWRJdGVtKGkpKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmZldGNoUHJlcGFyZWRJdGVtc0NvdW50KCkpLFxuICAgICAgICB0YXAoKHByZXBhcmVkSXRlbXM6IFByZXBhcmVkSXRlbVtdKSA9PiB0aGlzLnByZXBhcmVkSXRlbXNTb3VyY2UubmV4dChwcmVwYXJlZEl0ZW1zLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnY3JlYXRlZCcsICdkZXNjJykpKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHByZXBhcmVkIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBJRCBvZiB0aGUgaXRlbSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PiBTZXJ2ZXIgcmVzcG9uc2VcbiAgICovXG4gIGRlbGV0ZVByZXBhcmVkSXRlbShwcmVwYXJlZEl0ZW1JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZGVsKGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2Ygb2JqZWN0IHR5cGVzIGFsbG93ZWQgdG8gYmUgcGxhY2VkIGRpcmVjdGx5IGJlbG93IHJvb3QuXG4gICAqXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8T2JqZWN0VHlwZVtdPiBBIGxpc3Qgb2Ygc3VwcG9ydGVkIG9iamVjdCB0eXBlc1xuICAgKi9cbiAgcHVibGljIGdldFByZXBhcmVSb290VHlwZXMoKTogT2JzZXJ2YWJsZTxPYmplY3RUeXBlW10+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKCcvcHJlcGFyZS90eXBlcycpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXMpID0+IHJlcy50eXBlcy5tYXAoKHR5cGUpID0+IG5ldyBPYmplY3RUeXBlKHR5cGUpKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgYWxsb3dlZCBjaGlsZCBvYmplY3QgdHlwZXMgZm9yIGEgc2VsZWN0ZWQgcGFyZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyZW50SWQgVGhlIGlkIG9mIHRoZSBwYXJlbnQgZG1zIG9iamVjdCAoY29udGV4dCBmb2xkZXIpXG4gICAqIEBwYXJhbSB3aXRoQ29udGVudE9ubHkgSWYgc2V0IHRvIHRydWUgb25seSBjaGlsZCB0eXBlcywgdGhhdCBzdXBwb3J0IGNvbnRlbnQgYXJlIHJldHVybmVkLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPElQcmVwYXJlQ2hpbGRUeXBlcz4gQSBsaXN0IG9mIHN1cHBvcnRlZCBvYmplY3QgdHlwZXNcbiAgICovXG4gIHB1YmxpYyBnZXRQcmVwYXJlQ2hpbGRUeXBlcyhwYXJlbnRJZDogc3RyaW5nLCB3aXRoQ29udGVudE9ubHk/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxJUHJlcGFyZUNoaWxkVHlwZXM+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBwYXJlbnRJZCA/IHtwYXJlbnRJZCwgd2l0aGNvbnRlbnQ6IHdpdGhDb250ZW50T25seX0gOiB7d2l0aGNvbnRlbnQ6IHdpdGhDb250ZW50T25seX1cbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaSgnL3ByZXBhcmUvdHlwZXMnLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUodXJpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gKHtwYXJlbnQ6IHJlcy5wYXJlbnQsIHR5cGVzOiByZXMudHlwZXMubWFwKCh0eXBlKSA9PiBuZXcgT2JqZWN0VHlwZSh0eXBlKSl9KSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZmV0Y2ggdGhlIHByZXZpZXcgdXJpIGZvciBhIHByZXBhcmVkIGl0ZW1cbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgcHJlcGFyZWQgaXRlbVxuICAgKiBAcGFyYW0gaW5kZXggV2hlbiBhIHByZXBhcmVkIGl0ZW0gY29udGFpbnMgbW9yZSB0aGFuIG9uZSBjb250ZW50cywgdGhlIGluZGV4IHNwZWNpZmllcyB3aGljaCBjb250ZW50XG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxuICAgKiB0byByZXRyaWV2ZSB0aGUgcHJldmlldyB1cmkgZm9yXG4gICAqIEByZXR1cm5zIHN0cmluZyBQcmV2aWV3IHVyaVxuICAgKi9cbiAgcHVibGljIGdldFByZXZpZXdVcmkoaWQ6IHN0cmluZywgaW5kZXg/OiBudW1iZXIsIHJlbmRpdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKGAke3RoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpfS9wcmVwYXJlLyR7aWR9L2NvbnRlbnRgLCB7cmVuZGl0aW9uLCBpbmRleH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHByZXBhcmVkIGl0ZW1zIHRhcmdldCBvYmplY3QgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGUgVGhlIHRhcmdldCBvYmplY3QgdHlwZXMgbmFtZVxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgVGhlIGlkIG9mIHRoZSBwcmVwYXJlZCBpdGVtIHRvIHNldCB0aGUgdHlwZSBmb3JcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW0+IFRoZSB1cGRhdGVkIHByZXBhcmVkIGl0ZW1cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVDaGlsZFR5cGUob2JqZWN0VHlwZTogc3RyaW5nLCBwcmVwYXJlZEl0ZW1JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW0+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAucHV0KGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS8ke29iamVjdFR5cGV9P2Zvcm09dHJ1ZSZjb250ZW50bWV0YT10cnVlYClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IG5ldyBQcmVwYXJlZEl0ZW0ocmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGVtcGxhdGUgdG8gYSBwcmVwYXJlZCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgVGhlIGlkIG9mIHRoZSBwcmVwYXJlZCBpdGVtIHRvIGFkZCB0aGUgdGVtcGxhdGUgdG9cbiAgICogQHBhcmFtIHRlbXBsYXRlSWQgVGhlIGlkIG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBhZGRlZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4gIFRoZSB1cGRhdGVkIHByZXBhcmVkIGl0ZW1cbiAgICovXG4gIHB1YmxpYyBhZGRUZW1wbGF0ZShwcmVwYXJlZEl0ZW1JZCwgdGVtcGxhdGVJZCk6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLnB1dChgL3ByZXBhcmUvJHtwcmVwYXJlZEl0ZW1JZH0vdGVtcGxhdGU/dGVtcGxhdGVpZD0ke3RlbXBsYXRlSWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IG5ldyBQcmVwYXJlZEl0ZW0ocmVzKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHRlbXBsYXRlcyBmb3IgYSBnaXZlbiBvYmplY3QgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIE9ic2VydmFibGU8UHJlcGFyZWRJdGVtVGVtcGxhdGVbXT4gb2JqZWN0VHlwZU5hbWVcbiAgICovXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZXMob2JqZWN0VHlwZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtVGVtcGxhdGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRKc29uKCcvdGVtcGxhdGUvbGlzdD90eXBlPScgKyBvYmplY3RUeXBlTmFtZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiByZXMgYXMgUHJlcGFyZWRJdGVtVGVtcGxhdGVbXSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB1cmwgb2YgYSB0ZW1wbGF0ZSBwcmV2aWV3XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUZW1wbGF0ZSBJRFxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIFRhcmdldCByZW5kaXRpb24gKFBERilcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0ZW1wbGF0ZSBwcmV2aWV3IHVybC5cbiAgICovXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZVByZXZpZXdVcmkoaWQsIHJlbmRpdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKGAke3RoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpfS90ZW1wbGF0ZS8ke2lkfS9jb250ZW50YCwge3JlbmRpdGlvbn0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbW1pdCBhIHByZXBhcmVkIGl0ZW0uIFRoaXMgd2lsbCBjcmVhdGUgYW4gYWN0dWFsIGRtcyBvYmplY3QuXG4gICAqIFVwZGF0ZXMgdGhlIHByZXBhcmVkIGNyZWF0aW9uIG9iamVjdCB0YXJnZXQgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgSUQgb2YgdGhlIHByZXBhcmVkIGl0ZW1cbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbVR5cGUgTmFtZSBvZiB0aGUgcHJlcGFyZWQgaXRlbXMgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1EYXRhIE9iamVjdCBob2xkaW5nIGRhdGEgb2YgdGhlIHByZXBhcmVkIGl0ZW1cbiAgICogQHJldHVybnMgVGhlIGlkIG9mIHRoZSBjcmVhdGVkIGRtcyBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBjb21taXRQcmVwYXJlZEl0ZW0ocHJlcGFyZWRJdGVtSWQsIHByZXBhcmVkSXRlbVR5cGUsIHByZXBhcmVkSXRlbURhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5wdXQoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9LyR7cHJlcGFyZWRJdGVtVHlwZX1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuYmFja2VuZC5wb3N0KGAvcHJlcGFyZS9jb21taXQvJHtwcmVwYXJlZEl0ZW1JZH1gLCBwcmVwYXJlZEl0ZW1EYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpLFxuICAgICAgICBtYXAocmVzID0+IHJlcy5pZClcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIENvbnRlbnRcbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBwcmVwYXJlZEl0ZW1JZFxuICAgKiBAcGFyYW0gRmlsZSBmaWxlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgdXBsb2FkQ29udGVudChwcmVwYXJlZEl0ZW1JZDogc3RyaW5nLCBmaWxlOiBGaWxlKSB7XG4gICAgY29uc3QgdXJpID0gYCR7dGhpcy5iYWNrZW5kLmdldEJhc2VXaXRoQ29udGV4dCh0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSl9L3ByZXBhcmUvJHtwcmVwYXJlZEl0ZW1JZH0vY29udGVudC5qc29uP2Zvcm09dHJ1ZSZjb250ZW50bWV0YT10cnVlYDtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlXG4gICAgICAudXBsb2FkKHVyaSwgW2ZpbGVdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZHMgZmlsZXMgdG8gYW4gdXBsb2FkIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHVwbG9hZFRhcmdldCBUaGUgdXBsb2FkIHRhcmdldCB0byB1cGxvYWQgZmlsZXMgdG9cbiAgICogQHBhcmFtIHVwbG9hZEZpbGVzIEZpbGVzIHRvIGJlIHVwbG9hZGVkXG4gICAqIEBwYXJhbSB1c2VCYXRjaFVwbG9hZCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXNlIGJhdGNoIHByb2Nlc3Npbmcgb24gdGhlIGJhY2tlbmQgc2lkZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHVwbG9hZFRvVGFyZ2V0KHVwbG9hZFRhcmdldDogVXBsb2FkVGFyZ2V0LCB1cGxvYWRGaWxlczogVXBsb2FkRmlsZUl0ZW1bXSwgdXNlQmF0Y2hVcGxvYWQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGNvbnN0IGZpbGVzID0gdXBsb2FkRmlsZXMubWFwKGYgPT4gZi5fZmlsZSk7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZVxuICAgICAgLnVwbG9hZCh0aGlzLmdldFVwbG9hZFRhcmdldCh1cGxvYWRUYXJnZXQsIHVzZUJhdGNoVXBsb2FkKSwgZmlsZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1cmkgdG8gcG9zdCBmaWxlcyB0byBiYXNlZCBvbiB0aGUgdXBsb2FkIHRhcmdldC5cbiAgICpcbiAgICogQHBhcmFtIHVwbG9hZFRhcmdldCBUaGUgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xuICAgKiBAcGFyYW0gdXNlQmF0Y2hVcGxvYWQgRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHVwbG9hZCBhbGwgZmlsZXMgaW4gYSBzaW5nbGUgcG9zdFxuICAgKiBAcmV0dXJucyBzdHJpbmcgdGhlIHVyaVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRVcGxvYWRUYXJnZXQodXBsb2FkVGFyZ2V0OiBVcGxvYWRUYXJnZXQsIHVzZUJhdGNoVXBsb2FkPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgbGV0IHVyaTtcblxuICAgIGlmICh1cGxvYWRUYXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LlJPT1QpIHtcbiAgICAgIC8qKlxuICAgICAgICogdXBsb2FkIHRvIGdlbmVyYWwgZmlsaW5nIGxvY2F0aW9uXG4gICAgICAgKlxuICAgICAgICogQHR5cGUgc3RyaW5nXG4gICAgICAgKi9cbiAgICAgIHVyaSA9IHRoaXMuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQodGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpICsgdGhpcy5jcmVhdGVQcmVwYXJlZEl0ZW1Qb3N0VXJsKHtcbiAgICAgICAgICBwYXJlbnRJZDogbnVsbCxcbiAgICAgICAgICBjcmVhdGVNYW55OiAhdXNlQmF0Y2hVcGxvYWRcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIH0gZWxzZSBpZiAodXBsb2FkVGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5PQkpFQ1QpIHtcbiAgICAgIC8qKlxuICAgICAgICogdXBsb2FkIHRvIGRtcyBvYmplY3QsIG1lYW5zIGFkZGluZyBvciByZXBsYWNpbmcgY29udGVudCBmaWxlXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHtyZWZlcmVuY2VPYmplY3R9ID0gdXBsb2FkVGFyZ2V0O1xuICAgICAgdXJpID0gYCR7dGhpcy5iYWNrZW5kLmdldEJhc2VXaXRoQ29udGV4dCh0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSl9L2Rtcy8ke3JlZmVyZW5jZU9iamVjdC5pZH0vY29udGVudHM/dHlwZT0ke3JlZmVyZW5jZU9iamVjdC50eXBlLm5hbWV9YDtcblxuICAgIH0gZWxzZSBpZiAodXBsb2FkVGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5DT05URVhUIHx8IHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVF9UUkVFKSB7XG4gICAgICAvKipcbiAgICAgICAqIHVwbG9hZCB0byBjb250ZXh0IGZvbGRlciwgbWVhbnMgYWRkaW5nIGEgbmV3IGRtcyBvYmplY3QgdG8gYSBzcGVjaWZpY1xuICAgICAgICogY29udGV4dCBmb2xkZXIgLi4uXG4gICAgICAgKiAuLi4gaWYgd2UgZ290IGEgc3ViRm9sZGVyIChub2RlIGZyb20gdGhlIGNvbnRleHQgdHJlZSkgc2V0IHVwIHdlJ2xsIGFkZCB0aGF0IHRvb1xuICAgICAgICpcbiAgICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAgICovXG4gICAgICB1cmkgPSB0aGlzLmJhY2tlbmQuZ2V0QmFzZVdpdGhDb250ZXh0KHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpKSArIHRoaXMuY3JlYXRlUHJlcGFyZWRJdGVtUG9zdFVybCh7XG4gICAgICAgIHBhcmVudElkOiB1cGxvYWRUYXJnZXQucmVmZXJlbmNlT2JqZWN0LmlkLFxuICAgICAgICBjcmVhdGVNYW55OiAhdXNlQmF0Y2hVcGxvYWQsXG4gICAgICAgIGNoaWxkVHlwZTogdXBsb2FkVGFyZ2V0LnN1YkZvbGRlciAmJiB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyLmRhdGEudHlwZSA/IHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS50eXBlIDogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIHByZXBhcmVkIGNyZWF0aW9uIG9iamVjdCBjb250ZW50IGVsZW1lbnQgYnkgaW5kZXggb3IgdGhlIGNvbXBsZXRlIGNvbnRlbnQuXG4gICAqIElmIHlvdSBwcm92aWRlIGFuIGluZGV4IHRoZSBjb250ZW50IGNvbnNpc3RzIG9ubHkgb2Ygb25lIGVsZW1lbnQsXG4gICAqIHRoZSBjb250ZW50IGlzIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBwcmVwYXJlZCBjcmVhdGlvbiBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBJRCBvZiB0aGUgaXRlbSB3aXRoIHRoZSBjb250ZW50IHRvIGJlIHJlbW92ZWRcbiAgICogQHBhcmFtIGluZGV4IFBhcmFtZXRlciB0aGF0IGRldGVybWluZXMgd2hpY2ggY29udGVudCBlbGVtZW50IHNob3VsZCBiZSBkZWxldGVkLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4gVGhlIHVwZGF0ZWQgcHJlcGFyZWQgaXRlbVxuICAgKi9cbiAgcHVibGljIGRlbGV0ZVByZXBhcmVkSXRlbUNvbnRlbnQocHJlcGFyZWRJdGVtSWQ6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4ge1xuICAgIGNvbnN0IHVybCA9IGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS9jb250ZW50YCArIChpbmRleCAhPT0gdW5kZWZpbmVkID8gYD9pbmRleD0ke2luZGV4fWAgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmRlbCh1cmwpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiBuZXcgUHJlcGFyZWRJdGVtKHJlcykpXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -2,19 +2,15 @@ import { forkJoin as observableForkJoin, of, ReplaySubject } from 'rxjs';
2
2
  import { catchError, tap, map, switchMap } from 'rxjs/operators';
3
3
  import { Injectable } from '@angular/core';
4
4
  import { ObjectType } from '../../model/object-type.model';
5
- import * as momentImported from 'moment';
6
5
  import * as _ from 'lodash';
7
6
  import { Utils } from '../../util/utils';
8
7
  import { EnaioEvent } from '../events/events';
8
+ import moment from 'moment';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "../backend/backend.service";
11
11
  import * as i2 from "../logger/logger";
12
12
  import * as i3 from "../events/event.service";
13
13
  import * as i4 from "../cache/app-cache.service";
14
- /**
15
- * @ignore
16
- */
17
- const moment = momentImported;
18
14
  /**
19
15
  * Collection of System Services
20
16
  */
@@ -346,4 +342,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
346
342
  providedIn: 'root'
347
343
  }]
348
344
  }], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i2.Logger }, { type: i3.EventService }, { type: i4.AppCacheService }]; } });
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUt6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBR3ZDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO0FBRTlCOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFXeEIsWUFBb0IsT0FBdUIsRUFDdkIsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLFFBQXlCO1FBSHpCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQVhyQyxpQkFBWSxHQUFHLElBQUksYUFBYSxFQUFPLENBQUM7UUFDekMsWUFBTyxHQUFvQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FB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b3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sIG9mLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtjYXRjaEVycm9yLCB0YXAsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJT3JnYW5pemF0aW9uT2JqZWN0c30gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL29yZ2FuaXphdGlvbi1vYmplY3RzLmludGVyZmFjZSc7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQge0FwcENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xuaW1wb3J0IHtPYmplY3RUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9vYmplY3QtdHlwZS5tb2RlbCc7XG5pbXBvcnQge0VvVXNlcn0gZnJvbSAnLi4vLi4vbW9kZWwvZW8tdXNlci5tb2RlbCc7XG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtPcmdSb2xlfSBmcm9tICcuLi8uLi9tb2RlbC9vcmcubW9kZWwnO1xuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQge0lDb2RlU3lzdGVtfSBmcm9tICcuL3N5c3RlbWRlZmluaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBTeXN0ZW0gU2VydmljZXNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3lzdGVtU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfc3lzdGVtO1xuICBwcml2YXRlIHN5c3RlbVNvdXJjZSA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oKTtcbiAgcHVibGljIHN5c3RlbSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuc3lzdGVtU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIHNlc3Npb24gY2FjaGUgZm9yIG9iamVjdCB0eXBlIGZvcm1zXG4gIHByaXZhdGUgb2JqZWN0VHlwZUZvcm1zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcbiAgcHJpdmF0ZSBjYWNoZWRSb2xlczogT3JnUm9sZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhcHBDYWNoZTogQXBwQ2FjaGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2Uub24oRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX1NDSEVNQV9DSEFOR0VEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odGhpcy51c2VyKTtcbiAgICB9KVxuICB9XG5cbiAgc2V0IHN5c3RlbShzKXtcbiAgICB0aGlzLl9zeXN0ZW0gPSBzO1xuICB9XG5cbiAgZ2V0IHN5c3RlbSgpe1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX3N5c3RlbSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIE9iamVjdFR5cGVzXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9iamVjdCB0eXBlc1xuICAgKi9cbiAgcHVibGljIGdldE9iamVjdFR5cGVzKCk6IE9iamVjdFR5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtLnR5cGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYW4gT2JqZWN0VHlwZSBieSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0eXBlXG4gICAqIEByZXR1cm5zIHRoZSBPYmplY3RUeXBlIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lXG4gICAqL1xuICBwdWJsaWMgZ2V0T2JqZWN0VHlwZShvYmplY3RUeXBlTmFtZTogc3RyaW5nKTogT2JqZWN0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtLnR5cGVzLmZpbmQodCA9PiB0Lm5hbWUgPT09IG9iamVjdFR5cGVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZm9ybSBlbGVtZW50cyBmcm9tIGZvcm0gbW9kZWwuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIHRvIGZldGNoIHRoZW1cbiAgICogZm9yIGEgc3BlY2lhbCBzaXR1YXRpb24gbGlrZSBTRUFSQ0hcbiAgICogQHBhcmFtIG9iamVjdFR5cGVOYW1lIE9iamVjdFR5cGUgdG8gZmV0Y2ggZWxlbWVudHMgZm9yXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gRm9ybSBtb2RlbCBzaXR1YXRpb24gdG8gYmUgZmV0Y2hlZFxuICAgKiBAcGFyYW0gaXNDb250ZXh0VHlwZSBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZm9ybSBtb2RlbCBzaG91bGQgYmUgZmV0Y2hlZCBmb3IgYSBjb250ZXh0IG1vZGVcbiAgICovXG4gIGdldEZvcm1FbGVtZW50c0Zyb21Gb3JtTW9kZWwob2JqZWN0VHlwZU5hbWU6IHN0cmluZywgc2l0dWF0aW9uOiBzdHJpbmcsIGlzQ29udGV4dFR5cGU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldE9iamVjdFR5cGVGb3JtKG9iamVjdFR5cGVOYW1lLCBzaXR1YXRpb24sIGlzQ29udGV4dFR5cGUgPyAnQ09OVEVYVCcgOiBudWxsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKG1vZGVsID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5wcm9jZXNzRm9ybU1vZGVsRWxlbWVudHMobW9kZWwsIGVsZW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIG9mKGVsZW1lbnRzKTtcbiAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0Zvcm1Nb2RlbEVsZW1lbnRzKG1vZGVsOiBhbnksIGVsZW1lbnRzOiBhbnlbXSkge1xuICAgIG1vZGVsLmVsZW1lbnRzLmZvckVhY2goZSA9PiB7XG4gICAgICBpZihlLnR5cGUgIT09IFwibzJtR3JvdXBcIiAmJiBlLnR5cGUgIT09IFwibzJtR3JvdXBTdGFja1wiKSB7XG4gICAgICAgIGVsZW1lbnRzLnB1c2goZSk7XG4gICAgICB9IGVsc2UgaWYoZS5lbGVtZW50cyAmJiBlLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnByb2Nlc3NGb3JtTW9kZWxFbGVtZW50cyhlLCBlbGVtZW50cyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIHR5cGUgaW1wbGVtZW50cyBhIGdpdmVuIHN1cGVydHlwZVxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIHRvIGJlIGNoZWNrZWRcbiAgICogQHBhcmFtIHN1cGVyVHlwZU5hbWUgTmFtZSBvZiB0aGUgc3VwZXJ0eXBlXG4gICAqL1xuICBwdWJsaWMgaW1wbGVtZW50c1R5cGUodHlwZTogT2JqZWN0VHlwZSwgc3VwZXJUeXBlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGUubmFtZSA9PT0gc3VwZXJUeXBlTmFtZSB8fCAodHlwZS5pbXBsZW1lbnRzICYmIHR5cGUuaW1wbGVtZW50cy5pbmRleE9mKHN1cGVyVHlwZU5hbWUpICE9PSAtMSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGNvZGVzeXN0ZW1cbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSBjb2Rlc3lzdGVtcyBpZFxuICAgKiBAcmV0dXJucyBUaGUgY29kZXN5c3RlbSBvYmplY3QgbWF0Y2hpbmcgdGhlIGdpdmVuIGlkXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29kZXN5c3RlbShpZDogc3RyaW5nKTogSUNvZGVTeXN0ZW0ge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbS5jb2Rlc3lzdGVtcy5maW5kKHQgPT4gdC5pZCA9PT0gaWQgfHwgdC5uYW1lID09PSBpZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmb3JtIG1vZGVsIG9mIGFuIG9iamVjdCB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZU5hbWUgVGhlIG9iamVjdCB0eXBlIG5hbWVcbiAgICogQHBhcmFtIHNpdHVhdGlvbiBUaGUgZm9ybSBzaXR1YXRpb24gdG8gYmUgZmV0Y2hlZFxuICAgKiBAcGFyYW0gbW9kZSBGb3JtIG1vZGUgdG8gZmV0Y2ggKGUuZy4gQ09OVEVYVClcbiAgICogQHJldHVybnMgVGhlIG9iamVjdCB0eXBlIGZvcm0gbW9kZWxcbiAgICovXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlRm9ybShvYmplY3RUeXBlTmFtZTogc3RyaW5nLCBzaXR1YXRpb246IHN0cmluZywgbW9kZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAvKiogY2hlY2sgaWYgd2UgaGF2ZSBhIGNhY2hlZCBmb3JtIGZpcnN0ICovXG4gICAgbGV0IGNhY2hlZEZvcm07XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKCFjYWNoZWRGb3JtICYmIGkgPCB0aGlzLm9iamVjdFR5cGVGb3Jtcy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLm9iamVjdFR5cGVGb3Jtc1tpXS5uYW1lID09PSBvYmplY3RUeXBlTmFtZSAmJlxuICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3Jtc1tpXS5tb2RlID09PSBtb2RlICYmXG4gICAgICAgIHRoaXMub2JqZWN0VHlwZUZvcm1zW2ldLnNpdHVhdGlvbiA9PT0gc2l0dWF0aW9uKSB7XG4gICAgICAgIGNhY2hlZEZvcm0gPSB0aGlzLm9iamVjdFR5cGVGb3Jtc1tpXTtcbiAgICAgIH1cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICBpZiAoY2FjaGVkRm9ybSkge1xuICAgICAgLyoqIHJldHVybiBhIGNsb25lIG9mIHRoZSBjYWNoZWQgbW9kZWwgYXMgb3RoZXJ3aXNlIG1vZGVsIGNoYW5nZXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgY2hhY2hlZCBtb2RlbCAqL1xuICAgICAgcmV0dXJuIG9mKF8uY2xvbmVEZWVwKGNhY2hlZEZvcm0pKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICBsZXQgdXJpID0gYC91aS9mb3JtLyR7b2JqZWN0VHlwZU5hbWV9P3NpdHVhdGlvbj0ke3NpdHVhdGlvbn1gO1xuICAgICAgdXJpICs9ICEhbW9kZSA/IGAmZm9ybW1vZGU9JHttb2RlfWAgOiAnJztcblxuICAgICAgLyoqIGZldGNoIGFuZCBjYWNoZSB0aGUgcmVxdWVzdGVkIGZvcm0sIGlmIG5vIGNhY2hlZCB2ZXJzaW9uIHdhcyBmb3VuZCAqL1xuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpLCAoKSA9PiB0aGlzLmJhY2tlbmRcbiAgICAgICAgLmdldEpzb24odXJpKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKG1vZGVsKSA9PiB0aGlzLm9iamVjdFR5cGVGb3Jtcy5wdXNoKF8uY2xvbmVEZWVwKG1vZGVsKSkpXG4gICAgICAgICkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBiYWNrZW5kcyBzeXN0ZW0gZGVmaW5pdGlvbiBhbmQgdXBkYXRlcyBzeXN0ZW0kIE9ic2VydmFibGUuXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc3lzdGVtJCBvYnNlcnZhYmxlIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBvdGhlcndpc2UgeW91J2xsIHRyaWdnZXIgZmV0Y2hpbmcgdGhlXG4gICAqIHN5c3RlbSBkZWZpbml0aW9uIGV2ZXJ5IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGxvYWQgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxuICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gc3VjY2Vzc2Z1bGxcbiAgICovXG4gIHB1YmxpYyBnZXRTeXN0ZW1EZWZpbml0aW9uKHVzZXI6IEVvVXNlcik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAvLyB0b2RvOiB0ZW1wb3Jhcnk6IE9yZ0NoYW5nZXMgY291bGQgbm90IGJlIHJlY29nbml6ZWQgYnV0IGFmZmVjdCBvYmplY3QgZGVmaW5pdGlvblxuICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcblxuICAgIC8vIHRvZG86IGVuYWJsZSBhZ2FpbiB3aGVuIE9yZ0NoYW5nZXMgYXJlIHJlY29nbml6YWJsZSAoRE8gTk9UIERFTEVURSEpXG4gICAgLy8gLy8gaXMgdGhlcmUgYSBjYWNoZWQgdmVyc2lvblxuICAgIC8vIHJldHVybiB0aGlzLmFwcENhY2hlXG4gICAgLy8gICAuZ2V0SXRlbSh0aGlzLmFwcENhY2hlLlNZU1RFTV9ERUZJTklUSU9OKVxuICAgIC8vICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIC8vICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2FjaGVkIHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24uJywgZXJyb3IpO1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XG4gICAgLy8gICB9KVxuICAgIC8vICAgLmZsYXRNYXAoKGNhY2hlZFN5c3RlbURlZmluaXRpb246IGFueSkgPT4ge1xuICAgIC8vXG4gICAgLy8gICAgIC8vIHllcz8gdGhlbiBjaGVjayBpZiBpdCdzIHVwIHRvIGRhdGVcbiAgICAvLyAgICAgaWYgKGNhY2hlZFN5c3RlbURlZmluaXRpb24pIHtcbiAgICAvL1xuICAgIC8vICAgICAgIGlmIChcbiAgICAvLyAgICAgICAgIHVzZXIuc2NoZW1hLnZlcnNpb24gIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby52ZXJzaW9uIHx8XG4gICAgLy8gICAgICAgICB1c2VyLmlkICE9PSBjYWNoZWRTeXN0ZW1EZWZpbml0aW9uLmluZm8udXNlciB8fFxuICAgIC8vICAgICAgICAgdXNlci5nZXRTY2hlbWFMb2NhbGUoKSAhPT0gY2FjaGVkU3lzdGVtRGVmaW5pdGlvbi5pbmZvLmxvY2FsZVxuICAgIC8vICAgICAgICkge1xuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKHVzZXIpO1xuICAgIC8vICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICAvLyBjYWNoZSBpcyB1cCB0byBkYXRlLiByZXR1cm4gdGhlIGNhY2hlZCBvbmVcbiAgICAvLyAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTeXN0ZW0gZGVmaW5pdGlvbiBpcyB1cCB0byBkYXRlLCB1c2luZyBjYWNoZWQgdmVyc2lvbi4nLCBjYWNoZWRTeXN0ZW1EZWZpbml0aW9uKTtcbiAgICAvLyAgICAgICAgIHRoaXMuc3lzdGVtID0gY2FjaGVkU3lzdGVtRGVmaW5pdGlvbjtcbiAgICAvLyAgICAgICAgIHRoaXMuc3lzdGVtU291cmNlLm5leHQodGhpcy5zeXN0ZW0pO1xuICAgIC8vICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAvLyBubyBjYWNoZWQgc3lzdGVtRGVmaW5pdGlvbiBmb3VuZFxuICAgIC8vICAgICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZhbHVlIGRlcGVuZGluZyBvbiBhIGdpdmVuIFR5cGVcbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyB2YWx1ZVR5cGVcbiAgICogQHJldHVybnMgYW55XG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdFZhbHVlKHZhbHVlVHlwZTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgZGVmYXVsdFZhbHVlO1xuICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICBjYXNlICdDVVJSRU5UX1VTRVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMudXNlci5uYW1lO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NVUlJFTlRfVVNFUl9OQU1FJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIudGl0bGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ1VSUkVOVF9EQVRFVElNRSc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDVVJSRU5UX0RBVEUnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1lFQVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnllYXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdNT05USCc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkubW9udGgoKSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREFZJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5kYXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnSE9VUic6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuaG91cigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ01JTlVURSc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkubWludXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnU0VDT05EJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zZWNvbmQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdXRUVLX09GX1lFQVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLmlzb1dlZWsoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfV0VFSyc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZignaXNvV2VlaycpLnRvRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0ZJUlNUX0RBWV9PRl9NT05USCc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfWUVBUic6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gdGhlIHNlcnZlci4gUHJvdmlkZWQgcGFyYW1zIGFyZSB1c2VkIGZvciBzdG9yaW5nIHRoZVxuICAgKiByZWNlbnQgdmVyc2lvbiBpbiBjYWNoZS5cbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gZmV0Y2ggdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxuICAgKiBAcmV0dXJuIGJvb2xlYW5cbiAgICovXG4gIGZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyOiBFb1VzZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIGNvbnN0IGZldGNoZXMgPSBbXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS90eXBlL2xpc3Q/ZWxlbWVudHM9dHJ1ZSZiYXNldHlwZXM9dHJ1ZScpLFxuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oJy9zeXN0ZW0vY3MvbGlzdD9lbGVtZW50cz10cnVlJylcbiAgICBdO1xuXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbihmZXRjaGVzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gc2VydmVyLicsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLnN5c3RlbVNvdXJjZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gZnJvbSBzZXJ2ZXIuJyk7XG4gICAgICAgIH0pKSxcbiAgICAgICAgbWFwKChkYXRhKSA9PiB7XG5cbiAgICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3JtcyA9IFtdO1xuICAgICAgICAgIGNvbnN0IHN5c3RlbSA9IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogaW5mbyBhYm91dCB0aGUgY3VycmVudCBzeXN0ZW0gZGVmaW5pdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgIHVzZXI6IHVzZXIuaWQsXG4gICAgICAgICAgICAgIGxvY2FsZTogdXNlci5nZXRTY2hlbWFMb2NhbGUoKSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogdXNlci5zY2hlbWEudmVyc2lvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogc3VwcG9ydGVkIGJhY2tlbmQgbG9jYWxlc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsb2NhbGVzOiB1c2VyLnNjaGVtYS5zdXBwb3J0ZWRMb2NhbGVzLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBvYmplY3QgdHlwZSBkZWZpbml0aW9uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0eXBlczogW10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGNvZGVzeXN0ZW1zIGNhY2hlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvZGVzeXN0ZW1zOiBbXVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCB0eXBlcyA9IGRhdGFbMF07XG4gICAgICAgICAgc3lzdGVtLnR5cGVzID0gdHlwZXMubWFwKHQgPT4gbmV3IE9iamVjdFR5cGUodCkpO1xuICAgICAgICAgIHN5c3RlbS5jb2Rlc3lzdGVtcyA9IGRhdGFbMV07XG5cbiAgICAgICAgICB0aGlzLnN5c3RlbSA9IHN5c3RlbTtcbiAgICAgICAgICB0aGlzLnN5c3RlbVNvdXJjZS5uZXh0KHN5c3RlbSk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0ZldGNoZWQgbmV3IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gKHVzZXI6ICcgKyB1c2VyLmlkICsgJywgdmVyc2lvbjogJyArIHVzZXIuc2NoZW1hLnZlcnNpb24gKyAnKS4nKTtcbiAgICAgICAgICB0aGlzLmFwcENhY2hlXG4gICAgICAgICAgICAuc2V0SXRlbSh0aGlzLmFwcENhY2hlLlNZU1RFTV9ERUZJTklUSU9OLCBzeXN0ZW0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NhY2hlZCByZWNlbnQgdmVyc2lvbicpO1xuICAgICAgICAgICAgfSwgVXRpbHMubG9nRXJyb3IobnVsbCwgJ0Vycm9yIGNhY2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24uJykpO1xuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbiBvcmdhbml6YXRpb24gb2JqZWN0IGJ5IGl0cyBJRFxuICAgKiBAcGFyYW0gaWQgSUQgb2Ygb3JnIG9iamVjdFxuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oYC9vcmdhbml6YXRpb24vaWQvJHtpZH1gKVxuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIG9yZ2FuaXphdGlvbiBvYmplY3QgZm9yIGEgZ2l2ZW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgdG8gZmV0Y2ggb2JqZWN0IGZvclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0KG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhbbmFtZV0pLnBpcGUobWFwKHJlcyA9PiByZXNbMF0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgY29sbGVjdGlvbiBvZiBvcmdhbml6YXRpb24gb2JqZWN0c1xuICAgKlxuICAgKiBAcGFyYW0gbmFtZXMgQXJyYXkgb2YgbmFtZXMgdG8gZmV0Y2ggb2JqZWN0cyBmb3JcbiAgICogQHJldHVybnMgQSBBcnJheSBvZiBPcmdhbml6YXRpb24gT2JqZWN0c1xuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhuYW1lczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPElPcmdhbml6YXRpb25PYmplY3RzW10+IHtcbiAgICBjb25zdCB0b0ZldGNoOiBPYnNlcnZhYmxlPElPcmdhbml6YXRpb25PYmplY3RzPltdID0gbmFtZXMubWFwKG5hbWUgPT4gdGhpcy5iYWNrZW5kLmdldEpzb24oYC9vcmdhbml6YXRpb24vbmFtZS8ke25hbWV9YCkucGlwZShjYXRjaEVycm9yKGVycm9yID0+IG9mKHtpZDogbmFtZSwgYWN0aXZlOiBmYWxzZX0pKSkpO1xuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odG9GZXRjaCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGNvbGxlY3Rpb24gb2Ygb3JnYW5pemF0aW9uIHJvbGVzXG4gICAqXG4gICAqIEByZXR1cm4gQSBBcnJheSBvZiBPcmdhbml6YXRpb24gUm9sZXNcbiAgICovXG4gIGdldFJvbGVzKCk6IE9ic2VydmFibGU8T3JnUm9sZVtdPiB7XG4gICAgaWYgKHRoaXMuY2FjaGVkUm9sZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5jYWNoZWRSb2xlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgICAgLmdldCgnL29yZ2FuaXphdGlvbi9yb2xlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKG8gPT4gbyBhcyBPcmdSb2xlW10pLFxuICAgICAgICAgIHRhcChyb2xlcyA9PiAodGhpcy5jYWNoZWRSb2xlcyA9IHJvbGVzIGFzIE9yZ1JvbGVbXSkpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUt6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBR3ZDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7OztBQUU1Qjs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBV3hCLFlBQW9CLE9BQXVCLEVBQ3ZCLE1BQWMsRUFDZCxZQUEwQixFQUMxQixRQUF5QjtRQUh6QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFYckMsaUJBQVksR0FBRyxJQUFJLGFBQWEsRUFBTyxDQUFDO1FBQ3pDLFlBQU8sR0FBb0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVuRSxzQ0FBc0M7UUFDOUIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUFFNUIsZ0JB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QUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFDLEtBQWU7UUFDcEMsTUFBTSxPQUFPLEdBQXVDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuTCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDM0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPO2lCQUNoQixHQUFHLENBQUMsb0JBQW9CLENBQUM7aUJBQ3pCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFjLENBQUMsRUFDeEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQWtCLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1NBQ0w7SUFDSCxDQUFDOzswR0FyV1UsYUFBYTs4R0FBYixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Y2F0Y2hFcnJvciwgdGFwLCBtYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SU9yZ2FuaXphdGlvbk9iamVjdHN9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9vcmdhbml6YXRpb24tb2JqZWN0cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL2FwcC1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyJztcbmltcG9ydCB7T2JqZWN0VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvb2JqZWN0LXR5cGUubW9kZWwnO1xuaW1wb3J0IHtFb1VzZXJ9IGZyb20gJy4uLy4uL21vZGVsL2VvLXVzZXIubW9kZWwnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtPcmdSb2xlfSBmcm9tICcuLi8uLi9tb2RlbC9vcmcubW9kZWwnO1xuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQge0lDb2RlU3lzdGVtfSBmcm9tICcuL3N5c3RlbWRlZmluaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgU3lzdGVtIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgX3N5c3RlbTtcbiAgcHJpdmF0ZSBzeXN0ZW1Tb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XG4gIHB1YmxpYyBzeXN0ZW0kOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnN5c3RlbVNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvLyBzZXNzaW9uIGNhY2hlIGZvciBvYmplY3QgdHlwZSBmb3Jtc1xuICBwcml2YXRlIG9iamVjdFR5cGVGb3JtczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSB1c2VyOiBFb1VzZXI7XG4gIHByaXZhdGUgY2FjaGVkUm9sZXM6IE9yZ1JvbGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXBwQ2FjaGU6IEFwcENhY2hlU2VydmljZSkge1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuU1lTVEVNX1NUQVRVU19TQ0hFTUFfQ0hBTkdFRCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKHRoaXMudXNlcik7XG4gICAgfSlcbiAgfVxuXG4gIHNldCBzeXN0ZW0ocyl7XG4gICAgdGhpcy5fc3lzdGVtID0gcztcbiAgfVxuXG4gIGdldCBzeXN0ZW0oKXtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9zeXN0ZW0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBPYmplY3RUeXBlc1xuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIGFsbCBvYmplY3QgdHlwZXNcbiAgICovXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlcygpOiBPYmplY3RUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbS50eXBlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIE9iamVjdFR5cGUgYnkgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdHlwZVxuICAgKiBAcmV0dXJucyB0aGUgT2JqZWN0VHlwZSBtYXRjaGluZyB0aGUgZ2l2ZW4gbmFtZVxuICAgKi9cbiAgcHVibGljIGdldE9iamVjdFR5cGUob2JqZWN0VHlwZU5hbWU6IHN0cmluZyk6IE9iamVjdFR5cGUge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbS50eXBlcy5maW5kKHQgPT4gdC5uYW1lID09PSBvYmplY3RUeXBlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGZvcm0gZWxlbWVudHMgZnJvbSBmb3JtIG1vZGVsLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB0byBmZXRjaCB0aGVtXG4gICAqIGZvciBhIHNwZWNpYWwgc2l0dWF0aW9uIGxpa2UgU0VBUkNIXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlTmFtZSBPYmplY3RUeXBlIHRvIGZldGNoIGVsZW1lbnRzIGZvclxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIEZvcm0gbW9kZWwgc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcbiAgICogQHBhcmFtIGlzQ29udGV4dFR5cGUgRmxhZyBpbmRpY2F0aW5nIHRoYXQgdGhlIGZvcm0gbW9kZWwgc2hvdWxkIGJlIGZldGNoZWQgZm9yIGEgY29udGV4dCBtb2RlXG4gICAqL1xuICBnZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKG9iamVjdFR5cGVOYW1lOiBzdHJpbmcsIHNpdHVhdGlvbjogc3RyaW5nLCBpc0NvbnRleHRUeXBlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RUeXBlRm9ybShvYmplY3RUeXBlTmFtZSwgc2l0dWF0aW9uLCBpc0NvbnRleHRUeXBlID8gJ0NPTlRFWFQnIDogbnVsbCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMucHJvY2Vzc0Zvcm1Nb2RlbEVsZW1lbnRzKG1vZGVsLCBlbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBvZihlbGVtZW50cyk7XG4gICAgfSkpXG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NGb3JtTW9kZWxFbGVtZW50cyhtb2RlbDogYW55LCBlbGVtZW50czogYW55W10pIHtcbiAgICBtb2RlbC5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgaWYoZS50eXBlICE9PSBcIm8ybUdyb3VwXCIgJiYgZS50eXBlICE9PSBcIm8ybUdyb3VwU3RhY2tcIikge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGUpO1xuICAgICAgfSBlbHNlIGlmKGUuZWxlbWVudHMgJiYgZS5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRm9ybU1vZGVsRWxlbWVudHMoZSwgZWxlbWVudHMpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB0eXBlIGltcGxlbWVudHMgYSBnaXZlbiBzdXBlcnR5cGVcbiAgICogQHBhcmFtIHR5cGUgVHlwZSB0byBiZSBjaGVja2VkXG4gICAqIEBwYXJhbSBzdXBlclR5cGVOYW1lIE5hbWUgb2YgdGhlIHN1cGVydHlwZVxuICAgKi9cbiAgcHVibGljIGltcGxlbWVudHNUeXBlKHR5cGU6IE9iamVjdFR5cGUsIHN1cGVyVHlwZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlLm5hbWUgPT09IHN1cGVyVHlwZU5hbWUgfHwgKHR5cGUuaW1wbGVtZW50cyAmJiB0eXBlLmltcGxlbWVudHMuaW5kZXhPZihzdXBlclR5cGVOYW1lKSAhPT0gLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBjb2Rlc3lzdGVtXG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgY29kZXN5c3RlbXMgaWRcbiAgICogQHJldHVybnMgVGhlIGNvZGVzeXN0ZW0gb2JqZWN0IG1hdGNoaW5nIHRoZSBnaXZlbiBpZFxuICAgKi9cbiAgcHVibGljIGdldENvZGVzeXN0ZW0oaWQ6IHN0cmluZyk6IElDb2RlU3lzdGVtIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW0uY29kZXN5c3RlbXMuZmluZCh0ID0+IHQuaWQgPT09IGlkIHx8IHQubmFtZSA9PT0gaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybSBtb2RlbCBvZiBhbiBvYmplY3QgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGVOYW1lIFRoZSBvYmplY3QgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gVGhlIGZvcm0gc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcbiAgICogQHBhcmFtIG1vZGUgRm9ybSBtb2RlIHRvIGZldGNoIChlLmcuIENPTlRFWFQpXG4gICAqIEByZXR1cm5zIFRoZSBvYmplY3QgdHlwZSBmb3JtIG1vZGVsXG4gICAqL1xuICBwdWJsaWMgZ2V0T2JqZWN0VHlwZUZvcm0ob2JqZWN0VHlwZU5hbWU6IHN0cmluZywgc2l0dWF0aW9uOiBzdHJpbmcsIG1vZGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgLyoqIGNoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgZm9ybSBmaXJzdCAqL1xuICAgIGxldCBjYWNoZWRGb3JtO1xuXG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlICghY2FjaGVkRm9ybSAmJiBpIDwgdGhpcy5vYmplY3RUeXBlRm9ybXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5vYmplY3RUeXBlRm9ybXNbaV0ubmFtZSA9PT0gb2JqZWN0VHlwZU5hbWUgJiZcbiAgICAgICAgdGhpcy5vYmplY3RUeXBlRm9ybXNbaV0ubW9kZSA9PT0gbW9kZSAmJlxuICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3Jtc1tpXS5zaXR1YXRpb24gPT09IHNpdHVhdGlvbikge1xuICAgICAgICBjYWNoZWRGb3JtID0gdGhpcy5vYmplY3RUeXBlRm9ybXNbaV07XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlZEZvcm0pIHtcbiAgICAgIC8qKiByZXR1cm4gYSBjbG9uZSBvZiB0aGUgY2FjaGVkIG1vZGVsIGFzIG90aGVyd2lzZSBtb2RlbCBjaGFuZ2VzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNoYWNoZWQgbW9kZWwgKi9cbiAgICAgIHJldHVybiBvZihfLmNsb25lRGVlcChjYWNoZWRGb3JtKSk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgbGV0IHVyaSA9IGAvdWkvZm9ybS8ke29iamVjdFR5cGVOYW1lfT9zaXR1YXRpb249JHtzaXR1YXRpb259YDtcbiAgICAgIHVyaSArPSAhIW1vZGUgPyBgJmZvcm1tb2RlPSR7bW9kZX1gIDogJyc7XG5cbiAgICAgIC8qKiBmZXRjaCBhbmQgY2FjaGUgdGhlIHJlcXVlc3RlZCBmb3JtLCBpZiBubyBjYWNoZWQgdmVyc2lvbiB3YXMgZm91bmQgKi9cbiAgICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSwgKCkgPT4gdGhpcy5iYWNrZW5kXG4gICAgICAgIC5nZXRKc29uKHVyaSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChtb2RlbCkgPT4gdGhpcy5vYmplY3RUeXBlRm9ybXMucHVzaChfLmNsb25lRGVlcChtb2RlbCkpKVxuICAgICAgICApKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgYmFja2VuZHMgc3lzdGVtIGRlZmluaXRpb24gYW5kIHVwZGF0ZXMgc3lzdGVtJCBPYnNlcnZhYmxlLlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIHN5c3RlbSQgb2JzZXJ2YWJsZSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgb3RoZXJ3aXNlIHlvdSdsbCB0cmlnZ2VyIGZldGNoaW5nIHRoZVxuICAgKiBzeXN0ZW0gZGVmaW5pdGlvbiBldmVyeSB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlciBUaGUgdXNlciB0byBsb2FkIHRoZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3JcbiAgICogQHJldHVybnMgdHJ1ZSB3aGVuIHN1Y2Nlc3NmdWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0U3lzdGVtRGVmaW5pdGlvbih1c2VyOiBFb1VzZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgLy8gdG9kbzogdGVtcG9yYXJ5OiBPcmdDaGFuZ2VzIGNvdWxkIG5vdCBiZSByZWNvZ25pemVkIGJ1dCBhZmZlY3Qgb2JqZWN0IGRlZmluaXRpb25cbiAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XG5cbiAgICAvLyB0b2RvOiBlbmFibGUgYWdhaW4gd2hlbiBPcmdDaGFuZ2VzIGFyZSByZWNvZ25pemFibGUgKERPIE5PVCBERUxFVEUhKVxuICAgIC8vIC8vIGlzIHRoZXJlIGEgY2FjaGVkIHZlcnNpb25cbiAgICAvLyByZXR1cm4gdGhpcy5hcHBDYWNoZVxuICAgIC8vICAgLmdldEl0ZW0odGhpcy5hcHBDYWNoZS5TWVNURU1fREVGSU5JVElPTilcbiAgICAvLyAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAvLyAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNhY2hlZCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uLicsIGVycm9yKTtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKHVzZXIpO1xuICAgIC8vICAgfSlcbiAgICAvLyAgIC5mbGF0TWFwKChjYWNoZWRTeXN0ZW1EZWZpbml0aW9uOiBhbnkpID0+IHtcbiAgICAvL1xuICAgIC8vICAgICAvLyB5ZXM/IHRoZW4gY2hlY2sgaWYgaXQncyB1cCB0byBkYXRlXG4gICAgLy8gICAgIGlmIChjYWNoZWRTeXN0ZW1EZWZpbml0aW9uKSB7XG4gICAgLy9cbiAgICAvLyAgICAgICBpZiAoXG4gICAgLy8gICAgICAgICB1c2VyLnNjaGVtYS52ZXJzaW9uICE9PSBjYWNoZWRTeXN0ZW1EZWZpbml0aW9uLmluZm8udmVyc2lvbiB8fFxuICAgIC8vICAgICAgICAgdXNlci5pZCAhPT0gY2FjaGVkU3lzdGVtRGVmaW5pdGlvbi5pbmZvLnVzZXIgfHxcbiAgICAvLyAgICAgICAgIHVzZXIuZ2V0U2NoZW1hTG9jYWxlKCkgIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby5sb2NhbGVcbiAgICAvLyAgICAgICApIHtcbiAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgLy8gY2FjaGUgaXMgdXAgdG8gZGF0ZS4gcmV0dXJuIHRoZSBjYWNoZWQgb25lXG4gICAgLy8gICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU3lzdGVtIGRlZmluaXRpb24gaXMgdXAgdG8gZGF0ZSwgdXNpbmcgY2FjaGVkIHZlcnNpb24uJywgY2FjaGVkU3lzdGVtRGVmaW5pdGlvbik7XG4gICAgLy8gICAgICAgICB0aGlzLnN5c3RlbSA9IGNhY2hlZFN5c3RlbURlZmluaXRpb247XG4gICAgLy8gICAgICAgICB0aGlzLnN5c3RlbVNvdXJjZS5uZXh0KHRoaXMuc3lzdGVtKTtcbiAgICAvLyAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgLy8gbm8gY2FjaGVkIHN5c3RlbURlZmluaXRpb24gZm91bmRcbiAgICAvLyAgICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2YWx1ZSBkZXBlbmRpbmcgb24gYSBnaXZlbiBUeXBlXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgdmFsdWVUeXBlXG4gICAqIEByZXR1cm5zIGFueVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHRWYWx1ZSh2YWx1ZVR5cGU6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTtcbiAgICBzd2l0Y2ggKHZhbHVlVHlwZSkge1xuICAgICAgY2FzZSAnQ1VSUkVOVF9VU0VSJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIubmFtZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDVVJSRU5UX1VTRVJfTkFNRSc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy51c2VyLnRpdGxlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NVUlJFTlRfREFURVRJTUUnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ1VSUkVOVF9EQVRFJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdZRUFSJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS55ZWFyKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnTU9OVEgnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLm1vbnRoKCkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RBWSc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuZGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0hPVVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLmhvdXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdNSU5VVEUnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLm1pbnV0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1NFQ09ORCc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc2Vjb25kKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnV0VFS19PRl9ZRUFSJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5pc29XZWVrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRklSU1RfREFZX09GX1dFRUsnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2lzb1dlZWsnKS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfTU9OVEgnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRklSU1RfREFZX09GX1lFQVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3llYXInKS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBzeXN0ZW0gZGVmaW5pdGlvbiBmcm9tIHRoZSBzZXJ2ZXIuIFByb3ZpZGVkIHBhcmFtcyBhcmUgdXNlZCBmb3Igc3RvcmluZyB0aGVcbiAgICogcmVjZW50IHZlcnNpb24gaW4gY2FjaGUuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGZldGNoIHRoZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3JcbiAgICogQHJldHVybiBib29sZWFuXG4gICAqL1xuICBmZXRjaFN5c3RlbURlZmluaXRpb24odXNlcjogRW9Vc2VyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG5cbiAgICBjb25zdCBmZXRjaGVzID0gW1xuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oJy9zeXN0ZW0vdHlwZS9saXN0P2VsZW1lbnRzPXRydWUmYmFzZXR5cGVzPXRydWUnKSxcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRKc29uKCcvc3lzdGVtL2NzL2xpc3Q/ZWxlbWVudHM9dHJ1ZScpXG4gICAgXTtcblxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4oZmV0Y2hlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBmZXRjaGluZyByZWNlbnQgdmVyc2lvbiBvZiBzeXN0ZW0gZGVmaW5pdGlvbiBmcm9tIHNlcnZlci4nLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5zeXN0ZW1Tb3VyY2UuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gc2VydmVyLicpO1xuICAgICAgICB9KSksXG4gICAgICAgIG1hcCgoZGF0YSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5vYmplY3RUeXBlRm9ybXMgPSBbXTtcbiAgICAgICAgICBjb25zdCBzeXN0ZW0gPSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGluZm8gYWJvdXQgdGhlIGN1cnJlbnQgc3lzdGVtIGRlZmluaXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICB1c2VyOiB1c2VyLmlkLFxuICAgICAgICAgICAgICBsb2NhbGU6IHVzZXIuZ2V0U2NoZW1hTG9jYWxlKCksXG4gICAgICAgICAgICAgIHZlcnNpb246IHVzZXIuc2NoZW1hLnZlcnNpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHN1cHBvcnRlZCBiYWNrZW5kIGxvY2FsZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbG9jYWxlczogdXNlci5zY2hlbWEuc3VwcG9ydGVkTG9jYWxlcyxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogb2JqZWN0IHR5cGUgZGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdHlwZXM6IFtdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBjb2Rlc3lzdGVtcyBjYWNoZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb2Rlc3lzdGVtczogW11cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgdHlwZXMgPSBkYXRhWzBdO1xuICAgICAgICAgIHN5c3RlbS50eXBlcyA9IHR5cGVzLm1hcCh0ID0+IG5ldyBPYmplY3RUeXBlKHQpKTtcbiAgICAgICAgICBzeXN0ZW0uY29kZXN5c3RlbXMgPSBkYXRhWzFdO1xuXG4gICAgICAgICAgdGhpcy5zeXN0ZW0gPSBzeXN0ZW07XG4gICAgICAgICAgdGhpcy5zeXN0ZW1Tb3VyY2UubmV4dChzeXN0ZW0pO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdGZXRjaGVkIG5ldyB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uICh1c2VyOiAnICsgdXNlci5pZCArICcsIHZlcnNpb246ICcgKyB1c2VyLnNjaGVtYS52ZXJzaW9uICsgJykuJyk7XG4gICAgICAgICAgdGhpcy5hcHBDYWNoZVxuICAgICAgICAgICAgLnNldEl0ZW0odGhpcy5hcHBDYWNoZS5TWVNURU1fREVGSU5JVElPTiwgc3lzdGVtKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdDYWNoZWQgcmVjZW50IHZlcnNpb24nKTtcbiAgICAgICAgICAgIH0sIFV0aWxzLmxvZ0Vycm9yKG51bGwsICdFcnJvciBjYWNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uLicpKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYW4gb3JnYW5pemF0aW9uIG9iamVjdCBieSBpdHMgSURcbiAgICogQHBhcmFtIGlkIElEIG9mIG9yZyBvYmplY3RcbiAgICovXG4gIGdldE9yZ2FuaXphdGlvbk9iamVjdEJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRKc29uKGAvb3JnYW5pemF0aW9uL2lkLyR7aWR9YClcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBvcmdhbml6YXRpb24gb2JqZWN0IGZvciBhIGdpdmVuIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIHRvIGZldGNoIG9iamVjdCBmb3JcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldE9yZ2FuaXphdGlvbk9iamVjdChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdldE9yZ2FuaXphdGlvbk9iamVjdHMoW25hbWVdKS5waXBlKG1hcChyZXMgPT4gcmVzWzBdKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGNvbGxlY3Rpb24gb2Ygb3JnYW5pemF0aW9uIG9iamVjdHNcbiAgICpcbiAgICogQHBhcmFtIG5hbWVzIEFycmF5IG9mIG5hbWVzIHRvIGZldGNoIG9iamVjdHMgZm9yXG4gICAqIEByZXR1cm5zIEEgQXJyYXkgb2YgT3JnYW5pemF0aW9uIE9iamVjdHNcbiAgICovXG4gIGdldE9yZ2FuaXphdGlvbk9iamVjdHMobmFtZXM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxJT3JnYW5pemF0aW9uT2JqZWN0c1tdPiB7XG4gICAgY29uc3QgdG9GZXRjaDogT2JzZXJ2YWJsZTxJT3JnYW5pemF0aW9uT2JqZWN0cz5bXSA9IG5hbWVzLm1hcChuYW1lID0+IHRoaXMuYmFja2VuZC5nZXRKc29uKGAvb3JnYW5pemF0aW9uL25hbWUvJHtuYW1lfWApLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiBvZih7aWQ6IG5hbWUsIGFjdGl2ZTogZmFsc2V9KSkpKTtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRvRmV0Y2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBjb2xsZWN0aW9uIG9mIG9yZ2FuaXphdGlvbiByb2xlc1xuICAgKlxuICAgKiBAcmV0dXJuIEEgQXJyYXkgb2YgT3JnYW5pemF0aW9uIFJvbGVzXG4gICAqL1xuICBnZXRSb2xlcygpOiBPYnNlcnZhYmxlPE9yZ1JvbGVbXT4ge1xuICAgIGlmICh0aGlzLmNhY2hlZFJvbGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuY2FjaGVkUm9sZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAgIC5nZXQoJy9vcmdhbml6YXRpb24vcm9sZScpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChvID0+IG8gYXMgT3JnUm9sZVtdKSxcbiAgICAgICAgICB0YXAocm9sZXMgPT4gKHRoaXMuY2FjaGVkUm9sZXMgPSByb2xlcyBhcyBPcmdSb2xlW10pKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
- import { throwError as observableThrowError, EMPTY as observableEmpty } from 'rxjs';
1
+ import { EMPTY as observableEmpty, throwError as observableThrowError } from 'rxjs';
2
2
  import { EoError } from '../model/eo-error.model';
3
- import moment from 'moment';
4
3
  import { RangeValue } from '../model/range-value.model';
4
+ import moment from 'moment';
5
5
  export class Utils {
6
6
  static uniqBy(items, property) {
7
7
  const a = {};
@@ -301,4 +301,4 @@ export class Utils {
301
301
  }
302
302
  }
303
303
  Utils.PREF_RANGEVALUE = 'RangeValue';
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxLQUFLLElBQUksZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3RELE1BQU0sT0FBTyxLQUFLO0lBSVQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsUUFBZ0I7UUFDakQsTUFBTSxDQUFDLEdBQXlCLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBVTtRQUM1QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMxQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO2FBQ2hFLEdB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QyxDQUFDO2dCQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVqQyxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDL0U7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7QUE5VGMscUJBQWUsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IsIEVNUFRZIGFzIG9ic2VydmFibGVFbXB0eSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VvRXJyb3J9IGZyb20gJy4uL21vZGVsL2VvLWVycm9yLm1vZGVsJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7UmFuZ2VWYWx1ZX0gZnJvbSAnLi4vbW9kZWwvcmFuZ2UtdmFsdWUubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXRlZE1haWxUbyA9IHN0cmluZyB8IHN0cmluZ1tdO1xuZXhwb3J0IGNsYXNzIFV0aWxzIHtcblxuICBwcml2YXRlIHN0YXRpYyBQUkVGX1JBTkdFVkFMVUUgPSAnUmFuZ2VWYWx1ZSc7XG5cbiAgcHVibGljIHN0YXRpYyB1bmlxQnkoaXRlbXM6IGFueVtdLCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgY29uc3QgYToge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgICBpdGVtcy5mb3JFYWNoKGkgPT4gYVtpW3Byb3BlcnR5XV0gPSBpKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGsgPT4gYVtrXSkgXG4gIH1cblxuICAvKipcbiAgICogVXRpbGl0eSBtZXRob2QgZm9yIGFkZGluZyBwYXJhbWV0ZXJzIHRvIGEgZ2l2ZW4gVVJJLlxuICAgKlxuICAgKiBAcGFyYW0gdXJpIFRoZSB1cmkgc3RyaW5nIHRvIGF0dGFjaCB0aGUgcGFyYW1ldGVycyB0b1xuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBvYmplY3QgY29udGFpbmluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGVuZGVkXG4gICAqIEByZXR1cm5zIHRoZSBnaXZlbiB1cmkgZXh0ZW5kZWQgYnkgdGhlIGdpdmVuIHBhcmFtZXRlcnMgKyByZW1vdmUgZW1wdHkgcGFyYW1ldGVyc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBidWlsZFVyaSh1cmk6IHN0cmluZywgcGFyYW1zOiB7fSk6IHN0cmluZyB7XG4gICAgY29uc3QgcSA9IE9iamVjdC5rZXlzKHBhcmFtcylcbiAgICAgIC5maWx0ZXIoayA9PiBwYXJhbXNba10gfHwgcGFyYW1zW2tdID09PSAwIHx8IHBhcmFtc1trXSA9PT0gZmFsc2UpXG4gICAgICAubWFwKGsgPT4gayArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNba10pKS5qb2luKCcmJyk7XG4gICAgcmV0dXJuIHVyaSArIChxID8gJz8nICsgcSA6ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5pcXVlIGlkZW50aWZpZXIuXG4gICAqIEByZXR1cm5zIEEgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5fcDgoKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhIGZpbGVuYW1lIHNhZmUgZm9yIHNlbmRpbmcgY2hhcnMgYmV5b25kIEFTQ0lJLTdiaXQgdXNpbmcgcXVvdGVkIHByaW50YWJsZSBlbmNvZGluZy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBmaWxlIG5hbWVcbiAgICogQHJldHVybnMgVGhlIHF1b3RlZCBwcmludGFibGUgZmlsZW5hbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBVdGlscy5lbmNvZGVUb1F1b3RlZFByaW50YWJsZShVdGlscy5lbmNvZGVUb1V0ZjgoZmlsZW5hbWUpKS5yZXBsYWNlKC9fL2csICc9NUYnKVxuICAgIHJldHVybiBgPT9VVEYtOD9RPyR7ZmlsZU5hbWV9Pz1gO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBib29sZWFuIHNcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIF9wOChzPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgcCA9IChNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KSArICcwMDAwMDAwMDAnKS5zdWJzdHIoMiwgOCk7XG4gICAgcmV0dXJuIHMgPyBgLSR7cC5zdWJzdHIoMCwgNCl9LSR7cC5zdWJzdHIoNCwgNCl9YCA6IHA7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBqYXZhc2NyaXB0IHRleHQgdG8gdGhlIHV0Zi04IGNvbnZlcnRlZCB2YXJpYW50LlxuICAgKiBTZWUgW3VuaWNvZGVde0BsaW5rIGh0dHA6Ly90aGxpc3Qub25saW5laG9tZS5kZS90aG9tYXNfaG9tZXBhZ2UvdW5pY29kZS9VVEYtOCUyMEtvbnZlcnRpZXJ1bmclMjBtaXR0ZWxzJTIwSmF2YVNjcmlwdC5odG19IGZvciByZWZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHJhd2lucHV0IFRoZSBpbnB1dCBzdHJpbmdcbiAgICogQHJldHVybnMgVGhlIHV0Zi04IGNvbnZlcnRlZCBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvVXRmOChyYXdpbnB1dCkge1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZSBsaW5lIGJyZWFrc1xuICAgICAqL1xuICAgIHJhd2lucHV0ID0gcmF3aW5wdXQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbiAgICBsZXQgdXRmcmV0dXJuID0gJyc7XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCByYXdpbnB1dC5sZW5ndGg7IG4rKykge1xuICAgICAgLyoqXG4gICAgICAgKiBVbmljb2RlIGZvciBjdXJyZW50IGNoYXJcbiAgICAgICAqL1xuICAgICAgY29uc3QgYyA9IHJhd2lucHV0LmNoYXJDb2RlQXQobik7XG4gICAgICBpZiAoYyA8IDEyOCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQWxsIGNoYXJzIHJhbmdlIDAtMTI3ID0+IDFieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIH0gZWxzZSBpZiAoKGMgPiAxMjcpICYmIChjIDwgMjA0OCkpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDEyNyB0byAyMDQ3ID0+IDJieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7XG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgZnJvbSAyMDQ4IHRvIDY2NTM2ID0+IDNieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiAxMikgfCAyMjQpO1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDYzKSB8IDEyOCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1dGZyZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2VlIFtxdW90ZWQtcHJpbnRhYmxlXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9xdW90ZWQtcHJpbnRhYmxlL2Jsb2IvbWFzdGVyL3F1b3RlZC1wcmludGFibGUuanN9XG4gICAqKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcXVvdGVkUHJpbnRhYmxlKHN5bWJvbCkge1xuICAgIGlmIChzeW1ib2wgPiAnXFx4RkYnKSB7XG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdgZW5jb2RlVG9RdW90ZWRQcmludGFibGVgIGV4cGVjdHMgZXh0ZW5kZWQgQVNDSUkgaW5wdXQgb25seS4gTWlzc2luZyBwcmlvciBVVEYtOCBlbmNvZGluZz8nKTtcbiAgICB9XG4gICAgY29uc3QgY29kZVBvaW50ID0gc3ltYm9sLmNoYXJDb2RlQXQoMCk7XG4gICAgY29uc3QgaGV4YWRlY2ltYWwgPSBjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuICc9JyArICgnMCcgKyBoZXhhZGVjaW1hbCkuc2xpY2UoLTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBzeW1ib2xzIHRoYXQgYXJlIGRlZmluaXRlbHkgdW5zYWZlIChpLmUuIHVuc2FmZSBpbiBhbnkgY29udGV4dCkuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZGVzY3JpYmVzIHRoZXNlIHVuc2FmZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcGFyYW0gcmF3aW5wdXQgSW5wdXQgc3RyaW5nIHRvIGJlIGVuY29kZWRcbiAgICogQHJldHVybnMgVGhlIGVuY29kZWQgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVUb1F1b3RlZFByaW50YWJsZShyYXdpbnB1dCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5jb2RlZCA9IHJhd2lucHV0LnJlcGxhY2UoL1tcXDAtXFxiXFxuLVxceDFGPVxceDdGLVxcdUQ3RkZcXHVEQzAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0vZywgdGhpcy5xdW90ZWRQcmludGFibGUpO1xuICAgIHJldHVybiBlbmNvZGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnRzIEFuIEFycmF5IG9mIE9iamVjdCBieSBnaXZlbiBrZXlcbiAgICogU2VlIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cbiAgICpcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcGFyYW0gb3JkZXJcbiAgICogQHBhcmFtIGxvY2FsZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgKGE6IGFueSwgYjogYW55KSA9PiBudW1iZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc29ydFZhbHVlcyhrZXkgPSAnJywgb3JkZXIgPSAnYXNjJywgbG9jYWxlcz86IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogSW50bC5Db2xsYXRvck9wdGlvbnMpIHtcbiAgICBjb25zdCBmID0gKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICBsZXQgY29tcGFyaXNvbjogbnVtYmVyO1xuICAgICAgY29uc3QgdmFyQSA9IFV0aWxzLmdldFByb3BlcnR5KGEsIGtleSk7XG4gICAgICBjb25zdCB2YXJCID0gVXRpbHMuZ2V0UHJvcGVydHkoYiwga2V5KTtcbiAgICAgIGlmICh0eXBlb2YgdmFyQSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhckIgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSB2YXJBIC0gdmFyQjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0EgPSB2YXJBIHx8IHZhckEgPT09IDAgPyB2YXJBLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgICAgY29uc3Qgc3RyaW5nQiA9IHZhckIgfHwgdmFyQiA9PT0gMCA/IHZhckIudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICBjb21wYXJpc29uID0gc3RyaW5nQS5sb2NhbGVDb21wYXJlKHN0cmluZ0IsIGxvY2FsZXMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyBjb21wYXJpc29uICogLTEgOiBjb21wYXJpc29uO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcga2V5XG4gICAqIEByZXR1cm5zIGFueVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eShvYmplY3Q6IGFueSwga2V5ID0gJycpOiBhbnkge1xuICAgIGNvbnN0IGYgPSBrZXkgPyBrZXkuc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGspID0+IChvIHx8IHt9KVtrXSwgb2JqZWN0KSA6IG9iamVjdDtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5jYXRjaCBvciBPYnNlcnZhYmxlLnN1YnNjcmliZSB0byByZXR1cm4gZW1wdHkgdmFsdWVcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gKGVycm9yKSA9PiBhbnkgY2FsbGJhY2tcbiAgICogQHJldHVybnMgKGVycm9yKSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlbXB0eShjYWxsYmFjaz86IChlcnJvcikgPT4gYW55KSB7XG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVFbXB0eTtcbiAgICB9O1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIHdpdGggc3BlY2lmaWMgc2tpcE5vdGlmaWNhdGlvbiBmdW5jdGlvbiAhISFcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2F0Y2hTa2lwKHNraXBOb3RpZmljYXRpb24/OiAoZXJyb3IpID0+IGFueSwgY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgIGNvbnN0IF9za2lwTm90aWZpY2F0aW9uID0gc2tpcE5vdGlmaWNhdGlvbiAmJiBza2lwTm90aWZpY2F0aW9uKGVycm9yKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihuZXcgRW9FcnJvcihfZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IF9lcnJvciA6IGVycm9yLCBuYW1lLCBtZXNzYWdlLCBfc2tpcE5vdGlmaWNhdGlvbikpO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggISEhXG4gICAqIFtuZy1wYWNrYWdyIGlzc3Vlc117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cbiAgICogQHJldHVybiAoZXJyb3IpID0+IE9ic2VydmFibGU8bmV2ZXI+XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNhdGNoKGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pKTtcbiAgICB9O1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLnN1YnNjcmliZSAhISFcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAgKiBAcmV0dXJuIChlcnJvcikgPT4gdm9pZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0aHJvdyhjYWxsYmFjaz86IChlcnJvcikgPT4gYW55LCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBza2lwTm90aWZpY2F0aW9uPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogVXNlIG9uIE9ic2VydmFibGUuc3Vic2NyaWJlIG9ubHkgaWYgeW91IHdhbnQgdG8gc2tpcCBub3RpZmljYXRpb24gLyB0b2FzdCEhIVxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cbiAgICogQHJldHVybiAoZXJyb3IpID0+IHZvaWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9nRXJyb3IoY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2tpcE5vdGlmaWNhdGlvbiA9IHRydWUpIHtcbiAgICByZXR1cm4gVXRpbHMudGhyb3coY2FsbGJhY2ssIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBlbGVtZW50IGlzIHZpc2libGVcbiAgICpcbiAgICogQHBhcmFtIGVsZW1cbiAgICogQHJldHVybiBib29sZWFuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVmlzaWJsZShlbGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoZWxlbS5vZmZzZXRXaWR0aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QmFzZUhyZWYoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJylbMF0uZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVHJ1bmNhdGUgYSBzdHJpbmcgKGZpcnN0IGFyZ3VtZW50KSBpZiBpdCBpcyBsb25nZXIgdGhhbiB0aGUgZ2l2ZW4gbWF4aW11bSBzdHJpbmcgbGVuZ3RoIChzZWNvbmQgYXJndW1lbnQpLlxuICAgKiBSZXR1cm4gdGhlIHRydW5jYXRlZCBzdHJpbmcgd2l0aCBhIC4uLiBlbmRpbmcgb3Qgd2hhdHMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgc3RyXG4gICAqIEBwYXJhbSBudW1iZXIgbnVtXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlU3RyaW5nKHN0ciwgbnVtLCBlbmRpbmcgPSAnLi4uJykge1xuICAgIGlmIChzdHIubGVuZ3RoID4gbnVtKSB7XG4gICAgICBpZiAobnVtID4gMykge1xuICAgICAgICBudW0gLT0gMztcbiAgICAgIH1cbiAgICAgIHN0ciA9IGAke3N0ci5zdWJzdHJpbmcoMCwgbnVtKX0ke2VuZGluZ31gO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFRpbWVab25lIE9mZnNlc3QgYXMgSVNPIFN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VGltZXpvbmVPZmZzZXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KCdaJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1hdE1haWxUbyh2YWx1ZTogRm9ybWF0ZWRNYWlsVG8sIGlzRW1haWw6IGJvb2xlYW4pOiBGb3JtYXRlZE1haWxUbyB7XG4gICAgaWYgKGlzRW1haWwgJiYgISF2YWx1ZSkge1xuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSkgPyB2YWx1ZS5qb2luKCkucmVwbGFjZSgvLC9nLCAnOyAnKSA6IHZhbHVlLnJlcGxhY2UoLywvZywgJzsgJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlUb09iamVjdChhcnIgPSBbXSwga2V5UHJvcGVydHk/OiBzdHJpbmcgfCAoKG86IGFueSkgPT4gc3RyaW5nKSwgdmFsdWVQcm9wZXJ0eT86IHN0cmluZyB8ICgobzogYW55KSA9PiBhbnkpKSB7XG4gICAgY29uc3Qga2V5ID0gdHlwZW9mIGtleVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9ba2V5UHJvcGVydHldIDoga2V5UHJvcGVydHk7XG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgdmFsdWVQcm9wZXJ0eSA9PT0gJ3N0cmluZycgPyAobzogYW55KSA9PiBvW3ZhbHVlUHJvcGVydHldIDogdmFsdWVQcm9wZXJ0eTtcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgoYWNjLCBjdXIsIGkpID0+IHtcbiAgICAgIGFjY1trZXkgPyBrZXkoY3VyKSA6IGldID0gdmFsdWUgPyB2YWx1ZShjdXIpIDogY3VyO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1EYXRhU3RyaW5naWZ5KG86IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgZiA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBgLyR7VXRpbHMuUFJFRl9SQU5HRVZBTFVFfSgke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0pL2A7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobywgZik7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1EYXRhUGFyc2Uoc3RyOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGYgPSAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoYC8ke1V0aWxzLlBSRUZfUkFOR0VWQUxVRX0oYCkgJiZcbiAgICAgICAgdmFsdWUuZW5kc1dpdGgoJykvJylcbiAgICAgICkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhVdGlscy5QUkVGX1JBTkdFVkFMVUUubGVuZ3RoICsgMiwgdmFsdWUubGVuZ3RoIC0gMik7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2VWYWx1ZShwYXJzZWQub3BlcmF0b3IsIHBhcnNlZC5maXJzdFZhbHVlLCBwYXJzZWQuc2Vjb25kVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyLCBmKTtcbiAgfVxufVxuIl19
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssSUFBSSxlQUFlLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE1BQU0sT0FBTyxLQUFLO0lBSVQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsUUFBZ0I7UUFDakQsTUFBTSxDQUFDLEdBQXlCLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBVTtRQUM1QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMxQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO2FBQ2hFLEdB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QyxDQUFDO2dCQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVqQyxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDL0U7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7QUE5VGMscUJBQWUsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VNUFRZIGFzIG9ic2VydmFibGVFbXB0eSwgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0VvRXJyb3J9IGZyb20gJy4uL21vZGVsL2VvLWVycm9yLm1vZGVsJztcbmltcG9ydCB7UmFuZ2VWYWx1ZX0gZnJvbSAnLi4vbW9kZWwvcmFuZ2UtdmFsdWUubW9kZWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXRlZE1haWxUbyA9IHN0cmluZyB8IHN0cmluZ1tdO1xuZXhwb3J0IGNsYXNzIFV0aWxzIHtcblxuICBwcml2YXRlIHN0YXRpYyBQUkVGX1JBTkdFVkFMVUUgPSAnUmFuZ2VWYWx1ZSc7XG5cbiAgcHVibGljIHN0YXRpYyB1bmlxQnkoaXRlbXM6IGFueVtdLCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgY29uc3QgYToge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcbiAgICBpdGVtcy5mb3JFYWNoKGkgPT4gYVtpW3Byb3BlcnR5XV0gPSBpKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGsgPT4gYVtrXSkgXG4gIH1cblxuICAvKipcbiAgICogVXRpbGl0eSBtZXRob2QgZm9yIGFkZGluZyBwYXJhbWV0ZXJzIHRvIGEgZ2l2ZW4gVVJJLlxuICAgKlxuICAgKiBAcGFyYW0gdXJpIFRoZSB1cmkgc3RyaW5nIHRvIGF0dGFjaCB0aGUgcGFyYW1ldGVycyB0b1xuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBvYmplY3QgY29udGFpbmluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGVuZGVkXG4gICAqIEByZXR1cm5zIHRoZSBnaXZlbiB1cmkgZXh0ZW5kZWQgYnkgdGhlIGdpdmVuIHBhcmFtZXRlcnMgKyByZW1vdmUgZW1wdHkgcGFyYW1ldGVyc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBidWlsZFVyaSh1cmk6IHN0cmluZywgcGFyYW1zOiB7fSk6IHN0cmluZyB7XG4gICAgY29uc3QgcSA9IE9iamVjdC5rZXlzKHBhcmFtcylcbiAgICAgIC5maWx0ZXIoayA9PiBwYXJhbXNba10gfHwgcGFyYW1zW2tdID09PSAwIHx8IHBhcmFtc1trXSA9PT0gZmFsc2UpXG4gICAgICAubWFwKGsgPT4gayArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNba10pKS5qb2luKCcmJyk7XG4gICAgcmV0dXJuIHVyaSArIChxID8gJz8nICsgcSA6ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5pcXVlIGlkZW50aWZpZXIuXG4gICAqIEByZXR1cm5zIEEgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5fcDgoKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhIGZpbGVuYW1lIHNhZmUgZm9yIHNlbmRpbmcgY2hhcnMgYmV5b25kIEFTQ0lJLTdiaXQgdXNpbmcgcXVvdGVkIHByaW50YWJsZSBlbmNvZGluZy5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBmaWxlIG5hbWVcbiAgICogQHJldHVybnMgVGhlIHF1b3RlZCBwcmludGFibGUgZmlsZW5hbWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBVdGlscy5lbmNvZGVUb1F1b3RlZFByaW50YWJsZShVdGlscy5lbmNvZGVUb1V0ZjgoZmlsZW5hbWUpKS5yZXBsYWNlKC9fL2csICc9NUYnKVxuICAgIHJldHVybiBgPT9VVEYtOD9RPyR7ZmlsZU5hbWV9Pz1gO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBib29sZWFuIHNcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIF9wOChzPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgcCA9IChNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KSArICcwMDAwMDAwMDAnKS5zdWJzdHIoMiwgOCk7XG4gICAgcmV0dXJuIHMgPyBgLSR7cC5zdWJzdHIoMCwgNCl9LSR7cC5zdWJzdHIoNCwgNCl9YCA6IHA7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBqYXZhc2NyaXB0IHRleHQgdG8gdGhlIHV0Zi04IGNvbnZlcnRlZCB2YXJpYW50LlxuICAgKiBTZWUgW3VuaWNvZGVde0BsaW5rIGh0dHA6Ly90aGxpc3Qub25saW5laG9tZS5kZS90aG9tYXNfaG9tZXBhZ2UvdW5pY29kZS9VVEYtOCUyMEtvbnZlcnRpZXJ1bmclMjBtaXR0ZWxzJTIwSmF2YVNjcmlwdC5odG19IGZvciByZWZlcmVuY2VcbiAgICpcbiAgICogQHBhcmFtIHJhd2lucHV0IFRoZSBpbnB1dCBzdHJpbmdcbiAgICogQHJldHVybnMgVGhlIHV0Zi04IGNvbnZlcnRlZCBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvVXRmOChyYXdpbnB1dCkge1xuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZSBsaW5lIGJyZWFrc1xuICAgICAqL1xuICAgIHJhd2lucHV0ID0gcmF3aW5wdXQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbiAgICBsZXQgdXRmcmV0dXJuID0gJyc7XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCByYXdpbnB1dC5sZW5ndGg7IG4rKykge1xuICAgICAgLyoqXG4gICAgICAgKiBVbmljb2RlIGZvciBjdXJyZW50IGNoYXJcbiAgICAgICAqL1xuICAgICAgY29uc3QgYyA9IHJhd2lucHV0LmNoYXJDb2RlQXQobik7XG4gICAgICBpZiAoYyA8IDEyOCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQWxsIGNoYXJzIHJhbmdlIDAtMTI3ID0+IDFieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIH0gZWxzZSBpZiAoKGMgPiAxMjcpICYmIChjIDwgMjA0OCkpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDEyNyB0byAyMDQ3ID0+IDJieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7XG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgZnJvbSAyMDQ4IHRvIDY2NTM2ID0+IDNieXRlXG4gICAgICAgICAqL1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiAxMikgfCAyMjQpO1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDYzKSB8IDEyOCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1dGZyZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2VlIFtxdW90ZWQtcHJpbnRhYmxlXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9xdW90ZWQtcHJpbnRhYmxlL2Jsb2IvbWFzdGVyL3F1b3RlZC1wcmludGFibGUuanN9XG4gICAqKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcXVvdGVkUHJpbnRhYmxlKHN5bWJvbCkge1xuICAgIGlmIChzeW1ib2wgPiAnXFx4RkYnKSB7XG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdgZW5jb2RlVG9RdW90ZWRQcmludGFibGVgIGV4cGVjdHMgZXh0ZW5kZWQgQVNDSUkgaW5wdXQgb25seS4gTWlzc2luZyBwcmlvciBVVEYtOCBlbmNvZGluZz8nKTtcbiAgICB9XG4gICAgY29uc3QgY29kZVBvaW50ID0gc3ltYm9sLmNoYXJDb2RlQXQoMCk7XG4gICAgY29uc3QgaGV4YWRlY2ltYWwgPSBjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgcmV0dXJuICc9JyArICgnMCcgKyBoZXhhZGVjaW1hbCkuc2xpY2UoLTIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBzeW1ib2xzIHRoYXQgYXJlIGRlZmluaXRlbHkgdW5zYWZlIChpLmUuIHVuc2FmZSBpbiBhbnkgY29udGV4dCkuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZGVzY3JpYmVzIHRoZXNlIHVuc2FmZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcGFyYW0gcmF3aW5wdXQgSW5wdXQgc3RyaW5nIHRvIGJlIGVuY29kZWRcbiAgICogQHJldHVybnMgVGhlIGVuY29kZWQgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVUb1F1b3RlZFByaW50YWJsZShyYXdpbnB1dCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5jb2RlZCA9IHJhd2lucHV0LnJlcGxhY2UoL1tcXDAtXFxiXFxuLVxceDFGPVxceDdGLVxcdUQ3RkZcXHVEQzAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0vZywgdGhpcy5xdW90ZWRQcmludGFibGUpO1xuICAgIHJldHVybiBlbmNvZGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnRzIEFuIEFycmF5IG9mIE9iamVjdCBieSBnaXZlbiBrZXlcbiAgICogU2VlIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cbiAgICpcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcGFyYW0gb3JkZXJcbiAgICogQHBhcmFtIGxvY2FsZXNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgKGE6IGFueSwgYjogYW55KSA9PiBudW1iZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc29ydFZhbHVlcyhrZXkgPSAnJywgb3JkZXIgPSAnYXNjJywgbG9jYWxlcz86IHN0cmluZyB8IHN0cmluZ1tdLCBvcHRpb25zPzogSW50bC5Db2xsYXRvck9wdGlvbnMpIHtcbiAgICBjb25zdCBmID0gKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICBsZXQgY29tcGFyaXNvbjogbnVtYmVyO1xuICAgICAgY29uc3QgdmFyQSA9IFV0aWxzLmdldFByb3BlcnR5KGEsIGtleSk7XG4gICAgICBjb25zdCB2YXJCID0gVXRpbHMuZ2V0UHJvcGVydHkoYiwga2V5KTtcbiAgICAgIGlmICh0eXBlb2YgdmFyQSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhckIgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSB2YXJBIC0gdmFyQjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0EgPSB2YXJBIHx8IHZhckEgPT09IDAgPyB2YXJBLnRvU3RyaW5nKCkgOiAnJztcbiAgICAgICAgY29uc3Qgc3RyaW5nQiA9IHZhckIgfHwgdmFyQiA9PT0gMCA/IHZhckIudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICBjb21wYXJpc29uID0gc3RyaW5nQS5sb2NhbGVDb21wYXJlKHN0cmluZ0IsIGxvY2FsZXMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyBjb21wYXJpc29uICogLTEgOiBjb21wYXJpc29uO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcga2V5XG4gICAqIEByZXR1cm5zIGFueVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eShvYmplY3Q6IGFueSwga2V5ID0gJycpOiBhbnkge1xuICAgIGNvbnN0IGYgPSBrZXkgPyBrZXkuc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGspID0+IChvIHx8IHt9KVtrXSwgb2JqZWN0KSA6IG9iamVjdDtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5jYXRjaCBvciBPYnNlcnZhYmxlLnN1YnNjcmliZSB0byByZXR1cm4gZW1wdHkgdmFsdWVcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gKGVycm9yKSA9PiBhbnkgY2FsbGJhY2tcbiAgICogQHJldHVybnMgKGVycm9yKSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlbXB0eShjYWxsYmFjaz86IChlcnJvcikgPT4gYW55KSB7XG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVFbXB0eTtcbiAgICB9O1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIHdpdGggc3BlY2lmaWMgc2tpcE5vdGlmaWNhdGlvbiBmdW5jdGlvbiAhISFcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2F0Y2hTa2lwKHNraXBOb3RpZmljYXRpb24/OiAoZXJyb3IpID0+IGFueSwgY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgIGNvbnN0IF9za2lwTm90aWZpY2F0aW9uID0gc2tpcE5vdGlmaWNhdGlvbiAmJiBza2lwTm90aWZpY2F0aW9uKGVycm9yKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihuZXcgRW9FcnJvcihfZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IF9lcnJvciA6IGVycm9yLCBuYW1lLCBtZXNzYWdlLCBfc2tpcE5vdGlmaWNhdGlvbikpO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggISEhXG4gICAqIFtuZy1wYWNrYWdyIGlzc3Vlc117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cbiAgICogQHJldHVybiAoZXJyb3IpID0+IE9ic2VydmFibGU8bmV2ZXI+XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNhdGNoKGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pKTtcbiAgICB9O1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLnN1YnNjcmliZSAhISFcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxuICAgKiBAcmV0dXJuIChlcnJvcikgPT4gdm9pZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0aHJvdyhjYWxsYmFjaz86IChlcnJvcikgPT4gYW55LCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBza2lwTm90aWZpY2F0aW9uPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xuICAgIH07XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICAvKipcbiAgICogVXNlIG9uIE9ic2VydmFibGUuc3Vic2NyaWJlIG9ubHkgaWYgeW91IHdhbnQgdG8gc2tpcCBub3RpZmljYXRpb24gLyB0b2FzdCEhIVxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cbiAgICogQHJldHVybiAoZXJyb3IpID0+IHZvaWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9nRXJyb3IoY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2tpcE5vdGlmaWNhdGlvbiA9IHRydWUpIHtcbiAgICByZXR1cm4gVXRpbHMudGhyb3coY2FsbGJhY2ssIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBlbGVtZW50IGlzIHZpc2libGVcbiAgICpcbiAgICogQHBhcmFtIGVsZW1cbiAgICogQHJldHVybiBib29sZWFuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVmlzaWJsZShlbGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoZWxlbS5vZmZzZXRXaWR0aCB8fCBlbGVtLm9mZnNldEhlaWdodCB8fCBlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QmFzZUhyZWYoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJylbMF0uZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVHJ1bmNhdGUgYSBzdHJpbmcgKGZpcnN0IGFyZ3VtZW50KSBpZiBpdCBpcyBsb25nZXIgdGhhbiB0aGUgZ2l2ZW4gbWF4aW11bSBzdHJpbmcgbGVuZ3RoIChzZWNvbmQgYXJndW1lbnQpLlxuICAgKiBSZXR1cm4gdGhlIHRydW5jYXRlZCBzdHJpbmcgd2l0aCBhIC4uLiBlbmRpbmcgb3Qgd2hhdHMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgc3RyXG4gICAqIEBwYXJhbSBudW1iZXIgbnVtXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlU3RyaW5nKHN0ciwgbnVtLCBlbmRpbmcgPSAnLi4uJykge1xuICAgIGlmIChzdHIubGVuZ3RoID4gbnVtKSB7XG4gICAgICBpZiAobnVtID4gMykge1xuICAgICAgICBudW0gLT0gMztcbiAgICAgIH1cbiAgICAgIHN0ciA9IGAke3N0ci5zdWJzdHJpbmcoMCwgbnVtKX0ke2VuZGluZ31gO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFRpbWVab25lIE9mZnNlc3QgYXMgSVNPIFN0cmluZy5cbiAgICpcbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VGltZXpvbmVPZmZzZXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KCdaJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1hdE1haWxUbyh2YWx1ZTogRm9ybWF0ZWRNYWlsVG8sIGlzRW1haWw6IGJvb2xlYW4pOiBGb3JtYXRlZE1haWxUbyB7XG4gICAgaWYgKGlzRW1haWwgJiYgISF2YWx1ZSkge1xuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSkgPyB2YWx1ZS5qb2luKCkucmVwbGFjZSgvLC9nLCAnOyAnKSA6IHZhbHVlLnJlcGxhY2UoLywvZywgJzsgJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlUb09iamVjdChhcnIgPSBbXSwga2V5UHJvcGVydHk/OiBzdHJpbmcgfCAoKG86IGFueSkgPT4gc3RyaW5nKSwgdmFsdWVQcm9wZXJ0eT86IHN0cmluZyB8ICgobzogYW55KSA9PiBhbnkpKSB7XG4gICAgY29uc3Qga2V5ID0gdHlwZW9mIGtleVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9ba2V5UHJvcGVydHldIDoga2V5UHJvcGVydHk7XG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgdmFsdWVQcm9wZXJ0eSA9PT0gJ3N0cmluZycgPyAobzogYW55KSA9PiBvW3ZhbHVlUHJvcGVydHldIDogdmFsdWVQcm9wZXJ0eTtcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgoYWNjLCBjdXIsIGkpID0+IHtcbiAgICAgIGFjY1trZXkgPyBrZXkoY3VyKSA6IGldID0gdmFsdWUgPyB2YWx1ZShjdXIpIDogY3VyO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1EYXRhU3RyaW5naWZ5KG86IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgZiA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBgLyR7VXRpbHMuUFJFRl9SQU5HRVZBTFVFfSgke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0pL2A7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobywgZik7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvcm1EYXRhUGFyc2Uoc3RyOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IGYgPSAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoYC8ke1V0aWxzLlBSRUZfUkFOR0VWQUxVRX0oYCkgJiZcbiAgICAgICAgdmFsdWUuZW5kc1dpdGgoJykvJylcbiAgICAgICkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhVdGlscy5QUkVGX1JBTkdFVkFMVUUubGVuZ3RoICsgMiwgdmFsdWUubGVuZ3RoIC0gMik7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2VWYWx1ZShwYXJzZWQub3BlcmF0b3IsIHBhcnNlZC5maXJzdFZhbHVlLCBwYXJzZWQuc2Vjb25kVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEpTT04ucGFyc2Uoc3RyLCBmKTtcbiAgfVxufVxuIl19