@scion/workbench 18.0.0-beta.1 → 18.0.0-beta.10

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 (275) hide show
  1. package/_index.scss +7 -5
  2. package/design/_workbench-global-styles.scss +18 -0
  3. package/design/_workbench-icon-font.scss +1 -1
  4. package/design/_workbench-popup-global-styles.scss +1 -1
  5. package/design/{_workbench-view-drag-image-global-styles.scss → _workbench-view-global-styles.scss} +1 -2
  6. package/esm2022/lib/common/class-list.mjs +67 -29
  7. package/esm2022/lib/common/math.util.mjs +16 -0
  8. package/esm2022/lib/common/objects.util.mjs +7 -1
  9. package/esm2022/lib/common/operators.mjs +1 -12
  10. package/esm2022/lib/common/uid.util.mjs +22 -0
  11. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +85 -28
  12. package/esm2022/lib/content-projection/workbench-element-references.mjs +32 -0
  13. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -8
  14. package/esm2022/lib/dialog/movable.directive.mjs +3 -3
  15. package/esm2022/lib/dialog/resizable.directive.mjs +3 -3
  16. package/esm2022/lib/dialog/workbench-dialog.component.mjs +25 -23
  17. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  18. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +98 -60
  19. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +26 -23
  20. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  21. package/esm2022/lib/executor/single-task-executor.mjs +9 -19
  22. package/esm2022/lib/filter-field/filter-field.component.mjs +5 -5
  23. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +8 -18
  24. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +18 -21
  25. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  26. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v6.model.mjs +11 -0
  27. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +4 -4
  28. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  29. package/esm2022/lib/layout/migration/workbench-layout-migration-v6.service.mjs +59 -0
  30. package/esm2022/lib/layout/stringifier.mjs +70 -0
  31. package/esm2022/lib/layout/workbench-layout.component.mjs +18 -22
  32. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  33. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  34. package/esm2022/lib/layout/workbench-layout.service.mjs +26 -24
  35. package/esm2022/lib/layout/workbench-layouts.util.mjs +1 -9
  36. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +19 -27
  37. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -2
  38. package/esm2022/lib/layout//311/265workbench-layout.mjs +73 -62
  39. package/esm2022/lib/logging/logging-support.mjs +7 -13
  40. package/esm2022/lib/logging//311/265logger.mjs +10 -10
  41. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +7 -6
  42. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  43. package/esm2022/lib/message-box/workbench-message-box.component.mjs +2 -2
  44. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +3 -2
  45. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +22 -6
  46. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +28 -21
  47. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +3 -3
  48. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +11 -1
  49. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  50. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +5 -4
  51. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +6 -10
  52. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +18 -9
  53. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +7 -6
  54. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +3 -3
  55. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +15 -13
  56. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +3 -2
  57. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +6 -11
  58. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  59. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  60. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  61. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  62. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -3
  63. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +11 -12
  64. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +12 -28
  65. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  66. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +11 -27
  67. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +91 -71
  68. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  69. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +5 -4
  70. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +18 -16
  71. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +30 -8
  72. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  73. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +26 -8
  74. package/esm2022/lib/notification/notification-list.component.mjs +4 -8
  75. package/esm2022/lib/notification/notification.component.mjs +4 -5
  76. package/esm2022/lib/notification/notification.service.mjs +5 -4
  77. package/esm2022/lib/page-not-found/page-not-found.component.mjs +5 -7
  78. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +11 -19
  79. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  80. package/esm2022/lib/part/part-bar/part-bar.component.mjs +333 -264
  81. package/esm2022/lib/part/part-portal.pipe.mjs +8 -8
  82. package/esm2022/lib/part/part.component.mjs +33 -42
  83. package/esm2022/lib/part/view-context-menu/text.component.mjs +16 -12
  84. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -6
  85. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +2 -2
  86. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +48 -49
  87. package/esm2022/lib/part/view-list/view-list.component.mjs +41 -48
  88. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +22 -26
  89. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +15 -17
  90. package/esm2022/lib/part/view-tab/view-tab.component.mjs +99 -110
  91. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -4
  92. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +16 -17
  93. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  94. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  95. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  96. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  97. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +3 -3
  98. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  99. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  100. package/esm2022/lib/perspective/workbench-perspective.service.mjs +71 -62
  101. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +2 -2
  102. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +62 -47
  103. package/esm2022/lib/popup/popup.component.mjs +3 -3
  104. package/esm2022/lib/popup/popup.config.mjs +27 -25
  105. package/esm2022/lib/popup/popup.service.mjs +169 -174
  106. package/esm2022/lib/portal/wb-component-portal.mjs +18 -17
  107. package/esm2022/lib/public_api.mjs +1 -1
  108. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  109. package/esm2022/lib/routing/public_api.mjs +2 -2
  110. package/esm2022/lib/routing/routing.model.mjs +1 -1
  111. package/esm2022/lib/routing/routing.util.mjs +215 -0
  112. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +110 -0
  113. package/esm2022/lib/routing/workbench-dialog-differ.mjs +3 -3
  114. package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -10
  115. package/esm2022/lib/routing/workbench-message-box-differ.mjs +3 -3
  116. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  117. package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
  118. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  119. package/esm2022/lib/routing/workbench-url-observer.service.mjs +140 -148
  120. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  121. package/esm2022/lib/routing//311/265workbench-router.service.mjs +119 -74
  122. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  123. package/esm2022/lib/startup/workbench-launcher.service.mjs +22 -10
  124. package/esm2022/lib/testing/workbench.provider.mjs +2 -2
  125. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +15 -19
  126. package/esm2022/lib/view/public_api.mjs +1 -2
  127. package/esm2022/lib/view/view-move-handler.service.mjs +71 -56
  128. package/esm2022/lib/view/view-portal.pipe.mjs +7 -7
  129. package/esm2022/lib/view/view.component.mjs +54 -42
  130. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  131. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  132. package/esm2022/lib/view//311/265workbench-view.model.mjs +183 -153
  133. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  134. package/esm2022/lib/view-dnd/view-drag.service.mjs +87 -71
  135. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +6 -6
  136. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +6 -6
  137. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +43 -56
  138. package/esm2022/lib/workbench-config.mjs +2 -2
  139. package/esm2022/lib/workbench-id.mjs +3 -3
  140. package/esm2022/lib/workbench.component.mjs +66 -54
  141. package/esm2022/lib/workbench.constants.mjs +1 -5
  142. package/esm2022/lib/workbench.model.mjs +1 -1
  143. package/esm2022/lib/workbench.provider.mjs +3 -9
  144. package/esm2022/lib/workbench.service.mjs +1 -1
  145. package/esm2022/lib//311/265workbench.service.mjs +38 -42
  146. package/fesm2022/scion-workbench.mjs +4054 -3276
  147. package/fesm2022/scion-workbench.mjs.map +1 -1
  148. package/lib/common/class-list.d.ts +35 -22
  149. package/lib/common/math.util.d.ts +7 -0
  150. package/lib/common/objects.util.d.ts +4 -0
  151. package/lib/common/operators.d.ts +1 -6
  152. package/lib/common/uid.util.d.ts +9 -0
  153. package/lib/content-projection/content-as-overlay.component.d.ts +39 -22
  154. package/lib/content-projection/workbench-element-references.d.ts +13 -0
  155. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  156. package/lib/dialog/workbench-dialog.d.ts +57 -13
  157. package/lib/dialog//311/265workbench-dialog.d.ts +38 -24
  158. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  159. package/lib/executor/latest-task-executor.d.ts +26 -0
  160. package/lib/executor/single-task-executor.d.ts +5 -8
  161. package/lib/filter-field/filter-field.component.d.ts +1 -1
  162. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  163. package/lib/layout/main-area-layout/main-area-layout.component.d.ts +0 -4
  164. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +36 -0
  165. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  166. package/lib/layout/migration/workbench-layout-migration-v5.service.d.ts +12 -0
  167. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  168. package/lib/layout/stringifier.d.ts +26 -0
  169. package/lib/layout/workbench-layout.component.d.ts +4 -5
  170. package/lib/layout/workbench-layout.d.ts +9 -6
  171. package/lib/layout/workbench-layout.model.d.ts +4 -3
  172. package/lib/layout/workbench-layout.service.d.ts +14 -16
  173. package/lib/layout/workbench-layouts.util.d.ts +0 -6
  174. package/lib/layout/workench-layout-serializer.service.d.ts +13 -16
  175. package/lib/layout//311/265workbench-layout.d.ts +18 -19
  176. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  177. package/lib/logging//311/265logger.d.ts +2 -3
  178. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  179. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  180. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  181. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +3 -6
  182. package/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.d.ts +2 -1
  183. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  184. package/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.d.ts +2 -1
  185. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  186. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  187. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  188. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  189. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  190. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  191. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -12
  192. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +23 -33
  193. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  194. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  195. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  196. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  197. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  198. package/lib/notification/notification-list.component.d.ts +0 -2
  199. package/lib/page-not-found/page-not-found.component.d.ts +1 -0
  200. package/lib/part/part-action-bar/part-action-bar.component.d.ts +3 -4
  201. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  202. package/lib/part/part-bar/part-bar.component.d.ts +73 -63
  203. package/lib/part/part-portal.pipe.d.ts +3 -5
  204. package/lib/part/part.component.d.ts +9 -12
  205. package/lib/part/view-context-menu/text.component.d.ts +3 -4
  206. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  207. package/lib/part/view-context-menu/view-menu.service.d.ts +13 -17
  208. package/lib/part/view-list/view-list.component.d.ts +8 -21
  209. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  210. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  211. package/lib/part/view-tab/view-tab.component.d.ts +19 -29
  212. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  213. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  214. package/lib/part/workbench-part.model.d.ts +8 -27
  215. package/lib/part/workbench-part.registry.d.ts +3 -26
  216. package/lib/part//311/265workbench-part.model.d.ts +23 -17
  217. package/lib/perspective/workbench-perspective.model.d.ts +18 -25
  218. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  219. package/lib/perspective/workbench-perspective.service.d.ts +16 -14
  220. package/lib/perspective/workench-perspective-serializer.service.d.ts +1 -1
  221. package/lib/perspective//311/265workbench-perspective.model.d.ts +30 -21
  222. package/lib/popup/popup.config.d.ts +11 -10
  223. package/lib/popup/popup.service.d.ts +15 -28
  224. package/lib/portal/wb-component-portal.d.ts +21 -5
  225. package/lib/public_api.d.ts +1 -1
  226. package/lib/registry/workbench-object-registry.d.ts +10 -6
  227. package/lib/routing/public_api.d.ts +2 -2
  228. package/lib/routing/routing.model.d.ts +25 -13
  229. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +28 -1
  230. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +10 -3
  231. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  232. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  233. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  234. package/lib/routing/workbench-url-observer.service.d.ts +31 -55
  235. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  236. package/lib/routing//311/265workbench-router.service.d.ts +22 -18
  237. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  238. package/lib/testing/workbench.provider.d.ts +3 -1
  239. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  240. package/lib/view/public_api.d.ts +0 -1
  241. package/lib/view/view-move-handler.service.d.ts +16 -14
  242. package/lib/view/view-portal.pipe.d.ts +1 -3
  243. package/lib/view/view.component.d.ts +21 -12
  244. package/lib/view/workbench-view.model.d.ts +88 -36
  245. package/lib/view/workbench-view.registry.d.ts +3 -27
  246. package/lib/view//311/265workbench-view.model.d.ts +62 -71
  247. package/lib/view-dnd/view-drag.service.d.ts +79 -49
  248. package/lib/view-dnd/view-drop-placeholder-renderer.service.d.ts +1 -1
  249. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +12 -36
  250. package/lib/workbench-config.d.ts +19 -7
  251. package/lib/workbench.component.d.ts +16 -30
  252. package/lib/workbench.constants.d.ts +0 -5
  253. package/lib/workbench.model.d.ts +31 -3
  254. package/lib/workbench.service.d.ts +58 -56
  255. package/lib//311/265workbench.service.d.ts +18 -31
  256. package/package.json +5 -5
  257. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  258. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  259. package/esm2022/lib/common/uuid.util.mjs +0 -17
  260. package/esm2022/lib/content-projection/content-projection.directive.mjs +0 -101
  261. package/esm2022/lib/content-projection/view-container.reference.mjs +0 -68
  262. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  263. package/esm2022/lib/page-not-found/format-url.pipe.mjs +0 -26
  264. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  265. package/esm2022/lib/routing/router.util.mjs +0 -126
  266. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  267. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  268. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  269. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  270. package/lib/common/uuid.util.d.ts +0 -8
  271. package/lib/content-projection/content-projection.directive.d.ts +0 -30
  272. package/lib/content-projection/view-container.reference.d.ts +0 -42
  273. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
  274. package/lib/page-not-found/format-url.pipe.d.ts +0 -11
  275. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -7,9 +7,8 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { createComponent, EnvironmentInjector, inject, Injector } from '@angular/core';
10
+ import { assertNotInReactiveContext, createComponent, EnvironmentInjector, inject, Injector, signal } from '@angular/core';
11
11
  import { Logger, LoggerNames } from '../logging';
12
- import { BehaviorSubject } from 'rxjs';
13
12
  /**
14
13
  * Like the Angular CDK 'ComponentPortal' but does not destroy the component on detach.
15
14
  *
@@ -25,7 +24,7 @@ export class WbComponentPortal {
25
24
  this._componentType = _componentType;
26
25
  this._options = _options;
27
26
  this._logger = inject(Logger);
28
- this._attached$ = new BehaviorSubject(false);
27
+ this._attached = signal(false);
29
28
  // Do not construct the component here but the time attaching it to the Angular component tree. See the comment above.
30
29
  }
31
30
  /**
@@ -51,6 +50,8 @@ export class WbComponentPortal {
51
50
  throw Error(`[PortalConstructError] Component already constructed. [component=${this._componentType}]`);
52
51
  }
53
52
  this._componentRef = this.createComponent(injectionContext);
53
+ // Trigger change detection to complete the initialization of the component, necessary for components detached from the Angular component tree.
54
+ this._componentRef.changeDetectorRef.detectChanges();
54
55
  }
55
56
  /**
56
57
  * Attaches this portal to the given {@link ViewContainerRef} according to the following rules:
@@ -60,18 +61,20 @@ export class WbComponentPortal {
60
61
  * - If already attached to a different view container, detaches it first.
61
62
  */
62
63
  attach(viewContainerRef) {
64
+ assertNotInReactiveContext(this.attach);
63
65
  if (this.isAttachedTo(viewContainerRef)) {
64
66
  return;
65
67
  }
66
- if (this.isAttached) {
68
+ if (this.attached()) {
67
69
  this.detach();
68
70
  }
69
71
  this._viewContainerRef = viewContainerRef;
70
72
  this._componentRef = this._componentRef || this.createComponent(this._viewContainerRef.injector);
73
+ this._logger.debug(() => 'Attaching portal', LoggerNames.LIFECYCLE, this._componentRef);
71
74
  this._componentRef.changeDetectorRef.reattach();
72
75
  this._viewContainerRef.insert(this._componentRef.hostView);
73
- this._attached$.next(true);
74
- this._logger.debug(() => 'Attaching portal', LoggerNames.LIFECYCLE, this._componentRef);
76
+ this._attached.set(true);
77
+ this._componentRef.instance?.onAttach();
75
78
  }
76
79
  /**
77
80
  * Detaches this portal from its view container without destroying it. Does nothing if not attached.
@@ -80,23 +83,22 @@ export class WbComponentPortal {
80
83
  * so it will not be checked for changes until it is reattached.
81
84
  */
82
85
  detach() {
83
- if (!this.isAttached) {
86
+ assertNotInReactiveContext(this.detach);
87
+ if (!this.attached()) {
84
88
  return;
85
89
  }
86
90
  this._logger.debug(() => 'Detaching portal', LoggerNames.LIFECYCLE, this._componentRef);
91
+ this._componentRef.instance?.onDetach();
87
92
  const index = this._viewContainerRef.indexOf(this._componentRef.hostView);
88
93
  this._viewContainerRef.detach(index);
89
94
  this._componentRef.changeDetectorRef.detach();
90
- this._attached$.next(false);
95
+ this._attached.set(false);
91
96
  }
92
97
  get isConstructed() {
93
98
  return !!this._componentRef;
94
99
  }
95
- get isAttached() {
96
- return this._attached$.value;
97
- }
98
100
  isAttachedTo(viewContainerRef) {
99
- return this._viewContainerRef === viewContainerRef && this.isAttached;
101
+ return this._viewContainerRef === viewContainerRef && this.attached();
100
102
  }
101
103
  get isDestroyed() {
102
104
  return this._componentRef === null;
@@ -110,14 +112,13 @@ export class WbComponentPortal {
110
112
  }
111
113
  return this._componentRef;
112
114
  }
113
- get attached$() {
114
- return this._attached$;
115
+ get attached() {
116
+ return this._attached;
115
117
  }
116
118
  onDestroy() {
117
119
  this._componentRef = null;
118
120
  this._viewContainerRef = null;
119
- this._attached$.next(false);
120
- this._attached$.complete();
121
+ this._attached.set(false);
121
122
  }
122
123
  /**
123
124
  * Destroys the component instance and all the data structures associated with it.
@@ -126,4 +127,4 @@ export class WbComponentPortal {
126
127
  this._componentRef?.destroy();
127
128
  }
128
129
  }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ItY29tcG9uZW50LXBvcnRhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BvcnRhbC93Yi1jb21wb25lbnQtcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBR0gsT0FBTyxFQUFlLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRWpEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFPNUIsWUFBb0IsY0FBZ0MsRUFBVSxRQUF3QjtRQUFsRSxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUg5RSxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUd2RCxzSEFBc0g7SUFDeEgsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZUFBZSxDQUFDLGVBQXlCO1FBQy9DLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hELGVBQWUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUMvQixJQUFJLEVBQUUsMkJBQTJCO2dCQUNqQyxNQUFNLEVBQUUsZUFBZTtnQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxJQUFJLEVBQUU7YUFDMUMsQ0FBQztZQUNGLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7U0FDOUQsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxD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SSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtDb21wb25lbnRSZWYsIGNyZWF0ZUNvbXBvbmVudCwgRW52aXJvbm1lbnRJbmplY3RvciwgaW5qZWN0LCBJbmplY3RvciwgUHJvdmlkZXIsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBMaWtlIHRoZSBBbmd1bGFyIENESyAnQ29tcG9uZW50UG9ydGFsJyBidXQgZG9lcyBub3QgZGVzdHJveSB0aGUgY29tcG9uZW50IG9uIGRldGFjaC5cbiAqXG4gKiBJTVBPUlRBTlQ6IEluIG9yZGVyIGZvciB0aGUgY29tcG9uZW50IHRvIGhhdmUgdGhlIFwiY29ycmVjdFwiIGluamVjdGlvbiBjb250ZXh0LCBjb25zdHJ1Y3QgaXQgdGhlIHRpbWUgYXR0YWNoaW5nIGl0IHRvIHRoZSBBbmd1bGFyIGNvbXBvbmVudCB0cmVlLFxuICogb3IgYnkgY2FsbGluZyB7QGxpbmsgY3JlYXRlQ29tcG9uZW50RnJvbUluamVjdGlvbkNvbnRleHR9LiBUaGUgXCJjb3JyZWN0XCIgaW5qZWN0aW9uIGNvbnRleHQgaXMgY3J1Y2lhbCwgZm9yIGV4YW1wbGUsIGlmIHRoZSBwb3J0YWwgaXMgZGlzcGxheWVkXG4gKiBpbiBhIHJvdXRlciBvdXRsZXQsIHNvIHRoYXQgY2hpbGQgb3V0bGV0cyBjYW4gcmVnaXN0ZXIgd2l0aCB0aGVpciBsb2dpY2FsIHBhcmVudCBvdXRsZXQuIFRoZSBBbmd1bGFyIHJvdXRlciB1c2VzIHRoZSBsb2dpY2FsIG91dGxldCBoaWVyYXJjaHkgdG9cbiAqIHJlc29sdmUgYW5kIGFjdGl2YXRlIGNoaWxkIHJvdXRlcy5cbiAqXG4gKiBAc2VlIFdiQ29tcG9uZW50UG9ydGFsXG4gKi9cbmV4cG9ydCBjbGFzcyBXYkNvbXBvbmVudFBvcnRhbDxUID0gYW55PiB7XG5cbiAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2NvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFQ+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfbG9nZ2VyID0gaW5qZWN0KExvZ2dlcik7XG4gIHByaXZhdGUgX2F0dGFjaGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8VD4sIHByaXZhdGUgX29wdGlvbnM/OiBQb3J0YWxPcHRpb25zKSB7XG4gICAgLy8gRG8gbm90IGNvbnN0cnVjdCB0aGUgY29tcG9uZW50IGhlcmUgYnV0IHRoZSB0aW1lIGF0dGFjaGluZyBpdCB0byB0aGUgQW5ndWxhciBjb21wb25lbnQgdHJlZS4gU2VlIHRoZSBjb21tZW50IGFib3ZlLlxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIHBvcnRhbCdzIGNvbXBvbmVudCB1c2luZyBnaXZlbiBpbmplY3Rpb24gY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ29tcG9uZW50KGVsZW1lbnRJbmplY3RvcjogSW5qZWN0b3IpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudCh0aGlzLl9jb21wb25lbnRUeXBlLCB7XG4gICAgICBlbGVtZW50SW5qZWN0b3I6IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIG5hbWU6ICdXYkNvbXBvbmVudFBvcnRhbEluamVjdG9yJyxcbiAgICAgICAgcGFyZW50OiBlbGVtZW50SW5qZWN0b3IsXG4gICAgICAgIHByb3ZpZGVyczogdGhpcy5fb3B0aW9ucz8ucHJvdmlkZXJzIHx8IFtdLFxuICAgICAgfSksXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBlbGVtZW50SW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpLFxuICAgIH0pO1xuICAgIGNvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5vbkRlc3Ryb3koKSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSBwb3J0YWwncyBjb21wb25lbnQgdXNpbmcgdGhlIGdpdmVuIGluamVjdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUNvbXBvbmVudEZyb21JbmplY3Rpb25Db250ZXh0KGluamVjdGlvbkNvbnRleHQ6IEluamVjdG9yKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDb25zdHJ1Y3RlZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtQb3J0YWxDb25zdHJ1Y3RFcnJvcl0gQ29tcG9uZW50IGFscmVhZHkgY29uc3RydWN0ZWQuIFtjb21wb25lbnQ9JHt0aGlzLl9jb21wb25lbnRUeXBlfV1gKTtcbiAgICB9XG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVDb21wb25lbnQoaW5qZWN0aW9uQ29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoZXMgdGhpcyBwb3J0YWwgdG8gdGhlIGdpdmVuIHtAbGluayBWaWV3Q29udGFpbmVyUmVmfSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlczpcbiAgICpcbiAgICogLSBJZiB0aGUgY29tcG9uZW50IGlzIG5vdCB5ZXQgY29uc3RydWN0ZWQsIGNvbnN0cnVjdHMgaXQgYmFzZWQgb24gdGhlIGdpdmVuIHZpZXcgY29udGFpbmVyJ3MgaW5qZWN0aW9uIGNvbnRleHQuXG4gICAqIC0gSWYgYWxyZWFkeSBhdHRhY2hlZCB0byB0aGUgZ2l2ZW4gdmlldyBjb250YWluZXIsIGRvZXMgbm90aGluZy5cbiAgICogLSBJZiBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IHZpZXcgY29udGFpbmVyLCBkZXRhY2hlcyBpdCBmaXJzdC5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2godmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQXR0YWNoZWRUbyh2aWV3Q29udGFpbmVyUmVmKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0F0dGFjaGVkKSB7XG4gICAgICB0aGlzLmRldGFjaCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYgPSB2aWV3Q29udGFpbmVyUmVmO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMuX2NvbXBvbmVudFJlZiB8fCB0aGlzLmNyZWF0ZUNvbXBvbmVudCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluamVjdG9yKTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmluc2VydCh0aGlzLl9jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIHRoaXMuX2F0dGFjaGVkJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnQXR0YWNoaW5nIHBvcnRhbCcsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSwgdGhpcy5fY29tcG9uZW50UmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyB0aGlzIHBvcnRhbCBmcm9tIGl0cyB2aWV3IGNvbnRhaW5lciB3aXRob3V0IGRlc3Ryb3lpbmcgaXQuIERvZXMgbm90aGluZyBpZiBub3QgYXR0YWNoZWQuXG4gICAqXG4gICAqIFRoZSBwb3J0YWwgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00gYW5kIGl0cyBjaGFuZ2UgZGV0ZWN0b3IgZGV0YWNoZWQgZnJvbSB0aGUgQW5ndWxhciBjaGFuZ2UgZGV0ZWN0b3IgdHJlZSxcbiAgICogc28gaXQgd2lsbCBub3QgYmUgY2hlY2tlZCBmb3IgY2hhbmdlcyB1bnRpbCBpdCBpcyByZWF0dGFjaGVkLlxuICAgKi9cbiAgcHVibGljIGRldGFjaCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBdHRhY2hlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnRGV0YWNoaW5nIHBvcnRhbCcsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSwgdGhpcy5fY29tcG9uZW50UmVmKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYhLmluZGV4T2YodGhpcy5fY29tcG9uZW50UmVmIS5ob3N0Vmlldyk7XG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZiEuZGV0YWNoKGluZGV4KTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYhLmNoYW5nZURldGVjdG9yUmVmLmRldGFjaCgpO1xuICAgIHRoaXMuX2F0dGFjaGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDb25zdHJ1Y3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9jb21wb25lbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc0F0dGFjaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRhY2hlZCQudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgaXNBdHRhY2hlZFRvKHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0NvbnRhaW5lclJlZiA9PT0gdmlld0NvbnRhaW5lclJlZiAmJiB0aGlzLmlzQXR0YWNoZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWYgPT09IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbXBvbmVudFJlZigpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYgPT09IG51bGwpIHtcbiAgICAgIHRocm93IEVycm9yKCdbTnVsbFBvcnRhbEVycm9yXSBQb3J0YWwgZGVzdHJveWVkLicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29tcG9uZW50UmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IEVycm9yKCdbTnVsbFBvcnRhbEVycm9yXSBDb21wb25lbnQgbm90IGNvbnN0cnVjdGVkIHlldC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXR0YWNoZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRhY2hlZCQ7XG4gIH1cblxuICBwcml2YXRlIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYgPSBudWxsO1xuICAgIHRoaXMuX2F0dGFjaGVkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLl9hdHRhY2hlZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgY29tcG9uZW50IGluc3RhbmNlIGFuZCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggaXQuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRyb2xzIGluc3RhbnRpYXRpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3J0YWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVycyByZWdpc3RlcmVkIHdpdGggdGhlIGluamVjdG9yIGZvciB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdmlkZXJzPzogUHJvdmlkZXJbXTtcbn1cbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ItY29tcG9uZW50LXBvcnRhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3BvcnRhbC93Yi1jb21wb25lbnQtcG9ydGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBR0gsT0FBTyxFQUFDLDBCQUEwQixFQUFnQixlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBb0IsTUFBTSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUMzSyxPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUUvQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLFlBQW9CLGNBQWdDLEVBQVUsUUFBd0I7UUFBbEUsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFIOUUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBR2hDLHNIQUFzSDtJQUN4SCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlLENBQUMsZUFBeUI7UUFDL0MsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEQsZUFBZSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLE1BQU0sRUFBRSxlQUFlO2dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLElBQUksRUFBRTthQUMxQyxDQUFDO1lBQ0YsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztTQUM5RCxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFB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VyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDaEMsTUFBTSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHthc3NlcnROb3RJblJlYWN0aXZlQ29udGV4dCwgQ29tcG9uZW50UmVmLCBjcmVhdGVDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIGluamVjdCwgSW5qZWN0b3IsIFByb3ZpZGVyLCBTaWduYWwsIHNpZ25hbCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlciwgTG9nZ2VyTmFtZXN9IGZyb20gJy4uL2xvZ2dpbmcnO1xuXG4vKipcbiAqIExpa2UgdGhlIEFuZ3VsYXIgQ0RLICdDb21wb25lbnRQb3J0YWwnIGJ1dCBkb2VzIG5vdCBkZXN0cm95IHRoZSBjb21wb25lbnQgb24gZGV0YWNoLlxuICpcbiAqIElNUE9SVEFOVDogSW4gb3JkZXIgZm9yIHRoZSBjb21wb25lbnQgdG8gaGF2ZSB0aGUgXCJjb3JyZWN0XCIgaW5qZWN0aW9uIGNvbnRleHQsIGNvbnN0cnVjdCBpdCB0aGUgdGltZSBhdHRhY2hpbmcgaXQgdG8gdGhlIEFuZ3VsYXIgY29tcG9uZW50IHRyZWUsXG4gKiBvciBieSBjYWxsaW5nIHtAbGluayBjcmVhdGVDb21wb25lbnRGcm9tSW5qZWN0aW9uQ29udGV4dH0uIFRoZSBcImNvcnJlY3RcIiBpbmplY3Rpb24gY29udGV4dCBpcyBjcnVjaWFsLCBmb3IgZXhhbXBsZSwgaWYgdGhlIHBvcnRhbCBpcyBkaXNwbGF5ZWRcbiAqIGluIGEgcm91dGVyIG91dGxldCwgc28gdGhhdCBjaGlsZCBvdXRsZXRzIGNhbiByZWdpc3RlciB3aXRoIHRoZWlyIGxvZ2ljYWwgcGFyZW50IG91dGxldC4gVGhlIEFuZ3VsYXIgcm91dGVyIHVzZXMgdGhlIGxvZ2ljYWwgb3V0bGV0IGhpZXJhcmNoeSB0b1xuICogcmVzb2x2ZSBhbmQgYWN0aXZhdGUgY2hpbGQgcm91dGVzLlxuICpcbiAqIEBzZWUgV2JDb21wb25lbnRQb3J0YWxcbiAqL1xuZXhwb3J0IGNsYXNzIFdiQ29tcG9uZW50UG9ydGFsPFQgPSBhbnk+IHtcblxuICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sb2dnZXIgPSBpbmplY3QoTG9nZ2VyKTtcbiAgcHJpdmF0ZSBfYXR0YWNoZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8VD4sIHByaXZhdGUgX29wdGlvbnM/OiBQb3J0YWxPcHRpb25zKSB7XG4gICAgLy8gRG8gbm90IGNvbnN0cnVjdCB0aGUgY29tcG9uZW50IGhlcmUgYnV0IHRoZSB0aW1lIGF0dGFjaGluZyBpdCB0byB0aGUgQW5ndWxhciBjb21wb25lbnQgdHJlZS4gU2VlIHRoZSBjb21tZW50IGFib3ZlLlxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIHBvcnRhbCdzIGNvbXBvbmVudCB1c2luZyBnaXZlbiBpbmplY3Rpb24gY29udGV4dC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQ29tcG9uZW50KGVsZW1lbnRJbmplY3RvcjogSW5qZWN0b3IpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudCh0aGlzLl9jb21wb25lbnRUeXBlLCB7XG4gICAgICBlbGVtZW50SW5qZWN0b3I6IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIG5hbWU6ICdXYkNvbXBvbmVudFBvcnRhbEluamVjdG9yJyxcbiAgICAgICAgcGFyZW50OiBlbGVtZW50SW5qZWN0b3IsXG4gICAgICAgIHByb3ZpZGVyczogdGhpcy5fb3B0aW9ucz8ucHJvdmlkZXJzIHx8IFtdLFxuICAgICAgfSksXG4gICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBlbGVtZW50SW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpLFxuICAgIH0pO1xuICAgIGNvbXBvbmVudFJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5vbkRlc3Ryb3koKSk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSBwb3J0YWwncyBjb21wb25lbnQgdXNpbmcgdGhlIGdpdmVuIGluamVjdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUNvbXBvbmVudEZyb21JbmplY3Rpb25Db250ZXh0KGluamVjdGlvbkNvbnRleHQ6IEluamVjdG9yKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDb25zdHJ1Y3RlZCkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtQb3J0YWxDb25zdHJ1Y3RFcnJvcl0gQ29tcG9uZW50IGFscmVhZHkgY29uc3RydWN0ZWQuIFtjb21wb25lbnQ9JHt0aGlzLl9jb21wb25lbnRUeXBlfV1gKTtcbiAgICB9XG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gdGhpcy5jcmVhdGVDb21wb25lbnQoaW5qZWN0aW9uQ29udGV4dCk7XG4gICAgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIHRvIGNvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY29tcG9uZW50LCBuZWNlc3NhcnkgZm9yIGNvbXBvbmVudHMgZGV0YWNoZWQgZnJvbSB0aGUgQW5ndWxhciBjb21wb25lbnQgdHJlZS5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgcG9ydGFsIHRvIHRoZSBnaXZlbiB7QGxpbmsgVmlld0NvbnRhaW5lclJlZn0gYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcnVsZXM6XG4gICAqXG4gICAqIC0gSWYgdGhlIGNvbXBvbmVudCBpcyBub3QgeWV0IGNvbnN0cnVjdGVkLCBjb25zdHJ1Y3RzIGl0IGJhc2VkIG9uIHRoZSBnaXZlbiB2aWV3IGNvbnRhaW5lcidzIGluamVjdGlvbiBjb250ZXh0LlxuICAgKiAtIElmIGFscmVhZHkgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIHZpZXcgY29udGFpbmVyLCBkb2VzIG5vdGhpbmcuXG4gICAqIC0gSWYgYWxyZWFkeSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCB2aWV3IGNvbnRhaW5lciwgZGV0YWNoZXMgaXQgZmlyc3QuXG4gICAqL1xuICBwdWJsaWMgYXR0YWNoKHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpOiB2b2lkIHtcbiAgICBhc3NlcnROb3RJblJlYWN0aXZlQ29udGV4dCh0aGlzLmF0dGFjaCk7XG4gICAgaWYgKHRoaXMuaXNBdHRhY2hlZFRvKHZpZXdDb250YWluZXJSZWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmF0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMuZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZiA9IHZpZXdDb250YWluZXJSZWY7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gdGhpcy5fY29tcG9uZW50UmVmIHx8IHRoaXMuY3JlYXRlQ29tcG9uZW50KHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IpO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnQXR0YWNoaW5nIHBvcnRhbCcsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSwgdGhpcy5fY29tcG9uZW50UmVmKTtcblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5yZWF0dGFjaCgpO1xuICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5zZXJ0KHRoaXMuX2NvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgdGhpcy5fYXR0YWNoZWQuc2V0KHRydWUpO1xuICAgICh0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgT25BdHRhY2gpPy5vbkF0dGFjaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGFjaGVzIHRoaXMgcG9ydGFsIGZyb20gaXRzIHZpZXcgY29udGFpbmVyIHdpdGhvdXQgZGVzdHJveWluZyBpdC4gRG9lcyBub3RoaW5nIGlmIG5vdCBhdHRhY2hlZC5cbiAgICpcbiAgICogVGhlIHBvcnRhbCBpcyByZW1vdmVkIGZyb20gdGhlIERPTSBhbmQgaXRzIGNoYW5nZSBkZXRlY3RvciBkZXRhY2hlZCBmcm9tIHRoZSBBbmd1bGFyIGNoYW5nZSBkZXRlY3RvciB0cmVlLFxuICAgKiBzbyBpdCB3aWxsIG5vdCBiZSBjaGVja2VkIGZvciBjaGFuZ2VzIHVudGlsIGl0IGlzIHJlYXR0YWNoZWQuXG4gICAqL1xuICBwdWJsaWMgZGV0YWNoKCk6IHZvaWQge1xuICAgIGFzc2VydE5vdEluUmVhY3RpdmVDb250ZXh0KHRoaXMuZGV0YWNoKTtcbiAgICBpZiAoIXRoaXMuYXR0YWNoZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnRGV0YWNoaW5nIHBvcnRhbCcsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSwgdGhpcy5fY29tcG9uZW50UmVmKTtcbiAgICAodGhpcy5fY29tcG9uZW50UmVmIS5pbnN0YW5jZSBhcyBPbkRldGFjaCk/Lm9uRGV0YWNoKCk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmIS5pbmRleE9mKHRoaXMuX2NvbXBvbmVudFJlZiEuaG9zdFZpZXcpO1xuICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYhLmRldGFjaChpbmRleCk7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmIS5jaGFuZ2VEZXRlY3RvclJlZi5kZXRhY2goKTtcbiAgICB0aGlzLl9hdHRhY2hlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0NvbnN0cnVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2NvbXBvbmVudFJlZjtcbiAgfVxuXG4gIHB1YmxpYyBpc0F0dGFjaGVkVG8odmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3Q29udGFpbmVyUmVmID09PSB2aWV3Q29udGFpbmVyUmVmICYmIHRoaXMuYXR0YWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEZXN0cm95ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFJlZiA9PT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcG9uZW50UmVmKCk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZiA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tOdWxsUG9ydGFsRXJyb3JdIFBvcnRhbCBkZXN0cm95ZWQuJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1tOdWxsUG9ydGFsRXJyb3JdIENvbXBvbmVudCBub3QgY29uc3RydWN0ZWQgeWV0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50UmVmO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRhY2hlZCgpOiBTaWduYWw8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRhY2hlZDtcbiAgfVxuXG4gIHByaXZhdGUgb25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZiA9IG51bGw7XG4gICAgdGhpcy5fYXR0YWNoZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgY29tcG9uZW50IGluc3RhbmNlIGFuZCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggaXQuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb21wb25lbnRSZWY/LmRlc3Ryb3koKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRyb2xzIGluc3RhbnRpYXRpb24gb2YgdGhlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3J0YWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVycyByZWdpc3RlcmVkIHdpdGggdGhlIGluamVjdG9yIGZvciB0aGUgaW5zdGFudGlhdGlvbiBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdmlkZXJzPzogUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBMaWZlY3ljbGUgaG9vayBmb3IgY29tcG9uZW50IHJlbmRlcmVkIGJ5IHtAbGluayBXYkNvbXBvbmVudFBvcnRhbH0gd2hlbiBhdHRhY2hpbmcgdG8gdGhlIERPTS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkF0dGFjaCB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIGFmdGVyIGF0dGFjaGVkIHRoaXMgY29tcG9uZW50IHRvIHRoZSBET00uXG4gICAqL1xuICBvbkF0dGFjaCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIExpZmVjeWNsZSBob29rIGZvciBjb21wb25lbnQgcmVuZGVyZWQgYnkge0BsaW5rIFdiQ29tcG9uZW50UG9ydGFsfSB3aGVuIGRldGFjaGluZyBmcm9tIHRoZSBET00uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25EZXRhY2gge1xuXG4gIC8qKlxuICAgKiBNZXRob2QgaW52b2tlZCBiZWZvcmUgZGV0YWNoaW5nIHRoaXMgY29tcG9uZW50IGZyb20gdGhlIERPTS5cbiAgICovXG4gIG9uRGV0YWNoKCk6IHZvaWQ7XG59XG4iXX0=
@@ -29,4 +29,4 @@ export * from './startup/public_api';
29
29
  export * from './logging/public_api';
30
30
  export * from './storage/public_api';
31
31
  export * from './testing/public_api';
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsZUFBZSxFQUFzQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxlQUFlLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDMUUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBQywwQkFBMEIsRUFBMEIsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtXb3JrYmVuY2hDb25maWcsIE1lbnVJdGVtQ29uZmlnLCBWaWV3TWVudUl0ZW1zQ29uZmlnfSBmcm9tICcuL3dvcmtiZW5jaC1jb25maWcnO1xuZXhwb3J0IHtXb3JrYmVuY2hNb2R1bGUsIFdvcmtiZW5jaE1vZHVsZUNvbmZpZ30gZnJvbSAnLi93b3JrYmVuY2gubW9kdWxlJztcbmV4cG9ydCB7cHJvdmlkZVdvcmtiZW5jaH0gZnJvbSAnLi93b3JrYmVuY2gucHJvdmlkZXInO1xuZXhwb3J0IHtXb3JrYmVuY2hTZXJ2aWNlfSBmcm9tICcuL3dvcmtiZW5jaC5zZXJ2aWNlJztcbmV4cG9ydCB7V09SS0JFTkNIX0lEfSBmcm9tICcuL3dvcmtiZW5jaC1pZCc7XG5leHBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb24sIFdvcmtiZW5jaFRoZW1lLCBDYW5NYXRjaFBhcnRGbiwgV29ya2JlbmNoTWVudUl0ZW0sIFdvcmtiZW5jaE1lbnVJdGVtRmFjdG9yeUZuLCBDYW5DbG9zZX0gZnJvbSAnLi93b3JrYmVuY2gubW9kZWwnO1xuZXhwb3J0IHtXb3JrYmVuY2hDb21wb25lbnR9IGZyb20gJy4vd29ya2JlbmNoLmNvbXBvbmVudCc7XG5leHBvcnQge1ZJRVdfVEFCX1JFTkRFUklOR19DT05URVhULCBWaWV3VGFiUmVuZGVyaW5nQ29udGV4dH0gZnJvbSAnLi93b3JrYmVuY2guY29uc3RhbnRzJztcblxuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQvcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3BlcnNwZWN0aXZlL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJ0L3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3L3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlLWJveC9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24vcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3BvcHVwL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24vcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL21pY3JvZnJvbnRlbmQtcGxhdGZvcm0vcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXJ0dXAvcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcvcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2UvcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3Rlc3RpbmcvcHVibGljX2FwaSc7XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsZUFBZSxFQUFzQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxlQUFlLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDMUUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBQywwQkFBMEIsRUFBMEIsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtXb3JrYmVuY2hDb25maWcsIE1lbnVJdGVtQ29uZmlnLCBWaWV3TWVudUl0ZW1zQ29uZmlnfSBmcm9tICcuL3dvcmtiZW5jaC1jb25maWcnO1xuZXhwb3J0IHtXb3JrYmVuY2hNb2R1bGUsIFdvcmtiZW5jaE1vZHVsZUNvbmZpZ30gZnJvbSAnLi93b3JrYmVuY2gubW9kdWxlJztcbmV4cG9ydCB7cHJvdmlkZVdvcmtiZW5jaH0gZnJvbSAnLi93b3JrYmVuY2gucHJvdmlkZXInO1xuZXhwb3J0IHtXb3JrYmVuY2hTZXJ2aWNlfSBmcm9tICcuL3dvcmtiZW5jaC5zZXJ2aWNlJztcbmV4cG9ydCB7V09SS0JFTkNIX0lEfSBmcm9tICcuL3dvcmtiZW5jaC1pZCc7XG5leHBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb24sIFdvcmtiZW5jaFRoZW1lLCBDYW5NYXRjaFBhcnRGbiwgV29ya2JlbmNoTWVudUl0ZW0sIFdvcmtiZW5jaE1lbnVJdGVtRmFjdG9yeUZuLCBDYW5DbG9zZSwgQ2FuQ2xvc2VGbiwgQ2FuQ2xvc2VSZWZ9IGZyb20gJy4vd29ya2JlbmNoLm1vZGVsJztcbmV4cG9ydCB7V29ya2JlbmNoQ29tcG9uZW50fSBmcm9tICcuL3dvcmtiZW5jaC5jb21wb25lbnQnO1xuZXhwb3J0IHtWSUVXX1RBQl9SRU5ERVJJTkdfQ09OVEVYVCwgVmlld1RhYlJlbmRlcmluZ0NvbnRleHR9IGZyb20gJy4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0L3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJzcGVjdGl2ZS9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vcGFydC9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vdmlldy9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGluZy9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZS1ib3gvcHVibGljX2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9uL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9wb3B1cC9wdWJsaWNfYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9taWNyb2Zyb250ZW5kLXBsYXRmb3JtL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFydHVwL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnaW5nL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlL3B1YmxpY19hcGknO1xuZXhwb3J0ICogZnJvbSAnLi90ZXN0aW5nL3B1YmxpY19hcGknO1xuIl19
@@ -7,8 +7,7 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Subject } from 'rxjs';
11
- import { map, startWith } from 'rxjs/operators';
10
+ import { DestroyRef, inject, signal } from '@angular/core';
12
11
  /**
13
12
  * Provides a registry for workbench model objects.
14
13
  */
@@ -16,18 +15,23 @@ export class WorkbenchObjectRegistry {
16
15
  /**
17
16
  * Creates an instance of the registry.
18
17
  *
18
+ * This registry must be constructed within an injection context. Destroying the injection context will also destroy the registry,
19
+ * invoking the specified `onUnregister` function for each object in the registry.
20
+ *
19
21
  * @param config - Controls the creation of the registry.
20
22
  * @param config.keyFn - Function to extract the key of an object.
21
23
  * @param config.nullObjectErrorFn - Function to provide an error when looking up an object not contained in the registry.
24
+ * @param config.onUnregister - Function invoked when an object is unregistered.
22
25
  */
23
26
  constructor(config) {
24
- this._objects = new Array();
27
+ this._objects = signal([]);
25
28
  this._objectsById = new Map();
26
- this._change$ = new Subject();
29
+ this.objects = this._objects.asReadonly();
27
30
  this._keyFn = config.keyFn;
28
- this._nullObjectErrorFn = config.nullObjectErrorFn;
29
- this.objects$ = this._change$
30
- .pipe(startWith(undefined), map(() => [...this._objects]));
31
+ this._nullObjectErrorFn = config.nullObjectErrorFn ?? ((key) => Error(`[NullObjectError] Object '${key}' not found.`));
32
+ this._onUnregister = config.onUnregister;
33
+ // Clear registry when the current injection context is destroyed.
34
+ inject(DestroyRef).onDestroy(() => this.clear());
31
35
  }
32
36
  /**
33
37
  * Registers given object, replacing any previously registered object with the same key.
@@ -35,9 +39,19 @@ export class WorkbenchObjectRegistry {
35
39
  register(object) {
36
40
  const key = this._keyFn(object);
37
41
  const prevObject = this._objectsById.get(key);
42
+ // Add to Map.
38
43
  this._objectsById.set(key, object);
39
- prevObject ? this._objects.splice(this._objects.indexOf(prevObject), 1, object) : this._objects.push(object);
40
- this._change$.next();
44
+ // Add to Signal.
45
+ this._objects.update(objects => {
46
+ const copy = [...objects];
47
+ if (prevObject) {
48
+ copy.splice(copy.indexOf(prevObject), 1, object); // Replace object.
49
+ }
50
+ else {
51
+ copy.push(object); // Append object.
52
+ }
53
+ return copy;
54
+ });
41
55
  }
42
56
  /**
43
57
  * Unregisters specified object.
@@ -47,9 +61,16 @@ export class WorkbenchObjectRegistry {
47
61
  if (!object) {
48
62
  return null;
49
63
  }
64
+ // Invoke unregister function.
65
+ this._onUnregister?.(object);
66
+ // Remove from Map.
50
67
  this._objectsById.delete(key);
51
- this._objects.splice(this._objects.indexOf(object), 1);
52
- this._change$.next();
68
+ // Remove from Signal.
69
+ this._objects.update(objects => {
70
+ const copy = [...objects];
71
+ copy.splice(copy.indexOf(object), 1);
72
+ return copy;
73
+ });
53
74
  return object;
54
75
  }
55
76
  get(key, options) {
@@ -66,18 +87,18 @@ export class WorkbenchObjectRegistry {
66
87
  return this._objectsById.has(key);
67
88
  }
68
89
  /**
69
- * Readonly reference to registered objects.
90
+ * Indicates whether this registry is empty.
70
91
  */
71
- get objects() {
72
- return this._objects;
92
+ isEmpty() {
93
+ return this._objectsById.size === 0;
73
94
  }
74
95
  /**
75
96
  * Clears this registry.
76
97
  */
77
98
  clear() {
99
+ this._onUnregister && this.objects().forEach(this._onUnregister);
78
100
  this._objectsById.clear();
79
- this._objects.length = 0;
80
- this._change$.next();
101
+ this._objects.set([]);
81
102
  }
82
103
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLW9iamVjdC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JlZ2lzdHJ5L3dvcmtiZW5jaC1vYmplY3QtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBV2xDOzs7Ozs7T0FNRztJQUNILFlBQVksTUFBMkU7UUFoQnRFLGFBQVEsR0FBRyxJQUFJLEtBQUssRUFBSyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUlqQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVk5QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRO2FBQzFCLElBQUksQ0FDSCxTQUFTLENBQUMsU0FBaUIsQ0FBQyxFQUM1QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLE1BQVM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLEdBQVE7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBT00sR0FBRyxDQUFDLEdBQVEsRUFBRSxPQUF3QjtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsR0FBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGEgcmVnaXN0cnkgZm9yIHdvcmtiZW5jaCBtb2RlbCBvYmplY3RzLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoT2JqZWN0UmVnaXN0cnk8S0VZLCBUPiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb2JqZWN0cyA9IG5ldyBBcnJheTxUPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vYmplY3RzQnlJZCA9IG5ldyBNYXA8S0VZLCBUPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleUZuOiAob2JqZWN0OiBUKSA9PiBLRVk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX251bGxPYmplY3RFcnJvckZuOiAoa2V5OiBLRVkpID0+IEVycm9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb2JqZWN0cyQ6IE9ic2VydmFibGU8cmVhZG9ubHkgVFtdPjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcmVnaXN0cnkuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb250cm9scyB0aGUgY3JlYXRpb24gb2YgdGhlIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0gY29uZmlnLmtleUZuIC0gRnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUga2V5IG9mIGFuIG9iamVjdC5cbiAgICogQHBhcmFtIGNvbmZpZy5udWxsT2JqZWN0RXJyb3JGbiAtIEZ1bmN0aW9uIHRvIHByb3ZpZGUgYW4gZXJyb3Igd2hlbiBsb29raW5nIHVwIGFuIG9iamVjdCBub3QgY29udGFpbmVkIGluIHRoZSByZWdpc3RyeS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzoge2tleUZuOiAob2JqZWN0OiBUKSA9PiBLRVk7IG51bGxPYmplY3RFcnJvckZuOiAoa2V5OiBLRVkpID0+IEVycm9yfSkge1xuICAgIHRoaXMuX2tleUZuID0gY29uZmlnLmtleUZuO1xuICAgIHRoaXMuX251bGxPYmplY3RFcnJvckZuID0gY29uZmlnLm51bGxPYmplY3RFcnJvckZuO1xuICAgIHRoaXMub2JqZWN0cyQgPSB0aGlzLl9jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyB2b2lkKSxcbiAgICAgICAgbWFwKCgpID0+IFsuLi50aGlzLl9vYmplY3RzXSksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBnaXZlbiBvYmplY3QsIHJlcGxhY2luZyBhbnkgcHJldmlvdXNseSByZWdpc3RlcmVkIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleS5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcihvYmplY3Q6IFQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9rZXlGbihvYmplY3QpO1xuICAgIGNvbnN0IHByZXZPYmplY3QgPSB0aGlzLl9vYmplY3RzQnlJZC5nZXQoa2V5KTtcbiAgICB0aGlzLl9vYmplY3RzQnlJZC5zZXQoa2V5LCBvYmplY3QpO1xuICAgIHByZXZPYmplY3QgPyB0aGlzLl9vYmplY3RzLnNwbGljZSh0aGlzLl9vYmplY3RzLmluZGV4T2YocHJldk9iamVjdCksIDEsIG9iamVjdCkgOiB0aGlzLl9vYmplY3RzLnB1c2gob2JqZWN0KTtcbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVycyBzcGVjaWZpZWQgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIHVucmVnaXN0ZXIoa2V5OiBLRVkpOiBUIHwgbnVsbCB7XG4gICAgY29uc3Qgb2JqZWN0ID0gdGhpcy5fb2JqZWN0c0J5SWQuZ2V0KGtleSk7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX29iamVjdHNCeUlkLmRlbGV0ZShrZXkpO1xuICAgIHRoaXMuX29iamVjdHMuc3BsaWNlKHRoaXMuX29iamVjdHMuaW5kZXhPZihvYmplY3QpLCAxKTtcbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQoKTtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9iamVjdCBvZiB0aGUgZ2l2ZW4gaWRlbnRpdHkuIElmIG5vdCBmb3VuZCwgYnkgZGVmYXVsdCwgdGhyb3dzIGFuIGVycm9yIHVubGVzcyBzZXR0aW5nIHRoZSBgb3JFbHNlTnVsbGAgb3B0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldChrZXk6IEtFWSk6IFQ7XG4gIHB1YmxpYyBnZXQoa2V5OiBLRVksIG9wdGlvbnM/OiB7b3JFbHNlOiBudWxsfSk6IFQgfCBudWxsO1xuICBwdWJsaWMgZ2V0KGtleTogS0VZLCBvcHRpb25zPzoge29yRWxzZTogbnVsbH0pOiBUIHwgbnVsbCB7XG4gICAgY29uc3Qgb2JqZWN0ID0gdGhpcy5fb2JqZWN0c0J5SWQuZ2V0KGtleSk7XG4gICAgaWYgKCFvYmplY3QgJiYgIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IHRoaXMuX251bGxPYmplY3RFcnJvckZuKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBvYmplY3QgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBleGlzdHMgb3Igbm90LlxuICAgKi9cbiAgcHVibGljIGhhcyhrZXk6IEtFWSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3RzQnlJZC5oYXMoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkb25seSByZWZlcmVuY2UgdG8gcmVnaXN0ZXJlZCBvYmplY3RzLlxuICAgKi9cbiAgcHVibGljIGdldCBvYmplY3RzKCk6IHJlYWRvbmx5IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29iamVjdHM7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoaXMgcmVnaXN0cnkuXG4gICAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JqZWN0c0J5SWQuY2xlYXIoKTtcbiAgICB0aGlzLl9vYmplY3RzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KCk7XG4gIH1cbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLW9iamVjdC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JlZ2lzdHJ5L3dvcmtiZW5jaC1vYmplY3QtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBV2xDOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUFZLE1BQWdIO1FBcEIzRyxhQUFRLEdBQUcsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQU1sQyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQWNuRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUM1SCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFFekMsa0VBQWtFO1FBQ2xFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLE1BQVM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5QyxjQUFjO1FBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5DLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3QixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDMUIsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1lBQ3RFLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCO1lBQ3RDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLEdBQVE7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3QixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzdCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFPTSxHQUFHLENBQUMsR0FBUSxFQUFFLE9BQXdCO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxHQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUs7UUFDVixJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0Rlc3Ryb3lSZWYsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIHJlZ2lzdHJ5IGZvciB3b3JrYmVuY2ggbW9kZWwgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaE9iamVjdFJlZ2lzdHJ5PEtFWSwgVD4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29iamVjdHMgPSBzaWduYWw8VFtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29iamVjdHNCeUlkID0gbmV3IE1hcDxLRVksIFQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfa2V5Rm46IChvYmplY3Q6IFQpID0+IEtFWTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbnVsbE9iamVjdEVycm9yRm46IChrZXk6IEtFWSkgPT4gRXJyb3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29uVW5yZWdpc3RlcjogKChvYmplY3Q6IFQpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBvYmplY3RzID0gdGhpcy5fb2JqZWN0cy5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBUaGlzIHJlZ2lzdHJ5IG11c3QgYmUgY29uc3RydWN0ZWQgd2l0aGluIGFuIGluamVjdGlvbiBjb250ZXh0LiBEZXN0cm95aW5nIHRoZSBpbmplY3Rpb24gY29udGV4dCB3aWxsIGFsc28gZGVzdHJveSB0aGUgcmVnaXN0cnksXG4gICAqIGludm9raW5nIHRoZSBzcGVjaWZpZWQgYG9uVW5yZWdpc3RlcmAgZnVuY3Rpb24gZm9yIGVhY2ggb2JqZWN0IGluIHRoZSByZWdpc3RyeS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbnRyb2xzIHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVnaXN0cnkuXG4gICAqIEBwYXJhbSBjb25maWcua2V5Rm4gLSBGdW5jdGlvbiB0byBleHRyYWN0IHRoZSBrZXkgb2YgYW4gb2JqZWN0LlxuICAgKiBAcGFyYW0gY29uZmlnLm51bGxPYmplY3RFcnJvckZuIC0gRnVuY3Rpb24gdG8gcHJvdmlkZSBhbiBlcnJvciB3aGVuIGxvb2tpbmcgdXAgYW4gb2JqZWN0IG5vdCBjb250YWluZWQgaW4gdGhlIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0gY29uZmlnLm9uVW5yZWdpc3RlciAtIEZ1bmN0aW9uIGludm9rZWQgd2hlbiBhbiBvYmplY3QgaXMgdW5yZWdpc3RlcmVkLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiB7a2V5Rm46IChvYmplY3Q6IFQpID0+IEtFWTsgbnVsbE9iamVjdEVycm9yRm4/OiAoa2V5OiBLRVkpID0+IEVycm9yOyBvblVucmVnaXN0ZXI/OiAob2JqZWN0OiBUKSA9PiB2b2lkfSkge1xuICAgIHRoaXMuX2tleUZuID0gY29uZmlnLmtleUZuO1xuICAgIHRoaXMuX251bGxPYmplY3RFcnJvckZuID0gY29uZmlnLm51bGxPYmplY3RFcnJvckZuID8/ICgoa2V5OiBLRVkpID0+IEVycm9yKGBbTnVsbE9iamVjdEVycm9yXSBPYmplY3QgJyR7a2V5fScgbm90IGZvdW5kLmApKTtcbiAgICB0aGlzLl9vblVucmVnaXN0ZXIgPSBjb25maWcub25VbnJlZ2lzdGVyO1xuXG4gICAgLy8gQ2xlYXIgcmVnaXN0cnkgd2hlbiB0aGUgY3VycmVudCBpbmplY3Rpb24gY29udGV4dCBpcyBkZXN0cm95ZWQuXG4gICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB0aGlzLmNsZWFyKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBnaXZlbiBvYmplY3QsIHJlcGxhY2luZyBhbnkgcHJldmlvdXNseSByZWdpc3RlcmVkIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleS5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcihvYmplY3Q6IFQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9rZXlGbihvYmplY3QpO1xuICAgIGNvbnN0IHByZXZPYmplY3QgPSB0aGlzLl9vYmplY3RzQnlJZC5nZXQoa2V5KTtcblxuICAgIC8vIEFkZCB0byBNYXAuXG4gICAgdGhpcy5fb2JqZWN0c0J5SWQuc2V0KGtleSwgb2JqZWN0KTtcblxuICAgIC8vIEFkZCB0byBTaWduYWwuXG4gICAgdGhpcy5fb2JqZWN0cy51cGRhdGUob2JqZWN0cyA9PiB7XG4gICAgICBjb25zdCBjb3B5ID0gWy4uLm9iamVjdHNdO1xuICAgICAgaWYgKHByZXZPYmplY3QpIHtcbiAgICAgICAgY29weS5zcGxpY2UoY29weS5pbmRleE9mKHByZXZPYmplY3QpLCAxLCBvYmplY3QpOyAvLyBSZXBsYWNlIG9iamVjdC5cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb3B5LnB1c2gob2JqZWN0KTsgLy8gQXBwZW5kIG9iamVjdC5cbiAgICAgIH1cbiAgICAgIHJldHVybiBjb3B5O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIHNwZWNpZmllZCBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlcihrZXk6IEtFWSk6IFQgfCBudWxsIHtcbiAgICBjb25zdCBvYmplY3QgPSB0aGlzLl9vYmplY3RzQnlJZC5nZXQoa2V5KTtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gSW52b2tlIHVucmVnaXN0ZXIgZnVuY3Rpb24uXG4gICAgdGhpcy5fb25VbnJlZ2lzdGVyPy4ob2JqZWN0KTtcblxuICAgIC8vIFJlbW92ZSBmcm9tIE1hcC5cbiAgICB0aGlzLl9vYmplY3RzQnlJZC5kZWxldGUoa2V5KTtcbiAgICAvLyBSZW1vdmUgZnJvbSBTaWduYWwuXG4gICAgdGhpcy5fb2JqZWN0cy51cGRhdGUob2JqZWN0cyA9PiB7XG4gICAgICBjb25zdCBjb3B5ID0gWy4uLm9iamVjdHNdO1xuICAgICAgY29weS5zcGxpY2UoY29weS5pbmRleE9mKG9iamVjdCksIDEpO1xuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvYmplY3Qgb2YgdGhlIGdpdmVuIGlkZW50aXR5LiBJZiBub3QgZm91bmQsIGJ5IGRlZmF1bHQsIHRocm93cyBhbiBlcnJvciB1bmxlc3Mgc2V0dGluZyB0aGUgYG9yRWxzZU51bGxgIG9wdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQoa2V5OiBLRVkpOiBUO1xuICBwdWJsaWMgZ2V0KGtleTogS0VZLCBvcHRpb25zPzoge29yRWxzZTogbnVsbH0pOiBUIHwgbnVsbDtcbiAgcHVibGljIGdldChrZXk6IEtFWSwgb3B0aW9ucz86IHtvckVsc2U6IG51bGx9KTogVCB8IG51bGwge1xuICAgIGNvbnN0IG9iamVjdCA9IHRoaXMuX29iamVjdHNCeUlkLmdldChrZXkpO1xuICAgIGlmICghb2JqZWN0ICYmICFvcHRpb25zKSB7XG4gICAgICB0aHJvdyB0aGlzLl9udWxsT2JqZWN0RXJyb3JGbihrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0ID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzIG9yIG5vdC5cbiAgICovXG4gIHB1YmxpYyBoYXMoa2V5OiBLRVkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0c0J5SWQuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByZWdpc3RyeSBpcyBlbXB0eS5cbiAgICovXG4gIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3RzQnlJZC5zaXplID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGlzIHJlZ2lzdHJ5LlxuICAgKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuX29uVW5yZWdpc3RlciAmJiB0aGlzLm9iamVjdHMoKS5mb3JFYWNoKHRoaXMuX29uVW5yZWdpc3Rlcik7XG4gICAgdGhpcy5fb2JqZWN0c0J5SWQuY2xlYXIoKTtcbiAgICB0aGlzLl9vYmplY3RzLnNldChbXSk7XG4gIH1cbn1cbiJdfQ==
@@ -9,6 +9,6 @@
9
9
  */
10
10
  export { WorkbenchRouter } from './workbench-router.service';
11
11
  export { WorkbenchRouterLinkDirective } from './workbench-router-link.directive';
12
- export { WorkbenchAuxiliaryRoutesRegistrator } from './workbench-auxiliary-routes-registrator.service';
13
12
  export { WorkbenchRouteData } from './workbench-route-data';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNyRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtXb3JrYmVuY2hSb3V0ZXJ9IGZyb20gJy4vd29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmV4cG9ydCB7V29ya2JlbmNoUm91dGVyTGlua0RpcmVjdGl2ZX0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGVyLWxpbmsuZGlyZWN0aXZlJztcbmV4cG9ydCB7V29ya2JlbmNoQXV4aWxpYXJ5Um91dGVzUmVnaXN0cmF0b3J9IGZyb20gJy4vd29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZXMtcmVnaXN0cmF0b3Iuc2VydmljZSc7XG5leHBvcnQge1dvcmtiZW5jaFJvdXRlRGF0YX0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGUtZGF0YSc7XG5leHBvcnQge0NvbW1hbmRzLCBWaWV3U3RhdGUsIFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMsIE5hdmlnYXRlRm59IGZyb20gJy4vcm91dGluZy5tb2RlbCc7XG4iXX0=
13
+ export { canMatchWorkbenchView, canMatchWorkbenchPerspective } from './workbench-route-guards';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtXb3JrYmVuY2hSb3V0ZXJ9IGZyb20gJy4vd29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmV4cG9ydCB7V29ya2JlbmNoUm91dGVyTGlua0RpcmVjdGl2ZX0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGVyLWxpbmsuZGlyZWN0aXZlJztcbmV4cG9ydCB7V29ya2JlbmNoUm91dGVEYXRhfSBmcm9tICcuL3dvcmtiZW5jaC1yb3V0ZS1kYXRhJztcbmV4cG9ydCB7Q29tbWFuZHMsIE5hdmlnYXRpb25EYXRhLCBOYXZpZ2F0aW9uU3RhdGUsIFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMsIE5hdmlnYXRlRm59IGZyb20gJy4vcm91dGluZy5tb2RlbCc7XG5leHBvcnQge2Nhbk1hdGNoV29ya2JlbmNoVmlldywgY2FuTWF0Y2hXb3JrYmVuY2hQZXJzcGVjdGl2ZX0gZnJvbSAnLi93b3JrYmVuY2gtcm91dGUtZ3VhcmRzJztcbiJdfQ==
@@ -8,4 +8,4 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  export {};
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvcm91dGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWxheW91dC1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hQb3B1cERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLXBvcHVwLWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0RpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWRpYWxvZy1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTWVzc2FnZUJveERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlcic7XG5cbi8qKlxuICogT3B0aW9ucyB0byBjb250cm9sIHRoZSBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMgZXh0ZW5kcyBOYXZpZ2F0aW9uRXh0cmFzIHtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXJlIHRvIG9wZW4gdGhlIHZpZXcuIERlZmF1bHQgaXMgYGF1dG9gLlxuICAgKlxuICAgKiBPbmUgb2Y6XG4gICAqIC0gJ2F1dG8nOiAgIE5hdmlnYXRlcyBleGlzdGluZyB2aWV3cyB0aGF0IG1hdGNoIHRoZSBwYXRoLCBvciBvcGVucyBhIG5ldyB2aWV3IG90aGVyd2lzZS4gTWF0cml4IHBhcmFtcyBkbyBub3QgYWZmZWN0IHZpZXcgcmVzb2x1dGlvbi5cbiAgICogLSAnYmxhbmsnOiAgTmF2aWdhdGVzIGluIGEgbmV3IHZpZXcuXG4gICAqIC0gPHZpZXdJZD46IE5hdmlnYXRlcyB0aGUgc3BlY2lmaWVkIHZpZXcuIElmIGFscmVhZHkgb3BlbmVkLCByZXBsYWNlcyBpdCwgb3Igb3BlbnMgYSBuZXcgdmlldyBvdGhlcndpc2UuXG4gICAqL1xuICB0YXJnZXQ/OiBWaWV3SWQgfCBzdHJpbmcgfCAnYmxhbmsnIHwgJ2F1dG8nO1xuICAvKipcbiAgICogQ29udHJvbHMgd2hpY2ggcGFydCB0byBuYXZpZ2F0ZSB2aWV3cyBpbi5cbiAgICpcbiAgICogSWYgdGFyZ2V0IGlzIGBibGFua2AsIG9wZW5zIHRoZSB2aWV3IGluIHRoZSBzcGVjaWZpZWQgcGFydC5cbiAgICogSWYgdGFyZ2V0IGlzIGBhdXRvYCwgbmF2aWdhdGVzIG1hdGNoaW5nIHZpZXdzIGluIHRoZSBzcGVjaWZpZWQgcGFydCwgb3Igb3BlbnMgYSBuZXcgdmlldyBpbiB0aGF0IHBhcnQgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBJZiB0aGUgc3BlY2lmaWVkIHBhcnQgaXMgbm90IGluIHRoZSBsYXlvdXQsIG9wZW5zIHRoZSB2aWV3IGluIHRoZSBhY3RpdmUgcGFydCwgd2l0aCB0aGUgYWN0aXZlIHBhcnQgb2YgdGhlIG1haW4gYXJlYSB0YWtpbmcgcHJlY2VkZW5jZS5cbiAgICovXG4gIHBhcnRJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNldHMgYSBoaW50IHRvIGNvbnRyb2wgbmF2aWdhdGlvbiwgZS5nLiwgZm9yIHVzZSBpbiBhIGBDYW5NYXRjaGAgZ3VhcmQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHJvdXRlcyB3aXRoIGFuIGlkZW50aWNhbCBwYXRoLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdmlld3Mgb2YgdGhlIGluaXRpYWwgbGF5b3V0IG9yIGEgcGVyc3BlY3RpdmUgYXJlIHVzdWFsbHkgbmF2aWdhdGVkIHRvIHRoZSBlbXB0eSBwYXRoIHJvdXRlIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIFVSTCxcbiAgICogcmVxdWlyaW5nIGEgbmF2aWdhdGlvbiBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgcm91dGVzLiBTZWUge0BsaW5rIGNhbk1hdGNoV29ya2JlbmNoVmlld30gZm9yIGFuIGV4YW1wbGUuXG4gICAqXG4gICAqIExpa2UgdGhlIHBhdGgsIGEgaGludCBhZmZlY3RzIHZpZXcgcmVzb2x1dGlvbi4gSWYgc2V0LCB0aGUgcm91dGVyIHdpbGwgb25seSBuYXZpZ2F0ZSB2aWV3cyB3aXRoIGFuIGVxdWl2YWxlbnQgaGludCwgb3IgaWYgbm90IHNldCwgdmlld3Mgd2l0aG91dCBhIGhpbnQuXG4gICAqXG4gICAqIEBzZWUgY2FuTWF0Y2hXb3JrYmVuY2hWaWV3XG4gICAqL1xuICBoaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogSW5zdHJ1Y3RzIHRoZSByb3V0ZXIgdG8gYWN0aXZhdGUgdGhlIHZpZXcuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgYWN0aXZhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXJlIHRvIGluc2VydCB0aGUgdmlldyBpbnRvIHRoZSB0YWIgYmFyLiBIYXMgbm8gZWZmZWN0IGlmIG5hdmlnYXRpbmcgYW4gZXhpc3Rpbmcgdmlldy4gRGVmYXVsdCBpcyBhZnRlciB0aGUgYWN0aXZlIHZpZXcuXG4gICAqL1xuICBwb3NpdGlvbj86IG51bWJlciB8ICdzdGFydCcgfCAnZW5kJyB8ICdiZWZvcmUtYWN0aXZlLXZpZXcnIHwgJ2FmdGVyLWFjdGl2ZS12aWV3JztcbiAgLyoqXG4gICAqIEFzc29jaWF0ZXMgYXJiaXRyYXJ5IHN0YXRlIHdpdGggYSB2aWV3IG5hdmlnYXRpb24uXG4gICAqXG4gICAqIE5hdmlnYXRpb25hbCBzdGF0ZSBpcyBzdG9yZWQgaW4gdGhlIGJyb3dzZXIncyBzZXNzaW9uIGhpc3RvcnksIHN1cHBvcnRpbmcgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24sIGJ1dCBpcyBsb3N0IG9uIHBhZ2UgcmVsb2FkLlxuICAgKiBUaGVyZWZvcmUsIGEgdmlldyBtdXN0IGJlIGFibGUgdG8gcmVzdG9yZSBpdHMgc3RhdGUgd2l0aG91dCByZWx5aW5nIG9uIG5hdmlnYXRpb25hbCBzdGF0ZS5cbiAgICpcbiAgICogTmF2aWdhdGlvbmFsIHN0YXRlIGNhbiBiZSByZWFkIGZyb20ge0BsaW5rIFdvcmtiZW5jaFZpZXcuc3RhdGV9IG9yIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5IHZpYSBgaGlzdG9yeS5zdGF0ZWAuXG4gICAqL1xuICBzdGF0ZT86IFZpZXdTdGF0ZTtcbiAgLyoqXG4gICAqIENsb3NlcyB2aWV3cyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgbmF2aWdhdGlvbiBoaW50LiBNYXRyaXggcGFyYW1ldGVycyBkbyBub3QgYWZmZWN0IHZpZXcgcmVzb2x1dGlvbi5cbiAgICogVGhlIHBhdGggc3VwcG9ydHMgdGhlIGFzdGVyaXNrIHdpbGRjYXJkIHNlZ21lbnQgKGAqYCkgdG8gbWF0Y2ggdmlld3Mgd2l0aCBhbnkgdmFsdWUgaW4gYSBzZWdtZW50LlxuICAgKiBUbyBjbG9zZSBhIHNwZWNpZmljIHZpZXcsIHNldCBhIHZpZXcgdGFyZ2V0IGluc3RlYWQgb2YgYSBwYXRoLlxuICAgKi9cbiAgY2xvc2U/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSB2aWV3LCBlLmcuLCB0byBsb2NhdGUgdGhlIHZpZXcgaW4gdGVzdHMuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnRleHR1YWwgZGF0YSBvZiBhIHdvcmtiZW5jaCBuYXZpZ2F0aW9uIGF2YWlsYWJsZSBpbiB0aGUgcm91dGVyIGR1cmluZyBuYXZpZ2F0aW9uLlxuICpcbiAqIEBzZWUgV29ya2JlbmNoVXJsT2JzZXJ2ZXJcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB7XG4gIC8qKlxuICAgKiBMYXlvdXQgdG8gYmUgYXBwbGllZCBhZnRlciBzdWNjZXNzZnVsIG5hdmlnYXRpb24uXG4gICAqL1xuICBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0O1xuICAvKipcbiAgICogV29ya2JlbmNoIGxheW91dCBlbGVtZW50cyBhZGRlZCBvciByZW1vdmVkIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICBsYXlvdXREaWZmOiBXb3JrYmVuY2hMYXlvdXREaWZmO1xuICAvKipcbiAgICogUG9wdXBzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIHBvcHVwRGlmZjogV29ya2JlbmNoUG9wdXBEaWZmO1xuICAvKipcbiAgICogRGlhbG9ncyBhZGRlZCBvciByZW1vdmVkIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICBkaWFsb2dEaWZmOiBXb3JrYmVuY2hEaWFsb2dEaWZmO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIGJveGVzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1lc3NhZ2VCb3hEaWZmOiBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBwYXRoIHNlZ21lbnRzIGluc3RydWN0aW5nIHRoZSByb3V0ZXIgd2hpY2ggcm91dGUgdG8gbmF2aWdhdGUgdG8uXG4gKlxuICogQSBjb21tYW5kIGNhbiBiZSBhIHN0cmluZyBvciBhbiBvYmplY3QgbGl0ZXJhbC4gQSBzdHJpbmcgcmVwcmVzZW50cyBhIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGxpdGVyYWwgYXNzb2NpYXRlcyBtYXRyaXggcGFyYW1ldGVycyB3aXRoIHRoZSBwcmVjZWRpbmcgc2VnbWVudC5cbiAqIE11bHRpcGxlIHNlZ21lbnRzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGNvbW1hbmQsIHNlcGFyYXRlZCBieSBhIGZvcndhcmQgc2xhc2guXG4gKlxuICogVGhlIGZpcnN0IHBhdGggc2VnbWVudCBzdXBwb3J0cyB0aGUgdXNhZ2Ugb2YgbmF2aWdhdGlvbmFsIHN5bWJvbHMgc3VjaCBhcyBgL2AsIGAuL2AsIG9yIGAuLi9gLlxuICpcbiAqIEV4YW1wbGVzOlxuICogLSBOYXZpZ2F0ZXMgdG8gdGhlIHBhdGggJ3BhdGgvdG8vdmlldycsIHBhc3NpbmcgdHdvIHBhcmFtZXRlcnM6XG4gKiAgIFsncGF0aCcsICd0bycsICd2aWV3Jywge3BhcmFtMTogJ3ZhbHVlMScsIHBhcmFtMjogJ3ZhbHVlMid9XVxuICogLSBBbHRlcm5hdGl2ZSBzeW50YXggdXNpbmcgYSBjb21iaW5lZCBzZWdtZW50OlxuICogICBbJ3BhdGgvdG8vdmlldycsIHtwYXJhbTE6ICd2YWx1ZTEnLCBwYXJhbTI6ICd2YWx1ZTInfV1cbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZHMgPSBhbnlbXTtcblxuLyoqXG4gKiBVUkwgc2VnbWVudHMgb2Ygdmlld3MgY29udGFpbmVkIGluIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICovXG5leHBvcnQgdHlwZSBWaWV3T3V0bGV0cyA9IHtbdmlld0lkOiBWaWV3SWRdOiBVcmxTZWdtZW50W119O1xuXG4vKipcbiAqIE5hdmlnYXRpb25hbCB2aWV3IHN0YXRlcyBhc3NvY2lhdGVkIHdpdGggYSB3b3JrYmVuY2ggbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld1N0YXRlcyA9IHtbdmlld0lkOiBWaWV3SWRdOiBWaWV3U3RhdGV9O1xuXG4vKipcbiAqIFN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhIHZpZXcgbmF2aWdhdGlvbi5cbiAqXG4gKiBOYXZpZ2F0aW9uYWwgc3RhdGUgaXMgc3RvcmVkIGluIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5LCBzdXBwb3J0aW5nIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLCBidXQgaXMgbG9zdCBvbiBwYWdlIHJlbG9hZC5cbiAqIFRoZXJlZm9yZSwgYSB2aWV3IG11c3QgYmUgYWJsZSB0byByZXN0b3JlIGl0cyBzdGF0ZSB3aXRob3V0IHJlbHlpbmcgb24gbmF2aWdhdGlvbmFsIHN0YXRlLlxuICpcbiAqIE5hdmlnYXRpb25hbCBzdGF0ZSBjYW4gYmUgcmVhZCBmcm9tIHtAbGluayBXb3JrYmVuY2hWaWV3LnN0YXRlfSBvciB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB2aWEgYGhpc3Rvcnkuc3RhdGVgLlxuICovXG5leHBvcnQgdHlwZSBWaWV3U3RhdGUgPSB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAqXG4gKiBUaGUgcm91dGVyIHdpbGwgaW52b2tlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0LiBUaGUgbGF5b3V0IGhhcyBtZXRob2RzIGZvciBtb2RpZnlpbmcgaXQuXG4gKiBUaGUgbGF5b3V0IGlzIGltbXV0YWJsZSwgc28gZWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4gVXNlIHRoZSBpbnN0YW5jZSBmb3IgZnVydGhlciBtb2RpZmljYXRpb25zIGFuZCBmaW5hbGx5IHJldHVybiBpdC5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKlxuICogIyMgV29ya2JlbmNoIExheW91dFxuICogVGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgYSBncmlkIG9mIHBhcnRzLiBQYXJ0cyBhcmUgYWxpZ25lZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyLiBBIHBhcnQgaXMgYSBzdGFjayBvZiB2aWV3cy4gQ29udGVudCBpcyBkaXNwbGF5ZWQgaW4gdmlld3MuXG4gKlxuICogIyMgRXhhbXBsZVxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGFkZHMgYSBwYXJ0IHRvIHRoZSBsZWZ0IG9mIHRoZSBtYWluIGFyZWEsIGluc2VydHMgYSB2aWV3IGFuZCBuYXZpZ2F0ZXMgaXQuXG4gKlxuICogYGBgdHNcbiAqIGluamVjdChXb3JrYmVuY2hSb3V0ZXIpLm5hdmlnYXRlKGxheW91dCA9PiBsYXlvdXRcbiAqICAgLmFkZFBhcnQoJ2xlZnQnLCB7cmVsYXRpdmVUbzogTUFJTl9BUkVBLCBhbGlnbjogJ2xlZnQnfSlcbiAqICAgLmFkZFZpZXcoJ25hdmlnYXRvcicsIHtwYXJ0SWQ6ICdsZWZ0J30pXG4gKiAgIC5uYXZpZ2F0ZVZpZXcoJ25hdmlnYXRvcicsIFsncGF0aC90by92aWV3J10pXG4gKiAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpXG4gKiApO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGxheW91dCAtIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0IGZvciBtb2RpZmljYXRpb24uXG4gKiBAcmV0dXJuIE1vZGlmaWVkIGxheW91dCwgb3IgYG51bGxgIHRvIGNhbmNlbCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0ZUZuID0gKGxheW91dDogV29ya2JlbmNoTGF5b3V0KSA9PiBQcm9taXNlPFdvcmtiZW5jaExheW91dCB8IG51bGw+IHwgV29ya2JlbmNoTGF5b3V0IHwgbnVsbDtcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvcm91dGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWxheW91dC1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hQb3B1cERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLXBvcHVwLWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0RpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWRpYWxvZy1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTWVzc2FnZUJveERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdPdXRsZXREaWZmfSBmcm9tICcuL3dvcmtiZW5jaC12aWV3LW91dGxldC1kaWZmZXInO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gY29udHJvbCB0aGUgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzIGV4dGVuZHMgTmF2aWdhdGlvbkV4dHJhcyB7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGVyZSB0byBvcGVuIHRoZSB2aWV3LiBEZWZhdWx0IGlzIGBhdXRvYC5cbiAgICpcbiAgICogT25lIG9mOlxuICAgKiAtICdhdXRvJzogICBOYXZpZ2F0ZXMgZXhpc3Rpbmcgdmlld3MgdGhhdCBtYXRjaCB0aGUgcGF0aCwgb3Igb3BlbnMgYSBuZXcgdmlldyBvdGhlcndpc2UuIE1hdHJpeCBwYXJhbXMgZG8gbm90IGFmZmVjdCB2aWV3IHJlc29sdXRpb24uXG4gICAqIC0gJ2JsYW5rJzogIE5hdmlnYXRlcyBpbiBhIG5ldyB2aWV3LlxuICAgKiAtIDx2aWV3SWQ+OiBOYXZpZ2F0ZXMgdGhlIHNwZWNpZmllZCB2aWV3LiBJZiBhbHJlYWR5IG9wZW5lZCwgcmVwbGFjZXMgaXQsIG9yIG9wZW5zIGEgbmV3IHZpZXcgb3RoZXJ3aXNlLlxuICAgKi9cbiAgdGFyZ2V0PzogVmlld0lkIHwgc3RyaW5nIHwgJ2JsYW5rJyB8ICdhdXRvJztcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoaWNoIHBhcnQgdG8gbmF2aWdhdGUgdmlld3MgaW4uXG4gICAqXG4gICAqIElmIHRhcmdldCBpcyBgYmxhbmtgLCBvcGVucyB0aGUgdmlldyBpbiB0aGUgc3BlY2lmaWVkIHBhcnQuXG4gICAqIElmIHRhcmdldCBpcyBgYXV0b2AsIG5hdmlnYXRlcyBtYXRjaGluZyB2aWV3cyBpbiB0aGUgc3BlY2lmaWVkIHBhcnQsIG9yIG9wZW5zIGEgbmV3IHZpZXcgaW4gdGhhdCBwYXJ0IG90aGVyd2lzZS5cbiAgICpcbiAgICogSWYgdGhlIHNwZWNpZmllZCBwYXJ0IGlzIG5vdCBpbiB0aGUgbGF5b3V0LCBvcGVucyB0aGUgdmlldyBpbiB0aGUgYWN0aXZlIHBhcnQsIHdpdGggdGhlIGFjdGl2ZSBwYXJ0IG9mIHRoZSBtYWluIGFyZWEgdGFraW5nIHByZWNlZGVuY2UuXG4gICAqL1xuICBwYXJ0SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZXRzIGEgaGludCB0byBjb250cm9sIG5hdmlnYXRpb24sIGUuZy4sIGZvciB1c2UgaW4gYSBgQ2FuTWF0Y2hgIGd1YXJkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBpZGVudGljYWwgcGF0aC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHZpZXdzIG9mIHRoZSBpbml0aWFsIGxheW91dCBvciBhIHBlcnNwZWN0aXZlIGFyZSB1c3VhbGx5IG5hdmlnYXRlZCB0byB0aGUgZW1wdHkgcGF0aCByb3V0ZSB0byBhdm9pZCBjbHV0dGVyaW5nIHRoZSBVUkwsXG4gICAqIHJlcXVpcmluZyBhIG5hdmlnYXRpb24gaGludCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHJvdXRlcy4gU2VlIHtAbGluayBjYW5NYXRjaFdvcmtiZW5jaFZpZXd9IGZvciBhbiBleGFtcGxlLlxuICAgKlxuICAgKiBMaWtlIHRoZSBwYXRoLCBhIGhpbnQgYWZmZWN0cyB2aWV3IHJlc29sdXRpb24uIElmIHNldCwgdGhlIHJvdXRlciB3aWxsIG9ubHkgbmF2aWdhdGUgdmlld3Mgd2l0aCBhbiBlcXVpdmFsZW50IGhpbnQsIG9yIGlmIG5vdCBzZXQsIHZpZXdzIHdpdGhvdXQgYSBoaW50LlxuICAgKlxuICAgKiBAc2VlIGNhbk1hdGNoV29ya2JlbmNoVmlld1xuICAgKi9cbiAgaGludD86IHN0cmluZztcbiAgLyoqXG4gICAqIEluc3RydWN0cyB0aGUgcm91dGVyIHRvIGFjdGl2YXRlIHRoZSB2aWV3LiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIGFjdGl2YXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGVyZSB0byBpbnNlcnQgdGhlIHZpZXcgaW50byB0aGUgdGFiIGJhci4gSGFzIG5vIGVmZmVjdCBpZiBuYXZpZ2F0aW5nIGFuIGV4aXN0aW5nIHZpZXcuIERlZmF1bHQgaXMgYWZ0ZXIgdGhlIGFjdGl2ZSB2aWV3LlxuICAgKi9cbiAgcG9zaXRpb24/OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcgfCAnYmVmb3JlLWFjdGl2ZS12aWV3JyB8ICdhZnRlci1hY3RpdmUtdmlldyc7XG4gIC8qKlxuICAgKiBBc3NvY2lhdGVzIGRhdGEgd2l0aCBhIHZpZXcgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogVW5saWtlIG1hdHJpeCBwYXJhbWV0ZXJzLCBuYXZpZ2F0aW9uIGRhdGEgaXMgc3RvcmVkIGluIHRoZSBsYXlvdXQgYW5kIG5vdCBhZGRlZCB0byB0aGUgcGF0aCwgYWxsb3dpbmcgZGF0YSB0byBiZSBwYXNzZWQgdG8gZW1wdHkgcGF0aCBuYXZpZ2F0aW9ucy5cbiAgICpcbiAgICogRGF0YSBtdXN0IGJlIEpTT04gc2VyaWFsaXphYmxlLiBEYXRhIGNhbiBiZSByZWFkIGZyb20ge0BsaW5rIFdvcmtiZW5jaFZpZXcubmF2aWdhdGlvbkRhdGF9LlxuICAgKi9cbiAgZGF0YT86IE5hdmlnYXRpb25EYXRhO1xuICAvKipcbiAgICogUGFzc2VzIHN0YXRlIHRvIGEgdmlldyBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBTdGF0ZSBpcyBub3QgcGVyc2lzdGVudCwgdW5saWtlIHtAbGluayBkYXRhfSwgaXQgaXMgb25seSBhZGRlZCB0byB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB0byBzdXBwb3J0IGJhY2svZm9yd2FyZCBicm93c2VyIG5hdmlnYXRpb24uXG4gICAqIFN0YXRlIGNhbiBiZSByZWFkIGZyb20ge0BsaW5rIFdvcmtiZW5jaFZpZXcubmF2aWdhdGlvblN0YXRlfSBvciBmcm9tIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5IHZpYSBgaGlzdG9yeS5zdGF0ZWAuXG4gICAqL1xuICBzdGF0ZT86IE5hdmlnYXRpb25TdGF0ZTtcbiAgLyoqXG4gICAqIENsb3NlcyB2aWV3cyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgbmF2aWdhdGlvbiBoaW50LiBNYXRyaXggcGFyYW1ldGVycyBkbyBub3QgYWZmZWN0IHZpZXcgcmVzb2x1dGlvbi5cbiAgICogVGhlIHBhdGggc3VwcG9ydHMgdGhlIGFzdGVyaXNrIHdpbGRjYXJkIHNlZ21lbnQgKGAqYCkgdG8gbWF0Y2ggdmlld3Mgd2l0aCBhbnkgdmFsdWUgaW4gYSBzZWdtZW50LlxuICAgKiBUbyBjbG9zZSBhIHNwZWNpZmljIHZpZXcsIHNldCBhIHZpZXcgdGFyZ2V0IGluc3RlYWQgb2YgYSBwYXRoLlxuICAgKi9cbiAgY2xvc2U/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSB2aWV3LCBlLmcuLCB0byBsb2NhdGUgdGhlIHZpZXcgaW4gdGVzdHMuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnRleHR1YWwgZGF0YSBvZiBhIHdvcmtiZW5jaCBuYXZpZ2F0aW9uIGF2YWlsYWJsZSBpbiB0aGUgcm91dGVyIGR1cmluZyBuYXZpZ2F0aW9uLlxuICpcbiAqIEBzZWUgV29ya2JlbmNoVXJsT2JzZXJ2ZXJcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB7XG4gIC8qKlxuICAgKiBMYXlvdXQgdG8gYmUgYXBwbGllZCBhZnRlciBzdWNjZXNzZnVsIG5hdmlnYXRpb24uXG4gICAqL1xuICBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0O1xuICAvKipcbiAgICogTGF5b3V0IGJlZm9yZSB0aGUgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByZXZpb3VzTGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGw7XG4gIC8qKlxuICAgKiBXb3JrYmVuY2ggbGF5b3V0IGVsZW1lbnRzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIGxheW91dERpZmY6IFdvcmtiZW5jaExheW91dERpZmY7XG4gIC8qKlxuICAgKiBWaWV3IGF1eGlsaWFyeSByb3V0ZXMgdG8gcmVnaXN0ZXIgb3IgdW5yZWdpc3RlciBieSB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgdmlld091dGxldERpZmY6IFdvcmtiZW5jaFZpZXdPdXRsZXREaWZmO1xuICAvKipcbiAgICogUG9wdXBzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIHBvcHVwRGlmZjogV29ya2JlbmNoUG9wdXBEaWZmO1xuICAvKipcbiAgICogRGlhbG9ncyBhZGRlZCBvciByZW1vdmVkIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICBkaWFsb2dEaWZmOiBXb3JrYmVuY2hEaWFsb2dEaWZmO1xuICAvKipcbiAgICogTWVzc2FnZSBib3hlcyBhZGRlZCBvciByZW1vdmVkIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICBtZXNzYWdlQm94RGlmZjogV29ya2JlbmNoTWVzc2FnZUJveERpZmY7XG5cbiAgLyoqXG4gICAqIFJldmVydHMgY2hhbmdlcyBtYWRlIGR1cmluZyB0aGUgbmF2aWdhdGlvbiBpZiBpdCBmYWlscyBvciBpcyBjYW5jZWxsZWQuXG4gICAqL1xuICB1bmRvQ2hhbmdlcygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSdW5zIHBvc3QgbmF2aWdhdGlvbiBhY3Rpb25zLlxuICAgKi9cbiAgcnVuUG9zdE5hdmlnYXRpb25BY3Rpb25zKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhbiBhY3Rpb24gdG8gYmUgdW5kb25lIGlmIHRoZSBuYXZpZ2F0aW9uIGZhaWxzIG9yIGlzIGNhbmNlbGxlZC5cbiAgICovXG4gIHJlZ2lzdGVyVW5kb0FjdGlvbihhY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gYWN0aW9uIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvbi5cbiAgICovXG4gIHJlZ2lzdGVyUG9zdE5hdmlnYXRpb25BY3Rpb24oYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBwYXRoIHNlZ21lbnRzIGluc3RydWN0aW5nIHRoZSByb3V0ZXIgd2hpY2ggcm91dGUgdG8gbmF2aWdhdGUgdG8uXG4gKlxuICogQSBjb21tYW5kIGNhbiBiZSBhIHN0cmluZyBvciBhbiBvYmplY3QgbGl0ZXJhbC4gQSBzdHJpbmcgcmVwcmVzZW50cyBhIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGxpdGVyYWwgYXNzb2NpYXRlcyBtYXRyaXggcGFyYW1ldGVycyB3aXRoIHRoZSBwcmVjZWRpbmcgc2VnbWVudC5cbiAqIE11bHRpcGxlIHNlZ21lbnRzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGNvbW1hbmQsIHNlcGFyYXRlZCBieSBhIGZvcndhcmQgc2xhc2guXG4gKlxuICogVGhlIGZpcnN0IHBhdGggc2VnbWVudCBzdXBwb3J0cyB0aGUgdXNhZ2Ugb2YgbmF2aWdhdGlvbmFsIHN5bWJvbHMgc3VjaCBhcyBgL2AsIGAuL2AsIG9yIGAuLi9gLlxuICpcbiAqIEV4YW1wbGVzOlxuICogLSBOYXZpZ2F0ZXMgdG8gdGhlIHBhdGggJ3BhdGgvdG8vdmlldycsIHBhc3NpbmcgdHdvIHBhcmFtZXRlcnM6XG4gKiAgIFsncGF0aCcsICd0bycsICd2aWV3Jywge3BhcmFtMTogJ3ZhbHVlMScsIHBhcmFtMjogJ3ZhbHVlMid9XVxuICogLSBBbHRlcm5hdGl2ZSBzeW50YXggdXNpbmcgYSBjb21iaW5lZCBzZWdtZW50OlxuICogICBbJ3BhdGgvdG8vdmlldycsIHtwYXJhbTE6ICd2YWx1ZTEnLCBwYXJhbTI6ICd2YWx1ZTInfV1cbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZHMgPSBhbnlbXTtcblxuLyoqXG4gKiBVUkwgc2VnbWVudHMgb2Ygdmlld3MgY29udGFpbmVkIGluIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICovXG5leHBvcnQgdHlwZSBWaWV3T3V0bGV0cyA9IHtbdmlld0lkOiBWaWV3SWRdOiBVcmxTZWdtZW50W119O1xuXG4vKipcbiAqIFN0YXRlcyBhc3NvY2lhdGVkIHdpdGggdmlldyBuYXZpZ2F0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgTmF2aWdhdGlvblN0YXRlcyA9IHtbdmlld0lkOiBWaWV3SWRdOiBOYXZpZ2F0aW9uU3RhdGV9O1xuXG4vKipcbiAqIFN0YXRlIHBhc3NlZCB0byBhIHZpZXcgbmF2aWdhdGlvbi5cbiAqXG4gKiBTdGF0ZSBpcyBub3QgcGVyc2lzdGVudCwgdW5saWtlIHtAbGluayBkYXRhfSwgaXQgaXMgb25seSBhZGRlZCB0byB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB0byBzdXBwb3J0IGJhY2svZm9yd2FyZCBicm93c2VyIG5hdmlnYXRpb24uXG4gKiBTdGF0ZSBjYW4gYmUgcmVhZCBmcm9tIHtAbGluayBXb3JrYmVuY2hWaWV3Lm5hdmlnYXRpb25TdGF0ZX0gb3IgZnJvbSB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB2aWEgYGhpc3Rvcnkuc3RhdGVgLlxuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uU3RhdGUgPSB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG5cbi8qKlxuICogRGF0YSBhc3NvY2lhdGVkIHdpdGggYSB2aWV3IG5hdmlnYXRpb24uXG4gKlxuICogRGF0YSBjYW4gYmUgcmVhZCBmcm9tIHtAbGluayBXb3JrYmVuY2hWaWV3Lm5hdmlnYXRpb25EYXRhfS4gRGF0YSBtdXN0IGJlIEpTT04gc2VyaWFsaXphYmxlLlxuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uRGF0YSA9IHtba2V5OiBzdHJpbmddOiB1bmtub3dufTtcblxuLyoqXG4gKiBTaWduYXR1cmUgb2YgYSBmdW5jdGlvbiB0byBtb2RpZnkgdGhlIHdvcmtiZW5jaCBsYXlvdXQuXG4gKlxuICogVGhlIHJvdXRlciB3aWxsIGludm9rZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGN1cnJlbnQgd29ya2JlbmNoIGxheW91dC4gVGhlIGxheW91dCBoYXMgbWV0aG9kcyBmb3IgbW9kaWZ5aW5nIGl0LlxuICogVGhlIGxheW91dCBpcyBpbW11dGFibGUsIHNvIGVhY2ggbW9kaWZpY2F0aW9uIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UuIFVzZSB0aGUgaW5zdGFuY2UgZm9yIGZ1cnRoZXIgbW9kaWZpY2F0aW9ucyBhbmQgZmluYWxseSByZXR1cm4gaXQuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICpcbiAqICMjIFdvcmtiZW5jaCBMYXlvdXRcbiAqIFRoZSB3b3JrYmVuY2ggbGF5b3V0IGlzIGEgZ3JpZCBvZiBwYXJ0cy4gUGFydHMgYXJlIGFsaWduZWQgcmVsYXRpdmUgdG8gZWFjaCBvdGhlci4gQSBwYXJ0IGlzIGEgc3RhY2sgb2Ygdmlld3MuIENvbnRlbnQgaXMgZGlzcGxheWVkIGluIHZpZXdzLlxuICpcbiAqICMjIEV4YW1wbGVcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhZGRzIGEgcGFydCB0byB0aGUgbGVmdCBvZiB0aGUgbWFpbiBhcmVhLCBpbnNlcnRzIGEgdmlldyBhbmQgbmF2aWdhdGVzIGl0LlxuICpcbiAqIGBgYHRzXG4gKiBpbmplY3QoV29ya2JlbmNoUm91dGVyKS5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0XG4gKiAgIC5hZGRQYXJ0KCdsZWZ0Jywge3JlbGF0aXZlVG86IE1BSU5fQVJFQSwgYWxpZ246ICdsZWZ0J30pXG4gKiAgIC5hZGRWaWV3KCduYXZpZ2F0b3InLCB7cGFydElkOiAnbGVmdCd9KVxuICogICAubmF2aWdhdGVWaWV3KCduYXZpZ2F0b3InLCBbJ3BhdGgvdG8vdmlldyddKVxuICogICAuYWN0aXZhdGVWaWV3KCduYXZpZ2F0b3InKVxuICogKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBsYXlvdXQgLSBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgd29ya2JlbmNoIGxheW91dCBmb3IgbW9kaWZpY2F0aW9uLlxuICogQHJldHVybiBNb2RpZmllZCBsYXlvdXQsIG9yIGBudWxsYCB0byBjYW5jZWwgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgTmF2aWdhdGVGbiA9IChsYXlvdXQ6IFdvcmtiZW5jaExheW91dCkgPT4gUHJvbWlzZTxXb3JrYmVuY2hMYXlvdXQgfCBudWxsPiB8IFdvcmtiZW5jaExheW91dCB8IG51bGw7XG4iXX0=