@bizdoc/core 2.3.10 → 2.3.13

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 (400) hide show
  1. package/assets/themes/brown.min.css +4 -4
  2. package/assets/themes/dark.min.css +4 -4
  3. package/assets/themes/deep-purple-light-blue.min.css +4 -4
  4. package/assets/themes/deep-purple-teal.min.css +4 -4
  5. package/assets/themes/default.min.css +4 -4
  6. package/assets/themes/green.min.css +4 -4
  7. package/assets/themes/indigo.min.css +4 -4
  8. package/assets/themes/readme.md +0 -0
  9. package/esm2022/lib/admin/admin-dismiss.service.mjs +3 -3
  10. package/esm2022/lib/admin/admin-menu.component.mjs +3 -3
  11. package/esm2022/lib/admin/architecture/cube-axes-filter.component.mjs +5 -5
  12. package/esm2022/lib/admin/architecture/declarations.mjs +1 -1
  13. package/esm2022/lib/admin/architecture/designer-element.component.mjs +17 -16
  14. package/esm2022/lib/admin/architecture/designer-privileges.component.mjs +4 -4
  15. package/esm2022/lib/admin/architecture/designer.base.mjs +10 -10
  16. package/esm2022/lib/admin/architecture/designer.component.mjs +60 -38
  17. package/esm2022/lib/admin/architecture/elements/action.component.mjs +4 -4
  18. package/esm2022/lib/admin/architecture/elements/analysis-view.component.mjs +3 -3
  19. package/esm2022/lib/admin/architecture/elements/analysis-widget.component.mjs +3 -3
  20. package/esm2022/lib/admin/architecture/elements/anomaly-rule.component.mjs +3 -3
  21. package/esm2022/lib/admin/architecture/elements/attribute.component.mjs +3 -3
  22. package/esm2022/lib/admin/architecture/elements/box-form.component.mjs +3 -3
  23. package/esm2022/lib/admin/architecture/elements/configuration-datasource.component.mjs +4 -4
  24. package/esm2022/lib/admin/architecture/elements/control.component.mjs +3 -3
  25. package/esm2022/lib/admin/architecture/elements/cube-index-utility.component.mjs +3 -3
  26. package/esm2022/lib/admin/architecture/elements/cube-view.component.mjs +3 -3
  27. package/esm2022/lib/admin/architecture/elements/cube.component.mjs +4 -4
  28. package/esm2022/lib/admin/architecture/elements/document-state-widget.component.mjs +3 -3
  29. package/esm2022/lib/admin/architecture/elements/documents-report.component.mjs +3 -3
  30. package/esm2022/lib/admin/architecture/elements/documents-widget.component.mjs +3 -3
  31. package/esm2022/lib/admin/architecture/elements/explore-view.component.mjs +3 -3
  32. package/esm2022/lib/admin/architecture/elements/folder.component.mjs +4 -4
  33. package/esm2022/lib/admin/architecture/elements/form-invite.dialog.mjs +4 -4
  34. package/esm2022/lib/admin/architecture/elements/form.component.mjs +4 -4
  35. package/esm2022/lib/admin/architecture/elements/guide.component.mjs +3 -3
  36. package/esm2022/lib/admin/architecture/elements/job.component.mjs +4 -4
  37. package/esm2022/lib/admin/architecture/elements/matrix-view.component.mjs +4 -4
  38. package/esm2022/lib/admin/architecture/elements/node.component.mjs +3 -3
  39. package/esm2022/lib/admin/architecture/elements/parallel-view.component.mjs +3 -3
  40. package/esm2022/lib/admin/architecture/elements/performance-report.component.mjs +3 -3
  41. package/esm2022/lib/admin/architecture/elements/performance-widget.component.mjs +3 -3
  42. package/esm2022/lib/admin/architecture/elements/pivot-view.component.mjs +3 -3
  43. package/esm2022/lib/admin/architecture/elements/policy.component.mjs +3 -3
  44. package/esm2022/lib/admin/architecture/elements/report.component.mjs +3 -3
  45. package/esm2022/lib/admin/architecture/elements/return-to-role-action.component.mjs +3 -3
  46. package/esm2022/lib/admin/architecture/elements/role.component.mjs +4 -4
  47. package/esm2022/lib/admin/architecture/elements/rule.component.mjs +3 -3
  48. package/esm2022/lib/admin/architecture/elements/source.component.mjs +3 -3
  49. package/esm2022/lib/admin/architecture/elements/state.component.mjs +4 -4
  50. package/esm2022/lib/admin/architecture/elements/sum-view.component.mjs +3 -3
  51. package/esm2022/lib/admin/architecture/elements/tasks-report.component.mjs +3 -3
  52. package/esm2022/lib/admin/architecture/elements/type.component.mjs +4 -4
  53. package/esm2022/lib/admin/architecture/elements/usage-report.component.mjs +4 -4
  54. package/esm2022/lib/admin/architecture/elements/utility.component.mjs +3 -3
  55. package/esm2022/lib/admin/architecture/elements/view.component.mjs +3 -3
  56. package/esm2022/lib/admin/architecture/elements/widget.component.mjs +3 -3
  57. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +4 -4
  58. package/esm2022/lib/admin/core/ace.input.mjs +4 -4
  59. package/esm2022/lib/admin/core/color-picker.input.mjs +4 -4
  60. package/esm2022/lib/admin/core/localized-string.component.mjs +4 -4
  61. package/esm2022/lib/admin/core/search.input.mjs +3 -3
  62. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +4 -4
  63. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +5 -5
  64. package/esm2022/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  65. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +4 -4
  66. package/esm2022/lib/admin/form/designer/box-designer.component.mjs +7 -7
  67. package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -5
  68. package/esm2022/lib/admin/form/designer/section.component.mjs +4 -4
  69. package/esm2022/lib/admin/form/designer/settings.component.mjs +4 -4
  70. package/esm2022/lib/admin/form/form.resolve.service.mjs +3 -3
  71. package/esm2022/lib/admin/form/workflow/node.component.mjs +4 -4
  72. package/esm2022/lib/admin/form/workflow/role-node.component.mjs +4 -4
  73. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +5 -5
  74. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +4 -4
  75. package/esm2022/lib/admin/patterns/patterns.component.mjs +4 -4
  76. package/esm2022/lib/admin/permissions/permissions.component.mjs +4 -4
  77. package/esm2022/lib/admin/positions/positions-popup.component.mjs +3 -3
  78. package/esm2022/lib/admin/positions/positions.component.mjs +5 -5
  79. package/esm2022/lib/admin/profiler/outofoffice.component.mjs +4 -4
  80. package/esm2022/lib/admin/profiler/profiler.component.mjs +4 -4
  81. package/esm2022/lib/admin/system.service.mjs +4 -4
  82. package/esm2022/lib/admin/utility-wrapper.component.mjs +3 -3
  83. package/esm2022/lib/admin/utility.pane.component.mjs +3 -3
  84. package/esm2022/lib/app.component.mjs +7 -7
  85. package/esm2022/lib/bizdoc.module.mjs +11 -11
  86. package/esm2022/lib/browse/browse-items.component.mjs +4 -4
  87. package/esm2022/lib/browse/browse.mobile.component.mjs +3 -3
  88. package/esm2022/lib/browse/browse.pane.component.mjs +4 -4
  89. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +5 -5
  90. package/esm2022/lib/browse/filter/filter.component.mjs +5 -5
  91. package/esm2022/lib/browse/folders-menu.component.mjs +5 -5
  92. package/esm2022/lib/chat/chat-info.mjs +4 -4
  93. package/esm2022/lib/chat/chat.mobile.component.mjs +4 -4
  94. package/esm2022/lib/chat/chat.service.mjs +4 -4
  95. package/esm2022/lib/chat/contacts.component.mjs +8 -8
  96. package/esm2022/lib/chat/contacts.pane.component.mjs +3 -3
  97. package/esm2022/lib/chat/conversation.component.mjs +5 -5
  98. package/esm2022/lib/chat/conversation.pane.component.mjs +4 -4
  99. package/esm2022/lib/compose/action/action-picker.component.mjs +4 -4
  100. package/esm2022/lib/compose/action/action.base.mjs +1 -1
  101. package/esm2022/lib/compose/action/action.dialog.mjs +4 -4
  102. package/esm2022/lib/compose/action/action.pane.dialog.exp.mjs +4 -4
  103. package/esm2022/lib/compose/action/assign-action.component.mjs +3 -3
  104. package/esm2022/lib/compose/action/moveto-action.component.mjs +4 -4
  105. package/esm2022/lib/compose/action/return-action.component.mjs +4 -4
  106. package/esm2022/lib/compose/attachments/attachments.component.mjs +4 -4
  107. package/esm2022/lib/compose/attachments/preview/attachment-preview.component.mjs +4 -4
  108. package/esm2022/lib/compose/attachments/progress-button.directive.mjs +3 -3
  109. package/esm2022/lib/compose/box/box.component.mjs +4 -4
  110. package/esm2022/lib/compose/box/control.component.mjs +3 -3
  111. package/esm2022/lib/compose/box/row.component.mjs +3 -3
  112. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +3 -3
  113. package/esm2022/lib/compose/comments/comment.component.mjs +4 -4
  114. package/esm2022/lib/compose/comments/comments.component.mjs +5 -5
  115. package/esm2022/lib/compose/comments/comments.pane.component.mjs +3 -3
  116. package/esm2022/lib/compose/comments/edit-comment.component.mjs +3 -3
  117. package/esm2022/lib/compose/comments/edits.component.mjs +3 -3
  118. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +4 -4
  119. package/esm2022/lib/compose/comments/votes.component.mjs +3 -3
  120. package/esm2022/lib/compose/compose-resolve.service.mjs +7 -7
  121. package/esm2022/lib/compose/compose.mobile.component.mjs +4 -4
  122. package/esm2022/lib/compose/compose.pane.component.mjs +4 -4
  123. package/esm2022/lib/compose/copy/copy.dialog.mjs +3 -3
  124. package/esm2022/lib/compose/dismiss.service.mjs +4 -4
  125. package/esm2022/lib/compose/document-resolver.service.mjs +3 -3
  126. package/esm2022/lib/compose/document.component.mjs +3 -3
  127. package/esm2022/lib/compose/document.mobile.component.mjs +3 -3
  128. package/esm2022/lib/compose/document.pane.component.mjs +3 -3
  129. package/esm2022/lib/compose/events/events.component.mjs +3 -3
  130. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +4 -4
  131. package/esm2022/lib/compose/form.component.mjs +4 -4
  132. package/esm2022/lib/compose/new-menu.component.mjs +4 -4
  133. package/esm2022/lib/compose/privilage.directive.mjs +6 -6
  134. package/esm2022/lib/compose/recipient-resolver.service.mjs +3 -3
  135. package/esm2022/lib/compose/state.component.mjs +4 -4
  136. package/esm2022/lib/compose/tag/tags.component.mjs +4 -4
  137. package/esm2022/lib/compose/trace/flow.component.mjs +5 -5
  138. package/esm2022/lib/compose/trace/people.component.mjs +3 -3
  139. package/esm2022/lib/compose/trace/trace.base.mjs +4 -4
  140. package/esm2022/lib/compose/trace/trace.component.mjs +4 -4
  141. package/esm2022/lib/compose/trace/trace.pane.component.mjs +4 -4
  142. package/esm2022/lib/compose/version-compare/version-compare.component.mjs +3 -3
  143. package/esm2022/lib/compose/version-compare/version-compare.directive.mjs +10 -10
  144. package/esm2022/lib/compose/version-compare/version.pane.component.mjs +4 -4
  145. package/esm2022/lib/core/account.service.mjs +3 -3
  146. package/esm2022/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  147. package/esm2022/lib/core/avatar/avatar.component.mjs +4 -4
  148. package/esm2022/lib/core/checkbox.mjs +3 -3
  149. package/esm2022/lib/core/component-factory-resolver.mjs +3 -3
  150. package/esm2022/lib/core/datasource.service.mjs +4 -4
  151. package/esm2022/lib/core/fields/address.designer.mjs +3 -3
  152. package/esm2022/lib/core/fields/address.field.mjs +3 -3
  153. package/esm2022/lib/core/fields/autocomplete.field.mjs +7 -7
  154. package/esm2022/lib/core/fields/checkbox.designer.mjs +3 -3
  155. package/esm2022/lib/core/fields/checkbox.field.mjs +3 -3
  156. package/esm2022/lib/core/fields/checklist.designer.mjs +4 -4
  157. package/esm2022/lib/core/fields/checklist.field.mjs +3 -3
  158. package/esm2022/lib/core/fields/date-range.designer.mjs +3 -3
  159. package/esm2022/lib/core/fields/date-range.field.mjs +3 -3
  160. package/esm2022/lib/core/fields/date.designer.mjs +3 -3
  161. package/esm2022/lib/core/fields/date.field.mjs +3 -3
  162. package/esm2022/lib/core/fields/expression.field.mjs +6 -6
  163. package/esm2022/lib/core/fields/file.designer.mjs +3 -3
  164. package/esm2022/lib/core/fields/file.field.mjs +3 -3
  165. package/esm2022/lib/core/fields/html.designer.mjs +3 -3
  166. package/esm2022/lib/core/fields/html.field.mjs +3 -3
  167. package/esm2022/lib/core/fields/input.designer.mjs +3 -3
  168. package/esm2022/lib/core/fields/input.field.mjs +4 -4
  169. package/esm2022/lib/core/fields/localized-string.field.mjs +6 -6
  170. package/esm2022/lib/core/fields/numeric.designer.mjs +3 -3
  171. package/esm2022/lib/core/fields/numeric.field.mjs +3 -3
  172. package/esm2022/lib/core/fields/options.base.mjs +6 -6
  173. package/esm2022/lib/core/fields/options.component.mjs +4 -4
  174. package/esm2022/lib/core/fields/radio-button.designer.mjs +3 -3
  175. package/esm2022/lib/core/fields/radio-button.field.mjs +3 -3
  176. package/esm2022/lib/core/fields/select.designer.mjs +4 -4
  177. package/esm2022/lib/core/fields/select.field.mjs +3 -3
  178. package/esm2022/lib/core/fields/signature.designer.mjs +3 -3
  179. package/esm2022/lib/core/fields/signature.field.mjs +3 -3
  180. package/esm2022/lib/core/fields/switch.field.mjs +3 -3
  181. package/esm2022/lib/core/fields/tags.designer.mjs +3 -3
  182. package/esm2022/lib/core/fields/tags.field.mjs +5 -5
  183. package/esm2022/lib/core/fields/textarea.designer.mjs +3 -3
  184. package/esm2022/lib/core/fields/textarea.field.mjs +3 -3
  185. package/esm2022/lib/core/fields/time.designer.mjs +3 -3
  186. package/esm2022/lib/core/fields/time.field.mjs +3 -3
  187. package/esm2022/lib/core/fields/timespan.field.mjs +6 -6
  188. package/esm2022/lib/core/fields/yesno.designer.mjs +4 -4
  189. package/esm2022/lib/core/fields/yesno.field.mjs +3 -3
  190. package/esm2022/lib/core/firebase.service.mjs +1 -1
  191. package/esm2022/lib/core/functions.mjs +1 -1
  192. package/esm2022/lib/core/guide/guide.component.mjs +4 -4
  193. package/esm2022/lib/core/guide/guide.service.mjs +4 -4
  194. package/esm2022/lib/core/guide/help-tip.component.mjs +3 -3
  195. package/esm2022/lib/core/http.interceptor.mjs +8 -21
  196. package/esm2022/lib/core/hub.service.mjs +3 -3
  197. package/esm2022/lib/core/identity/identity.component.mjs +4 -4
  198. package/esm2022/lib/core/info/attachment-info.service.mjs +3 -3
  199. package/esm2022/lib/core/info/document-info.service.mjs +3 -3
  200. package/esm2022/lib/core/info/location-info.component.mjs +8 -8
  201. package/esm2022/lib/core/info/map-info.mjs +3 -3
  202. package/esm2022/lib/core/inputs/address.input.mjs +4 -4
  203. package/esm2022/lib/core/inputs/auto-complete.input.mjs +4 -4
  204. package/esm2022/lib/core/inputs/combination-picker-body.mjs +4 -4
  205. package/esm2022/lib/core/inputs/combination-picker.mjs +4 -4
  206. package/esm2022/lib/core/inputs/combination-pool.mjs +5 -5
  207. package/esm2022/lib/core/inputs/file.input.mjs +5 -5
  208. package/esm2022/lib/core/inputs/select.input.mjs +5 -5
  209. package/esm2022/lib/core/inputs/signature.input.mjs +4 -4
  210. package/esm2022/lib/core/inputs/time-picker.mjs +4 -4
  211. package/esm2022/lib/core/inputs/timespan.input.mjs +4 -4
  212. package/esm2022/lib/core/layout.component.mjs +4 -4
  213. package/esm2022/lib/core/lottie-animation.mjs +3 -3
  214. package/esm2022/lib/core/mailbox.service.mjs +4 -4
  215. package/esm2022/lib/core/models.mjs +1 -1
  216. package/esm2022/lib/core/none.component.mjs +3 -3
  217. package/esm2022/lib/core/pipes/action.pipe.mjs +4 -4
  218. package/esm2022/lib/core/pipes/calendar.pipe.mjs +4 -4
  219. package/esm2022/lib/core/pipes/date-format.pipe.mjs +3 -3
  220. package/esm2022/lib/core/pipes/daterange.pipe.mjs +7 -7
  221. package/esm2022/lib/core/pipes/difference.pipe.mjs +3 -3
  222. package/esm2022/lib/core/pipes/duration-format.pipe.mjs +3 -3
  223. package/esm2022/lib/core/pipes/duration.pipe.mjs +3 -3
  224. package/esm2022/lib/core/pipes/form.pipe.mjs +4 -4
  225. package/esm2022/lib/core/pipes/join.pipe.mjs +3 -3
  226. package/esm2022/lib/core/pipes/localized-string.pipe.mjs +3 -3
  227. package/esm2022/lib/core/pipes/role.pipe.mjs +4 -4
  228. package/esm2022/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  229. package/esm2022/lib/core/pipes/sort.pipe.mjs +15 -11
  230. package/esm2022/lib/core/pipes/state.pipe.mjs +4 -4
  231. package/esm2022/lib/core/pipes/time-ago.pipe.mjs +7 -7
  232. package/esm2022/lib/core/pipes/translate.pipe.mjs +10 -10
  233. package/esm2022/lib/core/pipes/type-value.pipe.mjs +4 -4
  234. package/esm2022/lib/core/pipes/user-name.pipe.mjs +3 -3
  235. package/esm2022/lib/core/popup/popup.component.mjs +4 -4
  236. package/esm2022/lib/core/popup/popup.service.mjs +4 -4
  237. package/esm2022/lib/core/popup/tooltip.directive.mjs +7 -7
  238. package/esm2022/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  239. package/esm2022/lib/core/prompt/mask/mask.component.mjs +3 -3
  240. package/esm2022/lib/core/prompt.service.mjs +3 -3
  241. package/esm2022/lib/core/router.mjs +6 -6
  242. package/esm2022/lib/core/save-changes.dialog.mjs +3 -3
  243. package/esm2022/lib/core/session.service.mjs +4 -4
  244. package/esm2022/lib/core/slots/router.directive.mjs +3 -3
  245. package/esm2022/lib/core/slots/router.service.mjs +3 -3
  246. package/esm2022/lib/core/slots/slots.component.mjs +5 -5
  247. package/esm2022/lib/core/tagging/documents.component.mjs +4 -4
  248. package/esm2022/lib/core/tagging/edit-input.component.mjs +5 -5
  249. package/esm2022/lib/core/tagging/emoji.component.mjs +3 -3
  250. package/esm2022/lib/core/tagging/tagging-item.directive.mjs +3 -3
  251. package/esm2022/lib/core/tagging/tagging.component-base.mjs +3 -3
  252. package/esm2022/lib/core/tagging/tagging.directive.mjs +4 -4
  253. package/esm2022/lib/core/tagging/tagging.pipe.mjs +4 -4
  254. package/esm2022/lib/core/tagging/users.component.mjs +4 -4
  255. package/esm2022/lib/core/translate.service.mjs +4 -4
  256. package/esm2022/lib/core/translations.mjs +4 -2
  257. package/esm2022/lib/core/window-title.service.mjs +3 -3
  258. package/esm2022/lib/cube/accum/accum.component.mjs +4 -4
  259. package/esm2022/lib/cube/chart/chart.component.mjs +4 -4
  260. package/esm2022/lib/cube/cube-info.service.mjs +4 -4
  261. package/esm2022/lib/cube/cube-menu.component.mjs +3 -3
  262. package/esm2022/lib/cube/cube-view.component.mjs +4 -4
  263. package/esm2022/lib/cube/cube.service.mjs +4 -4
  264. package/esm2022/lib/cube/explore/document-item.component.mjs +4 -4
  265. package/esm2022/lib/cube/explore/explore-item.component.mjs +3 -3
  266. package/esm2022/lib/cube/explore/explore-items.component.mjs +4 -4
  267. package/esm2022/lib/cube/explore/explore.pane.component.mjs +3 -3
  268. package/esm2022/lib/cube/explore/item-resolver.service.mjs +6 -6
  269. package/esm2022/lib/cube/explore/item.pane.component.mjs +3 -3
  270. package/esm2022/lib/cube/filter/filter-tags.component.exp.mjs +4 -4
  271. package/esm2022/lib/cube/filter/filter.component.mjs +5 -5
  272. package/esm2022/lib/cube/grid/grid.component.mjs +4 -4
  273. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +4 -4
  274. package/esm2022/lib/cube/matrix/matrix.base.mjs +4 -4
  275. package/esm2022/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  276. package/esm2022/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  277. package/esm2022/lib/cube/matrix/popup.component.mjs +3 -3
  278. package/esm2022/lib/cube/matrix/table.component.mjs +4 -4
  279. package/esm2022/lib/cube/parallel/item.mjs +1 -1
  280. package/esm2022/lib/cube/parallel/parallel.component.mjs +5 -5
  281. package/esm2022/lib/cube/pivot/pivot.component.mjs +4 -4
  282. package/esm2022/lib/cube/sum/sum.component.mjs +5 -5
  283. package/esm2022/lib/cube/view-base.mjs +4 -4
  284. package/esm2022/lib/cube/view.mobile.component.mjs +4 -4
  285. package/esm2022/lib/cube/view.pane.component.mjs +5 -5
  286. package/esm2022/lib/dashboard/actions/actions.widget.mjs +4 -4
  287. package/esm2022/lib/dashboard/cube/accum-cube.widget.mjs +4 -4
  288. package/esm2022/lib/dashboard/cube/compare.widget.mjs +4 -4
  289. package/esm2022/lib/dashboard/cube/cube-analysis.base.mjs +4 -4
  290. package/esm2022/lib/dashboard/cube/cube-analysis.widget.mjs +4 -4
  291. package/esm2022/lib/dashboard/cube/cube-chart.widget.mjs +4 -4
  292. package/esm2022/lib/dashboard/cube/document-state.widget.mjs +3 -3
  293. package/esm2022/lib/dashboard/cube/documents.widget.mjs +3 -3
  294. package/esm2022/lib/dashboard/cube/filter/filter.component.mjs +4 -4
  295. package/esm2022/lib/dashboard/dashboard.component.mjs +5 -5
  296. package/esm2022/lib/dashboard/dashboard.pane.component.mjs +3 -3
  297. package/esm2022/lib/dashboard/recents/recents.widget.mjs +3 -3
  298. package/esm2022/lib/dashboard/score/activity.widget.mjs +3 -3
  299. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  300. package/esm2022/lib/dashboard/score/peers-performance.widget.mjs +4 -4
  301. package/esm2022/lib/dashboard/score/pending-results.widget.mjs +3 -3
  302. package/esm2022/lib/dashboard/score/personal-score.widget.mjs +4 -4
  303. package/esm2022/lib/dashboard/widget-item.component.mjs +4 -4
  304. package/esm2022/lib/designer.module.mjs +4 -4
  305. package/esm2022/lib/desktop.module.mjs +4 -4
  306. package/esm2022/lib/home/about/about.dialog.mjs +3 -3
  307. package/esm2022/lib/home/home-base.component.mjs +4 -4
  308. package/esm2022/lib/home/home.desktop.component.mjs +5 -5
  309. package/esm2022/lib/home/home.mobile.component.mjs +4 -4
  310. package/esm2022/lib/home/notifications/notifications.component.mjs +4 -4
  311. package/esm2022/lib/home/options/options.component.mjs +5 -5
  312. package/esm2022/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  313. package/esm2022/lib/home/sign/sign.component.mjs +4 -4
  314. package/esm2022/lib/home/tools.component.mjs +3 -3
  315. package/esm2022/lib/impersonate/impersonate.component.mjs +3 -3
  316. package/esm2022/lib/mobile.module.mjs +4 -4
  317. package/esm2022/lib/modules/chart.module.mjs +4 -4
  318. package/esm2022/lib/modules/circular-gauge.module.mjs +4 -4
  319. package/esm2022/lib/modules/datepicker.intl.mjs +3 -3
  320. package/esm2022/lib/modules/dayjs.module.mjs +4 -4
  321. package/esm2022/lib/modules/diagram.module.mjs +4 -4
  322. package/esm2022/lib/modules/gantt.module.mjs +4 -4
  323. package/esm2022/lib/modules/grid.module.mjs +4 -4
  324. package/esm2022/lib/modules/linear-gauge.module.mjs +4 -4
  325. package/esm2022/lib/modules/material.module.mjs +4 -4
  326. package/esm2022/lib/modules/paginator.intl.mjs +3 -3
  327. package/esm2022/lib/modules/pivot.module.mjs +4 -4
  328. package/esm2022/lib/modules/schedule.module.mjs +4 -4
  329. package/esm2022/lib/modules/spreadsheet.module.mjs +4 -4
  330. package/esm2022/lib/modules/stepper.intl.mjs +3 -3
  331. package/esm2022/lib/modules/texteditor.module.mjs +4 -4
  332. package/esm2022/lib/notifications/filter.component.mjs +3 -3
  333. package/esm2022/lib/notifications/notifications-table.component.mjs +4 -4
  334. package/esm2022/lib/notifications/notifications.component-base.mjs +1 -1
  335. package/esm2022/lib/notifications/notifications.mobile.component.mjs +3 -3
  336. package/esm2022/lib/notifications/notifications.pane.component.mjs +3 -3
  337. package/esm2022/lib/notifications/notifications.service.mjs +4 -4
  338. package/esm2022/lib/notifications/types/commented.notification.mjs +4 -4
  339. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +4 -4
  340. package/esm2022/lib/notifications/types/escalated.notification.mjs +3 -3
  341. package/esm2022/lib/notifications/types/invite.notification.mjs +3 -3
  342. package/esm2022/lib/notifications/types/liked.notification.mjs +4 -4
  343. package/esm2022/lib/notifications/types/long-running-task.notification.mjs +3 -3
  344. package/esm2022/lib/notifications/types/notification-base.mjs +3 -3
  345. package/esm2022/lib/notifications/types/nudge.notification.mjs +3 -3
  346. package/esm2022/lib/notifications/types/state-changed.notification.mjs +3 -3
  347. package/esm2022/lib/notifications/types/tagged.notification.mjs +3 -3
  348. package/esm2022/lib/notifications/types/text.notification.mjs +3 -3
  349. package/esm2022/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  350. package/esm2022/lib/options/options.component.mjs +4 -4
  351. package/esm2022/lib/options/options.service.mjs +3 -3
  352. package/esm2022/lib/reports/arguments-component.mjs +4 -4
  353. package/esm2022/lib/reports/cube/documents.component.mjs +3 -3
  354. package/esm2022/lib/reports/cube/grid-documents.component.mjs +4 -4
  355. package/esm2022/lib/reports/cube/role-performance.component.mjs +3 -3
  356. package/esm2022/lib/reports/cube/table-documents.component.mjs +3 -3
  357. package/esm2022/lib/reports/cube/usage-args.component.mjs +4 -4
  358. package/esm2022/lib/reports/cube/usage-base.mjs +3 -3
  359. package/esm2022/lib/reports/cube/usage-chart.component.mjs +4 -4
  360. package/esm2022/lib/reports/cube/usage-pivot.component.mjs +4 -4
  361. package/esm2022/lib/reports/cube/usage.component.mjs +3 -3
  362. package/esm2022/lib/reports/report-viewer.component.mjs +5 -5
  363. package/esm2022/lib/reports/report.mobile.component.mjs +5 -5
  364. package/esm2022/lib/reports/report.pane.component.mjs +4 -4
  365. package/esm2022/lib/reports/reports-menu.component.mjs +3 -3
  366. package/esm2022/lib/reports/substitution/substitution.component.mjs +3 -3
  367. package/esm2022/lib/reports/table/table-view.component.mjs +3 -3
  368. package/esm2022/lib/reports/tasks/tasks.component.mjs +3 -3
  369. package/esm2022/lib/scheduler/schedule.component.mjs +4 -4
  370. package/esm2022/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  371. package/esm2022/lib/scheduler/scheduler.pane.component.mjs +4 -4
  372. package/esm2022/lib/search/cube.component.mjs +3 -3
  373. package/esm2022/lib/search/document.component.mjs +3 -3
  374. package/esm2022/lib/search/guide.component.mjs +3 -3
  375. package/esm2022/lib/search/path.component.mjs +3 -3
  376. package/esm2022/lib/search/search.service.mjs +4 -4
  377. package/esm2022/lib/shared.module.mjs +4 -4
  378. package/esm2022/lib/system.module.mjs +4 -4
  379. package/esm2022/lib/views/cube/chart.component.mjs +4 -4
  380. package/esm2022/lib/views/cube/cube-base.mjs +4 -4
  381. package/esm2022/lib/views/cube/explore.component.mjs +3 -3
  382. package/esm2022/lib/views/cube/matrix.component.mjs +3 -3
  383. package/esm2022/lib/views/cube/parallel.component.mjs +4 -4
  384. package/esm2022/lib/views/cube/pivot.component.mjs +3 -3
  385. package/esm2022/lib/views/cube/sum.component.mjs +3 -3
  386. package/esm2022/lib/views/cube/view.component.mjs +5 -5
  387. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +4 -4
  388. package/esm2022/lib/views/view-item.component.mjs +4 -4
  389. package/esm2022/lib/views/views.component.mjs +4 -4
  390. package/esm2022/lib/views/views.mobile.component.mjs +3 -3
  391. package/esm2022/lib/views/views.pane.component.mjs +3 -3
  392. package/fesm2022/bizdoc-core.mjs +1377 -1360
  393. package/fesm2022/bizdoc-core.mjs.map +1 -1
  394. package/lib/admin/architecture/declarations.d.ts +1 -0
  395. package/lib/admin/architecture/designer.component.d.ts +12 -4
  396. package/lib/core/http.interceptor.d.ts +2 -3
  397. package/lib/core/models.d.ts +1 -4
  398. package/lib/core/pipes/sort.pipe.d.ts +1 -1
  399. package/lib/core/translations.d.ts +2 -0
  400. package/package.json +13 -13
@@ -70,10 +70,10 @@ export class TagsComponent {
70
70
  this._destroy.next();
71
71
  this._destroy.complete();
72
72
  }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TagsComponent, deps: [{ token: POPUP_DATA }, { token: i1.MailboxService }, { token: i2.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: TagsComponent, selector: "ng-component", viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "auto", first: true, predicate: ["auto"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field floatLabel=\"never\">\r\n <mat-chip-grid #chipList [attr.aria-label]=\"'Tags'|translate\">\r\n <mat-chip *ngFor=\"let item of tags\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-grid>\r\n <input [placeholder]=\"'TagsHint'|translate\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [formControl]=\"control\"\r\n #input autocomplete=\"off\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let item of options | async\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i5.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TagsComponent, deps: [{ token: POPUP_DATA }, { token: i1.MailboxService }, { token: i2.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: TagsComponent, selector: "ng-component", viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "auto", first: true, predicate: ["auto"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field floatLabel=\"never\">\r\n <mat-chip-grid #chipList [attr.aria-label]=\"'Tags'|translate\">\r\n <mat-chip *ngFor=\"let item of tags\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-grid>\r\n <input [placeholder]=\"'TagsHint'|translate\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [formControl]=\"control\"\r\n #input autocomplete=\"off\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let item of options | async\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i5.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i5.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
75
75
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TagsComponent, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TagsComponent, decorators: [{
77
77
  type: Component,
78
78
  args: [{ template: "<mat-form-field floatLabel=\"never\">\r\n <mat-chip-grid #chipList [attr.aria-label]=\"'Tags'|translate\">\r\n <mat-chip *ngFor=\"let item of tags\" [selectable]=\"true\"\r\n [removable]=\"true\" (removed)=\"remove(item)\">\r\n {{item}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-grid>\r\n <input [placeholder]=\"'TagsHint'|translate\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [formControl]=\"control\"\r\n #input autocomplete=\"off\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n <mat-option *ngFor=\"let item of options | async\" [value]=\"item\">\r\n {{item}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n", styles: [":host{padding:8px}\n"] }]
79
79
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
86
86
  type: ViewChild,
87
87
  args: ['auto', { static: true }]
88
88
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdGFnL3RhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL3RhZy90YWdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFpQyxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTTlELE1BQU0sT0FDRSxhQUFhO0lBU25CLFlBQXdDLElBQWMsRUFBVSxRQUF3QixFQUFFLE9BQXVCO1FBQXpFLFNBQUksR0FBSixJQUFJLENBQVU7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQVIvRSxZQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFLaEMsdUJBQWtCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWpELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxD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Q0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBMURLLGFBQWEsa0JBU0MsVUFBVTtrR0FUeEIsYUFBYSxzUUNoQnJCLG85QkFzQkE7OzJGRE5RLGFBQWE7a0JBTHBCLFNBQVM7OzswQkFjSyxNQUFNOzJCQUFDLFVBQVU7bUdBTlEsWUFBWTtzQkFBakQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNDLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIsIFNFTUlDT0xPTiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHN0YXJ0V2l0aCwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBPUFVQX0RBVEEgfSBmcm9tIFwiLi4vLi4vY29yZS9wb3B1cC9wb3B1cC5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWdzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgVGFnc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICByZWFkb25seSBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xyXG4gIHRhZ3M6IHN0cmluZ1tdO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2F1dG8nLCB7IHN0YXRpYzogdHJ1ZSB9KSBhdXRvOiBNYXRBdXRvY29tcGxldGU7XHJcbiAgb3B0aW9uczogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChQT1BVUF9EQVRBKSBwcml2YXRlIGRhdGE6IFRhZ3NEYXRhLCBwcml2YXRlIF9tYWlsYm94OiBNYWlsYm94U2VydmljZSwgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBzZXNzaW9uLnByb2ZpbGUub3B0aW9ucy50YWdzIHx8IFtdO1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnMuc29ydCgpO1xyXG4gICAgICBpZiAoIWRhdGEudGFncykgZGF0YS50YWdzID0gW107XHJcbiAgICAgIGVsc2UgZGF0YS50YWdzID0gZGF0YS50YWdzLmZpbHRlcih0ID0+IG9wdGlvbnMuaW5kZXhPZih0KSA+IC0xKTtcclxuICAgIHRoaXMudGFncyA9IGRhdGEudGFncztcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBtYXAodiA9PiB2ID8gdi50b0xvd2VyQ2FzZSgpIDogJycpLFxyXG4gICAgICBtYXAodiA9PiB0aGlzLl9vcHRpb25zLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHYpID4gLTEgJiYgdGhpcy5kYXRhLnRhZ3MuaW5kZXhPZih0KSA8IDApKSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2F2ZSgpIHtcclxuICAgIHRoaXMuX21haWxib3gudGFncyh0aGlzLmRhdGEuaWQsIHRoaXMuZGF0YS50YWdzKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmF1dG8uaXNPcGVuKSB7XHJcbiAgICAgIGNvbnN0IHsgY2hpcElucHV0LCB2YWx1ZSB9ID0gZXZlbnQ7XHJcbiAgICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IHZhbHVlLnRyaW0oKTtcclxuICAgICAgICB0aGlzLmRhdGEudGFncy5wdXNoKHRhZyk7XHJcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuaW5kZXhPZih0YWcpIDwgMClcclxuICAgICAgICAgIHRoaXMuX29wdGlvbnMucHVzaCh0YWcpO1xyXG4gICAgICAgIHRoaXMuX3NhdmUoKTtcclxuICAgICAgfVxyXG4gICAgICBjaGlwSW5wdXQ/LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VsZWN0ZWQoZXZ0OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YWcgPSBldnQub3B0aW9uLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuZGF0YS50YWdzLmluZGV4T2YodGFnKSA8IDApIHtcclxuICAgICAgdGhpcy5kYXRhLnRhZ3MucHVzaCh0YWcpO1xyXG4gICAgICB0aGlzLl9zYXZlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUodGFnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YS50YWdzLnJlbW92ZSh0YWcpO1xyXG4gICAgdGhpcy5fc2F2ZSgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgVGFnc0RhdGEge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgdmVyc2lvbjogbnVtYmVyO1xyXG4gIHRhZ3M6IHN0cmluZ1tdO1xyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwibmV2ZXJcIj5cclxuICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgW2F0dHIuYXJpYS1sYWJlbF09XCInVGFncyd8dHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFnc1wiIFtzZWxlY3RhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiIChyZW1vdmVkKT1cInJlbW92ZShpdGVtKVwiPlxyXG4gICAgICB7e2l0ZW19fVxyXG4gICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgPC9tYXQtY2hpcD5cclxuICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCInVGFnc0hpbnQnfHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxyXG4gICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICNpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJ0cnVlXCJcclxuICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCI+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAge3tpdGVtfX1cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICA8L21hdC1hdXRvY29tcGxldGU+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdGFnL3RhZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL3RhZy90YWdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFpQyxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTTlELE1BQU0sT0FDRSxhQUFhO0lBU25CLFlBQXdDLElBQWMsRUFBVSxRQUF3QixFQUFFLE9BQXVCO1FBQXpFLFNBQUksR0FBSixJQUFJLENBQVU7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQVIvRSxZQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFLaEMsdUJBQWtCLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWpELGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxD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UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBMURLLGFBQWEsa0JBU0MsVUFBVTtrR0FUeEIsYUFBYSxzUUNoQnJCLG85QkFzQkE7OzJGRE5RLGFBQWE7a0JBTHBCLFNBQVM7OzswQkFjSyxNQUFNOzJCQUFDLFVBQVU7bUdBTlEsWUFBWTtzQkFBakQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNDLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDT01NQSwgRU5URVIsIFNFTUlDT0xPTiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwsIHN0YXJ0V2l0aCwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IE1haWxib3hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbWFpbGJveC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBPUFVQX0RBVEEgfSBmcm9tIFwiLi4vLi4vY29yZS9wb3B1cC9wb3B1cC5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWdzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgVGFnc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICByZWFkb25seSBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xyXG4gIHRhZ3M6IHN0cmluZ1tdO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2F1dG8nLCB7IHN0YXRpYzogdHJ1ZSB9KSBhdXRvOiBNYXRBdXRvY29tcGxldGU7XHJcbiAgb3B0aW9uczogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogc3RyaW5nW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChQT1BVUF9EQVRBKSBwcml2YXRlIGRhdGE6IFRhZ3NEYXRhLCBwcml2YXRlIF9tYWlsYm94OiBNYWlsYm94U2VydmljZSwgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpIHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSBzZXNzaW9uLnByb2ZpbGUub3B0aW9ucy50YWdzIHx8IFtdO1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnMuc29ydCgpO1xyXG4gICAgICBpZiAoIWRhdGEudGFncykgZGF0YS50YWdzID0gW107XHJcbiAgICAgIGVsc2UgZGF0YS50YWdzID0gZGF0YS50YWdzLmZpbHRlcih0ID0+IG9wdGlvbnMuaW5kZXhPZih0KSA+IC0xKTtcclxuICAgIHRoaXMudGFncyA9IGRhdGEudGFncztcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxyXG4gICAgICBtYXAodiA9PiB2ID8gdi50b0xvd2VyQ2FzZSgpIDogJycpLFxyXG4gICAgICBtYXAodiA9PiB0aGlzLl9vcHRpb25zLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHYpID4gLTEgJiYgdGhpcy5kYXRhLnRhZ3MuaW5kZXhPZih0KSA8IDApKSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc2F2ZSgpIHtcclxuICAgIHRoaXMuX21haWxib3gudGFncyh0aGlzLmRhdGEuaWQsIHRoaXMuZGF0YS50YWdzKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmF1dG8uaXNPcGVuKSB7XHJcbiAgICAgIGNvbnN0IHsgY2hpcElucHV0LCB2YWx1ZSB9ID0gZXZlbnQ7XHJcbiAgICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IHZhbHVlLnRyaW0oKTtcclxuICAgICAgICB0aGlzLmRhdGEudGFncy5wdXNoKHRhZyk7XHJcbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMuaW5kZXhPZih0YWcpIDwgMClcclxuICAgICAgICAgIHRoaXMuX29wdGlvbnMucHVzaCh0YWcpO1xyXG4gICAgICAgIHRoaXMuX3NhdmUoKTtcclxuICAgICAgfVxyXG4gICAgICBjaGlwSW5wdXQ/LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VsZWN0ZWQoZXZ0OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YWcgPSBldnQub3B0aW9uLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuZGF0YS50YWdzLmluZGV4T2YodGFnKSA8IDApIHtcclxuICAgICAgdGhpcy5kYXRhLnRhZ3MucHVzaCh0YWcpO1xyXG4gICAgICB0aGlzLl9zYXZlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUodGFnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YS50YWdzLnJlbW92ZSh0YWcpO1xyXG4gICAgdGhpcy5fc2F2ZSgpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgVGFnc0RhdGEge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgdmVyc2lvbjogbnVtYmVyO1xyXG4gIHRhZ3M6IHN0cmluZ1tdO1xyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwibmV2ZXJcIj5cclxuICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgW2F0dHIuYXJpYS1sYWJlbF09XCInVGFncyd8dHJhbnNsYXRlXCI+XHJcbiAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFnc1wiIFtzZWxlY3RhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiIChyZW1vdmVkKT1cInJlbW92ZShpdGVtKVwiPlxyXG4gICAgICB7e2l0ZW19fVxyXG4gICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZT5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgPC9tYXQtY2hpcD5cclxuICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgPGlucHV0IFtwbGFjZWhvbGRlcl09XCInVGFnc0hpbnQnfHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIlxyXG4gICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgICNpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJ0cnVlXCJcclxuICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCI+XHJcbiAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAge3tpdGVtfX1cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICA8L21hdC1hdXRvY29tcGxldGU+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
@@ -289,7 +289,7 @@ export class FlowViewComponent extends TraceBase {
289
289
  const content = this._tooltip(tooltip);
290
290
  nodes.push({
291
291
  id: node.id,
292
- shape,
292
+ shape, //: {type: 'Path', data: ELLIPSIS },
293
293
  zIndex: zIndex++,
294
294
  tooltip: {
295
295
  content,
@@ -666,10 +666,10 @@ export class FlowViewComponent extends TraceBase {
666
666
  this.diagram && this.diagram.destroy();
667
667
  super.ngOnDestroy();
668
668
  }
669
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FlowViewComponent, deps: [{ token: i1.AccountService }, { token: i2.SessionService }, { token: i3.TranslateService }, { token: i4.DurationFormatPipe }, { token: i0.ElementRef }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
670
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: FlowViewComponent, selector: "bizdoc-flow", inputs: { model: "model", connectorType: "connectorType" }, host: { attributes: { "dir": "ltr" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [":host{background-color:transparent!important}\n"], viewProviders: [ComplexHierarchicalTreeService] }); }
669
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FlowViewComponent, deps: [{ token: i1.AccountService }, { token: i2.SessionService }, { token: i3.TranslateService }, { token: i4.DurationFormatPipe }, { token: i0.ElementRef }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component }); }
670
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: FlowViewComponent, selector: "bizdoc-flow", inputs: { model: "model", connectorType: "connectorType" }, host: { attributes: { "dir": "ltr" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [":host{background-color:transparent!important}\n"], viewProviders: [ComplexHierarchicalTreeService] }); }
671
671
  }
672
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FlowViewComponent, decorators: [{
672
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: FlowViewComponent, decorators: [{
673
673
  type: Component,
674
674
  args: [{ selector: 'bizdoc-flow', template: '', viewProviders: [ComplexHierarchicalTreeService], host: {
675
675
  dir: 'ltr'
@@ -679,4 +679,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
679
679
  }], connectorType: [{
680
680
  type: Input
681
681
  }] } });
682
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBMEMsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSw4QkFBOEIsRUFBb0QscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hSLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQU8xRDtBQUNFLCtDQUErQztBQUMvQyxRQUFRLEdBQUcsa0dBQWtHLEVBQzdHLGNBQWMsR0FBRyxtUUFBbVEsRUFDcFIsYUFBYSxHQUFHLHNUQUFzVCxDQUFDO0FBV3pVLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQWlDOUMseUJBQXlCO0lBQ3pCLFlBQW9CLFNBQXlCLEVBQUUsT0FBdUIsRUFBVSxVQUE0QixFQUNsRyxTQUE2QixFQUM3QixXQUF1QyxFQUMvQyxHQUFlO1FBQ2YsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUpGLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQW1DLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQ2xHLGNBQVMsR0FBVCxT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QztvQkFDdkMsSUFBSSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwRjtRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRCxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDOzhHQS9wQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsOEtBUmxCLEVBQUUsOEZBRUcsQ0FBQyw4QkFBOEIsQ0FBQzs7MkZBTXBDLGlCQUFpQjtrQkFWN0IsU0FBUzsrQkFDRSxhQUFhLFlBQ2IsRUFBRSxpQkFFRyxDQUFDLDhCQUE4QixDQUFDLFFBQ3pDO3dCQUNKLEdBQUcsRUFBRSxLQUFLO3FCQUNYO2tPQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5vZGVNb2RlbCwgQ29ubmVjdG9yTW9kZWwsIExheW91dE1vZGVsLCBEaWFncmFtVG9vbHMsIERpYWdyYW0sIERpYWdyYW1Db25zdHJhaW50cywgQ29tcGxleEhpZXJhcmNoaWNhbFRyZWVTZXJ2aWNlLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgU2VnbWVudHMsIENvbm5lY3Rpb25Qb2ludE9yaWdpbiwgU25hcENvbnN0cmFpbnRzLCBOb2RlQ29uc3RyYWludHMgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwsIFJlY2lwaWVudCwgTm9kZUluZm8sIEdlbmRlciwgRmxvd05vZGUsIFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFRyYWNlQmFzZSwgWW91LCBTVEFSVF9OT0RFIH0gZnJvbSAnLi90cmFjZS5iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHVyYXRpb25Gb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9kdXJhdGlvbi1mb3JtYXQucGlwZSc7XHJcblxyXG5jb25zdFxyXG4gIC8vRUxMSVBTSVMgPSAnTSA2NTAsIDE1MCBhIDc1LDE1MCAwIDEsMCAxLDAgeicsXHJcbiAgRllJX1BBVEggPSAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICBFU0NBTEFURURfUEFUSCA9ICdNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eicsXHJcbiAgV0FSTk5JTkdfUEFUSCA9ICdNIDEzLjc2MzczNSwxLjg0MzM3MzUgSCA2LjMwMzczNDkgbCAtNS4yNyw1LjI3IHYgNy40NTk5OTk1IGwgNS4yNyw1LjI3IGggNy40NjAwMDAxIGwgNS4yNywtNS4yNyBWIDcuMTEzMzczNSBaIG0gLTMuNzMsMTQuMjk5OTk5NSBjIC0wLjcyMDAwMDEsMCAtMS4zMDAwMDAxLC0wLjU4IC0xLjMwMDAwMDEsLTEuMyAwLC0wLjcyIDAuNTgsLTEuMyAxLjMwMDAwMDEsLTEuMyAwLjcyLDAgMS4zLDAuNTggMS4zLDEuMyAwLDAuNzIgLTAuNTgsMS4zIC0xLjMsMS4zIHogbSAxLC00LjMgSCA5LjAzMzczNDkgViA1Ljg0MzM3MzUgaCAyLjAwMDAwMDEgeic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1mbG93JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2VdLFxyXG4gIGhvc3Q6IHtcclxuICAgIGRpcjogJ2x0cidcclxuICB9XHJcbn0pXHJcbi8qKiBmbG93LXZpZXcgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEZsb3dWaWV3Q29tcG9uZW50IGV4dGVuZHMgVHJhY2VCYXNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+O1xyXG4gIEBJbnB1dCgpIGNvbm5lY3RvclR5cGU6IFNlZ21lbnRzID0gJ09ydGhvZ29uYWwnO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgcmVhZG9ubHkgdG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgcmVhZG9ubHkgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPVxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlpvb207XHJcbiAgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnQ2VudGVyJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgZW5hYmxlUm91dGluZzogdHJ1ZSxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICBvcmllbnRhdGlvbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1JpZ2h0VG9MZWZ0JyA6ICdMZWZ0VG9SaWdodCcsXHJcbiAgfSBhcyBMYXlvdXRNb2RlbDtcclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5ncyA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgc2Nyb2xsTGltaXQ6ICdEaWFncmFtJyxcclxuICAgIGN1cnJlbnRab29tOiAxLjIsXHJcbiAgICBwYWRkaW5nOiB7IHRvcDogMCwgYm90dG9tOiAwIH0sXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9IGFzIFNjcm9sbFNldHRpbmdzTW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5ncyA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTbmFwQ29uc3RyYWludHMuTm9uZSxcclxuICAgIGdyaWRUeXBlOiAnRG90cydcclxuICB9IGFzIFNuYXBTZXR0aW5nc01vZGVsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ3VyYXRpb246IHsgW25hbWU6IHN0cmluZ106IEZsb3dOb2RlIH0gPSB7fTtcclxuICBwcml2YXRlIF9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgLyoqIHdvcmtmbG93LXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSwgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2R1cmF0aW9uOiBEdXJhdGlvbkZvcm1hdFBpcGUsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIGh1YjogSHViU2VydmljZSkge1xyXG4gICAgc3VwZXIoc2Vzc2lvbiwgaHViKTtcclxuICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ub2Rlcy5mb3JFYWNoKG4gPT5cclxuICAgICAgdGhpcy5fY29uZmlndXJhdGlvbltuLm5hbWVdID0gbik7XHJcbiAgICBzZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvL3JlYWRvbmx5IGRpYWdyYW1TZXR0aW5ncyA9IHsgaW52ZXJzZWRBbGlnbm1lbnQ6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSB9IGFzIERpYWdyYW1TZXR0aW5nc01vZGVsO1xyXG4gIHByb3RlY3RlZCBhc3luYyBfaW5pdGlhbGl6ZSgpIHtcclxuICAgIGNvbnN0IHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfSA9IGF3YWl0IHRoaXMuX3ByZXBhcmUoKTtcclxuICAgIHRoaXMuZGlhZ3JhbSAmJiB0aGlzLmRpYWdyYW0uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBoZWlnaHQ6IDM4MCxcclxuICAgICAgbm9kZXMsXHJcbiAgICAgIGNvbm5lY3RvcnMsXHJcbiAgICAgIGxheW91dDogdGhpcy5sYXlvdXQsXHJcbiAgICAgIHRvb2w6IHRoaXMudG9vbCxcclxuICAgICAgLy9kaWFncmFtU2V0dGluZ3M6IHRoaXMuZGlhZ3JhbVNldHRpbmdzLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgIHNjcm9sbFNldHRpbmdzOiB0aGlzLnNjcm9sbFNldHRpbmdzLFxyXG4gICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICB9LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRvTGF5b3V0KCk7XHJcbiAgICBpbmRpY2F0b3JzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5wYXJlbnRJZCk7XHJcbiAgICAgIG4ub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgKHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/IC0yNSA6IDI1KTtcclxuICAgICAgbi5vZmZzZXRZID0gcGFyZW50Lm9mZnNldFkgKyAyNTtcclxuICAgICAgbi56SW5kZXggPSAxMDAwICsgaTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChuKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSh7IG1hcmdpbjogeyB0b3A6IDEwIH0gfSk7XHJcbiAgICBpbnRlcnZhbCg2MDAwMCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShcclxuICAgICAgdGhpcy5fcmVmcmVzaC5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9yZWZyZXNoKCkge1xyXG4gICAgc3VwZXIucmVzZXRFc3RpbWF0ZVRpbWUoKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5ub2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBjb25zdCB7IG5vZGUsIHJlY2lwaWVudCB9ID0gbi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWw7XHJcbiAgICAgIGlmIChyZWNpcGllbnQpIHtcclxuICAgICAgICBpZiAoIXJlY2lwaWVudC5yZXBsaWVkICYmIHJlY2lwaWVudC5wZW5kaW5nKSB7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LmVzdGltYXRlKSAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RpbWVFc3RpbWF0ZShub2RlKTtcclxuICAgICAgICAgIGVsc2UgaWYgKG5vZGUuc3RhbmRhcmRUaW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgICAgIGlmIChkaWZmID4gMClcclxuICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkaWZmKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBuLnRvb2x0aXAuY29udGVudCA9IHRoaXMuX3Rvb2x0aXAoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGlmIChub2RlICYmIG5vZGUuZXN0aW1hdGUpXHJcbiAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RpbWVFc3RpbWF0ZShub2RlKSxcclxuICAgICAgICAgICAgbi50b29sdGlwLmNvbnRlbnQgPSB0aGlzLl90b29sdGlwKChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcCk7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gb2JqXHJcbiAgICovXHJcbiAgcHVibGljIG5vZGVEZWZhdWx0cyhvYmo6IE5vZGVNb2RlbCk6IE5vZGVNb2RlbCB7XHJcbiAgICBjb25zdCB7IHJlY2lwaWVudCwgbm9kZSwgaW5kaWNhdG9yIH0gPSBvYmouYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG5cclxuICAgIGlmIChpbmRpY2F0b3IpIHtcclxuICAgICAgb2JqLndpZHRoID0gb2JqLmhlaWdodCA9IDE1O1xyXG4gICAgICBvYmouc3R5bGUuc3Ryb2tlV2lkdGggPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9iai53aWR0aCA9IG9iai5oZWlnaHQgPSA1MDtcclxuICAgICAgaWYgKG9iai5hbm5vdGF0aW9ucyAmJiBvYmouYW5ub3RhdGlvbnMubGVuZ3RoKSBvYmouYW5ub3RhdGlvbnNbMF0uc3R5bGUuY29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgaWYgKG5vZGUgJiYgbm9kZS5lc3RpbWF0ZSkge1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICAgIG9iai5zdHlsZS5vcGFjaXR5ID0gb2JqLmFubm90YXRpb25zWzBdLnN0eWxlLm9wYWNpdHkgPSAuNjtcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fYWNjZW50Q29sb3I7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSByZWNpcGllbnQgJiYgcmVjaXBpZW50LnBlbmRpbmcgP1xyXG4gICAgICAgICAgdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgPyA1MDAgOiA0MDApIDogJ3RyYW5zcGFyZW50JztcclxuICAgICAgfVxyXG4gICAgICBvYmouc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbm5lY3RvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29ubmVjdG9yLnR5cGUgPSB0aGlzLmNvbm5lY3RvclR5cGU7XHJcbiAgICBjb25uZWN0b3IuY29ybmVyUmFkaXVzID0gNjtcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IuaGVpZ2h0ID0gNztcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iud2lkdGggPSA3O1xyXG4gICAgaWYgKChjb25uZWN0b3IuYWRkSW5mbyBhcyBDb25uZWN0b3JJbmZvTW9kZWwpLmVzdGltYXRlKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnMiAyJztcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgIH1cclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc2hhcGUgPSAnTm9uZSc7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmUoKTogUHJvbWlzZTx7IG5vZGVzOiBOb2RlTW9kZWxbXTsgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXTsgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gfT4ge1xyXG4gICAgY29uc3QgeyBjb25uZWN0b3JzOiBkY29ubmVjdG9ycywgbm9kZXM6IGRub2RlcyB9ID0gdGhpcy5tb2RlbC53b3JrZmxvdztcclxuICAgIGNvbnN0IGluZGljYXRvcnM6IE5vZGVNb2RlbFtdID0gW10sIGNvbm5lY3RvcnM6IENvbm5lY3Rvck1vZGVsW10gPSBbXSwgbm9kZXM6IE5vZGVNb2RlbFtdID0gW107XHJcbiAgICBsZXQgekluZGV4ID0gNTAwO1xyXG4gICAgZm9yIChsZXQgbm9kZSBvZiBkbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGVzLmZpbmQobiA9PiBuLmlkID09IG5vZGUuaWQpKSBjb250aW51ZTtcclxuICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLl9jb25maWd1cmF0aW9uW25vZGUudHlwZV07XHJcbiAgICAgIGxldCByZWNpcGllbnRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLlxyXG4gICAgICAgIGZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAoIXRoaXMubW9kZWwuaXNzdWVkIHx8IHIucmVjZWl2ZWQgPj0gdGhpcy5tb2RlbC5pc3N1ZWQpKVxyXG4gICAgICAgIC5zb3J0KChyMCwgcjEpID0+XHJcbiAgICAgICAgICByMC5yZWNlaXZlZCA+IHIxLnJlY2VpdmVkID8gMSA6IC0xKTtcclxuICAgICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHIgPSAwO1xyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgIHZhciByZWNpcGllbnQgPSByZWNpcGllbnRzW3JdO1xyXG4gICAgICAgICAgbGV0IGV4aXN0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZSB1c2VyIHJlY2lwaWVudCBvbiBzYW1lIG5vZGVcclxuICAgICAgICAgIGxldCBqID0gMDtcclxuICAgICAgICAgIHdoaWxlIChqIDwgciAmJiAhZXhpc3RzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZWNpcGllbnRzW2pdLnVzZXJJZCA9PT0gcmVjaXBpZW50LnVzZXJJZCkgZXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZXhpc3RzKVxyXG4gICAgICAgICAgICByZWNpcGllbnRzLnNwbGljZShyZWNpcGllbnQuZXN0aW1hdGUgPyByIDogaiwgMSk7XHJcbiAgICAgICAgICBlbHNlIHIrKztcclxuICAgICAgICB9IHdoaWxlIChyIDwgcmVjaXBpZW50cy5sZW5ndGgpO1xyXG5cclxuICAgICAgICBmb3IgKHIgPSAwOyByIDwgcmVjaXBpZW50cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgICAgbGV0IHJlY2lwaWVudCA9IHJlY2lwaWVudHNbcl07XHJcbiAgICAgICAgICBjb25zdCB7IGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX25vdGUobm9kZSwgcmVjaXBpZW50KTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl90b29sdGlwKHRvb2x0aXApO1xyXG4gICAgICAgICAgY29uc3Qgbm9kID0ge1xyXG4gICAgICAgICAgICBpZDogciA9PT0gMCA/IG5vZGUuaWQgOiBub2RlLmlkICsgci50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBzaGFwZTogdGhpcy5fY29uZmlndXJhdGlvbltub2RlLnR5cGVdLnNoYXBlLFxyXG4gICAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uc3RyYWludHM6IGNvbnRlbnQgP1xyXG4gICAgICAgICAgICAgIE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLlRvb2x0aXAgOlxyXG4gICAgICAgICAgICAgIE5vZGVDb25zdHJhaW50cy5EZWZhdWx0LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgICByZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogNCB9LFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgICAgICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgICAgICAgIHk6IDEsXHJcbiAgICAgICAgICAgICAgICB4OiAuNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV1cclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgbm9kZXMucHVzaChub2QpO1xyXG4gICAgICAgICAgLy8gYWRkIGFjdGlvbiBpbmRpY2F0b3JcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IHJlY2lwaWVudC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uLnNoYXBlICYmICFyZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkluZGljYXRvciA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uLnNoYXBlLFxyXG4gICAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgZmlsbDogYWN0aW9uLmNvbG9yIHx8IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGFjdGlvbkluZGljYXRvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGZ5aSBpbmRpY2F0b3JcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuZnlpKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnZnlpJyxcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogRllJX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzE5NzZkMidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGVzY2FsYXRlIGluZGljYXRvclxyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5lc2NhbGF0ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgZXNjYWxhdGVJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IG5vZC5pZCArICdlc2NhbGF0ZScsXHJcbiAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IEVTQ0FMQVRFRF9QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoOTAwKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGVzY2FsYXRlSW5kaWNhdG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgeyBzdGF0ZSwgYW5ub3RhdGlvbiwgdG9vbHRpcCB9ID0gYXdhaXQgdGhpcy5fc2hhcGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZSB9ID0gY29uZmlndXJhdGlvbjtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5fdG9vbHRpcCh0b29sdGlwKTtcclxuICAgICAgICBub2Rlcy5wdXNoKHtcclxuICAgICAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICAgICAgc2hhcGUsLy86IHt0eXBlOiAnUGF0aCcsIGRhdGE6IEVMTElQU0lTIH0sXHJcbiAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJhaW50czogY29udGVudCA/XHJcbiAgICAgICAgICAgIE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLlRvb2x0aXAgOlxyXG4gICAgICAgICAgICBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsLFxyXG4gICAgICAgICAgYW5ub3RhdGlvbnM6IFt7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgIG9mZnNldDogc2hhcGUudHlwZSA9PT0gJ1BhdGgnID8ge1xyXG4gICAgICAgICAgICAgIHk6IDFcclxuICAgICAgICAgICAgfSA6IHsgeDogLjUgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHNoYXBlLnR5cGUgPT09ICdQYXRoJyA/ICdUb3AnIDogJ0NlbnRlcidcclxuICAgICAgICAgIH1dXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnNoYXBlICYmICFub2RlLmVzdGltYXRlKVxyXG4gICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQgKyAnc3RhdGUnLFxyXG4gICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICBkYXRhOiBzdGF0ZS5zaGFwZSxcclxuICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNYXhZTWF4JyA6ICdYTWluWU1heCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICBmaWxsOiBzdGF0ZS5jb2xvciB8fCAnYmxhY2snXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICAgICAgbm9kZTogbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChub2RlLmVycm9yKSB7XHJcbiAgICAgICAgICBjb25zdCB3YXJubmluZ0luZGljYXRvciA9IHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQgKyAnZXhjZXB0aW9uJyxcclxuICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5pZFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHdhcm5uaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRPRE9cclxuICAgIC8vIGxvbmdlc3QgcGF0aCwgcmVtb3ZlIHNob3J0IHBhdGggY29ubmVjdG9yc1xyXG4gICAgZnVuY3Rpb24gZGVlcGVuKG5vZGVJZDogc3RyaW5nLCBkZXB0aCA9IDApIHtcclxuICAgICAgbm9kZXMuZmlsdGVyKG4gPT4gKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5ub2RlLmlkID09PSBub2RlSWQpLlxyXG4gICAgICAgIGZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGRlcHRoOiBub2RlRGVwdGggfSA9IG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG4gICAgICAgICAgaWYgKG5vZGVEZXB0aCkge1xyXG4gICAgICAgICAgICBpZiAobm9kZURlcHRoIDwgZGVwdGgpIHtcclxuICAgICAgICAgICAgICBkY29ubmVjdG9ycy5maWx0ZXIoYyA9PiBjLnRhcmdldElkID09PSBub2RlSWQgJiZcclxuICAgICAgICAgICAgICAgIG5vZGVzLmZpbHRlcihuID0+IChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkubm9kZS5pZCA9PT0gYy5zb3VyY2VJZCAmJlxyXG4gICAgICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLmRlcHRoID09PSBub2RlRGVwdGggLSAxKS5sZW5ndGgpLlxyXG4gICAgICAgICAgICAgICAgZm9yRWFjaChjID0+XHJcbiAgICAgICAgICAgICAgICAgIGRjb25uZWN0b3JzLnJlbW92ZShjKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLmRlcHRoID0gZGVwdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZURlcHRoID4gZGVwdGgpXHJcbiAgICAgICAgICAgICAgZGNvbm5lY3RvcnMuZmlsdGVyKGMgPT4gYy5zb3VyY2VJZCA9PT0gbm9kZUlkKS5mb3JFYWNoKGMgPT4gZGNvbm5lY3RvcnMucmVtb3ZlKGMpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkuZGVwdGggPSBkZXB0aDtcclxuICAgICAgICAgICAgZGNvbm5lY3RvcnMuZmlsdGVyKGMgPT4gYy5zb3VyY2VJZCA9PT0gbm9kZUlkKS5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgICAgICBkZWVwZW4oYy50YXJnZXRJZCwgZGVwdGggKyAxKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgY29ubmVjdG9yIG9mIGRjb25uZWN0b3JzKSB7XHJcbiAgICAgIGxldCBzb3VyY2VzID0gbm9kZXMuZmlsdGVyKG4gPT4gKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5ub2RlLmlkID09PSBjb25uZWN0b3Iuc291cmNlSWQpLFxyXG4gICAgICAgIHRhcmdldHMgPSBub2Rlcy5maWx0ZXIobiA9PiAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLm5vZGUuaWQgPT09IGNvbm5lY3Rvci50YXJnZXRJZCk7XHJcbiAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKVxyXG4gICAgICAgIGZvciAobGV0IHRhcmdldCBvZiB0YXJnZXRzKSB7XHJcbiAgICAgICAgICBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICBzb3VyY2VJRDogc291cmNlLmlkLFxyXG4gICAgICAgICAgICB0YXJnZXRJRDogdGFyZ2V0LmlkLFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgZXN0aW1hdGU6IGNvbm5lY3Rvci5lc3RpbWF0ZSxcclxuICAgICAgICAgICAgICB0aW1lOiBjb25uZWN0b3IudGltZVxyXG4gICAgICAgICAgICB9IGFzIENvbm5lY3RvckluZm9Nb2RlbFxyXG4gICAgICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5vZGVcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIF9zaGFwZShub2RlOiBOb2RlSW5mbyk6IFByb21pc2U8eyBzdGF0ZTogU3RhdGU7IGFubm90YXRpb246IHN0cmluZzsgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbDsgfT4ge1xyXG4gICAgY29uc3QgdG9vbHRpcCA9IHt9IGFzIE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgICBpZiAobm9kZS5lcnJvcikgdG9vbHRpcC5lcnJvciA9IG5vZGUuZXJyb3I7XHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nLCBzdGF0ZTogU3RhdGU7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiAoIXRoaXMubW9kZWwuaXNzdWVkIHx8IGwudGltZSA+PSB0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG4gICAgY29uc3Qgc3RhdGVMb2cgPSBsb2cuZmluZChsID0+IGwudHlwZSA9PT0gJ1N0YXRlQ2hhbmdlJyk7XHJcbiAgICBpZiAoc3RhdGVMb2cpIHtcclxuICAgICAgc3RhdGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuc3RhdGVzLmZpbmQocyA9PiBzLm5hbWUgPT09IHN0YXRlTG9nLnN0YXRlKTtcclxuXHJcbiAgICAgIGlmIChzdGF0ZUxvZy5kdXJhdGlvbikge1xyXG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gZGF5anMuZHVyYXRpb24oc3RhdGVMb2cuZHVyYXRpb24sICdzJyk7XHJcbiAgICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgICB9XHJcbiAgICAgIGFubm90YXRpb24gPSAobm9kZS5lc3RpbWF0ZSA/IHN0YXRlLmZ1dHVyZSA6IHN0YXRlLnBhc3QpIHx8IHN0YXRlLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gU1RBUlRfTk9ERSkge1xyXG4gICAgICBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB7IG5vdGUsIHJvbGUgfSA9IGF3YWl0IHRoaXMuX3N0YXJ0Tm9kZSgpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IG5vdGUsXHJcbiAgICAgICAgICB0b29sdGlwLnJvbGUgPSByb2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUubm90ZSlcclxuICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5ub3RlO1xyXG4gICAgICBpZiAobm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBzdGF0ZSwgdG9vbHRpcCwgYW5ub3RhdGlvbiB9O1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtKSB0aGlzLmRpYWdyYW0ud2lkdGggPSAnYXV0byc7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RpbWVFc3RpbWF0ZShub2RlOiBOb2RlSW5mbyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IG1pbiwgbWF4IH0gPSBzdXBlci5fZXN0aW1hdGVUaW1lKG5vZGUpO1xyXG4gICAgaWYgKG1heClcclxuICAgICAgcmV0dXJuICFtaW4gfHwgbWluID09PSBtYXggP1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIGRheWpzLmR1cmF0aW9uKG1heCwgJ3MnKS5odW1hbml6ZSgpKSA6XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lUmFuZ2UnLCBkYXlqcy5kdXJhdGlvbihtaW4sICdzJykuaHVtYW5pemUoKSwgZGF5anMuZHVyYXRpb24obWF4LCAncycpLmh1bWFuaXplKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF90b29sdGlwKG9iajogTm9kZVRvb2x0aXBNb2RlbCkge1xyXG4gICAgY29uc3QgeyBub3RlLCByb2xlLCBzdWJzdGl0dXRpbmcsIGVzY2FsYXRpb24sIGR1cmF0aW9uLCBzdGFuZGFyZFRpbWUsIGVzdGltYXRlZFRpbWUsIGVycm9yLCBmeWkgfSA9IG9ialxyXG4gICAgY29uc3QgZWxlbWVudHMgPSBbbm90ZSwgc3Vic3RpdHV0aW5nLCBlc2NhbGF0aW9uLCBkdXJhdGlvbiwgZnlpLCByb2xlLCBlcnJvciwgc3RhbmRhcmRUaW1lLCBlc3RpbWF0ZWRUaW1lXTtcclxuICAgIGxldCBkaXY6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaChyID0+IHtcclxuICAgICAgaWYgKCFyKSByZXR1cm47XHJcbiAgICAgIGlmICghZGl2KSBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgc3Bhbi5pbm5lclRleHQgPSByO1xyXG4gICAgICBkaXYuYXBwZW5kKHNwYW4pO1xyXG4gICAgICBjb25zdCBiciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7XHJcbiAgICAgIGRpdi5hcHBlbmQoYnIpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGl2O1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIGFzeW5jIF9zdGFydE5vZGUoKTogUHJvbWlzZTx7IG5vdGU6IHN0cmluZywgcm9sZTogc3RyaW5nOyB9PiB7XHJcbiAgICBsZXQgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgICBjb25zdCBhZ28gPSBkYXlqcyh0aGlzLm1vZGVsLmlzc3VlZCkuZnJvbU5vdygpO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlbC5vd25lckJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwub3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZClcclxuICAgICAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1Ym1pdHRlZE5vdGVCeScsXHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlcixcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lcklkKSk7XHJcbiAgICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJtaXR0ZWROb3RlQnknLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlHZW5kZXIsXHJcbiAgICAgICAgICAgIHdoby5uYW1lLCBhZ28pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBieSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVyQnlJZCkpO1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLm93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZVlvdUJ5JywgYnkuZ2VuZGVyLCBieS5uYW1lLCBhZ28pO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMubW9kZWwub3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZClcclxuICAgICAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGVCeScsIGJ5LmdlbmRlcixcclxuICAgICAgICAgICAgYnkubmFtZSwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lcklkKSk7XHJcbiAgICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlQnknLFxyXG4gICAgICAgICAgICBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgIGJ5Lm5hbWUsXHJcbiAgICAgICAgICAgIHdoby5uYW1lLFxyXG4gICAgICAgICAgICBhZ28pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYnkucm9sZSlcclxuICAgICAgICAgIHJvbGUgPSBgLSAke2J5LnJvbGV9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBpZiAodGhpcy5tb2RlbC5vd25lcklkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIGFnbyk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVySWQpKTtcclxuICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlJywgd2hvLmdlbmRlciwgd2hvLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgaWYgKHdoby5yb2xlKVxyXG4gICAgICAgICAgcm9sZSA9IGAtICR7d2hvLnJvbGV9YDtcclxuICAgICAgfVxyXG5cclxuICAgIHJldHVybiB7IG5vdGUsIHJvbGUgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5vZGVcclxuICAgKiBAcGFyYW0gcmVjaXBpZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZShub2RlOiBOb2RlSW5mbywgcmVjaXBpZW50OiBSZWNpcGllbnQpOiBQcm9taXNlPHsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsIH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWwgPSB7fTtcclxuXHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIC8vIHlvdVxyXG4gICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICBhbm5vdGF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWU7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBhbm5vdGF0aW9uID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91Jyk7XHJcbiAgICAgIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9yb2xlTmFtZShyZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtyb2xlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIC8vIHNvbWVvbmUgZWxzZVxyXG4gICAge1xyXG4gICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LnVzZXJJZCkpO1xyXG4gICAgICBhbm5vdGF0aW9uID0gd2hvLm5hbWU7XHJcbiAgICAgIGlmICh3aG8ucm9sZSkgdG9vbHRpcC5yb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9yb2xlTmFtZShyZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtyb2xlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBhZ28gPSBkYXlqcyhyZWNpcGllbnQucmVwbGllZCkuZnJvbU5vdygpO1xyXG4gICAgICBjb25zdCB0YXJnZXRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIub3JpZ2luSWQgPT09IHJlY2lwaWVudC5pZCksIHRvID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgIGlmICh0YXJnZXRzLmxlbmd0aCkgZm9yIChsZXQgc2libGluZyBvZiB0YXJnZXRzKSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHNpYmxpbmcudXNlcklkKSk7XHJcbiAgICAgICAgdG8ucHVzaCh3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgaWYgKHJlY2lwaWVudC5ieUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlcik7XHJcbiAgICAgICAgICBpZiAodG8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChyZWNpcGllbnQudXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkKVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3VUbycsIGFjdGlvbixcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5qb2luKHRvKSwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKSk7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdVRvJywgYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCB3aG8ubmFtZSwgYWdvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZClcclxuICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdScsIGFjdGlvbiwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpKTtcclxuICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdScsIGFjdGlvbiwgd2hvLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LmJ5SWQpKVxyXG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIGJ5LmdlbmRlcik7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICAgICAgICBpZiAodG8ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnlUbycsIGJ5Lm5hbWUsIGFjdGlvbiwgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCBhZ28pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeScsIGJ5Lm5hbWUsIGFjdGlvbiwgYWdvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LnVzZXJJZCkpO1xyXG4gICAgICAgICAgICBpZiAodG8ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlUbycsIGJ5Lm5hbWUsIGFjdGlvbiwgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCB3aG8ubmFtZSwgYWdvKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnknLCBieS5uYW1lLCBhY3Rpb24sIHdoby5uYW1lLCBhZ28pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0by5sZW5ndGgpIHtcclxuICAgICAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKVxyXG4gICAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlblRvJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFjdGlvbiwgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCBhZ28pO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvblRvJywgYWN0aW9uLCB0aGlzLl90cmFuc2xhdGUuam9pbih0byksIGFnbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpKTtcclxuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB3aG8uZ2VuZGVyKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuVG8nLCB3aG8ubmFtZSwgYWN0aW9uLCB0aGlzLl90cmFuc2xhdGUuam9pbih0bykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZykge1xyXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCBhY3Rpb24sIGFnbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCBZb3UpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uJywgYWN0aW9uLCBhZ28pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHdoby5nZW5kZXIpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuJywgd2hvLm5hbWUsIGFjdGlvbiwgYWdvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXJlY2lwaWVudC5lc3RpbWF0ZSkge1xyXG4gICAgICBjb25zdCBhZ28gPSBkYXlqcyhyZWNpcGllbnQucmVjZWl2ZWQpLmZyb21Ob3coKTtcclxuICAgICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZEJ5JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91UmVjZWl2ZWQnLCBhZ28pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKSk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZFRpbWUnLCB3aG8uZ2VuZGVyLCBhZ28pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGVJZCkge1xyXG4gICAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGVJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ1lvdScsIHRoaXMuX3Nlc3Npb24uZ2VuZGVyKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5zdWJzdGl0dXRlSWQpKTtcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nRm9yJywgc3Vic3RpdHV0aW5nLmdlbmRlciwgc3Vic3RpdHV0aW5nLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmVjaXBpZW50Lm9yaWdpbklkICYmICFyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IHJlY2lwaWVudC5vcmlnaW5JZCk7XHJcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG9yaWdpbi5hY3Rpb24pLFxyXG4gICAgICAgIGFkamVjdGl2ZSA9IGFjdGlvbi5hZGplY3RpdmUgfHwgYWN0aW9uLnBhc3QgfHwgYWN0aW9uLnRpdGxlO1xyXG4gICAgICBpZiAoKG9yaWdpbi5ieUlkIHx8IG9yaWdpbi51c2VySWQpID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5WW91JywgYWRqZWN0aXZlKTtcclxuICAgICAgZWxzZSBpZiAob3JpZ2luLmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLnVzZXJJZCkpO1xyXG4gICAgICAgIGNvbnN0IGJ5ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KG9yaWdpbi5ieUlkKSk7XHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KG9yaWdpbi51c2VySWQpKTtcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5JywgYWRqZWN0aXZlLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQuZXNjYWxhdGVkKSB7XHJcbiAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLm1vZGVsLmxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gcmVjaXBpZW50Lm9yaWdpbklkKTtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KGVzY2FsYXRpb24udXNlcklkKSk7XHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRheWpzLmR1cmF0aW9uKGVzY2FsYXRpb24uZHVyYXRpb24sICdzJykpO1xyXG4gICAgICB0b29sdGlwLmVzY2FsYXRpb24gPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc2NhbGF0ZWRGcm9tJywgd2hvLm5hbWUsIGR1cmF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IGRheWpzKHJlY2lwaWVudC5yZXBsaWVkKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKTtcclxuICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgIHRvb2x0aXAuc3RhbmRhcmRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnTm9kZVN0YW5kYXJkVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShub2RlLnN0YW5kYXJkVGltZSkpO1xyXG4gICAgaWYgKHJlY2lwaWVudC5meWkpXHJcbiAgICAgIHRvb2x0aXAuZnlpID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRllJJyk7XHJcbiAgICByZXR1cm4geyBhbm5vdGF0aW9uLCB0b29sdGlwIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FjdGlvbihuYW1lOiBzdHJpbmcsIGdlbmRlcj86IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmIChnZW5kZXIgPT09IFlvdSkge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlcixcclxuICAgICAgICB5b3UgPSBnZW5kZXIgPT09ICdNYWxlJyA/IGFjdGlvbj8ueW91TWFsZSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gYWN0aW9uPy55b3VGZW1hbGUgOlxyXG4gICAgICAgICAgICBudWxsO1xyXG4gICAgICByZXR1cm4gKHlvdSB8fCBhY3Rpb24/LnlvdSB8fCBhY3Rpb24/LnBhc3QgfHwgYWN0aW9uPy50aXRsZSB8fCBuYW1lKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFzdCA9IGdlbmRlciA9PT0gJ01hbGUnID8gYWN0aW9uPy5wYXN0TWFsZSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyBhY3Rpb24/LnBhc3RGZW1hbGUgOiBudWxsO1xyXG4gICAgcmV0dXJuIChwYXN0IHx8IGFjdGlvbj8ucGFzdCB8fCBhY3Rpb24/LnRpdGxlIHx8IG5hbWUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5kZXN0cm95KCk7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgQ29ubmVjdG9ySW5mb01vZGVsIHtcclxuICBlc3RpbWF0ZT86IGJvb2xlYW47XHJcbiAgcGFyZW50SWQ6IHN0cmluZztcclxuICB0aW1lOiBEYXRlXHJcbn1cclxuaW50ZXJmYWNlIE5vZGVJbmZvTW9kZWwge1xyXG4gIHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgbm9kZTogTm9kZUluZm87XHJcbiAgZGVwdGg/OiBudW1iZXI7XHJcbiAgcmVjaXBpZW50OiBSZWNpcGllbnRcclxuICBpbmRpY2F0b3I/OiBib29sZWFuO1xyXG4gIHBhcmVudElkPzogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBOb2RlVG9vbHRpcE1vZGVsIHtcclxuICBmeWk/OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgbm90ZT86IHN0cmluZztcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIGZyb20/OiBzdHJpbmc7XHJcbiAgc3Vic3RpdHV0aW5nPzogc3RyaW5nO1xyXG4gIGVzY2FsYXRpb24/OiBzdHJpbmc7XHJcbiAgc3RhbmRhcmRUaW1lPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogc3RyaW5nO1xyXG4gIGVzdGltYXRlZFRpbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
682
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBMEMsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSw4QkFBOEIsRUFBb0QscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hSLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQU8xRDtBQUNFLCtDQUErQztBQUMvQyxRQUFRLEdBQUcsa0dBQWtHLEVBQzdHLGNBQWMsR0FBRyxtUUFBbVEsRUFDcFIsYUFBYSxHQUFHLHNUQUFzVCxDQUFDO0FBV3pVLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQWlDOUMseUJBQXlCO0lBQ3pCLFlBQW9CLFNBQXlCLEVBQUUsT0FBdUIsRUFBVSxVQUE0QixFQUNsRyxTQUE2QixFQUM3QixXQUF1QyxFQUMvQyxHQUFlO1FBQ2YsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUpGLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQW1DLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQ2xHLGNBQVMsR0FBVCxT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QUMsQ0FBQztZQUNqRCxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsT0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDOzhHQS9wQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsOEtBUmxCLEVBQUUsOEZBRUcsQ0FBQyw4QkFBOEIsQ0FBQzs7MkZBTXBDLGlCQUFpQjtrQkFWN0IsU0FBUzsrQkFDRSxhQUFhLFlBQ2IsRUFBRSxpQkFFRyxDQUFDLDhCQUE4QixDQUFDLFFBQ3pDO3dCQUNKLEdBQUcsRUFBRSxLQUFLO3FCQUNYO2tPQUlRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5vZGVNb2RlbCwgQ29ubmVjdG9yTW9kZWwsIExheW91dE1vZGVsLCBEaWFncmFtVG9vbHMsIERpYWdyYW0sIERpYWdyYW1Db25zdHJhaW50cywgQ29tcGxleEhpZXJhcmNoaWNhbFRyZWVTZXJ2aWNlLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgU2VnbWVudHMsIENvbm5lY3Rpb25Qb2ludE9yaWdpbiwgU25hcENvbnN0cmFpbnRzLCBOb2RlQ29uc3RyYWludHMgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwsIFJlY2lwaWVudCwgTm9kZUluZm8sIEdlbmRlciwgRmxvd05vZGUsIFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFRyYWNlQmFzZSwgWW91LCBTVEFSVF9OT0RFIH0gZnJvbSAnLi90cmFjZS5iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHVyYXRpb25Gb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9kdXJhdGlvbi1mb3JtYXQucGlwZSc7XHJcblxyXG5jb25zdFxyXG4gIC8vRUxMSVBTSVMgPSAnTSA2NTAsIDE1MCBhIDc1LDE1MCAwIDEsMCAxLDAgeicsXHJcbiAgRllJX1BBVEggPSAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICBFU0NBTEFURURfUEFUSCA9ICdNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eicsXHJcbiAgV0FSTk5JTkdfUEFUSCA9ICdNIDEzLjc2MzczNSwxLjg0MzM3MzUgSCA2LjMwMzczNDkgbCAtNS4yNyw1LjI3IHYgNy40NTk5OTk1IGwgNS4yNyw1LjI3IGggNy40NjAwMDAxIGwgNS4yNywtNS4yNyBWIDcuMTEzMzczNSBaIG0gLTMuNzMsMTQuMjk5OTk5NSBjIC0wLjcyMDAwMDEsMCAtMS4zMDAwMDAxLC0wLjU4IC0xLjMwMDAwMDEsLTEuMyAwLC0wLjcyIDAuNTgsLTEuMyAxLjMwMDAwMDEsLTEuMyAwLjcyLDAgMS4zLDAuNTggMS4zLDEuMyAwLDAuNzIgLTAuNTgsMS4zIC0xLjMsMS4zIHogbSAxLC00LjMgSCA5LjAzMzczNDkgViA1Ljg0MzM3MzUgaCAyLjAwMDAwMDEgeic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1mbG93JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2VdLFxyXG4gIGhvc3Q6IHtcclxuICAgIGRpcjogJ2x0cidcclxuICB9XHJcbn0pXHJcbi8qKiBmbG93LXZpZXcgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEZsb3dWaWV3Q29tcG9uZW50IGV4dGVuZHMgVHJhY2VCYXNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBtb2RlbDogRG9jdW1lbnRNb2RlbDxhbnk+O1xyXG4gIEBJbnB1dCgpIGNvbm5lY3RvclR5cGU6IFNlZ21lbnRzID0gJ09ydGhvZ29uYWwnO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgcmVhZG9ubHkgdG9vbDogRGlhZ3JhbVRvb2xzID0gRGlhZ3JhbVRvb2xzLlpvb21QYW47XHJcbiAgcmVhZG9ubHkgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPVxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkRlZmF1bHQgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlBhbiB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuTGluZVJvdXRpbmcgfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLlpvb207XHJcbiAgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnQ2VudGVyJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgZW5hYmxlUm91dGluZzogdHJ1ZSxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICBvcmllbnRhdGlvbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1JpZ2h0VG9MZWZ0JyA6ICdMZWZ0VG9SaWdodCcsXHJcbiAgfSBhcyBMYXlvdXRNb2RlbDtcclxuICByZWFkb25seSBzY3JvbGxTZXR0aW5ncyA9IHtcclxuICAgIG1pblpvb206IC41LFxyXG4gICAgc2Nyb2xsTGltaXQ6ICdEaWFncmFtJyxcclxuICAgIGN1cnJlbnRab29tOiAxLjIsXHJcbiAgICBwYWRkaW5nOiB7IHRvcDogMCwgYm90dG9tOiAwIH0sXHJcbiAgICBtYXhab29tOiAyLjVcclxuICB9IGFzIFNjcm9sbFNldHRpbmdzTW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5ncyA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTbmFwQ29uc3RyYWludHMuTm9uZSxcclxuICAgIGdyaWRUeXBlOiAnRG90cydcclxuICB9IGFzIFNuYXBTZXR0aW5nc01vZGVsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ3VyYXRpb246IHsgW25hbWU6IHN0cmluZ106IEZsb3dOb2RlIH0gPSB7fTtcclxuICBwcml2YXRlIF9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgLyoqIHdvcmtmbG93LXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSwgc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2R1cmF0aW9uOiBEdXJhdGlvbkZvcm1hdFBpcGUsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIGh1YjogSHViU2VydmljZSkge1xyXG4gICAgc3VwZXIoc2Vzc2lvbiwgaHViKTtcclxuICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ub2Rlcy5mb3JFYWNoKG4gPT5cclxuICAgICAgdGhpcy5fY29uZmlndXJhdGlvbltuLm5hbWVdID0gbik7XHJcbiAgICBzZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvL3JlYWRvbmx5IGRpYWdyYW1TZXR0aW5ncyA9IHsgaW52ZXJzZWRBbGlnbm1lbnQ6IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSB9IGFzIERpYWdyYW1TZXR0aW5nc01vZGVsO1xyXG4gIHByb3RlY3RlZCBhc3luYyBfaW5pdGlhbGl6ZSgpIHtcclxuICAgIGNvbnN0IHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfSA9IGF3YWl0IHRoaXMuX3ByZXBhcmUoKTtcclxuICAgIHRoaXMuZGlhZ3JhbSAmJiB0aGlzLmRpYWdyYW0uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBoZWlnaHQ6IDM4MCxcclxuICAgICAgbm9kZXMsXHJcbiAgICAgIGNvbm5lY3RvcnMsXHJcbiAgICAgIGxheW91dDogdGhpcy5sYXlvdXQsXHJcbiAgICAgIHRvb2w6IHRoaXMudG9vbCxcclxuICAgICAgLy9kaWFncmFtU2V0dGluZ3M6IHRoaXMuZGlhZ3JhbVNldHRpbmdzLFxyXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgIHNjcm9sbFNldHRpbmdzOiB0aGlzLnNjcm9sbFNldHRpbmdzLFxyXG4gICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICBjb25zdHJhaW50czogdGhpcy5kaWFncmFtQ29uc3RyYWludHMsXHJcbiAgICAgIGdldENvbm5lY3RvckRlZmF1bHRzOiB0aGlzLmNvbm5EZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICB9LCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRvTGF5b3V0KCk7XHJcbiAgICBpbmRpY2F0b3JzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5wYXJlbnRJZCk7XHJcbiAgICAgIG4ub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgKHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/IC0yNSA6IDI1KTtcclxuICAgICAgbi5vZmZzZXRZID0gcGFyZW50Lm9mZnNldFkgKyAyNTtcclxuICAgICAgbi56SW5kZXggPSAxMDAwICsgaTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChuKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSh7IG1hcmdpbjogeyB0b3A6IDEwIH0gfSk7XHJcbiAgICBpbnRlcnZhbCg2MDAwMCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShcclxuICAgICAgdGhpcy5fcmVmcmVzaC5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIF9yZWZyZXNoKCkge1xyXG4gICAgc3VwZXIucmVzZXRFc3RpbWF0ZVRpbWUoKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5ub2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBjb25zdCB7IG5vZGUsIHJlY2lwaWVudCB9ID0gbi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWw7XHJcbiAgICAgIGlmIChyZWNpcGllbnQpIHtcclxuICAgICAgICBpZiAoIXJlY2lwaWVudC5yZXBsaWVkICYmIHJlY2lwaWVudC5wZW5kaW5nKSB7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LmVzdGltYXRlKSAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RpbWVFc3RpbWF0ZShub2RlKTtcclxuICAgICAgICAgIGVsc2UgaWYgKG5vZGUuc3RhbmRhcmRUaW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgICAgIGlmIChkaWZmID4gMClcclxuICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkaWZmKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBuLnRvb2x0aXAuY29udGVudCA9IHRoaXMuX3Rvb2x0aXAoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGlmIChub2RlICYmIG5vZGUuZXN0aW1hdGUpXHJcbiAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXAuZXN0aW1hdGVkVGltZSA9IHRoaXMuX3RpbWVFc3RpbWF0ZShub2RlKSxcclxuICAgICAgICAgICAgbi50b29sdGlwLmNvbnRlbnQgPSB0aGlzLl90b29sdGlwKChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcCk7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gb2JqXHJcbiAgICovXHJcbiAgcHVibGljIG5vZGVEZWZhdWx0cyhvYmo6IE5vZGVNb2RlbCk6IE5vZGVNb2RlbCB7XHJcbiAgICBjb25zdCB7IHJlY2lwaWVudCwgbm9kZSwgaW5kaWNhdG9yIH0gPSBvYmouYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG5cclxuICAgIGlmIChpbmRpY2F0b3IpIHtcclxuICAgICAgb2JqLndpZHRoID0gb2JqLmhlaWdodCA9IDE1O1xyXG4gICAgICBvYmouc3R5bGUuc3Ryb2tlV2lkdGggPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9iai53aWR0aCA9IG9iai5oZWlnaHQgPSA1MDtcclxuICAgICAgaWYgKG9iai5hbm5vdGF0aW9ucyAmJiBvYmouYW5ub3RhdGlvbnMubGVuZ3RoKSBvYmouYW5ub3RhdGlvbnNbMF0uc3R5bGUuY29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgaWYgKG5vZGUgJiYgbm9kZS5lc3RpbWF0ZSkge1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICAgIG9iai5zdHlsZS5vcGFjaXR5ID0gb2JqLmFubm90YXRpb25zWzBdLnN0eWxlLm9wYWNpdHkgPSAuNjtcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fYWNjZW50Q29sb3I7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSByZWNpcGllbnQgJiYgcmVjaXBpZW50LnBlbmRpbmcgP1xyXG4gICAgICAgICAgdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgPyA1MDAgOiA0MDApIDogJ3RyYW5zcGFyZW50JztcclxuICAgICAgfVxyXG4gICAgICBvYmouc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbm5lY3RvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29ubmVjdG9yLnR5cGUgPSB0aGlzLmNvbm5lY3RvclR5cGU7XHJcbiAgICBjb25uZWN0b3IuY29ybmVyUmFkaXVzID0gNjtcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IuaGVpZ2h0ID0gNztcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iud2lkdGggPSA3O1xyXG4gICAgaWYgKChjb25uZWN0b3IuYWRkSW5mbyBhcyBDb25uZWN0b3JJbmZvTW9kZWwpLmVzdGltYXRlKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnMiAyJztcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgIH1cclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc2hhcGUgPSAnTm9uZSc7XHJcbiAgfVxyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmUoKTogUHJvbWlzZTx7IG5vZGVzOiBOb2RlTW9kZWxbXTsgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXTsgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gfT4ge1xyXG4gICAgY29uc3QgeyBjb25uZWN0b3JzOiBkY29ubmVjdG9ycywgbm9kZXM6IGRub2RlcyB9ID0gdGhpcy5tb2RlbC53b3JrZmxvdztcclxuICAgIGNvbnN0IGluZGljYXRvcnM6IE5vZGVNb2RlbFtdID0gW10sIGNvbm5lY3RvcnM6IENvbm5lY3Rvck1vZGVsW10gPSBbXSwgbm9kZXM6IE5vZGVNb2RlbFtdID0gW107XHJcbiAgICBsZXQgekluZGV4ID0gNTAwO1xyXG4gICAgZm9yIChsZXQgbm9kZSBvZiBkbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGVzLmZpbmQobiA9PiBuLmlkID09IG5vZGUuaWQpKSBjb250aW51ZTtcclxuICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLl9jb25maWd1cmF0aW9uW25vZGUudHlwZV07XHJcbiAgICAgIGxldCByZWNpcGllbnRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLlxyXG4gICAgICAgIGZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkICYmXHJcbiAgICAgICAgICAoIXRoaXMubW9kZWwuaXNzdWVkIHx8IHIucmVjZWl2ZWQgPj0gdGhpcy5tb2RlbC5pc3N1ZWQpKVxyXG4gICAgICAgIC5zb3J0KChyMCwgcjEpID0+XHJcbiAgICAgICAgICByMC5yZWNlaXZlZCA+IHIxLnJlY2VpdmVkID8gMSA6IC0xKTtcclxuICAgICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHIgPSAwO1xyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgIHZhciByZWNpcGllbnQgPSByZWNpcGllbnRzW3JdO1xyXG4gICAgICAgICAgbGV0IGV4aXN0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gcmVtb3ZlIGR1cGxpY2F0ZSB1c2VyIHJlY2lwaWVudCBvbiBzYW1lIG5vZGVcclxuICAgICAgICAgIGxldCBqID0gMDtcclxuICAgICAgICAgIHdoaWxlIChqIDwgciAmJiAhZXhpc3RzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZWNpcGllbnRzW2pdLnVzZXJJZCA9PT0gcmVjaXBpZW50LnVzZXJJZCkgZXhpc3RzID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZXhpc3RzKVxyXG4gICAgICAgICAgICByZWNpcGllbnRzLnNwbGljZShyZWNpcGllbnQuZXN0aW1hdGUgPyByIDogaiwgMSk7XHJcbiAgICAgICAgICBlbHNlIHIrKztcclxuICAgICAgICB9IHdoaWxlIChyIDwgcmVjaXBpZW50cy5sZW5ndGgpO1xyXG5cclxuICAgICAgICBmb3IgKHIgPSAwOyByIDwgcmVjaXBpZW50cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgICAgbGV0IHJlY2lwaWVudCA9IHJlY2lwaWVudHNbcl07XHJcbiAgICAgICAgICBjb25zdCB7IGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX25vdGUobm9kZSwgcmVjaXBpZW50KTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLl90b29sdGlwKHRvb2x0aXApO1xyXG4gICAgICAgICAgY29uc3Qgbm9kID0ge1xyXG4gICAgICAgICAgICBpZDogciA9PT0gMCA/IG5vZGUuaWQgOiBub2RlLmlkICsgci50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBzaGFwZTogdGhpcy5fY29uZmlndXJhdGlvbltub2RlLnR5cGVdLnNoYXBlLFxyXG4gICAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uc3RyYWludHM6IGNvbnRlbnQgP1xyXG4gICAgICAgICAgICAgIE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLlRvb2x0aXAgOlxyXG4gICAgICAgICAgICAgIE5vZGVDb25zdHJhaW50cy5EZWZhdWx0LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgICByZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogNCB9LFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgICAgICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgICAgICAgIHk6IDEsXHJcbiAgICAgICAgICAgICAgICB4OiAuNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV1cclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgbm9kZXMucHVzaChub2QpO1xyXG4gICAgICAgICAgLy8gYWRkIGFjdGlvbiBpbmRpY2F0b3JcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IHJlY2lwaWVudC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uLnNoYXBlICYmICFyZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkluZGljYXRvciA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uLnNoYXBlLFxyXG4gICAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgZmlsbDogYWN0aW9uLmNvbG9yIHx8IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGFjdGlvbkluZGljYXRvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGZ5aSBpbmRpY2F0b3JcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuZnlpKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnZnlpJyxcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogRllJX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzE5NzZkMidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGVzY2FsYXRlIGluZGljYXRvclxyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5lc2NhbGF0ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgZXNjYWxhdGVJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgICAgaWQ6IG5vZC5pZCArICdlc2NhbGF0ZScsXHJcbiAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IEVTQ0FMQVRFRF9QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoOTAwKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGVzY2FsYXRlSW5kaWNhdG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgeyBzdGF0ZSwgYW5ub3RhdGlvbiwgdG9vbHRpcCB9ID0gYXdhaXQgdGhpcy5fc2hhcGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZSB9ID0gY29uZmlndXJhdGlvbjtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5fdG9vbHRpcCh0b29sdGlwKTtcclxuICAgICAgICBub2Rlcy5wdXNoKHtcclxuICAgICAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICAgICAgc2hhcGUsLy86IHt0eXBlOiAnUGF0aCcsIGRhdGE6IEVMTElQU0lTIH0sXHJcbiAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJhaW50czogY29udGVudCA/XHJcbiAgICAgICAgICAgIE5vZGVDb25zdHJhaW50cy5EZWZhdWx0IHwgTm9kZUNvbnN0cmFpbnRzLlRvb2x0aXAgOlxyXG4gICAgICAgICAgICBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsLFxyXG4gICAgICAgICAgYW5ub3RhdGlvbnM6IFt7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgIG9mZnNldDogc2hhcGUudHlwZSA9PT0gJ1BhdGgnID8ge1xyXG4gICAgICAgICAgICAgIHk6IDFcclxuICAgICAgICAgICAgfSA6IHsgeDogLjUgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHNoYXBlLnR5cGUgPT09ICdQYXRoJyA/ICdUb3AnIDogJ0NlbnRlcidcclxuICAgICAgICAgIH1dXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnNoYXBlICYmICFub2RlLmVzdGltYXRlKVxyXG4gICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQgKyAnc3RhdGUnLFxyXG4gICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICBkYXRhOiBzdGF0ZS5zaGFwZSxcclxuICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNYXhZTWF4JyA6ICdYTWluWU1heCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICBmaWxsOiBzdGF0ZS5jb2xvciB8fCAnYmxhY2snXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICAgICAgbm9kZTogbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChub2RlLmVycm9yKSB7XHJcbiAgICAgICAgICBjb25zdCB3YXJubmluZ0luZGljYXRvciA9IHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQgKyAnZXhjZXB0aW9uJyxcclxuICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogV0FSTk5JTkdfUEFUSCxcclxuICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICBmaWxsOiBnZXRXYXJuKDgwMClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5pZFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKHdhcm5uaW5nSW5kaWNhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRPRE9cclxuICAgIC8vIGxvbmdlc3QgcGF0aCwgcmVtb3ZlIHNob3J0IHBhdGggY29ubmVjdG9yc1xyXG4gICAgZnVuY3Rpb24gZGVlcGVuKG5vZGVJZDogc3RyaW5nLCBkZXB0aCA9IDApIHtcclxuICAgICAgbm9kZXMuZmlsdGVyKG4gPT4gKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5ub2RlLmlkID09PSBub2RlSWQpLlxyXG4gICAgICAgIGZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGRlcHRoOiBub2RlRGVwdGggfSA9IG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG4gICAgICAgICAgaWYgKG5vZGVEZXB0aCkge1xyXG4gICAgICAgICAgICBpZiAobm9kZURlcHRoIDwgZGVwdGgpIHtcclxuICAgICAgICAgICAgICBkY29ubmVjdG9ycy5maWx0ZXIoYyA9PiBjLnRhcmdldElkID09PSBub2RlSWQgJiZcclxuICAgICAgICAgICAgICAgIG5vZGVzLmZpbHRlcihuID0+IChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkubm9kZS5pZCA9PT0gYy5zb3VyY2VJZCAmJlxyXG4gICAgICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLmRlcHRoID09PSBub2RlRGVwdGggLSAxKS5sZW5ndGgpLlxyXG4gICAgICAgICAgICAgICAgZm9yRWFjaChjID0+XHJcbiAgICAgICAgICAgICAgICAgIGRjb25uZWN0b3JzLnJlbW92ZShjKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLmRlcHRoID0gZGVwdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZURlcHRoID4gZGVwdGgpXHJcbiAgICAgICAgICAgICAgZGNvbm5lY3RvcnMuZmlsdGVyKGMgPT4gYy5zb3VyY2VJZCA9PT0gbm9kZUlkKS5mb3JFYWNoKGMgPT4gZGNvbm5lY3RvcnMucmVtb3ZlKGMpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkuZGVwdGggPSBkZXB0aDtcclxuICAgICAgICAgICAgZGNvbm5lY3RvcnMuZmlsdGVyKGMgPT4gYy5zb3VyY2VJZCA9PT0gbm9kZUlkKS5mb3JFYWNoKGMgPT5cclxuICAgICAgICAgICAgICBkZWVwZW4oYy50YXJnZXRJZCwgZGVwdGggKyAxKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgY29ubmVjdG9yIG9mIGRjb25uZWN0b3JzKSB7XHJcbiAgICAgIGxldCBzb3VyY2VzID0gbm9kZXMuZmlsdGVyKG4gPT4gKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5ub2RlLmlkID09PSBjb25uZWN0b3Iuc291cmNlSWQpLFxyXG4gICAgICAgIHRhcmdldHMgPSBub2Rlcy5maWx0ZXIobiA9PiAobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLm5vZGUuaWQgPT09IGNvbm5lY3Rvci50YXJnZXRJZCk7XHJcbiAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKVxyXG4gICAgICAgIGZvciAobGV0IHRhcmdldCBvZiB0YXJnZXRzKSB7XHJcbiAgICAgICAgICBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICBzb3VyY2VJRDogc291cmNlLmlkLFxyXG4gICAgICAgICAgICB0YXJnZXRJRDogdGFyZ2V0LmlkLFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgZXN0aW1hdGU6IGNvbm5lY3Rvci5lc3RpbWF0ZSxcclxuICAgICAgICAgICAgICB0aW1lOiBjb25uZWN0b3IudGltZVxyXG4gICAgICAgICAgICB9IGFzIENvbm5lY3RvckluZm9Nb2RlbFxyXG4gICAgICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5vZGVcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIF9zaGFwZShub2RlOiBOb2RlSW5mbyk6IFByb21pc2U8eyBzdGF0ZTogU3RhdGU7IGFubm90YXRpb246IHN0cmluZzsgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbDsgfT4ge1xyXG4gICAgY29uc3QgdG9vbHRpcCA9IHt9IGFzIE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgICBpZiAobm9kZS5lcnJvcikgdG9vbHRpcC5lcnJvciA9IG5vZGUuZXJyb3I7XHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nLCBzdGF0ZTogU3RhdGU7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiAoIXRoaXMubW9kZWwuaXNzdWVkIHx8IGwudGltZSA+PSB0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG4gICAgY29uc3Qgc3RhdGVMb2cgPSBsb2cuZmluZChsID0+IGwudHlwZSA9PT0gJ1N0YXRlQ2hhbmdlJyk7XHJcbiAgICBpZiAoc3RhdGVMb2cpIHtcclxuICAgICAgc3RhdGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuc3RhdGVzLmZpbmQocyA9PiBzLm5hbWUgPT09IHN0YXRlTG9nLnN0YXRlKTtcclxuXHJcbiAgICAgIGlmIChzdGF0ZUxvZy5kdXJhdGlvbikge1xyXG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gZGF5anMuZHVyYXRpb24oc3RhdGVMb2cuZHVyYXRpb24sICdzJyk7XHJcbiAgICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgICB9XHJcbiAgICAgIGFubm90YXRpb24gPSAobm9kZS5lc3RpbWF0ZSA/IHN0YXRlLmZ1dHVyZSA6IHN0YXRlLnBhc3QpIHx8IHN0YXRlLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gU1RBUlRfTk9ERSkge1xyXG4gICAgICBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB7IG5vdGUsIHJvbGUgfSA9IGF3YWl0IHRoaXMuX3N0YXJ0Tm9kZSgpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IG5vdGUsXHJcbiAgICAgICAgICB0b29sdGlwLnJvbGUgPSByb2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUubm90ZSlcclxuICAgICAgICBhbm5vdGF0aW9uID0gbm9kZS5ub3RlO1xyXG4gICAgICBpZiAobm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBzdGF0ZSwgdG9vbHRpcCwgYW5ub3RhdGlvbiB9O1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtKSB0aGlzLmRpYWdyYW0ud2lkdGggPSAnYXV0byc7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RpbWVFc3RpbWF0ZShub2RlOiBOb2RlSW5mbyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IG1pbiwgbWF4IH0gPSBzdXBlci5fZXN0aW1hdGVUaW1lKG5vZGUpO1xyXG4gICAgaWYgKG1heClcclxuICAgICAgcmV0dXJuICFtaW4gfHwgbWluID09PSBtYXggP1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIGRheWpzLmR1cmF0aW9uKG1heCwgJ3MnKS5odW1hbml6ZSgpKSA6XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lUmFuZ2UnLCBkYXlqcy5kdXJhdGlvbihtaW4sICdzJykuaHVtYW5pemUoKSwgZGF5anMuZHVyYXRpb24obWF4LCAncycpLmh1bWFuaXplKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF90b29sdGlwKG9iajogTm9kZVRvb2x0aXBNb2RlbCkge1xyXG4gICAgY29uc3QgeyBub3RlLCByb2xlLCBzdWJzdGl0dXRpbmcsIGVzY2FsYXRpb24sIGR1cmF0aW9uLCBzdGFuZGFyZFRpbWUsIGVzdGltYXRlZFRpbWUsIGVycm9yLCBmeWkgfSA9IG9ialxyXG4gICAgY29uc3QgZWxlbWVudHMgPSBbbm90ZSwgc3Vic3RpdHV0aW5nLCBlc2NhbGF0aW9uLCBkdXJhdGlvbiwgZnlpLCByb2xlLCBlcnJvciwgc3RhbmRhcmRUaW1lLCBlc3RpbWF0ZWRUaW1lXTtcclxuICAgIGxldCBkaXY6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaChyID0+IHtcclxuICAgICAgaWYgKCFyKSByZXR1cm47XHJcbiAgICAgIGlmICghZGl2KSBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgICAgc3Bhbi5pbm5lclRleHQgPSByO1xyXG4gICAgICBkaXYuYXBwZW5kKHNwYW4pO1xyXG4gICAgICBjb25zdCBiciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJyk7XHJcbiAgICAgIGRpdi5hcHBlbmQoYnIpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGl2O1xyXG4gIH1cclxuICAvKiogKi9cclxuICBwcml2YXRlIGFzeW5jIF9zdGFydE5vZGUoKTogUHJvbWlzZTx7IG5vdGU6IHN0cmluZywgcm9sZTogc3RyaW5nOyB9PiB7XHJcbiAgICBsZXQgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgICBjb25zdCBhZ28gPSBkYXlqcyh0aGlzLm1vZGVsLmlzc3VlZCkuZnJvbU5vdygpO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlbC5vd25lckJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwub3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZClcclxuICAgICAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1Ym1pdHRlZE5vdGVCeScsXHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlcixcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lcklkKSk7XHJcbiAgICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdZb3VTdWJtaXR0ZWROb3RlQnknLFxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlHZW5kZXIsXHJcbiAgICAgICAgICAgIHdoby5uYW1lLCBhZ28pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBieSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVyQnlJZCkpO1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLm93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3VibWl0dGVkTm90ZVlvdUJ5JywgYnkuZ2VuZGVyLCBieS5uYW1lLCBhZ28pO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMubW9kZWwub3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZClcclxuICAgICAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1Ym1pdHRlZE5vdGVCeScsIGJ5LmdlbmRlcixcclxuICAgICAgICAgICAgYnkubmFtZSwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lcklkKSk7XHJcbiAgICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlQnknLFxyXG4gICAgICAgICAgICBieS5nZW5kZXIsXHJcbiAgICAgICAgICAgIGJ5Lm5hbWUsXHJcbiAgICAgICAgICAgIHdoby5uYW1lLFxyXG4gICAgICAgICAgICBhZ28pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYnkucm9sZSlcclxuICAgICAgICAgIHJvbGUgPSBgLSAke2J5LnJvbGV9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBpZiAodGhpcy5tb2RlbC5vd25lcklkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91U3VibWl0dGVkTm90ZScsIGFnbyk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVySWQpKTtcclxuICAgICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJtaXR0ZWROb3RlJywgd2hvLmdlbmRlciwgd2hvLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgaWYgKHdoby5yb2xlKVxyXG4gICAgICAgICAgcm9sZSA9IGAtICR7d2hvLnJvbGV9YDtcclxuICAgICAgfVxyXG5cclxuICAgIHJldHVybiB7IG5vdGUsIHJvbGUgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5vZGVcclxuICAgKiBAcGFyYW0gcmVjaXBpZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZShub2RlOiBOb2RlSW5mbywgcmVjaXBpZW50OiBSZWNpcGllbnQpOiBQcm9taXNlPHsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsIH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWwgPSB7fTtcclxuXHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIC8vIHlvdVxyXG4gICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICBhbm5vdGF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWU7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBhbm5vdGF0aW9uID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91Jyk7XHJcbiAgICAgIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9yb2xlTmFtZShyZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtyb2xlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgIC8vIHNvbWVvbmUgZWxzZVxyXG4gICAge1xyXG4gICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LnVzZXJJZCkpO1xyXG4gICAgICBhbm5vdGF0aW9uID0gd2hvLm5hbWU7XHJcbiAgICAgIGlmICh3aG8ucm9sZSkgdG9vbHRpcC5yb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9yb2xlTmFtZShyZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtyb2xlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBhZ28gPSBkYXlqcyhyZWNpcGllbnQucmVwbGllZCkuZnJvbU5vdygpO1xyXG4gICAgICBjb25zdCB0YXJnZXRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIub3JpZ2luSWQgPT09IHJlY2lwaWVudC5pZCksIHRvID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgIGlmICh0YXJnZXRzLmxlbmd0aCkgZm9yIChsZXQgc2libGluZyBvZiB0YXJnZXRzKSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHNpYmxpbmcudXNlcklkKSk7XHJcbiAgICAgICAgdG8ucHVzaCh3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgaWYgKHJlY2lwaWVudC5ieUlkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlJZCkge1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUdlbmRlcik7XHJcbiAgICAgICAgICBpZiAodG8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChyZWNpcGllbnQudXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkKVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlZb3VUbycsIGFjdGlvbixcclxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5qb2luKHRvKSwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKSk7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdVRvJywgYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCB3aG8ubmFtZSwgYWdvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZClcclxuICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdScsIGFjdGlvbiwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpKTtcclxuICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW5CeVlvdScsIGFjdGlvbiwgd2hvLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LmJ5SWQpKVxyXG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIGJ5LmdlbmRlcik7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICAgICAgICBpZiAodG8ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnlUbycsIGJ5Lm5hbWUsIGFjdGlvbiwgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCBhZ28pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb25CeScsIGJ5Lm5hbWUsIGFjdGlvbiwgYWdvKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LnVzZXJJZCkpO1xyXG4gICAgICAgICAgICBpZiAodG8ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnlUbycsIGJ5Lm5hbWUsIGFjdGlvbiwgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCB3aG8ubmFtZSwgYWdvKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnknLCBieS5uYW1lLCBhY3Rpb24sIHdoby5uYW1lLCBhZ28pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0by5sZW5ndGgpIHtcclxuICAgICAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKVxyXG4gICAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlblRvJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFjdGlvbiwgdGhpcy5fdHJhbnNsYXRlLmpvaW4odG8pLCBhZ28pO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvblRvJywgYWN0aW9uLCB0aGlzLl90cmFuc2xhdGUuam9pbih0byksIGFnbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpKTtcclxuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB3aG8uZ2VuZGVyKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuVG8nLCB3aG8ubmFtZSwgYWN0aW9uLCB0aGlzLl90cmFuc2xhdGUuam9pbih0bykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZykge1xyXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCBhY3Rpb24sIGFnbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkge1xyXG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCBZb3UpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uJywgYWN0aW9uLCBhZ28pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKSk7XHJcbiAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHdoby5nZW5kZXIpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuJywgd2hvLm5hbWUsIGFjdGlvbiwgYWdvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXJlY2lwaWVudC5lc3RpbWF0ZSkge1xyXG4gICAgICBjb25zdCBhZ28gPSBkYXlqcyhyZWNpcGllbnQucmVjZWl2ZWQpLmZyb21Ob3coKTtcclxuICAgICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nKVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZEJ5JywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlciwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIGFnbyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91UmVjZWl2ZWQnLCBhZ28pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHdobyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKSk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZFRpbWUnLCB3aG8uZ2VuZGVyLCBhZ28pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGVJZCkge1xyXG4gICAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGVJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ1lvdScsIHRoaXMuX3Nlc3Npb24uZ2VuZGVyKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW5nID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5zdWJzdGl0dXRlSWQpKTtcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nRm9yJywgc3Vic3RpdHV0aW5nLmdlbmRlciwgc3Vic3RpdHV0aW5nLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmVjaXBpZW50Lm9yaWdpbklkICYmICFyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IHJlY2lwaWVudC5vcmlnaW5JZCk7XHJcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IG9yaWdpbi5hY3Rpb24pLFxyXG4gICAgICAgIGFkamVjdGl2ZSA9IGFjdGlvbi5hZGplY3RpdmUgfHwgYWN0aW9uLnBhc3QgfHwgYWN0aW9uLnRpdGxlO1xyXG4gICAgICBpZiAoKG9yaWdpbi5ieUlkIHx8IG9yaWdpbi51c2VySWQpID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5WW91JywgYWRqZWN0aXZlKTtcclxuICAgICAgZWxzZSBpZiAob3JpZ2luLmJ5SWQpIHtcclxuICAgICAgICBjb25zdCB3aG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9hY2NvdW50cy5nZXQob3JpZ2luLnVzZXJJZCkpO1xyXG4gICAgICAgIGNvbnN0IGJ5ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KG9yaWdpbi5ieUlkKSk7XHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25CeUJ5JywgYWRqZWN0aXZlLCBieS5uYW1lLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KG9yaWdpbi51c2VySWQpKTtcclxuICAgICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvbkJ5JywgYWRqZWN0aXZlLCB3aG8ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQuZXNjYWxhdGVkKSB7XHJcbiAgICAgIGNvbnN0IGVzY2FsYXRpb24gPSB0aGlzLm1vZGVsLmxvZy5maW5kKGwgPT4gbC50eXBlID09PSAnRXNjYWxhdGlvbicgJiYgbC5yZWNpcGllbnRJZCA9PT0gcmVjaXBpZW50Lm9yaWdpbklkKTtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fYWNjb3VudHMuZ2V0KGVzY2FsYXRpb24udXNlcklkKSk7XHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRheWpzLmR1cmF0aW9uKGVzY2FsYXRpb24uZHVyYXRpb24sICdzJykpO1xyXG4gICAgICB0b29sdGlwLmVzY2FsYXRpb24gPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc2NhbGF0ZWRGcm9tJywgd2hvLm5hbWUsIGR1cmF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IGRheWpzKHJlY2lwaWVudC5yZXBsaWVkKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKTtcclxuICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgIHRvb2x0aXAuc3RhbmRhcmRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnTm9kZVN0YW5kYXJkVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShub2RlLnN0YW5kYXJkVGltZSkpO1xyXG4gICAgaWYgKHJlY2lwaWVudC5meWkpXHJcbiAgICAgIHRvb2x0aXAuZnlpID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRllJJyk7XHJcbiAgICByZXR1cm4geyBhbm5vdGF0aW9uLCB0b29sdGlwIH07XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FjdGlvbihuYW1lOiBzdHJpbmcsIGdlbmRlcj86IEdlbmRlciB8ICd5b3UnKSB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYWN0aW9ucy5maW5kKGEgPT4gYS5uYW1lID09PSBuYW1lKTtcclxuICAgIGlmIChnZW5kZXIgPT09IFlvdSkge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlcixcclxuICAgICAgICB5b3UgPSBnZW5kZXIgPT09ICdNYWxlJyA/IGFjdGlvbj8ueW91TWFsZSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gYWN0aW9uPy55b3VGZW1hbGUgOlxyXG4gICAgICAgICAgICBudWxsO1xyXG4gICAgICByZXR1cm4gKHlvdSB8fCBhY3Rpb24/LnlvdSB8fCBhY3Rpb24/LnBhc3QgfHwgYWN0aW9uPy50aXRsZSB8fCBuYW1lKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFzdCA9IGdlbmRlciA9PT0gJ01hbGUnID8gYWN0aW9uPy5wYXN0TWFsZSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyBhY3Rpb24/LnBhc3RGZW1hbGUgOiBudWxsO1xyXG4gICAgcmV0dXJuIChwYXN0IHx8IGFjdGlvbj8ucGFzdCB8fCBhY3Rpb24/LnRpdGxlIHx8IG5hbWUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5kZXN0cm95KCk7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgQ29ubmVjdG9ySW5mb01vZGVsIHtcclxuICBlc3RpbWF0ZT86IGJvb2xlYW47XHJcbiAgcGFyZW50SWQ6IHN0cmluZztcclxuICB0aW1lOiBEYXRlXHJcbn1cclxuaW50ZXJmYWNlIE5vZGVJbmZvTW9kZWwge1xyXG4gIHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgbm9kZTogTm9kZUluZm87XHJcbiAgZGVwdGg/OiBudW1iZXI7XHJcbiAgcmVjaXBpZW50OiBSZWNpcGllbnRcclxuICBpbmRpY2F0b3I/OiBib29sZWFuO1xyXG4gIHBhcmVudElkPzogc3RyaW5nO1xyXG59XHJcbmludGVyZmFjZSBOb2RlVG9vbHRpcE1vZGVsIHtcclxuICBmeWk/OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgbm90ZT86IHN0cmluZztcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIGZyb20/OiBzdHJpbmc7XHJcbiAgc3Vic3RpdHV0aW5nPzogc3RyaW5nO1xyXG4gIGVzY2FsYXRpb24/OiBzdHJpbmc7XHJcbiAgc3RhbmRhcmRUaW1lPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogc3RyaW5nO1xyXG4gIGVzdGltYXRlZFRpbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -19,10 +19,10 @@ export class PeopleComponent {
19
19
  _push(...userId) {
20
20
  userId.forEach(u => u && this._userIds.indexOf(u) < 0 && u !== this._me && this._userIds.push(u));
21
21
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: PeopleComponent, deps: [{ token: i1.AccountService }, { token: i2.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: PeopleComponent, selector: "bizdoc-people", inputs: { model: "model" }, host: { classAttribute: "bizdoc-people" }, usesOnChanges: true, ngImport: i0, template: `<bizdoc-avatar *ngFor="let p of people" [person]="p"></bizdoc-avatar>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }] }); }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: PeopleComponent, deps: [{ token: i1.AccountService }, { token: i2.SessionService }], target: i0.ɵɵFactoryTarget.Component }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: PeopleComponent, selector: "bizdoc-people", inputs: { model: "model" }, host: { classAttribute: "bizdoc-people" }, usesOnChanges: true, ngImport: i0, template: `<bizdoc-avatar *ngFor="let p of people" [person]="p"></bizdoc-avatar>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.AvatarComponent, selector: "bizdoc-avatar", inputs: ["person", "interactive", "dense"] }] }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: PeopleComponent, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: PeopleComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{
28
28
  selector: 'bizdoc-people',
@@ -71,10 +71,10 @@ export class TraceBase {
71
71
  ngOnDestroy() {
72
72
  this._destroy.next();
73
73
  }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TraceBase, deps: [{ token: i1.SessionService }, { token: i2.HubService }], target: i0.ɵɵFactoryTarget.Directive }); }
75
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: TraceBase, usesOnChanges: true, ngImport: i0 }); }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TraceBase, deps: [{ token: i1.SessionService }, { token: i2.HubService }], target: i0.ɵɵFactoryTarget.Directive }); }
75
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: TraceBase, usesOnChanges: true, ngImport: i0 }); }
76
76
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TraceBase, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TraceBase, decorators: [{
78
78
  type: Directive
79
79
  }], ctorParameters: () => [{ type: i1.SessionService }, { type: i2.HubService }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS90cmFjZS90cmFjZS5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUszQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFHekIsTUFBTSxPQUFnQixTQUFTO0lBSTdCLFlBQ1ksUUFBd0IsRUFDbEMsR0FBZTtRQURMLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBSDVCLGtCQUFhLEdBQXVELEVBQUUsQ0FBQztRQUNyRSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUl2QyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNaLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDdkQsQ0FBQTtJQUNMLENBQUM7SUFDRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sT0FBTztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNTLFNBQVMsQ0FBQyxJQUFZO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxR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LFVBQVUsQ0FBQyxNQUFNO2dCQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNqRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQzdCLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzlFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTt3QkFDaEQsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUNqQztpQkFDSSxJQUFJLElBQUksQ0FBQyxZQUFZO2dCQUN4QixHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztTQUN0RDtRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OEdBbEVtQixTQUFTO2tHQUFULFNBQVM7OzJGQUFULFNBQVM7a0JBRDlCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgTm9kZUluZm8sIERvY3VtZW50TW9kZWwgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgU1RBUlRfTk9ERSA9ICdzdGFydCc7XHJcblxyXG5leHBvcnQgY29uc3QgWW91ID0gJ3lvdSc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYWNlQmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgYWJzdHJhY3QgbW9kZWw6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBwcml2YXRlIF9zdGFuZGFyZFRpbWU6IHsgW25vZGVJZDogc3RyaW5nXTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSB9ID0ge307XHJcbiAgcHJvdGVjdGVkIF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBodWI6IEh1YlNlcnZpY2UpIHtcclxuICAgIGh1Yi51cGRhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKGUgPT4gXHJcbiAgICAgICAgZS5tb2RlbC5pZCA9PT0gdGhpcy5tb2RlbC5kb2N1bWVudElkICYmIHRoaXMucmVmcmVzaCgpXHJcbiAgICAgIClcclxuICB9XHJcbiAgb25Mb2FkKCk6IE9ic2VydmFibGU8YW55PiB8IG51bGwge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5uZ09uQ2hhbmdlcyhudWxsKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9yb2xlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKHIgPT4gci5uYW1lID09PSBuYW1lKTtcclxuICAgIHJldHVybiByb2xlID8gcm9sZS50aXRsZSA6IG5hbWU7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKF86IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luaXRpYWxpemUoKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9pbml0aWFsaXplKCk7XHJcbiAgcHJvdGVjdGVkIHJlc2V0RXN0aW1hdGVUaW1lKCkgeyB0aGlzLl9zdGFuZGFyZFRpbWUgPSB7fTsgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBub2RlSWRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgX2VzdGltYXRlVGltZShub2RlOiBOb2RlSW5mbyk6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xyXG4gICAgaWYgKHRoaXMuX3N0YW5kYXJkVGltZVtub2RlLmlkXSlcclxuICAgICAgcmV0dXJuIHRoaXMuX3N0YW5kYXJkVGltZVtub2RlLmlkXTtcclxuICAgIHRoaXMuX3N0YW5kYXJkVGltZVtub2RlLmlkXSA9IHsgbWluOiAwLCBtYXg6IDAgfTsgLy8gcmVjdXJzaXZlIHNhZmVcclxuICAgIGxldCBtaW4gPSAwLCBtYXggPSAwO1xyXG4gICAgaWYgKG5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgY29uc3QgY29ubnMgPSB0aGlzLm1vZGVsLndvcmtmbG93LmNvbm5lY3RvcnMuZmlsdGVyKGMgPT4gYy50YXJnZXRJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29ubnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCB7IHNvdXJjZUlkIH0gPSBjb25uc1tpXTtcclxuICAgICAgICBjb25zdCBzb3VyY2UgPSB0aGlzLm1vZGVsLndvcmtmbG93Lm5vZGVzLmZpbmQobiA9PiBuLmlkID09PSBzb3VyY2VJZCk7XHJcbiAgICAgICAgaWYgKHNvdXJjZS50eXBlID09PSBTVEFSVF9OT0RFKSBjb250aW51ZTtcclxuICAgICAgICBpZiAoIXNvdXJjZS5lc3RpbWF0ZSAmJlxyXG4gICAgICAgICAgIXRoaXMubW9kZWwucmVjaXBpZW50cy5maW5kKHIgPT4gci5ub2RlSWQgPT09IHNvdXJjZUlkICYmIHIucGVuZGluZykpIGNvbnRpbnVlO1xyXG4gICAgICAgIGNvbnN0IHsgbWluOiBjbWluLCBtYXg6IGNtYXggfSA9IHRoaXMuX2VzdGltYXRlVGltZShzb3VyY2UpO1xyXG4gICAgICAgIG1pbiA9IG1pbiA+IDAgPyBNYXRoLm1pbihtaW4sIGNtaW4pIDogY21pbixcclxuICAgICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgY21heCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuc3RhbmRhcmRUaW1lKVxyXG4gICAgICAgIG1pbiArPSBub2RlLnN0YW5kYXJkVGltZSwgbWF4ICs9IG5vZGUuc3RhbmRhcmRUaW1lO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQgJiYgIXIuZXN0aW1hdGUgJiYgci5yZXBsaWVkKTtcclxuICAgICAgaWYgKHJlY2lwaWVudHMubGVuZ3RoKSBmb3IgKGxldCBpID0gMDsgaSA8IHJlY2lwaWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCByZWNpcGllbnQgPSByZWNpcGllbnRzW2ldLFxyXG4gICAgICAgICAgZHVyYXRpb24gPSBkYXlqcyhyZWNpcGllbnQucmVwbGllZCkuZGlmZihuZXcgRGF0ZShyZWNpcGllbnQucmVjZWl2ZWQpLCAncycpO1xyXG4gICAgICAgIG1pbiA9IG1pbiA+IDAgPyBNYXRoLm1pbihtaW4sIGR1cmF0aW9uKSA6IGR1cmF0aW9uLFxyXG4gICAgICAgICAgbWF4ID0gTWF0aC5tYXgobWF4LCBkdXJhdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgICAgbWluICs9IG5vZGUuc3RhbmRhcmRUaW1lLCBtYXggKz0gbm9kZS5zdGFuZGFyZFRpbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhbmRhcmRUaW1lW25vZGUuaWRdID0geyBtaW4sIG1heCB9O1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS90cmFjZS90cmFjZS5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUszQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFHekIsTUFBTSxPQUFnQixTQUFTO0lBSTdCLFlBQ1ksUUFBd0IsRUFDbEMsR0FBZTtRQURMLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBSDVCLGtCQUFhLEdBQXVELEVBQUUsQ0FBQztRQUNyRSxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUl2QyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNaLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FDdkQsQ0FBQTtJQUNMLENBQUM7SUFDRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sT0FBTztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNTLFNBQVMsQ0FBQyxJQUFZO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxR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T0FBTyxDQUFDLENBQUM7WUFDdkcsSUFBSSxVQUFVLENBQUMsTUFBTTtnQkFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQzdCLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzlFLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTt3QkFDaEQsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2lCQUNJLElBQUksSUFBSSxDQUFDLFlBQVk7Z0JBQ3hCLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOzhHQWxFbUIsU0FBUztrR0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQUQ5QixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IE5vZGVJbmZvLCBEb2N1bWVudE1vZGVsIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odWIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNUQVJUX05PREUgPSAnc3RhcnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFlvdSA9ICd5b3UnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFjZUJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIGFic3RyYWN0IG1vZGVsOiBEb2N1bWVudE1vZGVsPGFueT47XHJcbiAgcHJpdmF0ZSBfc3RhbmRhcmRUaW1lOiB7IFtub2RlSWQ6IHN0cmluZ106IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0gfSA9IHt9O1xyXG4gIHByb3RlY3RlZCBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgaHViOiBIdWJTZXJ2aWNlKSB7XHJcbiAgICBodWIudXBkYXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuXHJcbiAgICAgIHN1YnNjcmliZShlID0+IFxyXG4gICAgICAgIGUubW9kZWwuaWQgPT09IHRoaXMubW9kZWwuZG9jdW1lbnRJZCAmJiB0aGlzLnJlZnJlc2goKVxyXG4gICAgICApXHJcbiAgfVxyXG4gIG9uTG9hZCgpOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubmdPbkNoYW5nZXMobnVsbCk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfcm9sZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJvbGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUucm9sZXMuZmluZChyID0+IHIubmFtZSA9PT0gbmFtZSk7XHJcbiAgICByZXR1cm4gcm9sZSA/IHJvbGUudGl0bGUgOiBuYW1lO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbml0aWFsaXplKCk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfaW5pdGlhbGl6ZSgpO1xyXG4gIHByb3RlY3RlZCByZXNldEVzdGltYXRlVGltZSgpIHsgdGhpcy5fc3RhbmRhcmRUaW1lID0ge307IH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbm9kZUlkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF9lc3RpbWF0ZVRpbWUobm9kZTogTm9kZUluZm8pOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9IHtcclxuICAgIGlmICh0aGlzLl9zdGFuZGFyZFRpbWVbbm9kZS5pZF0pXHJcbiAgICAgIHJldHVybiB0aGlzLl9zdGFuZGFyZFRpbWVbbm9kZS5pZF07XHJcbiAgICB0aGlzLl9zdGFuZGFyZFRpbWVbbm9kZS5pZF0gPSB7IG1pbjogMCwgbWF4OiAwIH07IC8vIHJlY3Vyc2l2ZSBzYWZlXHJcbiAgICBsZXQgbWluID0gMCwgbWF4ID0gMDtcclxuICAgIGlmIChub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgIGNvbnN0IGNvbm5zID0gdGhpcy5tb2RlbC53b3JrZmxvdy5jb25uZWN0b3JzLmZpbHRlcihjID0+IGMudGFyZ2V0SWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbm5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgeyBzb3VyY2VJZCB9ID0gY29ubnNbaV07XHJcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5tb2RlbC53b3JrZmxvdy5ub2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gc291cmNlSWQpO1xyXG4gICAgICAgIGlmIChzb3VyY2UudHlwZSA9PT0gU1RBUlRfTk9ERSkgY29udGludWU7XHJcbiAgICAgICAgaWYgKCFzb3VyY2UuZXN0aW1hdGUgJiZcclxuICAgICAgICAgICF0aGlzLm1vZGVsLnJlY2lwaWVudHMuZmluZChyID0+IHIubm9kZUlkID09PSBzb3VyY2VJZCAmJiByLnBlbmRpbmcpKSBjb250aW51ZTtcclxuICAgICAgICBjb25zdCB7IG1pbjogY21pbiwgbWF4OiBjbWF4IH0gPSB0aGlzLl9lc3RpbWF0ZVRpbWUoc291cmNlKTtcclxuICAgICAgICBtaW4gPSBtaW4gPiAwID8gTWF0aC5taW4obWluLCBjbWluKSA6IGNtaW4sXHJcbiAgICAgICAgICBtYXggPSBNYXRoLm1heChtYXgsIGNtYXgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChub2RlLnN0YW5kYXJkVGltZSlcclxuICAgICAgICBtaW4gKz0gbm9kZS5zdGFuZGFyZFRpbWUsIG1heCArPSBub2RlLnN0YW5kYXJkVGltZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gdGhpcy5tb2RlbC5yZWNpcGllbnRzLmZpbHRlcihyID0+IHIubm9kZUlkID09PSBub2RlLmlkICYmICFyLmVzdGltYXRlICYmIHIucmVwbGllZCk7XHJcbiAgICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCkgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNpcGllbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcmVjaXBpZW50ID0gcmVjaXBpZW50c1tpXSxcclxuICAgICAgICAgIGR1cmF0aW9uID0gZGF5anMocmVjaXBpZW50LnJlcGxpZWQpLmRpZmYobmV3IERhdGUocmVjaXBpZW50LnJlY2VpdmVkKSwgJ3MnKTtcclxuICAgICAgICBtaW4gPSBtaW4gPiAwID8gTWF0aC5taW4obWluLCBkdXJhdGlvbikgOiBkdXJhdGlvbixcclxuICAgICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgZHVyYXRpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKG5vZGUuc3RhbmRhcmRUaW1lKVxyXG4gICAgICAgIG1pbiArPSBub2RlLnN0YW5kYXJkVGltZSwgbWF4ICs9IG5vZGUuc3RhbmRhcmRUaW1lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3N0YW5kYXJkVGltZVtub2RlLmlkXSA9IHsgbWluLCBtYXggfTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICB9XHJcbn1cclxuIl19