@bizdoc/core 1.14.0-next.4 → 1.14.0-next.7

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 (298) hide show
  1. package/esm2020/lib/admin/admin-dismiss.service.mjs +3 -3
  2. package/esm2020/lib/admin/admin-menu.component.mjs +3 -3
  3. package/esm2020/lib/admin/core/ace.input.mjs +3 -3
  4. package/esm2020/lib/admin/core/color-picker.input.mjs +3 -3
  5. package/esm2020/lib/admin/core/search.input.mjs +3 -3
  6. package/esm2020/lib/admin/diff/configuration-diff.component.mjs +3 -3
  7. package/esm2020/lib/admin/document-trace/document-trace.component.mjs +3 -3
  8. package/esm2020/lib/admin/document-trace/reassign.dialog.mjs +3 -3
  9. package/esm2020/lib/admin/document-trace/trace-element.component.mjs +3 -3
  10. package/esm2020/lib/admin/form/form.resolve.service.mjs +3 -3
  11. package/esm2020/lib/admin/form/form.service.mjs +3 -3
  12. package/esm2020/lib/admin/form/workflow/node.component.mjs +3 -3
  13. package/esm2020/lib/admin/form/workflow/role-node.component.mjs +3 -3
  14. package/esm2020/lib/admin/form/workflow/workflow.component.mjs +3 -3
  15. package/esm2020/lib/admin/indices/manage-cube-index.component.mjs +3 -3
  16. package/esm2020/lib/admin/patterns/patterns.component.mjs +3 -3
  17. package/esm2020/lib/admin/permissions/permissions.component.mjs +3 -3
  18. package/esm2020/lib/admin/positions/positions-popup.component.mjs +3 -3
  19. package/esm2020/lib/admin/positions/positions.component.mjs +3 -3
  20. package/esm2020/lib/admin/profiler/profiler.component.mjs +3 -3
  21. package/esm2020/lib/admin/utility-wrapper.component.mjs +3 -3
  22. package/esm2020/lib/admin/utility.pane.component.mjs +3 -3
  23. package/esm2020/lib/app.component.mjs +6 -6
  24. package/esm2020/lib/bizdoc.module.mjs +4 -4
  25. package/esm2020/lib/browse/browse-items.component.mjs +10 -12
  26. package/esm2020/lib/browse/browse.mobile.component.mjs +3 -3
  27. package/esm2020/lib/browse/browse.pane.component.mjs +3 -3
  28. package/esm2020/lib/browse/expanded-item/expanded-item.component.mjs +3 -3
  29. package/esm2020/lib/browse/filter/filter.component.mjs +3 -3
  30. package/esm2020/lib/browse/folders-menu.component.mjs +3 -3
  31. package/esm2020/lib/chat/chat-info.mjs +3 -3
  32. package/esm2020/lib/chat/chat.mobile.component.mjs +3 -3
  33. package/esm2020/lib/chat/chat.service.mjs +3 -3
  34. package/esm2020/lib/chat/contacts.component.mjs +6 -6
  35. package/esm2020/lib/chat/contacts.pane.component.mjs +3 -3
  36. package/esm2020/lib/chat/conversation.component.mjs +3 -3
  37. package/esm2020/lib/chat/conversation.pane.component.mjs +3 -3
  38. package/esm2020/lib/compose/action/action-picker.component.mjs +3 -3
  39. package/esm2020/lib/compose/action/action.dialog.mjs +3 -3
  40. package/esm2020/lib/compose/action/action.pane.dialog.exp.mjs +3 -3
  41. package/esm2020/lib/compose/action/assign-action.component.mjs +3 -3
  42. package/esm2020/lib/compose/action/moveto-action.component.mjs +3 -3
  43. package/esm2020/lib/compose/action/return-action.component.mjs +3 -3
  44. package/esm2020/lib/compose/attachments/attachments.component.mjs +3 -3
  45. package/esm2020/lib/compose/attachments/preview/attachment-preview.component.mjs +3 -3
  46. package/esm2020/lib/compose/attachments/progress-button.directive.mjs +3 -3
  47. package/esm2020/lib/compose/can-deactivate-changes.service.mjs +3 -3
  48. package/esm2020/lib/compose/comments/Comments.pane.component.mjs +3 -3
  49. package/esm2020/lib/compose/comments/comment.component.mjs +3 -3
  50. package/esm2020/lib/compose/comments/comments.component.mjs +3 -3
  51. package/esm2020/lib/compose/comments/edit-comment.component.mjs +3 -3
  52. package/esm2020/lib/compose/comments/edits.component.mjs +3 -3
  53. package/esm2020/lib/compose/comments/quick-comment.component.exp.mjs +3 -3
  54. package/esm2020/lib/compose/comments/votes.component.mjs +3 -3
  55. package/esm2020/lib/compose/compose-resolve.service.mjs +6 -6
  56. package/esm2020/lib/compose/compose.mobile.component.mjs +3 -3
  57. package/esm2020/lib/compose/compose.pane.component.mjs +9 -6
  58. package/esm2020/lib/compose/copy/copy.dialog.mjs +3 -3
  59. package/esm2020/lib/compose/dismiss.service.mjs +3 -3
  60. package/esm2020/lib/compose/document-resolver.service.mjs +3 -3
  61. package/esm2020/lib/compose/document.component.mjs +3 -3
  62. package/esm2020/lib/compose/document.mobile.component.mjs +3 -3
  63. package/esm2020/lib/compose/document.pane.component.mjs +3 -3
  64. package/esm2020/lib/compose/events/events.component.mjs +3 -3
  65. package/esm2020/lib/compose/form-selector/form-selector.sheet.mjs +3 -3
  66. package/esm2020/lib/compose/form.component.mjs +26 -16
  67. package/esm2020/lib/compose/new-menu.component.mjs +3 -3
  68. package/esm2020/lib/compose/privilage.directive.mjs +6 -6
  69. package/esm2020/lib/compose/recipient-resolver.service.mjs +3 -3
  70. package/esm2020/lib/compose/save-changes.dialog.mjs +3 -3
  71. package/esm2020/lib/compose/state.component.mjs +3 -3
  72. package/esm2020/lib/compose/tag/tags.component.mjs +5 -5
  73. package/esm2020/lib/compose/trace/flow.component.mjs +3 -3
  74. package/esm2020/lib/compose/trace/people.component.mjs +3 -3
  75. package/esm2020/lib/compose/trace/trace.base.mjs +3 -3
  76. package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
  77. package/esm2020/lib/compose/trace/trace.pane.component.mjs +3 -3
  78. package/esm2020/lib/compose/version-compare/version-compare.component.mjs +3 -3
  79. package/esm2020/lib/compose/version-compare/version-compare.directive.mjs +9 -9
  80. package/esm2020/lib/compose/version-compare/version.pane.component.mjs +3 -3
  81. package/esm2020/lib/core/NgComponentOutlet.mjs +3 -3
  82. package/esm2020/lib/core/account.service.mjs +3 -3
  83. package/esm2020/lib/core/animated-icon/animated-icon.directive.mjs +3 -3
  84. package/esm2020/lib/core/avatar/avatar.component.mjs +3 -3
  85. package/esm2020/lib/core/component-factory-resolver.mjs +3 -3
  86. package/esm2020/lib/core/controls/address.input.mjs +3 -3
  87. package/esm2020/lib/core/controls/auto-complete.input.mjs +3 -3
  88. package/esm2020/lib/core/controls/combination-picker-body.mjs +3 -3
  89. package/esm2020/lib/core/controls/combination-picker.mjs +3 -3
  90. package/esm2020/lib/core/controls/combination-pool.mjs +3 -3
  91. package/esm2020/lib/core/controls/file.input.mjs +3 -3
  92. package/esm2020/lib/core/controls/select.input.mjs +3 -3
  93. package/esm2020/lib/core/controls/time-picker.mjs +3 -3
  94. package/esm2020/lib/core/controls/timespan.input.mjs +3 -3
  95. package/esm2020/lib/core/datasource.service.mjs +3 -3
  96. package/esm2020/lib/core/functions.mjs +7 -7
  97. package/esm2020/lib/core/guide/guide.component.mjs +3 -3
  98. package/esm2020/lib/core/guide/guide.service.mjs +3 -3
  99. package/esm2020/lib/core/http.interceptor.mjs +3 -3
  100. package/esm2020/lib/core/hub.service.mjs +3 -3
  101. package/esm2020/lib/core/identity/identity.component.mjs +3 -3
  102. package/esm2020/lib/core/info/attachment-info.service.mjs +3 -3
  103. package/esm2020/lib/core/info/document-info.service.mjs +3 -3
  104. package/esm2020/lib/core/info/location-info.component.mjs +3 -3
  105. package/esm2020/lib/core/info/map-info.mjs +3 -3
  106. package/esm2020/lib/core/layout/autocomplete.field.mjs +3 -3
  107. package/esm2020/lib/core/layout/checkbox.field.mjs +3 -3
  108. package/esm2020/lib/core/layout/checkbox.mjs +3 -3
  109. package/esm2020/lib/core/layout/date-range.field.mjs +3 -3
  110. package/esm2020/lib/core/layout/date.field.mjs +3 -3
  111. package/esm2020/lib/core/layout/expression.field.mjs +3 -3
  112. package/esm2020/lib/core/layout/file.field.mjs +3 -3
  113. package/esm2020/lib/core/layout/html.field.mjs +3 -3
  114. package/esm2020/lib/core/layout/input.base.mjs +3 -3
  115. package/esm2020/lib/core/layout/input.field.mjs +3 -3
  116. package/esm2020/lib/core/layout/layout.component.mjs +3 -3
  117. package/esm2020/lib/core/layout/numeric.field.mjs +3 -3
  118. package/esm2020/lib/core/layout/select.field.mjs +3 -3
  119. package/esm2020/lib/core/layout/switch.field.mjs +3 -3
  120. package/esm2020/lib/core/layout/textarea.field.mjs +3 -3
  121. package/esm2020/lib/core/layout/timespan.field.mjs +3 -3
  122. package/esm2020/lib/core/lottie-animation.mjs +3 -3
  123. package/esm2020/lib/core/mailbox.service.mjs +10 -10
  124. package/esm2020/lib/core/none.component.mjs +3 -3
  125. package/esm2020/lib/core/pipes/action.pipe.mjs +3 -3
  126. package/esm2020/lib/core/pipes/calendar.pipe.mjs +3 -3
  127. package/esm2020/lib/core/pipes/date-format.pipe.mjs +3 -3
  128. package/esm2020/lib/core/pipes/daterange.pipe.mjs +6 -6
  129. package/esm2020/lib/core/pipes/difference.pipe.mjs +3 -3
  130. package/esm2020/lib/core/pipes/duration-format.pipe.mjs +3 -3
  131. package/esm2020/lib/core/pipes/duration.pipe.mjs +3 -3
  132. package/esm2020/lib/core/pipes/form.pipe.mjs +3 -3
  133. package/esm2020/lib/core/pipes/join.pipe.mjs +3 -3
  134. package/esm2020/lib/core/pipes/role.pipe.mjs +3 -3
  135. package/esm2020/lib/core/pipes/sanitize-html.pipe.mjs +3 -3
  136. package/esm2020/lib/core/pipes/sort.pipe.mjs +6 -6
  137. package/esm2020/lib/core/pipes/state.pipe.mjs +3 -3
  138. package/esm2020/lib/core/pipes/time-ago.pipe.mjs +3 -3
  139. package/esm2020/lib/core/pipes/translate.pipe.mjs +6 -6
  140. package/esm2020/lib/core/pipes/type-value.pipe.mjs +3 -3
  141. package/esm2020/lib/core/pipes/user-name.pipe.mjs +3 -3
  142. package/esm2020/lib/core/popup/popup.component.mjs +3 -3
  143. package/esm2020/lib/core/popup/popup.service.mjs +3 -3
  144. package/esm2020/lib/core/popup/tooltip.directive.mjs +6 -6
  145. package/esm2020/lib/core/prompt/ask/ask.dialog.mjs +3 -3
  146. package/esm2020/lib/core/prompt/mask/mask.component.mjs +3 -3
  147. package/esm2020/lib/core/prompt.service.mjs +3 -3
  148. package/esm2020/lib/core/router.mjs +6 -6
  149. package/esm2020/lib/core/session.service.mjs +3 -3
  150. package/esm2020/lib/core/slots/pane-ref.mjs +1 -1
  151. package/esm2020/lib/core/slots/router.directive.mjs +3 -3
  152. package/esm2020/lib/core/slots/router.service.mjs +3 -3
  153. package/esm2020/lib/core/slots/slots.component.mjs +21 -16
  154. package/esm2020/lib/core/tagging/documents.component.mjs +3 -3
  155. package/esm2020/lib/core/tagging/edit-input.component.mjs +3 -3
  156. package/esm2020/lib/core/tagging/emoji.component.mjs +3 -3
  157. package/esm2020/lib/core/tagging/tagging-item.directive.mjs +3 -3
  158. package/esm2020/lib/core/tagging/tagging.component-base.mjs +3 -3
  159. package/esm2020/lib/core/tagging/tagging.directive.mjs +3 -3
  160. package/esm2020/lib/core/tagging/tagging.pipe.mjs +3 -3
  161. package/esm2020/lib/core/tagging/users.component.mjs +3 -3
  162. package/esm2020/lib/core/translate.service.mjs +3 -3
  163. package/esm2020/lib/core/window-title.service.mjs +3 -3
  164. package/esm2020/lib/cube/accum/accum.component.mjs +3 -3
  165. package/esm2020/lib/cube/chart/chart.component.mjs +3 -3
  166. package/esm2020/lib/cube/cube-info.service.mjs +3 -3
  167. package/esm2020/lib/cube/cube-menu.component.mjs +3 -3
  168. package/esm2020/lib/cube/cube-view.component.mjs +3 -3
  169. package/esm2020/lib/cube/cube.service.mjs +3 -3
  170. package/esm2020/lib/cube/explore/document-item.component.mjs +3 -3
  171. package/esm2020/lib/cube/explore/explore-item.component.mjs +3 -3
  172. package/esm2020/lib/cube/explore/explore-items.component.mjs +3 -3
  173. package/esm2020/lib/cube/explore/explore.pane.component.mjs +3 -3
  174. package/esm2020/lib/cube/explore/item-resolver.service.mjs +6 -6
  175. package/esm2020/lib/cube/explore/item.pane.component.mjs +3 -3
  176. package/esm2020/lib/cube/filter/filter-tags.component.exp.mjs +3 -3
  177. package/esm2020/lib/cube/filter/filter.component.mjs +3 -3
  178. package/esm2020/lib/cube/grid/grid.component.mjs +3 -3
  179. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +3 -3
  180. package/esm2020/lib/cube/matrix/matrix.base.mjs +3 -3
  181. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +3 -3
  182. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +3 -3
  183. package/esm2020/lib/cube/matrix/popup.component.mjs +3 -3
  184. package/esm2020/lib/cube/matrix/table.component.mjs +3 -3
  185. package/esm2020/lib/cube/parallel/parallel.component.mjs +3 -3
  186. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  187. package/esm2020/lib/cube/sum/sum.component.mjs +3 -3
  188. package/esm2020/lib/cube/view-base.mjs +3 -3
  189. package/esm2020/lib/cube/view.mobile.component.mjs +3 -3
  190. package/esm2020/lib/cube/view.pane.component.mjs +3 -3
  191. package/esm2020/lib/dashboard/actions/actions.widget.mjs +3 -3
  192. package/esm2020/lib/dashboard/cube/accum-cube.widget.mjs +3 -3
  193. package/esm2020/lib/dashboard/cube/compare.widget.mjs +3 -3
  194. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +3 -3
  195. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -3
  196. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +3 -3
  197. package/esm2020/lib/dashboard/cube/documents.widget.mjs +3 -3
  198. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +3 -3
  199. package/esm2020/lib/dashboard/dashboard.component.mjs +3 -3
  200. package/esm2020/lib/dashboard/dashboard.pane.component.mjs +3 -3
  201. package/esm2020/lib/dashboard/recents/recents.widget.mjs +3 -3
  202. package/esm2020/lib/dashboard/score/activity.widget.mjs +3 -3
  203. package/esm2020/lib/dashboard/score/compare-groups.widget.mjs +3 -3
  204. package/esm2020/lib/dashboard/score/peers-performance.widget.mjs +3 -3
  205. package/esm2020/lib/dashboard/score/pending-results.widget.mjs +3 -3
  206. package/esm2020/lib/dashboard/score/personal-score.widget.mjs +3 -3
  207. package/esm2020/lib/dashboard/widget-item.component.mjs +3 -3
  208. package/esm2020/lib/desktop.module.mjs +4 -4
  209. package/esm2020/lib/home/about/about.dialog.mjs +3 -3
  210. package/esm2020/lib/home/home-base.component.mjs +3 -3
  211. package/esm2020/lib/home/home.desktop.component.mjs +3 -3
  212. package/esm2020/lib/home/home.mobile.component.mjs +3 -3
  213. package/esm2020/lib/home/notifications/notifications.component.mjs +3 -3
  214. package/esm2020/lib/home/options/options.component.mjs +3 -3
  215. package/esm2020/lib/home/outofoffice/outofoffice.component.mjs +3 -3
  216. package/esm2020/lib/home/search.service.mjs +3 -3
  217. package/esm2020/lib/home/sign/sign.component.mjs +3 -3
  218. package/esm2020/lib/home/tools.component.mjs +3 -3
  219. package/esm2020/lib/impersonate/impersonate.component.mjs +3 -3
  220. package/esm2020/lib/mobile.module.mjs +4 -4
  221. package/esm2020/lib/modules/chart.module.mjs +4 -4
  222. package/esm2020/lib/modules/circular-gauge.module.mjs +4 -4
  223. package/esm2020/lib/modules/datepicker.intl.mjs +3 -3
  224. package/esm2020/lib/modules/dayjs.module.mjs +4 -4
  225. package/esm2020/lib/modules/diagram.module.mjs +4 -4
  226. package/esm2020/lib/modules/gantt.module.mjs +4 -4
  227. package/esm2020/lib/modules/grid.module.mjs +4 -4
  228. package/esm2020/lib/modules/material.module.mjs +4 -4
  229. package/esm2020/lib/modules/paginator.intl.mjs +3 -3
  230. package/esm2020/lib/modules/pivot.module.mjs +4 -4
  231. package/esm2020/lib/modules/schedule.module.mjs +4 -4
  232. package/esm2020/lib/modules/spreadsheet.module.mjs +4 -4
  233. package/esm2020/lib/modules/stepper.intl.mjs +3 -3
  234. package/esm2020/lib/modules/texteditor.module.mjs +4 -4
  235. package/esm2020/lib/notifications/filter.component.mjs +3 -3
  236. package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
  237. package/esm2020/lib/notifications/notifications.mobile.component.mjs +3 -3
  238. package/esm2020/lib/notifications/notifications.pane.component.mjs +3 -3
  239. package/esm2020/lib/notifications/notifications.service.mjs +3 -3
  240. package/esm2020/lib/notifications/types/commented.notification.mjs +3 -3
  241. package/esm2020/lib/notifications/types/cube-anomaly.notification.mjs +3 -3
  242. package/esm2020/lib/notifications/types/escalated.notification.mjs +3 -3
  243. package/esm2020/lib/notifications/types/liked.notification.mjs +3 -3
  244. package/esm2020/lib/notifications/types/long-running-task.notification.mjs +3 -3
  245. package/esm2020/lib/notifications/types/notification-base.mjs +3 -3
  246. package/esm2020/lib/notifications/types/nudge.notification.mjs +3 -3
  247. package/esm2020/lib/notifications/types/state-changed.notification.mjs +3 -3
  248. package/esm2020/lib/notifications/types/tagged.notification.mjs +3 -3
  249. package/esm2020/lib/notifications/types/text.notification.mjs +3 -3
  250. package/esm2020/lib/notifications/types/upcoming-event.notification.mjs +3 -3
  251. package/esm2020/lib/options/options.component.mjs +3 -3
  252. package/esm2020/lib/options/options.service.mjs +3 -3
  253. package/esm2020/lib/reports/arguments-component.mjs +3 -3
  254. package/esm2020/lib/reports/cube/documents.component.mjs +3 -3
  255. package/esm2020/lib/reports/cube/grid-documents.component.mjs +3 -3
  256. package/esm2020/lib/reports/cube/table-documents.component.mjs +3 -3
  257. package/esm2020/lib/reports/cube/usage-args.component.mjs +3 -3
  258. package/esm2020/lib/reports/cube/usage-base.mjs +3 -3
  259. package/esm2020/lib/reports/cube/usage-chart.component.mjs +3 -3
  260. package/esm2020/lib/reports/cube/usage-pivot.component.mjs +3 -3
  261. package/esm2020/lib/reports/cube/usage.component.mjs +3 -3
  262. package/esm2020/lib/reports/report-viewer.component.mjs +3 -3
  263. package/esm2020/lib/reports/report.mobile.component.mjs +3 -3
  264. package/esm2020/lib/reports/report.pane.component.mjs +3 -3
  265. package/esm2020/lib/reports/reports-menu.component.mjs +3 -3
  266. package/esm2020/lib/reports/substitution/substitution.component.mjs +3 -3
  267. package/esm2020/lib/reports/table/table-view.component.mjs +3 -3
  268. package/esm2020/lib/reports/tasks/tasks.component.mjs +3 -3
  269. package/esm2020/lib/scheduler/schedule.component.mjs +3 -3
  270. package/esm2020/lib/scheduler/scheduler.mobile.component.mjs +3 -3
  271. package/esm2020/lib/scheduler/scheduler.pane.component.mjs +3 -3
  272. package/esm2020/lib/shared.module.mjs +4 -4
  273. package/esm2020/lib/system.module.mjs +4 -4
  274. package/esm2020/lib/views/cube/chart.component.mjs +3 -3
  275. package/esm2020/lib/views/cube/cube-base.mjs +3 -3
  276. package/esm2020/lib/views/cube/explore.component.mjs +3 -3
  277. package/esm2020/lib/views/cube/matrix.component.mjs +3 -3
  278. package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
  279. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  280. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  281. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  282. package/esm2020/lib/views/timeline/timeline.component.exp.mjs +3 -3
  283. package/esm2020/lib/views/view-item.component.mjs +3 -3
  284. package/esm2020/lib/views/views.component.mjs +3 -3
  285. package/esm2020/lib/views/views.mobile.component.mjs +3 -3
  286. package/esm2020/lib/views/views.pane.component.mjs +3 -3
  287. package/fesm2015/bizdoc-core.mjs +966 -950
  288. package/fesm2015/bizdoc-core.mjs.map +1 -1
  289. package/fesm2020/bizdoc-core.mjs +966 -950
  290. package/fesm2020/bizdoc-core.mjs.map +1 -1
  291. package/lib/browse/browse-items.component.d.ts +0 -1
  292. package/lib/compose/compose.pane.component.d.ts +1 -0
  293. package/lib/compose/form.component.d.ts +7 -2
  294. package/lib/core/functions.d.ts +6 -3
  295. package/lib/core/mailbox.service.d.ts +1 -1
  296. package/lib/core/slots/pane-ref.d.ts +6 -6
  297. package/lib/core/slots/slots.component.d.ts +5 -0
  298. package/package.json +14 -14
@@ -3,9 +3,9 @@ import * as i0 from "@angular/core";
3
3
  export class FieldBase {
4
4
  focus() { }
5
5
  }
6
- FieldBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FieldBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7
- FieldBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: FieldBase, ngImport: i0 });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: FieldBase, decorators: [{
6
+ FieldBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7
+ FieldBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.1", type: FieldBase, ngImport: i0 });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldBase, decorators: [{
9
9
  type: Directive
10
10
  }] });
11
11
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9sYXlvdXQvaW5wdXQuYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsxQyxNQUFNLE9BQ1csU0FBUztJQUd4QixLQUFLLEtBQUssQ0FBQzs7c0dBSEksU0FBUzswRkFBVCxTQUFTOzJGQUFULFNBQVM7a0JBRnpCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWVsZEluZm8gfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydFxyXG4gIGFic3RyYWN0IGNsYXNzIEZpZWxkQmFzZSB7XHJcbiAgYWJzdHJhY3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGZpZWxkOiBGaWVsZEluZm87XHJcbiAgZm9jdXMoKSB7IH1cclxufVxyXG5cclxuIl19
@@ -34,8 +34,8 @@ export class InputField extends FieldBase {
34
34
  }
35
35
  focus() { this.input.focus(); }
36
36
  }
37
- InputField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: InputField, deps: null, target: i0.ɵɵFactoryTarget.Component });
38
- InputField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: InputField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
37
+ InputField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: InputField, deps: null, target: i0.ɵɵFactoryTarget.Component });
38
+ InputField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: InputField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
39
39
  <mat-label *ngIf="field.placeholder">{{field.label || field.name}}</mat-label>
40
40
  <input matInput [type]="type" autocomplete="off" [formControl]=control [placeholder]="field.placeholder || field.label || field.name"
41
41
  [required]="field.required" [minlength]="field.min" [maxlength]="field.max" [pattern]="field.pattern"/>
@@ -44,7 +44,7 @@ InputField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "1
44
44
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
45
45
  </ng-container>
46
46
  </mat-form-field>`, isInline: true, components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { 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]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }] });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: InputField, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: InputField, decorators: [{
48
48
  type: Component,
49
49
  args: [{
50
50
  template: `<mat-form-field>
@@ -168,9 +168,9 @@ export class LayoutComponent {
168
168
  this._cmpRef && this._cmpRef.destroy();
169
169
  }
170
170
  }
171
- LayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LayoutComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
172
- LayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: LayoutComponent, selector: "bizdoc-layout", inputs: { fields: "fields", model: "model", dirty: "dirty", params: "params", valid: "valid" }, outputs: { modelChange: "modelChange", dirtyChange: "dirtyChange", validChange: "validChange" }, host: { classAttribute: "layout" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true, styles: [":host{display:flex;flex-direction:column;padding:8px}::ng-deep .layout>*{display:contents}\n"] });
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LayoutComponent, decorators: [{
171
+ LayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: LayoutComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
172
+ LayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: LayoutComponent, selector: "bizdoc-layout", inputs: { fields: "fields", model: "model", dirty: "dirty", params: "params", valid: "valid" }, outputs: { modelChange: "modelChange", dirtyChange: "dirtyChange", validChange: "validChange" }, host: { classAttribute: "layout" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-container #container></ng-container>', isInline: true, styles: [":host{display:flex;flex-direction:column;padding:8px}::ng-deep .layout>*{display:contents}\n"] });
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: LayoutComponent, decorators: [{
174
174
  type: Component,
175
175
  args: [{ selector: 'bizdoc-layout', template: '<ng-container #container></ng-container>', host: { class: 'layout' }, styles: [":host{display:flex;flex-direction:column;padding:8px}::ng-deep .layout>*{display:contents}\n"] }]
176
176
  }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.NgZone }]; }, propDecorators: { fields: [{
@@ -15,8 +15,8 @@ export class NumericField extends FieldBase {
15
15
  }
16
16
  focus() { this.input.focus(); }
17
17
  }
18
- NumericField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NumericField, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
- NumericField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NumericField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
18
+ NumericField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NumericField, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
+ NumericField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: NumericField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
20
20
  <mat-label *ngIf="field.placeholder">{{field.label || field.name}}</mat-label>
21
21
  <input matInput autocomplete="off" type="number" [formControl]=control [placeholder]="field.placeholder || field.label || field.name"
22
22
  [required]="field.required" [min]="field.min" [max]="field.max" [pattern]="field.pattern"/>
@@ -26,7 +26,7 @@ NumericField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
26
26
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
27
27
  </ng-container>
28
28
  </mat-form-field>`, isInline: true, components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i4.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { 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]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }] });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NumericField, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NumericField, decorators: [{
30
30
  type: Component,
31
31
  args: [{
32
32
  template: `<mat-form-field>
@@ -31,8 +31,8 @@ export class SelectField extends FieldBase {
31
31
  this.input2.focus();
32
32
  }
33
33
  }
34
- SelectField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SelectField, deps: [{ token: i1.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
35
- SelectField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: SelectField, selector: "ng-component", inputs: { params: "params" }, viewQueries: [{ propertyName: "input", first: true, predicate: TypeSelect, descendants: true }, { propertyName: "input2", first: true, predicate: MatSelect, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
34
+ SelectField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SelectField, deps: [{ token: i1.DatasourceService }], target: i0.ɵɵFactoryTarget.Component });
35
+ SelectField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SelectField, selector: "ng-component", inputs: { params: "params" }, viewQueries: [{ propertyName: "input", first: true, predicate: TypeSelect, descendants: true }, { propertyName: "input2", first: true, predicate: MatSelect, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
36
36
  <mat-label *ngIf="field.placeholder">{{field.label || field.name}}</mat-label>
37
37
  <bizdoc-select *ngIf="!field.options; else options" [type]="field.source"
38
38
  [placeholder]="field.placeholder || field.label || field.name" [formControl]=control
@@ -49,7 +49,7 @@ SelectField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
49
49
  </mat-select>
50
50
  </ng-template>
51
51
  `, isInline: true, components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { type: i4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatError, selector: "mat-error", inputs: ["id"] }] });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SelectField, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SelectField, decorators: [{
53
53
  type: Component,
54
54
  args: [{
55
55
  template: `<mat-form-field>
@@ -15,15 +15,15 @@ export class SwitchField extends FieldBase {
15
15
  }
16
16
  focus() { this.input.focus(); }
17
17
  }
18
- SwitchField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SwitchField, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
- SwitchField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: SwitchField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatSlideToggle, descendants: true }], usesInheritance: true, ngImport: i0, template: `<div>
18
+ SwitchField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SwitchField, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
+ SwitchField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SwitchField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatSlideToggle, descendants: true }], usesInheritance: true, ngImport: i0, template: `<div>
20
20
  <mat-hint *ngIf="field.hint"> {{ field.hint }}</mat-hint>
21
21
  <mat-slide-toggle [formControl]=control> {{ field.label || field.name }}</mat-slide-toggle>
22
22
  <ng-container>
23
23
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
24
24
  </ng-container>
25
25
  </div>`, isInline: true, components: [{ type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatError, selector: "mat-error", inputs: ["id"] }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: SwitchField, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SwitchField, decorators: [{
27
27
  type: Component,
28
28
  args: [{
29
29
  template: `<div>
@@ -16,15 +16,15 @@ export class TextareaField extends FieldBase {
16
16
  }
17
17
  focus() { this.input.focus(); }
18
18
  }
19
- TextareaField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TextareaField, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
- TextareaField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TextareaField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
19
+ TextareaField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TextareaField, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
+ TextareaField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: TextareaField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: MatInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
21
21
  <mat-label *ngIf="field.placeholder">{{field.label || field.name}}</mat-label>
22
22
  <textarea matInput [formControl]=control cdkTextareaAutosize [placeholder]="field.placeholder || field.label || field.name"
23
23
  [required]="field.required" [minlength]="field.min" [maxlength]="field.max" [pattern]="field.pattern"></textarea>
24
24
  <mat-hint *ngIf="field.hint"> {{ field.hint }}</mat-hint>
25
25
  <mat-hint *ngIf="field.max" align="end">{{control.value?.length || 0}} / {{field.max}}</mat-hint>
26
26
  </mat-form-field>`, isInline: true, components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }] });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TextareaField, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TextareaField, decorators: [{
28
28
  type: Component,
29
29
  args: [{
30
30
  template: `<mat-form-field>
@@ -16,8 +16,8 @@ export class TimespanField extends FieldBase {
16
16
  }
17
17
  focus() { this.input.focus(); }
18
18
  }
19
- TimespanField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TimespanField, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
- TimespanField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: TimespanField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: TimespanInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
19
+ TimespanField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimespanField, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
+ TimespanField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: TimespanField, selector: "ng-component", viewQueries: [{ propertyName: "input", first: true, predicate: TimespanInput, descendants: true }], usesInheritance: true, ngImport: i0, template: `<mat-form-field>
21
21
  <mat-label *ngIf="field.placeholder">{{field.label || field.name}}</mat-label>
22
22
  <bizdoc-timespan-input
23
23
  [placeholder]="field.placeholder || field.label || field.name" [formControl]=control
@@ -28,7 +28,7 @@ TimespanField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
28
28
  <mat-error *ngFor="let v of field.validations" [style.display]="control.hasError(v.type) ? '': 'none'"> {{ v.message }} </mat-error>
29
29
  </ng-container>
30
30
  </mat-form-field>`, isInline: true, components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i2.TimespanInput, selector: "bizdoc-timespan-input", inputs: ["placeholder", "required", "disabled", "value"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1.MatSuffix, selector: "[matSuffix]" }, { type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatError, selector: "mat-error", inputs: ["id"] }] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: TimespanField, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: TimespanField, decorators: [{
32
32
  type: Component,
33
33
  args: [{
34
34
  template: `<mat-form-field>
@@ -24,9 +24,9 @@ export class LottieAnimation {
24
24
  }
25
25
  play() { this._instance.play(); }
26
26
  }
27
- LottieAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LottieAnimation, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
28
- LottieAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: LottieAnimation, selector: "lottie", inputs: { name: "name", size: "size", autoplay: "autoplay" }, host: { properties: { "style.width": "size", "style.height": "size" }, styleAttribute: "display:block" }, ngImport: i0, template: '', isInline: true });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: LottieAnimation, decorators: [{
27
+ LottieAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: LottieAnimation, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
28
+ LottieAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: LottieAnimation, selector: "lottie", inputs: { name: "name", size: "size", autoplay: "autoplay" }, host: { properties: { "style.width": "size", "style.height": "size" }, styleAttribute: "display:block" }, ngImport: i0, template: '', isInline: true });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: LottieAnimation, decorators: [{
30
30
  type: Component,
31
31
  args: [{
32
32
  selector: 'lottie', template: '',
@@ -137,7 +137,7 @@ export class MailboxService {
137
137
  fd.append(files.name, files);
138
138
  //const bytesPerChunk = 20 * 1024 * 1024;
139
139
  // aquire the location prior to sending the request
140
- return this._getGeoLocation(formId).pipe(switchMap(params => new Observable(observe => {
140
+ return this._geoLocation(formId).pipe(switchMap(params => new Observable(observe => {
141
141
  let url = `/api/attachments/${recipientId}?version=${version}`;
142
142
  Object.keys(params).forEach(p => url += `&${p}=${params[p]}`);
143
143
  if (options) {
@@ -231,7 +231,7 @@ export class MailboxService {
231
231
  return this._http.get('/api/mail', { params });
232
232
  }
233
233
  create(form) {
234
- return this._getGeoLocation(form).pipe(switchMap(p => this._http.post('/api/mail', null, {
234
+ return this._geoLocation(form).pipe(switchMap(p => this._http.post('/api/mail', null, {
235
235
  params: {
236
236
  form,
237
237
  ...p
@@ -282,7 +282,7 @@ export class MailboxService {
282
282
  // return throwError({ status: res.status, error: res.body });
283
283
  // }))
284
284
  // }), this._notify<T>());
285
- return this._getGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, model, { params })), this._notify());
285
+ return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}`, model, { params })), this._notify());
286
286
  }
287
287
  delete(id) {
288
288
  return this._http.delete(`/api/mail/${id}`).pipe(tap(() => this._delete$.next(id)));
@@ -291,10 +291,10 @@ export class MailboxService {
291
291
  return this._http.delete(`/api/comments/${id}`);
292
292
  }
293
293
  submit(id, version, form, model, read, folderId, received) {
294
- return this._getGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&go=true`, model, { params }))).pipe(this._notify());
294
+ return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&go=true`, model, { params }))).pipe(this._notify());
295
295
  }
296
296
  send(id, version, form, model, action, actionArgs, read, folderId, received) {
297
- return this._getGeoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&action=${action}`, model, { params: { ...params, ...actionArgs } }))).pipe(tap(() => read === false && this._updateunreadcounter(received, folderId, -1)), this._notify());
297
+ return this._geoLocation(form).pipe(switchMap(params => this._http.put(`/api/mail/${id}?version=${version}&action=${action}`, model, { params: { ...params, ...actionArgs } }))).pipe(tap(() => read === false && this._updateunreadcounter(received, folderId, -1)), this._notify());
298
298
  }
299
299
  events(starting, ending, contains) {
300
300
  return this._http.get(`/api/events`, {
@@ -312,7 +312,7 @@ export class MailboxService {
312
312
  * get geo location if form settings requies
313
313
  * @param form
314
314
  */
315
- _getGeoLocation(form) {
315
+ _geoLocation(form) {
316
316
  const configuration = this._session.profile.forms.find(f => f.name === form);
317
317
  return new Observable(observe => {
318
318
  switch (configuration.position) {
@@ -339,9 +339,9 @@ export class MailboxService {
339
339
  });
340
340
  }
341
341
  }
342
- MailboxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MailboxService, deps: [{ token: i1.SessionService }, { token: i2.AuthenticationImpl }, { token: i3.HubService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
343
- MailboxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MailboxService, providedIn: 'root' });
344
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MailboxService, decorators: [{
342
+ MailboxService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: MailboxService, deps: [{ token: i1.SessionService }, { token: i2.AuthenticationImpl }, { token: i3.HubService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
343
+ MailboxService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: MailboxService, providedIn: 'root' });
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: MailboxService, decorators: [{
345
345
  type: Injectable,
346
346
  args: [{ providedIn: 'root' }]
347
347
  }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.AuthenticationImpl }, { type: i3.HubService }, { type: i4.HttpClient }]; } });
@@ -407,4 +407,4 @@ export function reportProgress(attachment) {
407
407
  }, e => observe.error(e));
408
408
  });
409
409
  }
410
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQXNWdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFB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TCxRQUFRO1FBQ1IsNkRBQTZEO1FBQzdELHVCQUF1QjtRQUN2QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxVQUEyQjtJQUN4RCxPQUFPLENBQUMsTUFBOEIsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDbEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQixlQUFlO1lBQ1gsaUNBQWlDO1lBQ2pDLHlCQUF5QjtZQUN6QixrQ0FBa0M7WUFDbEMsT0FBTztZQUNQLFdBQVc7WUFDWCxHQUFHO1lBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFckIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSHR0cENsaWVudCwgSHR0cEV2ZW50LFxyXG4gIEh0dHBFdmVudFR5cGUsXHJcbiAgSHR0cFByb2dyZXNzRXZlbnQsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2VcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1lbnQsIFVzZXJJbmZvLCBSZWNpcGllbnRNb2RlbCwgQXR0YWNobWVudCwgU2NoZWR1bGVkRXZlbnQsIEhlYWRlck1vZGVsLCBEb2N1bWVudE1vZGVsLCBWb3RlLCBDb21tZW50VmVyc2lvbiwgQ2hhaW4gfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGNsZWFudXAsIGlzQXJyYXkgfSBmcm9tICcuL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25JbXBsIH0gZnJvbSAnLi9hdXRoZW50aWNhdGlvbic7XHJcbmltcG9ydCB7IFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmV4cG9ydCBjb25zdCBET0NVTUVOVF9NT0RFTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEb2N1bWVudE1vZGVsPGFueT4+KCdtb2RlbCcpO1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsdGVyVHlwZSA9ICdyZWNlbnQnIHwgJ3VucmVhZCcgfCAnZmxhZ2dlZCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZUV2ZW50PFQ+IHtcclxuICBtb2RlbDogUmVjaXBpZW50TW9kZWw8VD47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNYWlsYm94U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlJCA9IG5ldyBTdWJqZWN0PFJlY2lwaWVudE1vZGVsPGFueT4+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVsZXRlJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICAvKiogKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlZCA9IHRoaXMuX2NoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZWQgPSB0aGlzLl9kZWxldGUkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYXV0aDogQXV0aGVudGljYXRpb25JbXBsLFxyXG4gICAgbWVzc2FnaW5nOiBIdWJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgbWVzc2FnaW5nLm5ldyQuXHJcbiAgICAgIHN1YnNjcmliZShtID0+IHtcclxuICAgICAgICBpZiAobS51c2VySWQgIT09IF9zZXNzaW9uLnByb2ZpbGUudXNlcklkKSByZXR1cm47XHJcbiAgICAgICAgX3Nlc3Npb24ucHJvZmlsZS5pbmJveENvdW50Kys7XHJcbiAgICAgICAgY29uc3QgZm9sZGVyID0gX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLmZpbmQoZiA9PiBmLm5hbWUgPT09IG0ubW9kZWwuZm9sZGVySWQpO1xyXG4gICAgICAgIGZvbGRlci5jb3VudCsrO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZm9ybWF0RG93bmxvYWRVcmwoZG9jdW1lbnRJZDogbnVtYmVyLCBmaWxlSWQ6IG51bWJlciwgaW5saW5lPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuX2F1dGguZ2V0QWNjZXNzVG9rZW4oKTtcclxuICAgIHJldHVybiBgL2FwaS9hdHRhY2htZW50cy8ke2RvY3VtZW50SWR9LyR7ZmlsZUlkfT9hY2Nlc3NfdG9rZW49JHt0b2tlbn0maW5saW5lPSR7aW5saW5lID8gdHJ1ZSA6IGZhbHNlfWA7XHJcbiAgfVxyXG4gIGRvd25sb2FkKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgLy9uZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgLy8gIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAvLyAgcmV0dXJuIHtcclxuICAgIC8vICAgIHVuc3Vic2NyaWJlKCkgeyB9XHJcbiAgICAvLyAgfVxyXG4gICAgLy99KTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldChgL2FwaS9hdHRhY2htZW50cy8ke2RvY3VtZW50SWR9LyR7ZmlsZUlkfWAsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbW92ZWF0dGFjaG1lbnQocmVjaXBpZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7ZmlsZUlkfWApO1xyXG4gIH1cclxuICByZWFkKGlkOiBudW1iZXIsIHJlYWQ6IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvcmVhZC8ke2lkfWAsIHVuZGVmaW5lZCwgeyBwYXJhbXM6IHsgcmVhZCB9IGFzIGFueSB9KS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICBmb2xkZXJJZCAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgcmVhZCA/IDEgOiAtMSlcclxuICAgICkpO1xyXG4gIH1cclxuICBjb21tZW50cyhpZDogbnVtYmVyLCBiZWZvcmU6IERhdGUpOiBPYnNlcnZhYmxlPENvbW1lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PENvbW1lbnRbXT4oYC9hcGkvY29tbWVudHMvJHtpZH1gLCB7IHBhcmFtczogeyBiZWZvcmU6IG5ldyBEYXRlKGJlZm9yZSkudG9KU09OKCkgfSB9KTtcclxuICB9XHJcbiAgdGFncyhpZDogbnVtYmVyLCB0YWdzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC90YWcvJHtpZH1gLCB7IHRhZ3MgfSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoeyBpZCwgdGFncyB9IGFzIGFueSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkXHJcbiAgICogQHBhcmFtIHN0YXRlSWRcclxuICAgKiBAcGFyYW0gdXNlcklkIHN1YnN0aXR1dGVcclxuICAgKi9cclxuICBjaGFuZ2VTdGF0ZShkb2N1bWVudElkOiBudW1iZXIsIHN0YXRlSWQ6IHN0cmluZywgdXNlcklkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2NoYW5nZXN0YXRlLyR7ZG9jdW1lbnRJZH1gLCB7IHN0YXRlSWQsIHVzZXJJZCB9KTtcclxuICB9XHJcbiAgbW92ZShpZDogbnVtYmVyLCBmb2xkZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L21vdmUvJHtpZH0/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gLCB7fSkucGlwZSh0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQoe1xyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIGZvbGRlcklkXHJcbiAgICAgIH0gYXMgYW55KTtcclxuICAgIH0pKTtcclxuICB9XHJcbiAgY2hlY2tPdXQocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PEF0dGFjaG1lbnQ+KGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja291dGAsIG51bGwsIHsgcGFyYW1zOiB7IHZlcnNpb24gfSB9KTtcclxuICB9XHJcbiAgY2hlY2tJbihyZWNpcGllbnRJZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGF0dGFjaG1lbnRJZDogbnVtYmVyLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsXHJcbiAgICAgIGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9LyR7YXR0YWNobWVudElkfS9jaGVja2luP3ZlcnNpb249JHt2ZXJzaW9ufWAsIGZkLCB7XHJcbiAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvL2NvbnN0IGluaXRpYWxTdGF0ZTogVXBsb2FkRXZlbnQgPSB7IHN0YXRlOiAnUEVORElORycsIHByb2dyZXNzOiAwIH1cclxuICAgIC8vY29uc3QgY2FsY3VsYXRlU3RhdGUgPSAoXHJcbiAgICAvLyAgdXBsb2FkOiBVcGxvYWRFdmVudCxcclxuICAgIC8vICBldmVudDogSHR0cEV2ZW50PHVua25vd24+XHJcbiAgICAvLyk6IFVwbG9hZEV2ZW50ID0+IHtcclxuICAgIC8vICAvLyBpbXBsZW1lbnRhdGlvblxyXG4gICAgLy99XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgICAgdGhpcy5faHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAvLyAgb2JzZXJ2ZS5uZXh0KG5ldyBVcGxvYWRFdmVudChcclxuICAgICAgICAgIC8vICAgIGZpbGUubmFtZSxcclxuICAgICAgICAgIC8vICAgIChldmVudCBhcyBQcm9ncmVzc0V2ZW50KS5sb2FkZWQsXHJcbiAgICAgICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkudG90YWxcclxuICAgICAgICAgIC8vICApKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBjb25zdCByZXMgPSBldmVudCBhcyBIdHRwUmVzcG9uc2U8YW55PjtcclxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50O1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQobW9kZWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBvYnNlcnZlLmVycm9yKHsgc3RhdHVzOiByZXMuc3RhdHVzLCBlcnJvcjogcmVzLmJvZHkgfSk7XHJcbiAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlID0+IHtcclxuICAgICAgICBvYnNlcnZlLmVycm9yKGUpO1xyXG4gICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICAvL3JlcS5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZTogRmlsZSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PjtcclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZXM6IEZpbGVbXSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50W10+O1xyXG4gIHVwbG9hZChyZWNpcGllbnRJZDogbnVtYmVyLCBmb3JtSWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBmaWxlczogRmlsZSB8IEZpbGVbXSwgb3B0aW9ucz86IHsgaXNQcml2YXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50IHwgQXR0YWNobWVudFtdPiB7XHJcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgICAgZmQuYXBwZW5kKGYubmFtZSwgZikpO1xyXG4gICAgZWxzZSBmZC5hcHBlbmQoZmlsZXMubmFtZSwgZmlsZXMpO1xyXG4gICAgLy9jb25zdCBieXRlc1BlckNodW5rID0gMjAgKiAxMDI0ICogMTAyNDtcclxuICAgIC8vIGFxdWlyZSB0aGUgbG9jYXRpb24gcHJpb3IgdG8gc2VuZGluZyB0aGUgcmVxdWVzdFxyXG4gICAgcmV0dXJuIHRoaXMuX2dldEdlb0xvY2F0aW9uKGZvcm1JZCkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgICAgbGV0IHVybCA9IGAvYXBpL2F0dGFjaG1lbnRzLyR7cmVjaXBpZW50SWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKHAgPT4gdXJsICs9IGAmJHtwfT0ke3BhcmFtc1twXX1gKTtcclxuICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMuaXNQcml2YXRlKSB1cmwgKz0gJyZpc3ByaXZhdGU9dHJ1ZSdcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgdXJsLCBmZCwge1xyXG4gICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5faHR0cC5yZXF1ZXN0KHJlcSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpIHtcclxuICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnQuIENvbXB1dGUgYW5kIHNob3cgdGhlICUgZG9uZTpcclxuICAgICAgICAgICAgLy9jb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBGaWxlIGlzICR7cGVyY2VudERvbmV9JSB1cGxvYWRlZC5gKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnRbXTtcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoaXNBcnJheShmaWxlcykgPyBtb2RlbCA6IG1vZGVsWzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlLmVycm9yKGUpO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB1bnN1YnNjcmliZSgpIHtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHJldHJpZXZlIHNlbmRlcnNcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqL1xyXG4gIHNlbmRlcnMobmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VySW5mb1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8VXNlckluZm9bXT4oJy9hcGkvbWFpbGJveC9zZW5kZXJzLycsIHtcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbmFtZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZmxhZyhpZDogbnVtYmVyLCBmbGFnOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2ZsYWcvJHtpZH0/ZmxhZz0ke2ZsYWd9YCwgbnVsbCkucGlwZSh0YXAoKCkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIGZsYWcgfSBhcyBhbnkpKSk7XHJcbiAgfVxyXG4gIHZpZXdlZGNvbW1lbnRzKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHsgdGltZTogRGF0ZSB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8eyB0aW1lOiBEYXRlIH0+KGAvYXBpL2NvbW1lbnRzL3ZpZXdlZC8ke2lkfWAsIHt9LCB7IGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH0gfSkucGlwZSh0YXAoKGU6IHsgdGltZTogRGF0ZSB9KSA9PiB0aGlzLl9jaGFuZ2UkLm5leHQoeyBpZCwgdmlld2VkOiBlLnRpbWUgfSBhcyBhbnkpKSk7XHJcbiAgfVxyXG4gIHR5cGluZyhpZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9jb21tZW50cy90eXBpbmcvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuICBlZGl0aW5nKGlkOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvZWRpdGluZy8ke2lkfWAsIHt9LCB7IGhlYWRlcnM6IHsgJ25vLXByb2dyZXNzJzogJ3RydWUnIH0gfSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG4gIGNvcHkoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8YW55Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZWNpcGllbnRNb2RlbDxhbnk+PihgL2FwaS9tYWlsYm94L2NvcHkvJHtpZH1gLCB7fSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBpZCBkb2N1bWVudCBpZFxyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICovXHJcbiAgY29tbWVudChpZDogbnVtYmVyLCBvcHRpb25zOiB7XHJcbiAgICB0ZXh0Pzogc3RyaW5nLFxyXG4gICAgcmVzb3VyY2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxyXG4gICAgaW1hZ2U/OiBzdHJpbmcsXHJcbiAgICBwYXJlbnRJZD86IG51bWJlclxyXG4gIH0pOiBPYnNlcnZhYmxlPENvbW1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8Q29tbWVudD4oYC9hcGkvY29tbWVudHMvJHtpZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgY29tbWVudHVwZGF0ZShpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlciwgb3B0aW9uczoge1xyXG4gICAgdGV4dD86IHN0cmluZyxcclxuICAgIGltYWdlPzogc3RyaW5nLFxyXG4gICAgcmVzb3VyY2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XHJcbiAgfSk6IE9ic2VydmFibGU8Q29tbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PENvbW1lbnQ+KGAvYXBpL2NvbW1lbnRzL2VkaXQvJHtpZH0vJHtjb21tZW50SWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIGluZm88VCA9IGFueT4oZG9jdW1lbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxEb2N1bWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8RG9jdW1lbnRNb2RlbDxUPj4oYC9hcGkvbWFpbGJveC9pbmZvLyR7ZG9jdW1lbnRJZH1gKTtcclxuICB9XHJcbiAgdGltZWxpbmUoZG9jdW1lbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxDaGFpbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PENoYWluPihgL2FwaS9tYWlsYm94L3RpbWVsaW5lLyR7ZG9jdW1lbnRJZH1gKTtcclxuICB9XHJcbiAgdm90ZShpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlciwgdmFsdWU6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0KGAvYXBpL2NvbW1lbnRzL3ZvdGUvJHtpZH0vJHtjb21tZW50SWR9YCwge30sIHsgcGFyYW1zOiB7IHZhbHVlOiB2YWx1ZS50b1N0cmluZygpIH0gfSk7XHJcbiAgfVxyXG4gIHZvdGVzKGlkOiBudW1iZXIsIGNvbW1lbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxWb3RlW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxWb3RlW10+KGAvYXBpL2NvbW1lbnRzL3ZvdGVzLyR7aWR9LyR7Y29tbWVudElkfWApO1xyXG4gIH1cclxuICBlZGl0cyhpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q29tbWVudFZlcnNpb25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PENvbW1lbnRWZXJzaW9uW10+KGAvYXBpL2NvbW1lbnRzL2VkaXRzLyR7aWR9LyR7Y29tbWVudElkfWApO1xyXG4gIH1cclxuICBmaW5kQWxsKGZpbHRlcjogeyB0eXBlPzogRmlsdGVyVHlwZTsgY29udGFpbnM/OiBzdHJpbmc7IHN0YXRlPzogc3RyaW5nOyBmb3JtPzogc3RyaW5nOyBmb2xkZXJJZD86IHN0cmluZzsgc2VuZGVySWQ/OiBzdHJpbmc7IH0sXHJcbiAgICBvcHRpb25zPzogeyBza2lwPzogbnVtYmVyOyB0YWtlPzogbnVtYmVyOyBvcmRlckJ5PzogJ3ZhbHVlJyB8ICd2aWV3ZWQnIHwgJ2RhdGUnIH0pOiBPYnNlcnZhYmxlPEhlYWRlck1vZGVsW10+IHtcclxuICAgIGNvbnN0IHBhcmFtczogYW55ID0geyAuLi5maWx0ZXIsIC4uLm9wdGlvbnMgfTtcclxuICAgIGNsZWFudXAocGFyYW1zKTtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxIZWFkZXJNb2RlbFtdPignL2FwaS9tYWlsJywgeyBwYXJhbXMgfSk7XHJcbiAgfVxyXG4gIGNyZWF0ZTxUID0gYW55Pihmb3JtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0R2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocCA9PlxyXG4gICAgICB0aGlzLl9odHRwLnBvc3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oJy9hcGkvbWFpbCcsIG51bGwsIHtcclxuICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgIGZvcm0sXHJcbiAgICAgICAgICAuLi5wXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZ2V0PFQgPSBhbnk+KGlkOiBudW1iZXIsIHJlYWQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlY2lwaWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsLyR7aWR9YCkucGlwZShcclxuICAgICAgdGFwKChtOiBSZWNpcGllbnRNb2RlbCkgPT5cclxuICAgICAgICByZWFkID09PSBmYWxzZSAmJiBtLnJlYWQgPT09IHRydWUgJiZcclxuICAgICAgICB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKG0ucmVjZWl2ZWQsIG0uZm9sZGVySWQsIC0xKVxyXG4gICAgICApKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXBkYXRldW5yZWFkY291bnRlcihkYXRlOiBEYXRlLCBmb2xkZXJJZDogc3RyaW5nLCB2YWw6IG51bWJlcikge1xyXG4gICAgaWYgKFxyXG4gICAgICAvLyBkYXRlIGlzIGFib3ZlIHdhdGVybWFya1xyXG4gICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUub3B0aW9ucy5pbmJveFZpZXcgJiZcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3IDwgZGF0ZVxyXG4gICAgKVxyXG4gICAgICB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCArPSB2YWw7XHJcbiAgICAvLyBkZWNyZWFzZVxyXG4gICAgY29uc3QgZm9sZGVyID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvbGRlcnMuXHJcbiAgICAgIGZpbmQoZiA9PiBmLm5hbWUgPT09IGZvbGRlcklkKTtcclxuICAgIGZvbGRlci5jb3VudCA9IE1hdGgubWF4KDAsIGZvbGRlci5jb3VudCArIHZhbCk7XHJcbiAgfVxyXG5cclxuICBzYXZlPFQgPSBhbnk+KGlkOiBudW1iZXIsIGZvcm06IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCBtb2RlbDoge30sIGZpbGVzPzogRmlsZVtdIHwgRmlsZUxpc3QpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICAvL2NvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAvL2NvbnN0IG1vZGVsQmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShtb2RlbCldLCB7XHJcbiAgICAvLyAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgLy99KTtcclxuICAgIC8vZmQuYXBwZW5kKCdmb3JtLWRhdGEnLCBtb2RlbEJsb2IpO1xyXG4gICAgLy9pZiAoZmlsZXMpIHtcclxuICAgIC8vICBpZiAoaXNBcnJheShmaWxlcykpIGZpbGVzLmZvckVhY2goZiA9PlxyXG4gICAgLy8gICAgZmQuYXBwZW5kKGYubmFtZSwgZikpO1xyXG4gICAgLy8gIGVsc2UgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgbGV0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xyXG4gICAgLy8gICAgZmQuYXBwZW5kKGZpbGUubmFtZSwgZmlsZSk7XHJcbiAgICAvLyAgfVxyXG4gICAgLy99XHJcbiAgICAvLyAgcmV0dXJuIHRoaXMuX3dpdGhHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT4ge1xyXG4gICAgLy8gICAgbGV0IHVybCA9IGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259YDtcclxuICAgIC8vICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAvLyAgICBjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BVVCcsIHVybCwgZmQsIHtcclxuICAgIC8vICAgIH0pO1xyXG4gICAgLy8gICAgcmV0dXJuIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnBpcGUobWFwKGV2ZW50ID0+IHtcclxuICAgIC8vICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAvLyAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgIC8vICAgICAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIFJlY2lwaWVudE1vZGVsPGFueT47XHJcbiAgICAvLyAgICAgICAgcmV0dXJuIG1vZGVsO1xyXG4gICAgLy8gICAgICB9XHJcbiAgICAvLyAgICAgIGVsc2VcclxuICAgIC8vICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgLy8gICAgfSkpXHJcbiAgICAvLyAgfSksIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICAgIHJldHVybiB0aGlzLl9nZXRHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259YCwgbW9kZWwsIHsgcGFyYW1zIH0pKSwgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBkZWxldGUoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvbWFpbC8ke2lkfWApLnBpcGUodGFwKCgpID0+XHJcbiAgICAgIHRoaXMuX2RlbGV0ZSQubmV4dChpZCkpKTtcclxuICB9XHJcbiAgcmVtb3ZlY29tbWVudChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZShgL2FwaS9jb21tZW50cy8ke2lkfWApO1xyXG4gIH1cclxuICBzdWJtaXQ8VCA9IGFueT4oaWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIG1vZGVsPzogYW55LCByZWFkPzogYm9vbGVhbiwgZm9sZGVySWQ/OiBzdHJpbmcsIHJlY2VpdmVkPzogRGF0ZSk6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9nZXRHZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn0mZ289dHJ1ZWAsIG1vZGVsLCB7IHBhcmFtcyB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBzZW5kPFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbDogYW55LCBhY3Rpb246IHN0cmluZywgYWN0aW9uQXJnczoge30sIHJlYWQ/OiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dldEdlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICB0aGlzLl9odHRwLnB1dDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfT92ZXJzaW9uPSR7dmVyc2lvbn0mYWN0aW9uPSR7YWN0aW9ufWAsIG1vZGVsLCB7IHBhcmFtczogeyAuLi5wYXJhbXMsIC4uLmFjdGlvbkFyZ3MgfSB9KSkpLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+XHJcbiAgICAgICAgICByZWFkID09PSBmYWxzZSAmJiB0aGlzLl91cGRhdGV1bnJlYWRjb3VudGVyKHJlY2VpdmVkLCBmb2xkZXJJZCwgLTEpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGV2ZW50cyhzdGFydGluZzogRGF0ZSwgZW5kaW5nPzogRGF0ZSwgY29udGFpbnM/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjaGVkdWxlZEV2ZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxTY2hlZHVsZWRFdmVudFtdPihgL2FwaS9ldmVudHNgLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIHN0YXJ0aW5nOiBzdGFydGluZy50b0pTT04oKSxcclxuICAgICAgICBlbmRpbmc6IGVuZGluZy50b0pTT04oKSxcclxuICAgICAgICBjb250YWluczogY29udGFpbnMgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZUV2ZW50KGlkOiBudW1iZXIsIG9wdGlvbnM6IHsgc3RhcnRpbmc6IERhdGU7IGVuZGluZz86IERhdGU7IGNvbXBsZXRlPzogYm9vbGVhbiB9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9ldmVudHMvJHtpZH1gLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0IGdlbyBsb2NhdGlvbiBpZiBmb3JtIHNldHRpbmdzIHJlcXVpZXNcclxuICAgKiBAcGFyYW0gZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2dldEdlb0xvY2F0aW9uKGZvcm06IHN0cmluZyk6IE9ic2VydmFibGU8eyBsbmc/OiBzdHJpbmc7IGxhdD86IHN0cmluZyB9PiB7XHJcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZvcm0pO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ1JlcXVpcmUnOlxyXG4gICAgICAgIGNhc2UgJ0Fzayc6XHJcbiAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHIgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlLm5leHQoe1xyXG4gICAgICAgICAgICAgIGxuZzogci5jb29yZHMubG9uZ2l0dWRlLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbGF0OiByLmNvb3Jkcy5sYXRpdHVkZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LCBlID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ucG9zaXRpb24gPT09ICdBc2snKVxyXG4gICAgICAgICAgICAgIG9ic2VydmUubmV4dCh7fSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBvYnNlcnZlLmVycm9yKCdubyBwb3NpdGlvbicpO1xyXG4gICAgICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbm90aWZ5ID0gPFQ+KCkgPT4gKG9ic2VydmU6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+KSA9PiB7XHJcbiAgICByZXR1cm4gb2JzZXJ2ZS5waXBlKHRhcChtID0+IHtcclxuICAgICAgKG0gYXMgSXRlbUV4dHJhKS5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9jaGFuZ2UkLm5leHQobSk7XHJcbiAgICB9KSk7XHJcbiAgfTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1FeHRyYSB7XHJcbiAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgbG9hZGVkPzogYm9vbGVhbjtcclxuICB3b3JraW5nPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnRFeHRyYSBleHRlbmRzIEF0dGFjaG1lbnQge1xyXG4gIHVybDogU2FmZVVybDtcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGZpbGVFeHQ6IHN0cmluZztcclxuICBpc0ltYWdlOiBib29sZWFuO1xyXG4gIHByb2dyZXNzPzogbnVtYmVyO1xyXG4gIHZpZXdlZD86IERhdGU7XHJcbiAgZmFpbGVkPzogYm9vbGVhbjtcclxufVxyXG5mdW5jdGlvbiBpc0h0dHBSZXNwb25zZTxUPihldmVudDogSHR0cEV2ZW50PFQ+KTogZXZlbnQgaXMgSHR0cFJlc3BvbnNlPFQ+IHtcclxuICByZXR1cm4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0h0dHBQcm9ncmVzc0V2ZW50KFxyXG4gIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj5cclxuKTogZXZlbnQgaXMgSHR0cFByb2dyZXNzRXZlbnQge1xyXG4gIHJldHVybiAoXHJcbiAgICBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MgfHxcclxuICAgIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3NcclxuICApXHJcbn1cclxuZnVuY3Rpb24gY2FsY3VsYXRlU3RhdGUodXBsb2FkOiBVcGxvYWRFdmVudCwgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPik6IFVwbG9hZEV2ZW50IHtcclxuICBpZiAoaXNIdHRwUHJvZ3Jlc3NFdmVudChldmVudCkpIHtcclxuICAgIHJldHVybiBuZXcgVXBsb2FkRXZlbnQoe1xyXG4gICAgICBwcm9ncmVzczogZXZlbnQudG90YWxcclxuICAgICAgICA/IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbClcclxuICAgICAgICA6IHVwbG9hZC5wcm9ncmVzcyxcclxuICAgICAgc3RhdGU6ICdwcm9ncmVzcycsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzSHR0cFJlc3BvbnNlKGV2ZW50KSkge1xyXG4gICAgcmV0dXJuIG5ldyBVcGxvYWRFdmVudCh7XHJcbiAgICAgIHByb2dyZXNzOiAxMDAsXHJcbiAgICAgIHN0YXRlOiAnZG9uZScsXHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gdXBsb2FkXHJcbn1cclxuZXhwb3J0IGNsYXNzIFVwbG9hZEV2ZW50IHtcclxuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIHByb2dyZXNzOiBudW1iZXI7XHJcbiAgLy8gYnl0ZXNcclxuICB0b3RhbDogbnVtYmVyO1xyXG4gIHN0YXRlOiAncGVuZGluZycgfCAncHJvZ3Jlc3MnIHwgJ2RvbmUnO1xyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHsgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBvcnRwcm9ncmVzcyhmaWxlbmFtZTogc3RyaW5nKTogKHNvdXJjZTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PikgPT4gT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XHJcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QXR0YWNobWVudD4pID0+XHJcbiAgICBzb3VyY2UucGlwZShtYXAociA9PiB7XHJcbiAgICAgIC8vaWYgKGV2ZW50IGluc3RhbmNlb2YgUHJvZ3Jlc3NFdmVudCkge1xyXG4gICAgICAvLyAgb2JzZXJ2ZS5uZXh0KG5ldyBVcGxvYWRFdmVudChcclxuICAgICAgLy8gICAgZmlsZS5uYW1lLFxyXG4gICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkubG9hZGVkLFxyXG4gICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkudG90YWxcclxuICAgICAgLy8gICkpO1xyXG4gICAgICAvL30gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgLy8gIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAvLyAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAvLyAgICBjb25zdCBtb2RlbCA9IHJlcy5ib2R5IGFzIEF0dGFjaG1lbnQ7XHJcbiAgICAgIC8vICAgIG9ic2VydmUubmV4dChtb2RlbCk7XHJcbiAgICAgIC8vICB9XHJcbiAgICAgIC8vICBlbHNlXHJcbiAgICAgIC8vICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgLy8gIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9KSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRQcm9ncmVzcyhhdHRhY2htZW50OiBBdHRhY2htZW50RXh0cmEpIHtcclxuICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PikgPT4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XHJcbiAgICBzb3VyY2Uuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAvL1RPRE8gcHJvZ3Jlc3NcclxuICAgICAgICAgIC8vaWYgKGEgaW5zdGFuY2VvZiBVcGxvYWRFdmVudCkge1xyXG4gICAgICAgICAgLy8gIE9iamVjdC5hc3NpZ24oaXRlbSwge1xyXG4gICAgICAgICAgLy8gICAgcHJvZ3Jlc3M6IGEubG9hZGVkIC8gYS50b3RhbFxyXG4gICAgICAgICAgLy8gIH0pO1xyXG4gICAgICAgICAgLy8gIHJldHVybjtcclxuICAgICAgICAgIC8vfVxyXG4gICAgICBvYnNlcnZlLm5leHQocik7XHJcbiAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuXHJcbiAgICB9LCBlID0+IG9ic2VydmUuZXJyb3IoZSkpO1xyXG4gIH0pO1xyXG59XHJcbiJdfQ==
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbGJveC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL21haWxib3guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBRUwsYUFBYSxFQUNNLFdBQVcsRUFBRSxZQUFZLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztBQUsvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQXFCLE9BQU8sQ0FBQyxDQUFDO0FBUzlFLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFFBQXdCLEVBQ2xDLEtBQXlCLEVBQ2pDLFNBQXFCLEVBQ2IsS0FBaUI7UUFIUCxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBUlYsYUFBUSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2xELE1BQU07UUFDVSxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQXVWdkQ7V0FDRztRQUNLLFlBQU8sR0FBRyxHQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQXNDLEVBQUUsRUFB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Q0wsUUFBUTtRQUNSLDZEQUE2RDtRQUM3RCx1QkFBdUI7UUFDdkIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsVUFBMkI7SUFDeEQsT0FBTyxDQUFDLE1BQThCLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2xFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkIsZUFBZTtZQUNYLGlDQUFpQztZQUNqQyx5QkFBeUI7WUFDekIsa0NBQWtDO1lBQ2xDLE9BQU87WUFDUCxXQUFXO1lBQ1gsR0FBRztZQUNQLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXJCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsIEh0dHBFdmVudCxcclxuICBIdHRwRXZlbnRUeXBlLFxyXG4gIEh0dHBQcm9ncmVzc0V2ZW50LCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tZW50LCBVc2VySW5mbywgUmVjaXBpZW50TW9kZWwsIEF0dGFjaG1lbnQsIFNjaGVkdWxlZEV2ZW50LCBIZWFkZXJNb2RlbCwgRG9jdW1lbnRNb2RlbCwgVm90ZSwgQ29tbWVudFZlcnNpb24sIENoYWluIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBjbGVhbnVwLCBpc0FycmF5IH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uSW1wbCB9IGZyb20gJy4vYXV0aGVudGljYXRpb24nO1xyXG5pbXBvcnQgeyBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5leHBvcnQgY29uc3QgRE9DVU1FTlRfTU9ERUwgPSBuZXcgSW5qZWN0aW9uVG9rZW48RG9jdW1lbnRNb2RlbDxhbnk+PignbW9kZWwnKTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPSAncmVjZW50JyB8ICd1bnJlYWQnIHwgJ2ZsYWdnZWQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VFdmVudDxUPiB7XHJcbiAgbW9kZWw6IFJlY2lwaWVudE1vZGVsPFQ+O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWFpbGJveFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZSQgPSBuZXcgU3ViamVjdDxSZWNpcGllbnRNb2RlbDxhbnk+PigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlbGV0ZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XHJcbiAgLyoqICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVkID0gdGhpcy5fZGVsZXRlJC5hc09ic2VydmFibGUoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2F1dGg6IEF1dGhlbnRpY2F0aW9uSW1wbCxcclxuICAgIG1lc3NhZ2luZzogSHViU2VydmljZSxcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIG1lc3NhZ2luZy5uZXckLlxyXG4gICAgICBzdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgICAgaWYgKG0udXNlcklkICE9PSBfc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCkgcmV0dXJuO1xyXG4gICAgICAgIF9zZXNzaW9uLnByb2ZpbGUuaW5ib3hDb3VudCsrO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlciA9IF9zZXNzaW9uLnByb2ZpbGUuZm9sZGVycy5maW5kKGYgPT4gZi5uYW1lID09PSBtLm1vZGVsLmZvbGRlcklkKTtcclxuICAgICAgICBmb2xkZXIuY291bnQrKztcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGZvcm1hdERvd25sb2FkVXJsKGRvY3VtZW50SWQ6IG51bWJlciwgZmlsZUlkOiBudW1iZXIsIGlubGluZT86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLl9hdXRoLmdldEFjY2Vzc1Rva2VuKCk7XHJcbiAgICByZXR1cm4gYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH0/YWNjZXNzX3Rva2VuPSR7dG9rZW59JmlubGluZT0ke2lubGluZSA/IHRydWUgOiBmYWxzZX1gO1xyXG4gIH1cclxuICBkb3dubG9hZChkb2N1bWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIC8vbmV3IE9ic2VydmFibGU8YW55PihvYnNlcnZlID0+IHtcclxuICAgIC8vICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgLy8gIHJldHVybiB7XHJcbiAgICAvLyAgICB1bnN1YnNjcmliZSgpIHsgfVxyXG4gICAgLy8gIH1cclxuICAgIC8vfSk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQoYC9hcGkvYXR0YWNobWVudHMvJHtkb2N1bWVudElkfS8ke2ZpbGVJZH1gLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcclxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW1vdmVhdHRhY2htZW50KHJlY2lwaWVudElkOiBudW1iZXIsIGZpbGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZShgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2ZpbGVJZH1gKTtcclxuICB9XHJcbiAgcmVhZChpZDogbnVtYmVyLCByZWFkOiBib29sZWFuLCBmb2xkZXJJZD86IHN0cmluZywgcmVjZWl2ZWQ/OiBEYXRlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L3JlYWQvJHtpZH1gLCB1bmRlZmluZWQsIHsgcGFyYW1zOiB7IHJlYWQgfSBhcyBhbnkgfSkucGlwZSh0YXAoKCkgPT5cclxuICAgICAgZm9sZGVySWQgJiYgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihyZWNlaXZlZCwgZm9sZGVySWQsIHJlYWQgPyAxIDogLTEpXHJcbiAgICApKTtcclxuICB9XHJcbiAgY29tbWVudHMoaWQ6IG51bWJlciwgYmVmb3JlOiBEYXRlKTogT2JzZXJ2YWJsZTxDb21tZW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50W10+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgeyBwYXJhbXM6IHsgYmVmb3JlOiBuZXcgRGF0ZShiZWZvcmUpLnRvSlNPTigpIH0gfSk7XHJcbiAgfVxyXG4gIHRhZ3MoaWQ6IG51bWJlciwgdGFnczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KGAvYXBpL21haWxib3gvdGFnLyR7aWR9YCwgeyB0YWdzIH0pLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHRhZ3MgfSBhcyBhbnkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZFxyXG4gICAqIEBwYXJhbSBzdGF0ZUlkXHJcbiAgICogQHBhcmFtIHVzZXJJZCBzdWJzdGl0dXRlXHJcbiAgICovXHJcbiAgY2hhbmdlU3RhdGUoZG9jdW1lbnRJZDogbnVtYmVyLCBzdGF0ZUlkOiBzdHJpbmcsIHVzZXJJZD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9jaGFuZ2VzdGF0ZS8ke2RvY3VtZW50SWR9YCwgeyBzdGF0ZUlkLCB1c2VySWQgfSk7XHJcbiAgfVxyXG4gIG1vdmUoaWQ6IG51bWJlciwgZm9sZGVySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9tb3ZlLyR7aWR9P2ZvbGRlcklkPSR7Zm9sZGVySWR9YCwge30pLnBpcGUodGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KHtcclxuICAgICAgICBpZCxcclxuICAgICAgICBmb2xkZXJJZFxyXG4gICAgICB9IGFzIGFueSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGNoZWNrT3V0KHJlY2lwaWVudElkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgYXR0YWNobWVudElkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxBdHRhY2htZW50PihgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2F0dGFjaG1lbnRJZH0vY2hlY2tvdXRgLCBudWxsLCB7IHBhcmFtczogeyB2ZXJzaW9uIH0gfSk7XHJcbiAgfVxyXG4gIGNoZWNrSW4ocmVjaXBpZW50SWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyLCBhdHRhY2htZW50SWQ6IG51bWJlciwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8QXR0YWNobWVudD4ge1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLFxyXG4gICAgICBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfS8ke2F0dGFjaG1lbnRJZH0vY2hlY2tpbj92ZXJzaW9uPSR7dmVyc2lvbn1gLCBmZCwge1xyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgLy9jb25zdCBpbml0aWFsU3RhdGU6IFVwbG9hZEV2ZW50ID0geyBzdGF0ZTogJ1BFTkRJTkcnLCBwcm9ncmVzczogMCB9XHJcbiAgICAvL2NvbnN0IGNhbGN1bGF0ZVN0YXRlID0gKFxyXG4gICAgLy8gIHVwbG9hZDogVXBsb2FkRXZlbnQsXHJcbiAgICAvLyAgZXZlbnQ6IEh0dHBFdmVudDx1bmtub3duPlxyXG4gICAgLy8pOiBVcGxvYWRFdmVudCA9PiB7XHJcbiAgICAvLyAgLy8gaW1wbGVtZW50YXRpb25cclxuICAgIC8vfVxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGFueT4ob2JzZXJ2ZSA9PiB7XHJcbiAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgUHJvZ3Jlc3NFdmVudCkge1xyXG4gICAgICAgICAgLy8gIG9ic2VydmUubmV4dChuZXcgVXBsb2FkRXZlbnQoXHJcbiAgICAgICAgICAvLyAgICBmaWxlLm5hbWUsXHJcbiAgICAgICAgICAvLyAgICAoZXZlbnQgYXMgUHJvZ3Jlc3NFdmVudCkubG9hZGVkLFxyXG4gICAgICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLnRvdGFsXHJcbiAgICAgICAgICAvLyAgKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gZXZlbnQgYXMgSHR0cFJlc3BvbnNlPGFueT47XHJcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gcmVzLmJvZHkgYXMgQXR0YWNobWVudDtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KG1vZGVsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcih7IHN0YXR1czogcmVzLnN0YXR1cywgZXJyb3I6IHJlcy5ib2R5IH0pO1xyXG4gICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHVuc3Vic2NyaWJlKCkge1xyXG4gICAgICAgICAgLy9yZXEuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGU6IEZpbGUsIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudD47XHJcbiAgdXBsb2FkKHJlY2lwaWVudElkOiBudW1iZXIsIGZvcm1JZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIGZpbGVzOiBGaWxlW10sIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudFtdPjtcclxuICB1cGxvYWQocmVjaXBpZW50SWQ6IG51bWJlciwgZm9ybUlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgZmlsZXM6IEZpbGUgfCBGaWxlW10sIG9wdGlvbnM/OiB7IGlzUHJpdmF0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8QXR0YWNobWVudCB8IEF0dGFjaG1lbnRbXT4ge1xyXG4gICAgY29uc3QgZmQgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmIChpc0FycmF5KGZpbGVzKSkgZmlsZXMuZm9yRWFjaChmID0+XHJcbiAgICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIGVsc2UgZmQuYXBwZW5kKGZpbGVzLm5hbWUsIGZpbGVzKTtcclxuICAgIC8vY29uc3QgYnl0ZXNQZXJDaHVuayA9IDIwICogMTAyNCAqIDEwMjQ7XHJcbiAgICAvLyBhcXVpcmUgdGhlIGxvY2F0aW9uIHByaW9yIHRvIHNlbmRpbmcgdGhlIHJlcXVlc3RcclxuICAgIHJldHVybiB0aGlzLl9nZW9Mb2NhdGlvbihmb3JtSWQpLnBpcGUoc3dpdGNoTWFwKHBhcmFtcyA9PlxyXG4gICAgICBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICAgIGxldCB1cmwgPSBgL2FwaS9hdHRhY2htZW50cy8ke3JlY2lwaWVudElkfT92ZXJzaW9uPSR7dmVyc2lvbn1gO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChwID0+IHVybCArPSBgJiR7cH09JHtwYXJhbXNbcF19YCk7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zLmlzUHJpdmF0ZSkgdXJsICs9ICcmaXNwcml2YXRlPXRydWUnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIHVybCwgZmQsIHtcclxuICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2h0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBQcm9ncmVzc0V2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gdXBsb2FkIHByb2dyZXNzIGV2ZW50LiBDb21wdXRlIGFuZCBzaG93IHRoZSAlIGRvbmU6XHJcbiAgICAgICAgICAgIC8vY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgRmlsZSBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50W107XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KGlzQXJyYXkoZmlsZXMpID8gbW9kZWwgOiBtb2RlbFswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9ic2VydmUuZXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGUgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZS5lcnJvcihlKTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiByZXRyaWV2ZSBzZW5kZXJzXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKi9cclxuICBzZW5kZXJzKG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm9bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFVzZXJJbmZvW10+KCcvYXBpL21haWxib3gvc2VuZGVycy8nLCB7XHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGZsYWcoaWQ6IG51bWJlciwgZmxhZzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvbWFpbGJveC9mbGFnLyR7aWR9P2ZsYWc9JHtmbGFnfWAsIG51bGwpLnBpcGUodGFwKCgpID0+IHRoaXMuX2NoYW5nZSQubmV4dCh7IGlkLCBmbGFnIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB2aWV3ZWRjb21tZW50cyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7IHRpbWU6IERhdGUgfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PHsgdGltZTogRGF0ZSB9PihgL2FwaS9jb21tZW50cy92aWV3ZWQvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnBpcGUodGFwKChlOiB7IHRpbWU6IERhdGUgfSkgPT4gdGhpcy5fY2hhbmdlJC5uZXh0KHsgaWQsIHZpZXdlZDogZS50aW1lIH0gYXMgYW55KSkpO1xyXG4gIH1cclxuICB0eXBpbmcoaWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvY29tbWVudHMvdHlwaW5nLyR7aWR9YCwge30sIHsgaGVhZGVyczogeyAnbm8tcHJvZ3Jlc3MnOiAndHJ1ZScgfSB9KS50b1Byb21pc2UoKTtcclxuICB9XHJcbiAgZWRpdGluZyhpZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dChgL2FwaS9tYWlsYm94L2VkaXRpbmcvJHtpZH1gLCB7fSwgeyBoZWFkZXJzOiB7ICduby1wcm9ncmVzcyc6ICd0cnVlJyB9IH0pLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuICBjb3B5KGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPGFueT4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVjaXBpZW50TW9kZWw8YW55Pj4oYC9hcGkvbWFpbGJveC9jb3B5LyR7aWR9YCwge30pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWQgZG9jdW1lbnQgaWRcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqL1xyXG4gIGNvbW1lbnQoaWQ6IG51bWJlciwgb3B0aW9uczoge1xyXG4gICAgdGV4dD86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIGltYWdlPzogc3RyaW5nLFxyXG4gICAgcGFyZW50SWQ/OiBudW1iZXJcclxuICB9KTogT2JzZXJ2YWJsZTxDb21tZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PENvbW1lbnQ+KGAvYXBpL2NvbW1lbnRzLyR7aWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIGNvbW1lbnR1cGRhdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIG9wdGlvbnM6IHtcclxuICAgIHRleHQ/OiBzdHJpbmcsXHJcbiAgICBpbWFnZT86IHN0cmluZyxcclxuICAgIHJlc291cmNlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gIH0pOiBPYnNlcnZhYmxlPENvbW1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLnB1dDxDb21tZW50PihgL2FwaS9jb21tZW50cy9lZGl0LyR7aWR9LyR7Y29tbWVudElkfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuICBpbmZvPFQgPSBhbnk+KGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8RG9jdW1lbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PERvY3VtZW50TW9kZWw8VD4+KGAvYXBpL21haWxib3gvaW5mby8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHRpbWVsaW5lKGRvY3VtZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q2hhaW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDaGFpbj4oYC9hcGkvbWFpbGJveC90aW1lbGluZS8ke2RvY3VtZW50SWR9YCk7XHJcbiAgfVxyXG4gIHZvdGUoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChgL2FwaS9jb21tZW50cy92b3RlLyR7aWR9LyR7Y29tbWVudElkfWAsIHt9LCB7IHBhcmFtczogeyB2YWx1ZTogdmFsdWUudG9TdHJpbmcoKSB9IH0pO1xyXG4gIH1cclxuICB2b3RlcyhpZDogbnVtYmVyLCBjb21tZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8Vm90ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8Vm90ZVtdPihgL2FwaS9jb21tZW50cy92b3Rlcy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZWRpdHMoaWQ6IG51bWJlciwgY29tbWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbW1lbnRWZXJzaW9uW10+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxDb21tZW50VmVyc2lvbltdPihgL2FwaS9jb21tZW50cy9lZGl0cy8ke2lkfS8ke2NvbW1lbnRJZH1gKTtcclxuICB9XHJcbiAgZmluZEFsbChmaWx0ZXI6IHsgdHlwZT86IEZpbHRlclR5cGU7IGNvbnRhaW5zPzogc3RyaW5nOyBzdGF0ZT86IHN0cmluZzsgZm9ybT86IHN0cmluZzsgZm9sZGVySWQ/OiBzdHJpbmc7IHNlbmRlcklkPzogc3RyaW5nOyB9LFxyXG4gICAgb3B0aW9ucz86IHsgc2tpcD86IG51bWJlcjsgdGFrZT86IG51bWJlcjsgb3JkZXJCeT86ICd2YWx1ZScgfCAndmlld2VkJyB8ICdkYXRlJyB9KTogT2JzZXJ2YWJsZTxIZWFkZXJNb2RlbFtdPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgLi4uZmlsdGVyLCAuLi5vcHRpb25zIH07XHJcbiAgICBjbGVhbnVwKHBhcmFtcyk7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8SGVhZGVyTW9kZWxbXT4oJy9hcGkvbWFpbCcsIHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICBjcmVhdGU8VCA9IGFueT4oZm9ybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2dlb0xvY2F0aW9uKGZvcm0pLnBpcGUoc3dpdGNoTWFwKHAgPT5cclxuICAgICAgdGhpcy5faHR0cC5wb3N0PFJlY2lwaWVudE1vZGVsPGFueT4+KCcvYXBpL21haWwnLCBudWxsLCB7XHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBmb3JtLFxyXG4gICAgICAgICAgLi4ucFxyXG4gICAgICAgIH1cclxuICAgICAgfSkpLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgfVxyXG4gIGdldDxUID0gYW55PihpZDogbnVtYmVyLCByZWFkPzogYm9vbGVhbik6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZWNpcGllbnRNb2RlbDxUPj4oYC9hcGkvbWFpbC8ke2lkfWApLnBpcGUoXHJcbiAgICAgIHRhcCgobTogUmVjaXBpZW50TW9kZWwpID0+XHJcbiAgICAgICAgcmVhZCA9PT0gZmFsc2UgJiYgbS5yZWFkID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihtLnJlY2VpdmVkLCBtLmZvbGRlcklkLCAtMSlcclxuICAgICAgKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3VwZGF0ZXVucmVhZGNvdW50ZXIoZGF0ZTogRGF0ZSwgZm9sZGVySWQ6IHN0cmluZywgdmFsOiBudW1iZXIpIHtcclxuICAgIGlmIChcclxuICAgICAgLy8gZGF0ZSBpcyBhYm92ZSB3YXRlcm1hcmtcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm9wdGlvbnMuaW5ib3hWaWV3ICYmXHJcbiAgICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5vcHRpb25zLmluYm94VmlldyA8IGRhdGVcclxuICAgIClcclxuICAgICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmluYm94Q291bnQgKz0gdmFsO1xyXG4gICAgLy8gZGVjcmVhc2VcclxuICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb2xkZXJzLlxyXG4gICAgICBmaW5kKGYgPT4gZi5uYW1lID09PSBmb2xkZXJJZCk7XHJcbiAgICBmb2xkZXIuY291bnQgPSBNYXRoLm1heCgwLCBmb2xkZXIuY291bnQgKyB2YWwpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZTxUID0gYW55PihpZDogbnVtYmVyLCBmb3JtOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgbW9kZWw6IHt9LCBmaWxlcz86IEZpbGVbXSB8IEZpbGVMaXN0KTogT2JzZXJ2YWJsZTxSZWNpcGllbnRNb2RlbDxUPj4ge1xyXG4gICAgLy9jb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy9jb25zdCBtb2RlbEJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkobW9kZWwpXSwge1xyXG4gICAgLy8gIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgIC8vfSk7XHJcbiAgICAvL2ZkLmFwcGVuZCgnZm9ybS1kYXRhJywgbW9kZWxCbG9iKTtcclxuICAgIC8vaWYgKGZpbGVzKSB7XHJcbiAgICAvLyAgaWYgKGlzQXJyYXkoZmlsZXMpKSBmaWxlcy5mb3JFYWNoKGYgPT5cclxuICAgIC8vICAgIGZkLmFwcGVuZChmLm5hbWUsIGYpKTtcclxuICAgIC8vICBlbHNlIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIC8vICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcclxuICAgIC8vICAgIGZkLmFwcGVuZChmaWxlLm5hbWUsIGZpbGUpO1xyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG4gICAgLy8gIHJldHVybiB0aGlzLl93aXRoR2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+IHtcclxuICAgIC8vICAgIGxldCB1cmwgPSBgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWA7XHJcbiAgICAvLyAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2gocCA9PiB1cmwgKz0gYCYke3B9PSR7cGFyYW1zW3BdfWApO1xyXG4gICAgLy8gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQVVQnLCB1cmwsIGZkLCB7XHJcbiAgICAvLyAgICB9KTtcclxuICAgIC8vICAgIHJldHVybiB0aGlzLl9odHRwLnJlcXVlc3QocmVxKS5waXBlKG1hcChldmVudCA9PiB7XHJcbiAgICAvLyAgICAgIGNvbnN0IHJlcyA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgLy8gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAvLyAgICAgICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBSZWNpcGllbnRNb2RlbDxhbnk+O1xyXG4gICAgLy8gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIC8vICAgICAgfVxyXG4gICAgLy8gICAgICBlbHNlXHJcbiAgICAvLyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGVycm9yOiByZXMuYm9keSB9KTtcclxuICAgIC8vICAgIH0pKVxyXG4gICAgLy8gIH0pLCB0aGlzLl9ub3RpZnk8VD4oKSk7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2VvTG9jYXRpb24oZm9ybSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKHBhcmFtcyA9PnRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPFQ+PihgL2FwaS9tYWlsLyR7aWR9P3ZlcnNpb249JHt2ZXJzaW9ufWAsIG1vZGVsLCB7IHBhcmFtcyB9KSksXHJcbiAgICAgIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgZGVsZXRlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlKGAvYXBpL21haWwvJHtpZH1gKS5waXBlKHRhcCgoKSA9PlxyXG4gICAgICB0aGlzLl9kZWxldGUkLm5leHQoaWQpKSk7XHJcbiAgfVxyXG4gIHJlbW92ZWNvbW1lbnQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGUoYC9hcGkvY29tbWVudHMvJHtpZH1gKTtcclxuICB9XHJcbiAgc3VibWl0PFQgPSBhbnk+KGlkOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgZm9ybTogc3RyaW5nLCBtb2RlbD86IGFueSwgcmVhZD86IGJvb2xlYW4sIGZvbGRlcklkPzogc3RyaW5nLCByZWNlaXZlZD86IERhdGUpOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2VvTG9jYXRpb24oZm9ybSkucGlwZShzd2l0Y2hNYXAocGFyYW1zID0+XHJcbiAgICAgIHRoaXMuX2h0dHAucHV0PFJlY2lwaWVudE1vZGVsPGFueT4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmdvPXRydWVgLCBtb2RlbCwgeyBwYXJhbXMgfSkpKS5waXBlKFxyXG4gICAgICAgIHRoaXMuX25vdGlmeTxUPigpKTtcclxuICB9XHJcbiAgc2VuZDxUID0gYW55PihpZDogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIGZvcm06IHN0cmluZywgbW9kZWw6IGFueSwgYWN0aW9uOiBzdHJpbmcsIGFjdGlvbkFyZ3M6IHt9LCByZWFkPzogYm9vbGVhbiwgZm9sZGVySWQ/OiBzdHJpbmcsIHJlY2VpdmVkPzogRGF0ZSk6IE9ic2VydmFibGU8UmVjaXBpZW50TW9kZWw8VD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9nZW9Mb2NhdGlvbihmb3JtKS5waXBlKHN3aXRjaE1hcChwYXJhbXMgPT5cclxuICAgICAgdGhpcy5faHR0cC5wdXQ8UmVjaXBpZW50TW9kZWw8VD4+KGAvYXBpL21haWwvJHtpZH0/dmVyc2lvbj0ke3ZlcnNpb259JmFjdGlvbj0ke2FjdGlvbn1gLCBtb2RlbCwgeyBwYXJhbXM6IHsgLi4ucGFyYW1zLCAuLi5hY3Rpb25BcmdzIH0gfSkpKS5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PlxyXG4gICAgICAgICAgcmVhZCA9PT0gZmFsc2UgJiYgdGhpcy5fdXBkYXRldW5yZWFkY291bnRlcihyZWNlaXZlZCwgZm9sZGVySWQsIC0xKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGhpcy5fbm90aWZ5PFQ+KCkpO1xyXG4gIH1cclxuICBldmVudHMoc3RhcnRpbmc6IERhdGUsIGVuZGluZz86IERhdGUsIGNvbnRhaW5zPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxTY2hlZHVsZWRFdmVudFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8U2NoZWR1bGVkRXZlbnRbXT4oYC9hcGkvZXZlbnRzYCwge1xyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBzdGFydGluZzogc3RhcnRpbmcudG9KU09OKCksXHJcbiAgICAgICAgZW5kaW5nOiBlbmRpbmcudG9KU09OKCksXHJcbiAgICAgICAgY29udGFpbnM6IGNvbnRhaW5zIHx8ICcnXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBjaGFuZ2VFdmVudChpZDogbnVtYmVyLCBvcHRpb25zOiB7IHN0YXJ0aW5nOiBEYXRlOyBlbmRpbmc/OiBEYXRlOyBjb21wbGV0ZT86IGJvb2xlYW4gfSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQoYC9hcGkvZXZlbnRzLyR7aWR9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIGdldCBnZW8gbG9jYXRpb24gaWYgZm9ybSBzZXR0aW5ncyByZXF1aWVzXHJcbiAgICogQHBhcmFtIGZvcm1cclxuICAgKi9cclxuICBwcml2YXRlIF9nZW9Mb2NhdGlvbihmb3JtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgbG5nPzogc3RyaW5nOyBsYXQ/OiBzdHJpbmcgfT4ge1xyXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb3Jtcy5maW5kKGYgPT4gZi5uYW1lID09PSBmb3JtKTtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxhbnk+KG9ic2VydmUgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24ucG9zaXRpb24pIHtcclxuICAgICAgICBjYXNlICdSZXF1aXJlJzpcclxuICAgICAgICBjYXNlICdBc2snOlxyXG4gICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihyID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5uZXh0KHtcclxuICAgICAgICAgICAgICBsbmc6IHIuY29vcmRzLmxvbmdpdHVkZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIGxhdDogci5jb29yZHMubGF0aXR1ZGUudG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSwgZSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnBvc2l0aW9uID09PSAnQXNrJylcclxuICAgICAgICAgICAgICBvYnNlcnZlLm5leHQoe30pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZS5lcnJvcignbm8gcG9zaXRpb24nKTtcclxuICAgICAgICAgICAgb2JzZXJ2ZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KHt9KTtcclxuICAgICAgICAgIG9ic2VydmUuY29tcGxldGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX25vdGlmeSA9IDxUPigpID0+IChvYnNlcnZlOiBPYnNlcnZhYmxlPFJlY2lwaWVudE1vZGVsPFQ+PikgPT4ge1xyXG4gICAgcmV0dXJuIG9ic2VydmUucGlwZSh0YXAobSA9PiB7XHJcbiAgICAgIChtIGFzIEl0ZW1FeHRyYSkubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5fY2hhbmdlJC5uZXh0KG0pO1xyXG4gICAgfSkpO1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJdGVtRXh0cmEge1xyXG4gIGxvYWRpbmc/OiBib29sZWFuO1xyXG4gIGxvYWRlZD86IGJvb2xlYW47XHJcbiAgd29ya2luZz86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50RXh0cmEgZXh0ZW5kcyBBdHRhY2htZW50IHtcclxuICB1cmw6IFNhZmVVcmw7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBmaWxlRXh0OiBzdHJpbmc7XHJcbiAgaXNJbWFnZTogYm9vbGVhbjtcclxuICBwcm9ncmVzcz86IG51bWJlcjtcclxuICB2aWV3ZWQ/OiBEYXRlO1xyXG4gIGZhaWxlZD86IGJvb2xlYW47XHJcbn1cclxuZnVuY3Rpb24gaXNIdHRwUmVzcG9uc2U8VD4oZXZlbnQ6IEh0dHBFdmVudDxUPik6IGV2ZW50IGlzIEh0dHBSZXNwb25zZTxUPiB7XHJcbiAgcmV0dXJuIGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2VcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIdHRwUHJvZ3Jlc3NFdmVudChcclxuICBldmVudDogSHR0cEV2ZW50PHVua25vd24+XHJcbik6IGV2ZW50IGlzIEh0dHBQcm9ncmVzc0V2ZW50IHtcclxuICByZXR1cm4gKFxyXG4gICAgZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzIHx8XHJcbiAgICBldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzXHJcbiAgKVxyXG59XHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZVN0YXRlKHVwbG9hZDogVXBsb2FkRXZlbnQsIGV2ZW50OiBIdHRwRXZlbnQ8dW5rbm93bj4pOiBVcGxvYWRFdmVudCB7XHJcbiAgaWYgKGlzSHR0cFByb2dyZXNzRXZlbnQoZXZlbnQpKSB7XHJcbiAgICByZXR1cm4gbmV3IFVwbG9hZEV2ZW50KHtcclxuICAgICAgcHJvZ3Jlc3M6IGV2ZW50LnRvdGFsXHJcbiAgICAgICAgPyBNYXRoLnJvdW5kKCgxMDAgKiBldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwpXHJcbiAgICAgICAgOiB1cGxvYWQucHJvZ3Jlc3MsXHJcbiAgICAgIHN0YXRlOiAncHJvZ3Jlc3MnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlmIChpc0h0dHBSZXNwb25zZShldmVudCkpIHtcclxuICAgIHJldHVybiBuZXcgVXBsb2FkRXZlbnQoe1xyXG4gICAgICBwcm9ncmVzczogMTAwLFxyXG4gICAgICBzdGF0ZTogJ2RvbmUnLFxyXG4gICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIHVwbG9hZFxyXG59XHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRFdmVudCB7XHJcbiAgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcclxuICBwcm9ncmVzczogbnVtYmVyO1xyXG4gIC8vIGJ5dGVzXHJcbiAgdG90YWw6IG51bWJlcjtcclxuICBzdGF0ZTogJ3BlbmRpbmcnIHwgJ3Byb2dyZXNzJyB8ICdkb25lJztcclxuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7IH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVwb3J0cHJvZ3Jlc3MoZmlsZW5hbWU6IHN0cmluZyk6IChzb3VyY2U6IE9ic2VydmFibGU8QXR0YWNobWVudD4pID0+IE9ic2VydmFibGU8QXR0YWNobWVudD4ge1xyXG4gIHJldHVybiAoc291cmNlOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+KSA9PlxyXG4gICAgc291cmNlLnBpcGUobWFwKHIgPT4ge1xyXG4gICAgICAvL2lmIChldmVudCBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpIHtcclxuICAgICAgLy8gIG9ic2VydmUubmV4dChuZXcgVXBsb2FkRXZlbnQoXHJcbiAgICAgIC8vICAgIGZpbGUubmFtZSxcclxuICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLmxvYWRlZCxcclxuICAgICAgLy8gICAgKGV2ZW50IGFzIFByb2dyZXNzRXZlbnQpLnRvdGFsXHJcbiAgICAgIC8vICApKTtcclxuICAgICAgLy99IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgIC8vICBjb25zdCByZXMgPSBldmVudCBhcyBIdHRwUmVzcG9uc2U8YW55PjtcclxuICAgICAgLy8gIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgLy8gICAgY29uc3QgbW9kZWwgPSByZXMuYm9keSBhcyBBdHRhY2htZW50O1xyXG4gICAgICAvLyAgICBvYnNlcnZlLm5leHQobW9kZWwpO1xyXG4gICAgICAvLyAgfVxyXG4gICAgICAvLyAgZWxzZVxyXG4gICAgICAvLyAgICBvYnNlcnZlLmVycm9yKHsgc3RhdHVzOiByZXMuc3RhdHVzLCBlcnJvcjogcmVzLmJvZHkgfSk7XHJcbiAgICAgIC8vICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0UHJvZ3Jlc3MoYXR0YWNobWVudDogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8QXR0YWNobWVudD4pID0+IG5ldyBPYnNlcnZhYmxlKG9ic2VydmUgPT4ge1xyXG4gICAgc291cmNlLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgLy9UT0RPIHByb2dyZXNzXHJcbiAgICAgICAgICAvL2lmIChhIGluc3RhbmNlb2YgVXBsb2FkRXZlbnQpIHtcclxuICAgICAgICAgIC8vICBPYmplY3QuYXNzaWduKGl0ZW0sIHtcclxuICAgICAgICAgIC8vICAgIHByb2dyZXNzOiBhLmxvYWRlZCAvIGEudG90YWxcclxuICAgICAgICAgIC8vICB9KTtcclxuICAgICAgICAgIC8vICByZXR1cm47XHJcbiAgICAgICAgICAvL31cclxuICAgICAgb2JzZXJ2ZS5uZXh0KHIpO1xyXG4gICAgICBvYnNlcnZlLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgfSwgZSA9PiBvYnNlcnZlLmVycm9yKGUpKTtcclxuICB9KTtcclxufVxyXG4iXX0=
@@ -17,13 +17,13 @@ export class NoneComponent {
17
17
  this.isMobile = isMobile();
18
18
  }
19
19
  }
20
- NoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- NoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: NoneComponent, selector: "bizdoc-none", inputs: { title: "title", subtitle: "subtitle", icon: "icon" }, ngImport: i0, template: `<div class="none" @none>
20
+ NoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ NoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: NoneComponent, selector: "bizdoc-none", inputs: { title: "title", subtitle: "subtitle", icon: "icon" }, ngImport: i0, template: `<div class="none" @none>
22
22
  <h4 class="mat-title">{{title|translate}}</h4>
23
23
  <mat-icon class="icon">{{icon}}</mat-icon>
24
24
  <h5 class="mat-body-2" *ngIf='subtitle' [innerHTML]='subtitle|translate|sanitizeHtml'></h5>
25
25
  </div>`, isInline: true, styles: [".none{align-items:center;display:flex;flex-direction:column;opacity:.2;padding-top:2em;cursor:default}.none .icon{font-size:56px;height:auto;width:auto}.none h5{padding:0 8px}.none h5 ::ng-deep i.material-icons{vertical-align:text-bottom;font-size:initial}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3.TranslatePipe, "sanitizeHtml": i4.SanitizeHtmlPipe }, animations: [noneAnimation] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: NoneComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NoneComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'bizdoc-none', template: `<div class="none" @none>
29
29
  <h4 class="mat-title">{{title|translate}}</h4>
@@ -16,9 +16,9 @@ export class ActionPipe {
16
16
  return `_${value}`;
17
17
  }
18
18
  }
19
- ActionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ActionPipe, deps: [{ token: i1.SessionService }], target: i0.ɵɵFactoryTarget.Pipe });
20
- ActionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ActionPipe, name: "action" });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: ActionPipe, decorators: [{
19
+ ActionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActionPipe, deps: [{ token: i1.SessionService }], target: i0.ɵɵFactoryTarget.Pipe });
20
+ ActionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActionPipe, name: "action" });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActionPipe, decorators: [{
22
22
  type: Pipe,
23
23
  args: [{ name: 'action' }]
24
24
  }], ctorParameters: function () { return [{ type: i1.SessionService }]; } });
@@ -54,9 +54,9 @@ export class CalendarPipe {
54
54
  CalendarPipe.refs = 0;
55
55
  CalendarPipe.timer = null;
56
56
  CalendarPipe.midnight = null;
57
- CalendarPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CalendarPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Pipe });
58
- CalendarPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CalendarPipe, name: "amCalendar", pure: false });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: CalendarPipe, decorators: [{
57
+ CalendarPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CalendarPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Pipe });
58
+ CalendarPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CalendarPipe, name: "amCalendar", pure: false });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CalendarPipe, decorators: [{
60
60
  type: Pipe,
61
61
  args: [{
62
62
  name: 'amCalendar',
@@ -10,9 +10,9 @@ export class DateFormatPipe {
10
10
  return dayjs(value).format(args[0]);
11
11
  }
12
12
  }
13
- DateFormatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
- DateFormatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DateFormatPipe, name: "amDateFormat" });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DateFormatPipe, decorators: [{
13
+ DateFormatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
+ DateFormatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DateFormatPipe, name: "amDateFormat" });
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DateFormatPipe, decorators: [{
16
16
  type: Pipe,
17
17
  args: [{ name: 'amDateFormat' }]
18
18
  }], ctorParameters: function () { return []; } });
@@ -20,9 +20,9 @@ export class AgoPipe {
20
20
  return this._translate.get('YearsAgo', Math.round(months / 12));
21
21
  }
22
22
  }
23
- AgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AgoPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
24
- AgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AgoPipe, name: "amMiniAgo" });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: AgoPipe, decorators: [{
23
+ AgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AgoPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
24
+ AgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AgoPipe, name: "amMiniAgo" });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AgoPipe, decorators: [{
26
26
  type: Pipe,
27
27
  args: [{ name: 'amMiniAgo' }]
28
28
  }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
@@ -53,9 +53,9 @@ export class DateRangePipe {
53
53
  }
54
54
  }
55
55
  }
56
- DateRangePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DateRangePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
57
- DateRangePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DateRangePipe, name: "dateRange" });
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DateRangePipe, decorators: [{
56
+ DateRangePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DateRangePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
57
+ DateRangePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DateRangePipe, name: "dateRange" });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DateRangePipe, decorators: [{
59
59
  type: Pipe,
60
60
  args: [{ name: 'dateRange' }]
61
61
  }] });
@@ -6,9 +6,9 @@ export class DifferencePipe {
6
6
  return dayjs(value).diff(args[0], args[1]);
7
7
  }
8
8
  }
9
- DifferencePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DifferencePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- DifferencePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DifferencePipe, name: "amDifference" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DifferencePipe, decorators: [{
9
+ DifferencePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DifferencePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ DifferencePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DifferencePipe, name: "amDifference" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: DifferencePipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'amDifference' }]
14
14
  }] });