mediasfu-angular 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +194 -192
  3. package/dist/README.md +194 -192
  4. package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +37 -1
  5. package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +51 -1
  6. package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +49 -1
  7. package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +1 -2
  8. package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +25 -19
  9. package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +60 -1
  10. package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +21 -1
  11. package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +36 -1
  12. package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +39 -1
  13. package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +25 -41
  14. package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +22 -1
  15. package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +23 -1
  16. package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +24 -1
  17. package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +24 -1
  18. package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +16 -1
  19. package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +28 -1
  20. package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +28 -19
  21. package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +31 -46
  22. package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +20 -18
  23. package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +33 -25
  24. package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +29 -17
  25. package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +29 -15
  26. package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +44 -23
  27. package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +26 -31
  28. package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +52 -59
  29. package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +20 -24
  30. package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +40 -40
  31. package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +29 -14
  32. package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +30 -24
  33. package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +19 -25
  34. package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +63 -1
  35. package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +29 -18
  36. package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +48 -39
  37. package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +36 -23
  38. package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +36 -25
  39. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +54 -3
  40. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +54 -3
  41. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +52 -3
  42. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +52 -3
  43. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +50 -3
  44. package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +50 -52
  45. package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +7 -2
  46. package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +6 -1
  47. package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +22 -29
  48. package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +16 -14
  49. package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +25 -1
  50. package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +35 -1
  51. package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +17 -34
  52. package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +9 -1
  53. package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +15 -1
  54. package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +16 -1
  55. package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +20 -1
  56. package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +20 -1
  57. package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +18 -1
  58. package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +18 -1
  59. package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +25 -1
  60. package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +28 -1
  61. package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +16 -1
  62. package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +13 -1
  63. package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +6 -1
  64. package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +23 -1
  65. package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +18 -1
  66. package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +11 -1
  67. package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +12 -1
  68. package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +60 -1
  69. package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +22 -1
  70. package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +50 -1
  71. package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +50 -1
  72. package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +27 -1
  73. package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +19 -1
  74. package/dist/esm2022/lib/consumers/change-vids.service.mjs +132 -67
  75. package/dist/esm2022/lib/consumers/check-grid.service.mjs +33 -19
  76. package/dist/esm2022/lib/consumers/check-permission.service.mjs +26 -1
  77. package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +36 -1
  78. package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +103 -1
  79. package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +32 -1
  80. package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +36 -1
  81. package/dist/esm2022/lib/consumers/connect-ips.service.mjs +43 -1
  82. package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +34 -1
  83. package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +39 -1
  84. package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +41 -1
  85. package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +45 -1
  86. package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +55 -1
  87. package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +37 -1
  88. package/dist/esm2022/lib/consumers/control-media.service.mjs +46 -1
  89. package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +47 -1
  90. package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +51 -1
  91. package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +40 -1
  92. package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +46 -1
  93. package/dist/esm2022/lib/consumers/disp-streams.service.mjs +93 -1
  94. package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +48 -1
  95. package/dist/esm2022/lib/consumers/get-estimate.service.mjs +51 -1
  96. package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +34 -1
  97. package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +34 -1
  98. package/dist/esm2022/lib/consumers/get-videos.service.mjs +34 -1
  99. package/dist/esm2022/lib/consumers/mix-streams.service.mjs +23 -1
  100. package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +41 -1
  101. package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +100 -1
  102. package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +30 -1
  103. package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +38 -1
  104. package/dist/esm2022/lib/consumers/re-port.service.mjs +49 -1
  105. package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +83 -1
  106. package/dist/esm2022/lib/consumers/readjust.service.mjs +51 -1
  107. package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +32 -1
  108. package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +28 -1
  109. package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +59 -1
  110. package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +35 -1
  111. package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +52 -1
  112. package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +34 -1
  113. package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +37 -1
  114. package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +38 -38
  115. package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +34 -1
  116. package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +40 -1
  117. package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +28 -1
  118. package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +41 -1
  119. package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +56 -1
  120. package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +54 -1
  121. package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +62 -1
  122. package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +51 -1
  123. package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +59 -1
  124. package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +34 -1
  125. package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +33 -1
  126. package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +48 -1
  127. package/dist/esm2022/lib/consumers/trigger.service.mjs +39 -1
  128. package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +55 -1
  129. package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +46 -1
  130. package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +26 -1
  131. package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +72 -1
  132. package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +25 -1
  133. package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +25 -1
  134. package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +45 -1
  135. package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +23 -1
  136. package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +76 -1
  137. package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +25 -1
  138. package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +21 -1
  139. package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +36 -1
  140. package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +23 -1
  141. package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +23 -1
  142. package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +50 -1
  143. package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +25 -1
  144. package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +47 -1
  145. package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +40 -1
  146. package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +46 -1
  147. package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +39 -1
  148. package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +33 -1
  149. package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +35 -1
  150. package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +21 -1
  151. package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +32 -1
  152. package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +25 -1
  153. package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +23 -1
  154. package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +64 -1
  155. package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +44 -1
  156. package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +28 -1
  157. package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +45 -1
  158. package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +46 -1
  159. package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +33 -1
  160. package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +51 -1
  161. package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +39 -1
  162. package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +49 -1
  163. package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +26 -1
  164. package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +40 -1
  165. package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +26 -1
  166. package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +43 -1
  167. package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +98 -1
  168. package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +32 -1
  169. package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +69 -1
  170. package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +89 -1
  171. package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +48 -1
  172. package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +51 -1
  173. package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +57 -1
  174. package/dist/esm2022/lib/methods/utils/format-number.service.mjs +27 -15
  175. package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +34 -1
  176. package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +28 -1
  177. package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +27 -1
  178. package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +37 -1
  179. package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +22 -1
  180. package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +14 -4
  181. package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +14 -4
  182. package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +13 -3
  183. package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +38 -1
  184. package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +56 -1
  185. package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +38 -1
  186. package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +51 -1
  187. package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +38 -1
  188. package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +51 -1
  189. package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +47 -1
  190. package/dist/esm2022/lib/methods/utils/sleep.util.mjs +10 -4
  191. package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +22 -1
  192. package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +17 -1
  193. package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +19 -1
  194. package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +30 -1
  195. package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +30 -1
  196. package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +21 -1
  197. package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +24 -1
  198. package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +32 -1
  199. package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +45 -1
  200. package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +39 -1
  201. package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +39 -1
  202. package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +74 -1
  203. package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +72 -1
  204. package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +28 -1
  205. package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +37 -1
  206. package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +38 -1
  207. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +25 -1
  208. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +27 -1
  209. package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +25 -10
  210. package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +32 -49
  211. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +30 -1
  212. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +24 -1
  213. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +28 -1
  214. package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +32 -1
  215. package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +26 -1
  216. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +62 -1
  217. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +63 -1
  218. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +46 -1
  219. package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +30 -1
  220. package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +39 -1
  221. package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +39 -1
  222. package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +63 -1
  223. package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +42 -1
  224. package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +26 -1
  225. package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +26 -1
  226. package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +22 -1
  227. package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +43 -1
  228. package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +31 -1
  229. package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +41 -1
  230. package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +15 -41
  231. package/dist/esm2022/lib/sockets/socket-manager.service.mjs +41 -1
  232. package/dist/fesm2022/mediasfu-angular.mjs +8192 -910
  233. package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
  234. package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
  235. package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +50 -0
  236. package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
  237. package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
  238. package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
  239. package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
  240. package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
  241. package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
  242. package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
  243. package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
  244. package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
  245. package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
  246. package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
  247. package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
  248. package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
  249. package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
  250. package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
  251. package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
  252. package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
  253. package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
  254. package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
  255. package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
  256. package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
  257. package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
  258. package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
  259. package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
  260. package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
  261. package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
  262. package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
  263. package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
  264. package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
  265. package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
  266. package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
  267. package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
  268. package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
  269. package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +49 -0
  270. package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +49 -0
  271. package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +47 -11
  272. package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +47 -11
  273. package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +45 -11
  274. package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
  275. package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
  276. package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
  277. package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +21 -28
  278. package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +15 -13
  279. package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
  280. package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
  281. package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +16 -33
  282. package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +8 -0
  283. package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +14 -0
  284. package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
  285. package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
  286. package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
  287. package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
  288. package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
  289. package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
  290. package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
  291. package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
  292. package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
  293. package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
  294. package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
  295. package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
  296. package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
  297. package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
  298. package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
  299. package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
  300. package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
  301. package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
  302. package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
  303. package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
  304. package/dist/lib/consumers/change-vids.service.d.ts +131 -66
  305. package/dist/lib/consumers/check-grid.service.d.ts +32 -18
  306. package/dist/lib/consumers/check-permission.service.d.ts +25 -0
  307. package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
  308. package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
  309. package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
  310. package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
  311. package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
  312. package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
  313. package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +38 -0
  314. package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +40 -0
  315. package/dist/lib/consumers/connect-send-transport-video.service.d.ts +44 -0
  316. package/dist/lib/consumers/connect-send-transport.service.d.ts +54 -0
  317. package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
  318. package/dist/lib/consumers/control-media.service.d.ts +45 -0
  319. package/dist/lib/consumers/create-send-transport.service.d.ts +46 -0
  320. package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +50 -0
  321. package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +39 -0
  322. package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +45 -0
  323. package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
  324. package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
  325. package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
  326. package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +33 -0
  327. package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
  328. package/dist/lib/consumers/get-videos.service.d.ts +33 -0
  329. package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
  330. package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
  331. package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
  332. package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
  333. package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
  334. package/dist/lib/consumers/re-port.service.d.ts +48 -0
  335. package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
  336. package/dist/lib/consumers/readjust.service.d.ts +50 -0
  337. package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +31 -0
  338. package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
  339. package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
  340. package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
  341. package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
  342. package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
  343. package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +36 -0
  344. package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
  345. package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
  346. package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
  347. package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
  348. package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
  349. package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
  350. package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +53 -0
  351. package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
  352. package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
  353. package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
  354. package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
  355. package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
  356. package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
  357. package/dist/lib/consumers/trigger.service.d.ts +38 -0
  358. package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
  359. package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
  360. package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
  361. package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
  362. package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
  363. package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
  364. package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
  365. package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
  366. package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
  367. package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +24 -0
  368. package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
  369. package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
  370. package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
  371. package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
  372. package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
  373. package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
  374. package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
  375. package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
  376. package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
  377. package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
  378. package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
  379. package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
  380. package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
  381. package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
  382. package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
  383. package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
  384. package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
  385. package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
  386. package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
  387. package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
  388. package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
  389. package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
  390. package/dist/lib/methods/recording-methods/start-recording.service.d.ts +50 -0
  391. package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +38 -0
  392. package/dist/lib/methods/recording-methods/update-recording.service.d.ts +48 -0
  393. package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
  394. package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
  395. package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
  396. package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
  397. package/dist/lib/methods/stream-methods/click-audio.service.d.ts +97 -0
  398. package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
  399. package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
  400. package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
  401. package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
  402. package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
  403. package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -0
  404. package/dist/lib/methods/utils/format-number.service.d.ts +26 -14
  405. package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
  406. package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
  407. package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
  408. package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
  409. package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
  410. package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
  411. package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
  412. package/dist/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
  413. package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
  414. package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
  415. package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
  416. package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
  417. package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
  418. package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
  419. package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
  420. package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
  421. package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
  422. package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
  423. package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
  424. package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +29 -0
  425. package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
  426. package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
  427. package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
  428. package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
  429. package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
  430. package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
  431. package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +73 -0
  432. package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +71 -0
  433. package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
  434. package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
  435. package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
  436. package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +24 -0
  437. package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
  438. package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
  439. package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
  440. package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
  441. package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
  442. package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
  443. package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
  444. package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
  445. package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
  446. package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
  447. package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
  448. package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
  449. package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
  450. package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
  451. package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
  452. package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
  453. package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
  454. package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
  455. package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
  456. package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
  457. package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
  458. package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
  459. package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
  460. package/dist/lib/sockets/socket-manager.service.d.ts +40 -0
  461. package/package.json +11 -2
@@ -1,6 +1,50 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./record-update-timer.service";
4
+ /**
5
+ * Resumes the recording timer if it is not already running and can be paused/resumed.
6
+ *
7
+ * @param {RecordResumeTimerOptions} options - The options for resuming the recording timer.
8
+ * @param {Object} options.parameters - The parameters for the recording timer.
9
+ * @param {Function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
10
+ * @param {boolean} options.parameters.isTimerRunning - Indicates if the timer is currently running.
11
+ * @param {boolean} options.parameters.canPauseResume - Indicates if the timer can be paused/resumed.
12
+ * @param {number} options.parameters.recordElapsedTime - The elapsed recording time in seconds.
13
+ * @param {number} options.parameters.recordStartTime - The start time of the recording.
14
+ * @param {NodeJS.Timeout | null} options.parameters.recordTimerInterval - The interval ID for the recording timer.
15
+ * @param {Function} options.parameters.showAlert - Function to show an alert message.
16
+ * @param {Function} options.parameters.updateRecordStartTime - Function to update the recording start time.
17
+ * @param {Function} options.parameters.updateRecordTimerInterval - Function to update the recording timer interval.
18
+ * @param {Function} options.parameters.updateIsTimerRunning - Function to update the timer running status.
19
+ * @param {Function} options.parameters.updateCanPauseResume - Function to update the pause/resume status.
20
+ *
21
+ * @returns {Promise<boolean>} - Returns a promise that resolves to true if the timer was successfully resumed, otherwise false.
22
+ *
23
+ * @throws Will show an alert if the timer cannot be resumed due to conditions not being met.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const options: RecordResumeTimerOptions = {
28
+ * parameters: {
29
+ * isTimerRunning: false,
30
+ * canPauseResume: true,
31
+ * recordElapsedTime: 10,
32
+ * recordStartTime: Date.now(),
33
+ * recordTimerInterval: null,
34
+ * showAlert: (alert) => { },
35
+ * updateRecordStartTime: (time) => { },
36
+ * updateRecordTimerInterval: (interval) => { },
37
+ * updateIsTimerRunning: (isRunning) => { },
38
+ * updateCanPauseResume: (canPause) => { },
39
+ * getUpdatedAllParams: () => ({ }),
40
+ * },
41
+ * };
42
+ * const canResume = await recordResumeTimer(options);
43
+ * if (canResume) {
44
+ * // proceed with the resumed recording
45
+ * }
46
+ * ```
47
+ */
4
48
  export class RecordResumeTimer {
5
49
  RecordUpdateTimerService;
6
50
  constructor(RecordUpdateTimerService) {
@@ -83,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
83
127
  providedIn: 'root',
84
128
  }]
85
129
  }], ctorParameters: () => [{ type: i1.RecordUpdateTimer }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXJlc3VtZS10aW1lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvcmVjb3JkaW5nLW1ldGhvZHMvcmVjb3JkLXJlc3VtZS10aW1lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQTZCM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUNSO0lBQXBCLFlBQW9CLHdCQUEyQztRQUEzQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQW1CO0lBQUcsQ0FBQztJQUVuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBRUgsaUJBQWlCLEdBQUcsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUE0QixFQUFvQixFQUFFO1FBQ3ZGLElBQUksRUFBRSxtQkFBbUIsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUN6QyxVQUFVLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUVuQyxJQUFJLEVBQ0YsY0FBYyxFQUNkLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsb0JBQW9CO1FBRXBCLG9CQUFvQjtRQUNwQixxQkFBcUI7VUFDdEIsR0FBRyxVQUFVLENBQUM7UUFFZixJQUFJLENBQUMsY0FBYyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3RDLGVBQWUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixHQUFHLElBQUksQ0FBQyxDQUFDLG9EQUFvRDtZQUN2SCxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2QyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO2dCQUNyQyxvREFBb0Q7Z0JBQ3BELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDOUMsaUJBQWlCLEVBQUUsaUJBQWlCO29CQUNwQyxlQUFlLEVBQUUsZUFBZTtvQkFDaEMsdUJBQXVCLEVBQUUsVUFBVSxDQUFDLHlCQUF5QixDQUFDO29CQUM5RCwyQkFBMkIsRUFBRSxVQUFVLENBQUMsNkJBQTZCLENBQUM7aUJBQ3ZFLENBQUMsQ0FBQztnQkFFSCxVQUFVLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztnQkFFbkMsNEVBQTRFO2dCQUM1RSxJQUNFLFVBQVUsQ0FBQyxjQUFjLENBQUM7b0JBQzFCLFVBQVUsQ0FBQyxlQUFlLENBQUM7b0JBQzNCLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO29CQUM1QixVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxFQUM5QixDQUFDO29CQUNELElBQUksbUJBQW1CLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ2hDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNyQyxDQUFDO29CQUNELHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxjQUFjLEdBQUcsS0FBSyxDQUFDO29CQUN2QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDckMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7WUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDVCx5QkFBeUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9DLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDdEIsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLGtEQUFrRDtZQUMxRSxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUNMLHdGQUF3RjthQUMzRixDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDLENBQUM7dUdBeEZTLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHsgUmVjb3JkVXBkYXRlVGltZXIgfSBmcm9tICcuL3JlY29yZC11cGRhdGUtdGltZXIuc2VydmljZSc7XG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZFJlc3VtZVRpbWVyUGFyYW1ldGVycyB7XG4gIGlzVGltZXJSdW5uaW5nOiBib29sZWFuO1xuICBjYW5QYXVzZVJlc3VtZTogYm9vbGVhbjtcbiAgcmVjb3JkRWxhcHNlZFRpbWU6IG51bWJlcjtcbiAgcmVjb3JkU3RhcnRUaW1lOiBudW1iZXI7XG4gIHJlY29yZFRpbWVySW50ZXJ2YWw/OiBOb2RlSlMuVGltZW91dCB8IG51bGw7XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcbiAgdXBkYXRlUmVjb3JkU3RhcnRUaW1lOiAodGltZTogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRUaW1lckludGVydmFsOiAoaW50ZXJ2YWw6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlSXNUaW1lclJ1bm5pbmc6IChpc1J1bm5pbmc6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUNhblBhdXNlUmVzdW1lOiAoY2FuUGF1c2U6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gUmVjb3JkUmVzdW1lVGltZXJQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkUmVzdW1lVGltZXJPcHRpb25zIHtcbiAgcGFyYW1ldGVyczogUmVjb3JkUmVzdW1lVGltZXJQYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBSZWNvcmRSZXN1bWVUaW1lclR5cGUgPSAob3B0aW9uczogUmVjb3JkUmVzdW1lVGltZXJPcHRpb25zKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkUmVzdW1lVGltZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFJlY29yZFVwZGF0ZVRpbWVyU2VydmljZTogUmVjb3JkVXBkYXRlVGltZXIpIHt9XG5cbiAgLyoqXG4gICAqIFJlc3VtZXMgdGhlIHJlY29yZGluZyB0aW1lciBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5uaW5nIGFuZCBjYW4gYmUgcGF1c2VkL3Jlc3VtZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVjb3JkUmVzdW1lVGltZXJPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHJlc3VtaW5nIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHJlY29yZGluZyB0aW1lci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMgLSBGdW5jdGlvbiB0byBnZXQgdXBkYXRlZCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5pc1RpbWVyUnVubmluZyAtIEluZGljYXRlcyBpZiB0aGUgdGltZXIgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmNhblBhdXNlUmVzdW1lIC0gSW5kaWNhdGVzIGlmIHRoZSB0aW1lciBjYW4gYmUgcGF1c2VkL3Jlc3VtZWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkRWxhcHNlZFRpbWUgLSBUaGUgZWxhcHNlZCByZWNvcmRpbmcgdGltZSBpbiBzZWNvbmRzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFN0YXJ0VGltZSAtIFRoZSBzdGFydCB0aW1lIG9mIHRoZSByZWNvcmRpbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFRpbWVySW50ZXJ2YWwgLSBUaGUgaW50ZXJ2YWwgSUQgZm9yIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5zaG93QWxlcnQgLSBGdW5jdGlvbiB0byBzaG93IGFuIGFsZXJ0IG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRTdGFydFRpbWUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZGluZyBzdGFydCB0aW1lLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkaW5nIHRpbWVyIGludGVydmFsLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlSXNUaW1lclJ1bm5pbmcgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHRpbWVyIHJ1bm5pbmcgc3RhdHVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2FuUGF1c2VSZXN1bWUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHBhdXNlL3Jlc3VtZSBzdGF0dXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdHJ1ZSBpZiB0aGUgdGltZXIgd2FzIHN1Y2Nlc3NmdWxseSByZXN1bWVkLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuXG4gIHJlY29yZFJlc3VtZVRpbWVyID0gYXN5bmMgKHsgcGFyYW1ldGVycyB9OiBSZWNvcmRSZXN1bWVUaW1lck9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBsZXQgeyBnZXRVcGRhdGVkQWxsUGFyYW1zIH0gPSBwYXJhbWV0ZXJzO1xuICAgIHBhcmFtZXRlcnMgPSBnZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICBsZXQge1xuICAgICAgaXNUaW1lclJ1bm5pbmcsXG4gICAgICBjYW5QYXVzZVJlc3VtZSxcbiAgICAgIHJlY29yZEVsYXBzZWRUaW1lLFxuICAgICAgcmVjb3JkU3RhcnRUaW1lLFxuICAgICAgcmVjb3JkVGltZXJJbnRlcnZhbCxcbiAgICAgIHNob3dBbGVydCxcbiAgICAgIHVwZGF0ZVJlY29yZFN0YXJ0VGltZSxcbiAgICAgIHVwZGF0ZVJlY29yZFRpbWVySW50ZXJ2YWwsXG4gICAgICB1cGRhdGVJc1RpbWVyUnVubmluZyxcbiAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lLFxuXG4gICAgICAvL21lZGlhc2Z1IEZ1bmN0aW9uc1xuICAgICAgLy8gcmVjb3JkVXBkYXRlVGltZXIsXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICBpZiAoIWlzVGltZXJSdW5uaW5nICYmIGNhblBhdXNlUmVzdW1lKSB7XG4gICAgICByZWNvcmRTdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHJlY29yZEVsYXBzZWRUaW1lICogMTAwMDsgLy8gQ2FsY3VsYXRlIHRoZSBzdGFydGluZyB0aW1lIGJhc2VkIG9uIGVsYXBzZWQgdGltZVxuICAgICAgdXBkYXRlUmVjb3JkU3RhcnRUaW1lKHJlY29yZFN0YXJ0VGltZSk7XG4gICAgICByZWNvcmRUaW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWVyIGV2ZXJ5IHNlY29uZCAoMTAwMCBtaWxsaXNlY29uZHMpXG4gICAgICAgIHRoaXMuUmVjb3JkVXBkYXRlVGltZXJTZXJ2aWNlLnJlY29yZFVwZGF0ZVRpbWVyKHtcbiAgICAgICAgICByZWNvcmRFbGFwc2VkVGltZTogcmVjb3JkRWxhcHNlZFRpbWUsXG4gICAgICAgICAgcmVjb3JkU3RhcnRUaW1lOiByZWNvcmRTdGFydFRpbWUsXG4gICAgICAgICAgdXBkYXRlUmVjb3JkRWxhcHNlZFRpbWU6IHBhcmFtZXRlcnNbJ3VwZGF0ZVJlY29yZEVsYXBzZWRUaW1lJ10sXG4gICAgICAgICAgdXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lOiBwYXJhbWV0ZXJzWyd1cGRhdGVSZWNvcmRpbmdQcm9ncmVzc1RpbWUnXSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGFyYW1ldGVycyA9IGdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcblxuICAgICAgICAvLyBDaGVjayBpZiByZWNvcmRpbmcgaXMgcGF1c2VkIG9yIHN0b3BwZWQsIGFuZCBjbG9zZSB0aGUgaW50ZXJ2YWwgaWYgbmVlZGVkXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJhbWV0ZXJzWydyZWNvcmRQYXVzZWQnXSB8fFxuICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlY29yZFN0b3BwZWQnXSB8fFxuICAgICAgICAgIHBhcmFtZXRlcnNbJ3Jvb21OYW1lJ10gPT0gJycgfHxcbiAgICAgICAgICBwYXJhbWV0ZXJzWydyb29tTmFtZSddID09IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHJlY29yZFRpbWVySW50ZXJ2YWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChyZWNvcmRUaW1lckludGVydmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbChudWxsKTtcbiAgICAgICAgICBpc1RpbWVyUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHVwZGF0ZUlzVGltZXJSdW5uaW5nKGlzVGltZXJSdW5uaW5nKTtcbiAgICAgICAgICBjYW5QYXVzZVJlc3VtZSA9IGZhbHNlO1xuICAgICAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lKGNhblBhdXNlUmVzdW1lKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwMCk7XG4gICAgICB1cGRhdGVSZWNvcmRUaW1lckludGVydmFsKHJlY29yZFRpbWVySW50ZXJ2YWwpO1xuICAgICAgaXNUaW1lclJ1bm5pbmcgPSB0cnVlO1xuICAgICAgdXBkYXRlSXNUaW1lclJ1bm5pbmcoaXNUaW1lclJ1bm5pbmcpO1xuICAgICAgY2FuUGF1c2VSZXN1bWUgPSBmYWxzZTsgLy8gRGlzYWJsZSBwYXVzZS9yZXN1bWUgYWN0aW9ucyB1bnRpbCBwYXVzZWQgYWdhaW5cbiAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lKGNhblBhdXNlUmVzdW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICdDYW4gb25seSBwYXVzZSBvciByZXN1bWUgYWZ0ZXIgMTUgc2Vjb25kcyBvZiBzdGFydGluZyBvciBwYXVzaW5nIG9yIHJlc3VtaW5nIHJlY29yZGluZycsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG59XG4iXX0=
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXJlc3VtZS10aW1lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvcmVjb3JkaW5nLW1ldGhvZHMvcmVjb3JkLXJlc3VtZS10aW1lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQTBCM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQ0c7QUFNSCxNQUFNLE9BQU8saUJBQWlCO0lBQ1I7SUFBcEIsWUFBb0Isd0JBQTJDO1FBQTNDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBbUI7SUFBRyxDQUFDO0lBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFFSCxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQTRCLEVBQW9CLEVBQUU7UUFDdkYsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBRW5DLElBQUksRUFDRixjQUFjLEVBQ2QsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixvQkFBb0I7UUFFcEIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtVQUN0QixHQUFHLFVBQVUsQ0FBQztRQUVmLElBQUksQ0FBQyxjQUFjLElBQUksY0FBYyxFQUFFLENBQUM7WUFDdEMsZUFBZSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUMsb0RBQW9EO1lBQ3ZILHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3JDLG9EQUFvRDtnQkFDcEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDO29CQUM5QyxpQkFBaUIsRUFBRSxpQkFBaUI7b0JBQ3BDLGVBQWUsRUFBRSxlQUFlO29CQUNoQyx1QkFBdUIsRUFBRSxVQUFVLENBQUMseUJBQXlCLENBQUM7b0JBQzlELDJCQUEyQixFQUFFLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDdkUsQ0FBQyxDQUFDO2dCQUVILFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO2dCQUVuQyw0RUFBNEU7Z0JBQzVFLElBQ0UsVUFBVSxDQUFDLGNBQWMsQ0FBQztvQkFDMUIsVUFBVSxDQUFDLGVBQWUsQ0FBQztvQkFDM0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7b0JBQzVCLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQzlCLENBQUM7b0JBQ0QsSUFBSSxtQkFBbUIsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDaEMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQ3JDLENBQUM7b0JBQ0QseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLGNBQWMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUNyQyxjQUFjLEdBQUcsS0FBSyxDQUFDO29CQUN2QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNULHlCQUF5QixDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDL0MsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsa0RBQWtEO1lBQzFFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLEVBQUUsQ0FBQztnQkFDVixJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQ0wsd0ZBQXdGO2FBQzNGLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0F4RlMsaUJBQWlCOzJHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNob3dBbGVydCB9IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5pbXBvcnQgeyBSZWNvcmRVcGRhdGVUaW1lciB9IGZyb20gJy4vcmVjb3JkLXVwZGF0ZS10aW1lci5zZXJ2aWNlJztcbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkUmVzdW1lVGltZXJQYXJhbWV0ZXJzIHtcbiAgaXNUaW1lclJ1bm5pbmc6IGJvb2xlYW47XG4gIGNhblBhdXNlUmVzdW1lOiBib29sZWFuO1xuICByZWNvcmRFbGFwc2VkVGltZTogbnVtYmVyO1xuICByZWNvcmRTdGFydFRpbWU6IG51bWJlcjtcbiAgcmVjb3JkVGltZXJJbnRlcnZhbD86IE5vZGVKUy5UaW1lb3V0IHwgbnVsbDtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuICB1cGRhdGVSZWNvcmRTdGFydFRpbWU6ICh0aW1lOiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZFRpbWVySW50ZXJ2YWw6IChpbnRlcnZhbDogTm9kZUpTLlRpbWVvdXQgfCBudWxsKSA9PiB2b2lkO1xuICB1cGRhdGVJc1RpbWVyUnVubmluZzogKGlzUnVubmluZzogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlQ2FuUGF1c2VSZXN1bWU6IChjYW5QYXVzZTogYm9vbGVhbikgPT4gdm9pZDtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBSZWNvcmRSZXN1bWVUaW1lclBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRSZXN1bWVUaW1lck9wdGlvbnMge1xuICBwYXJhbWV0ZXJzOiBSZWNvcmRSZXN1bWVUaW1lclBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFJlY29yZFJlc3VtZVRpbWVyVHlwZSA9IChvcHRpb25zOiBSZWNvcmRSZXN1bWVUaW1lck9wdGlvbnMpID0+IFByb21pc2U8Ym9vbGVhbj47XG5cbi8qKlxuICogUmVzdW1lcyB0aGUgcmVjb3JkaW5nIHRpbWVyIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcgYW5kIGNhbiBiZSBwYXVzZWQvcmVzdW1lZC5cbiAqXG4gKiBAcGFyYW0ge1JlY29yZFJlc3VtZVRpbWVyT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZXN1bWluZyB0aGUgcmVjb3JkaW5nIHRpbWVyLlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVjb3JkaW5nIHRpbWVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMgLSBGdW5jdGlvbiB0byBnZXQgdXBkYXRlZCBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuaXNUaW1lclJ1bm5pbmcgLSBJbmRpY2F0ZXMgaWYgdGhlIHRpbWVyIGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuY2FuUGF1c2VSZXN1bWUgLSBJbmRpY2F0ZXMgaWYgdGhlIHRpbWVyIGNhbiBiZSBwYXVzZWQvcmVzdW1lZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkRWxhcHNlZFRpbWUgLSBUaGUgZWxhcHNlZCByZWNvcmRpbmcgdGltZSBpbiBzZWNvbmRzLlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdGFydFRpbWUgLSBUaGUgc3RhcnQgdGltZSBvZiB0aGUgcmVjb3JkaW5nLlxuICogQHBhcmFtIHtOb2RlSlMuVGltZW91dCB8IG51bGx9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRUaW1lckludGVydmFsIC0gVGhlIGludGVydmFsIElEIGZvciB0aGUgcmVjb3JkaW5nIHRpbWVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNob3dBbGVydCAtIEZ1bmN0aW9uIHRvIHNob3cgYW4gYWxlcnQgbWVzc2FnZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRTdGFydFRpbWUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZGluZyBzdGFydCB0aW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZFRpbWVySW50ZXJ2YWwgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZGluZyB0aW1lciBpbnRlcnZhbC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVJc1RpbWVyUnVubmluZyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdGltZXIgcnVubmluZyBzdGF0dXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2FuUGF1c2VSZXN1bWUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHBhdXNlL3Jlc3VtZSBzdGF0dXMuXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0cnVlIGlmIHRoZSB0aW1lciB3YXMgc3VjY2Vzc2Z1bGx5IHJlc3VtZWQsIG90aGVyd2lzZSBmYWxzZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgc2hvdyBhbiBhbGVydCBpZiB0aGUgdGltZXIgY2Fubm90IGJlIHJlc3VtZWQgZHVlIHRvIGNvbmRpdGlvbnMgbm90IGJlaW5nIG1ldC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb3B0aW9uczogUmVjb3JkUmVzdW1lVGltZXJPcHRpb25zID0ge1xuICogICBwYXJhbWV0ZXJzOiB7XG4gKiAgICAgaXNUaW1lclJ1bm5pbmc6IGZhbHNlLFxuICogICAgIGNhblBhdXNlUmVzdW1lOiB0cnVlLFxuICogICAgIHJlY29yZEVsYXBzZWRUaW1lOiAxMCxcbiAqICAgICByZWNvcmRTdGFydFRpbWU6IERhdGUubm93KCksXG4gKiAgICAgcmVjb3JkVGltZXJJbnRlcnZhbDogbnVsbCxcbiAqICAgICBzaG93QWxlcnQ6IChhbGVydCkgPT4geyB9LFxuICogICAgIHVwZGF0ZVJlY29yZFN0YXJ0VGltZTogKHRpbWUpID0+IHsgfSxcbiAqICAgICB1cGRhdGVSZWNvcmRUaW1lckludGVydmFsOiAoaW50ZXJ2YWwpID0+IHsgfSxcbiAqICAgICB1cGRhdGVJc1RpbWVyUnVubmluZzogKGlzUnVubmluZykgPT4geyB9LFxuICogICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lOiAoY2FuUGF1c2UpID0+IHsgIH0sXG4gKiAgICAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gKHsgIH0pLFxuICogICB9LFxuICogfTtcbiAqIGNvbnN0IGNhblJlc3VtZSA9IGF3YWl0IHJlY29yZFJlc3VtZVRpbWVyKG9wdGlvbnMpO1xuICogaWYgKGNhblJlc3VtZSkge1xuICogICAvLyBwcm9jZWVkIHdpdGggdGhlIHJlc3VtZWQgcmVjb3JkaW5nXG4gKiB9XG4gKiBgYGBcbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZWNvcmRSZXN1bWVUaW1lciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgUmVjb3JkVXBkYXRlVGltZXJTZXJ2aWNlOiBSZWNvcmRVcGRhdGVUaW1lcikge31cblxuICAvKipcbiAgICogUmVzdW1lcyB0aGUgcmVjb3JkaW5nIHRpbWVyIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJ1bm5pbmcgYW5kIGNhbiBiZSBwYXVzZWQvcmVzdW1lZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmRSZXN1bWVUaW1lck9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVzdW1pbmcgdGhlIHJlY29yZGluZyB0aW1lci5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVjb3JkaW5nIHRpbWVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzVGltZXJSdW5uaW5nIC0gSW5kaWNhdGVzIGlmIHRoZSB0aW1lciBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuY2FuUGF1c2VSZXN1bWUgLSBJbmRpY2F0ZXMgaWYgdGhlIHRpbWVyIGNhbiBiZSBwYXVzZWQvcmVzdW1lZC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRFbGFwc2VkVGltZSAtIFRoZSBlbGFwc2VkIHJlY29yZGluZyB0aW1lIGluIHNlY29uZHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RhcnRUaW1lIC0gVGhlIHN0YXJ0IHRpbWUgb2YgdGhlIHJlY29yZGluZy5cbiAgICogQHBhcmFtIHtudW1iZXIgfCBudWxsfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkVGltZXJJbnRlcnZhbCAtIFRoZSBpbnRlcnZhbCBJRCBmb3IgdGhlIHJlY29yZGluZyB0aW1lci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNob3dBbGVydCAtIEZ1bmN0aW9uIHRvIHNob3cgYW4gYWxlcnQgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZFN0YXJ0VGltZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkaW5nIHN0YXJ0IHRpbWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRUaW1lckludGVydmFsIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSByZWNvcmRpbmcgdGltZXIgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVJc1RpbWVyUnVubmluZyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdGltZXIgcnVubmluZyBzdGF0dXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVDYW5QYXVzZVJlc3VtZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcGF1c2UvcmVzdW1lIHN0YXR1cy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0cnVlIGlmIHRoZSB0aW1lciB3YXMgc3VjY2Vzc2Z1bGx5IHJlc3VtZWQsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG5cbiAgcmVjb3JkUmVzdW1lVGltZXIgPSBhc3luYyAoeyBwYXJhbWV0ZXJzIH06IFJlY29yZFJlc3VtZVRpbWVyT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGxldCB7IGdldFVwZGF0ZWRBbGxQYXJhbXMgfSA9IHBhcmFtZXRlcnM7XG4gICAgcGFyYW1ldGVycyA9IGdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcblxuICAgIGxldCB7XG4gICAgICBpc1RpbWVyUnVubmluZyxcbiAgICAgIGNhblBhdXNlUmVzdW1lLFxuICAgICAgcmVjb3JkRWxhcHNlZFRpbWUsXG4gICAgICByZWNvcmRTdGFydFRpbWUsXG4gICAgICByZWNvcmRUaW1lckludGVydmFsLFxuICAgICAgc2hvd0FsZXJ0LFxuICAgICAgdXBkYXRlUmVjb3JkU3RhcnRUaW1lLFxuICAgICAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbCxcbiAgICAgIHVwZGF0ZUlzVGltZXJSdW5uaW5nLFxuICAgICAgdXBkYXRlQ2FuUGF1c2VSZXN1bWUsXG5cbiAgICAgIC8vbWVkaWFzZnUgRnVuY3Rpb25zXG4gICAgICAvLyByZWNvcmRVcGRhdGVUaW1lcixcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGlmICghaXNUaW1lclJ1bm5pbmcgJiYgY2FuUGF1c2VSZXN1bWUpIHtcbiAgICAgIHJlY29yZFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gcmVjb3JkRWxhcHNlZFRpbWUgKiAxMDAwOyAvLyBDYWxjdWxhdGUgdGhlIHN0YXJ0aW5nIHRpbWUgYmFzZWQgb24gZWxhcHNlZCB0aW1lXG4gICAgICB1cGRhdGVSZWNvcmRTdGFydFRpbWUocmVjb3JkU3RhcnRUaW1lKTtcbiAgICAgIHJlY29yZFRpbWVySW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgdGltZXIgZXZlcnkgc2Vjb25kICgxMDAwIG1pbGxpc2Vjb25kcylcbiAgICAgICAgdGhpcy5SZWNvcmRVcGRhdGVUaW1lclNlcnZpY2UucmVjb3JkVXBkYXRlVGltZXIoe1xuICAgICAgICAgIHJlY29yZEVsYXBzZWRUaW1lOiByZWNvcmRFbGFwc2VkVGltZSxcbiAgICAgICAgICByZWNvcmRTdGFydFRpbWU6IHJlY29yZFN0YXJ0VGltZSxcbiAgICAgICAgICB1cGRhdGVSZWNvcmRFbGFwc2VkVGltZTogcGFyYW1ldGVyc1sndXBkYXRlUmVjb3JkRWxhcHNlZFRpbWUnXSxcbiAgICAgICAgICB1cGRhdGVSZWNvcmRpbmdQcm9ncmVzc1RpbWU6IHBhcmFtZXRlcnNbJ3VwZGF0ZVJlY29yZGluZ1Byb2dyZXNzVGltZSddLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHJlY29yZGluZyBpcyBwYXVzZWQgb3Igc3RvcHBlZCwgYW5kIGNsb3NlIHRoZSBpbnRlcnZhbCBpZiBuZWVkZWRcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmFtZXRlcnNbJ3JlY29yZFBhdXNlZCddIHx8XG4gICAgICAgICAgcGFyYW1ldGVyc1sncmVjb3JkU3RvcHBlZCddIHx8XG4gICAgICAgICAgcGFyYW1ldGVyc1sncm9vbU5hbWUnXSA9PSAnJyB8fFxuICAgICAgICAgIHBhcmFtZXRlcnNbJ3Jvb21OYW1lJ10gPT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocmVjb3JkVGltZXJJbnRlcnZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHJlY29yZFRpbWVySW50ZXJ2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB1cGRhdGVSZWNvcmRUaW1lckludGVydmFsKG51bGwpO1xuICAgICAgICAgIGlzVGltZXJSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgICAgdXBkYXRlSXNUaW1lclJ1bm5pbmcoaXNUaW1lclJ1bm5pbmcpO1xuICAgICAgICAgIGNhblBhdXNlUmVzdW1lID0gZmFsc2U7XG4gICAgICAgICAgdXBkYXRlQ2FuUGF1c2VSZXN1bWUoY2FuUGF1c2VSZXN1bWUpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDAwKTtcbiAgICAgIHVwZGF0ZVJlY29yZFRpbWVySW50ZXJ2YWwocmVjb3JkVGltZXJJbnRlcnZhbCk7XG4gICAgICBpc1RpbWVyUnVubmluZyA9IHRydWU7XG4gICAgICB1cGRhdGVJc1RpbWVyUnVubmluZyhpc1RpbWVyUnVubmluZyk7XG4gICAgICBjYW5QYXVzZVJlc3VtZSA9IGZhbHNlOyAvLyBEaXNhYmxlIHBhdXNlL3Jlc3VtZSBhY3Rpb25zIHVudGlsIHBhdXNlZCBhZ2FpblxuICAgICAgdXBkYXRlQ2FuUGF1c2VSZXN1bWUoY2FuUGF1c2VSZXN1bWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ0NhbiBvbmx5IHBhdXNlIG9yIHJlc3VtZSBhZnRlciAxNSBzZWNvbmRzIG9mIHN0YXJ0aW5nIG9yIHBhdXNpbmcgb3IgcmVzdW1pbmcgcmVjb3JkaW5nJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -1,6 +1,51 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./record-update-timer.service";
4
+ /**
5
+ * Starts the recording timer and manages its state.
6
+ *
7
+ * @param {RecordStartTimerOptions} options - The options for starting the recording timer.
8
+ * @param {Object} options.parameters - The parameters for the recording timer.
9
+ * @param {Function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
10
+ * @param {number} options.parameters.recordStartTime - The start time of the recording.
11
+ * @param {NodeJS.Timeout | null} options.parameters.recordTimerInterval - The interval ID for the recording timer.
12
+ * @param {boolean} options.parameters.isTimerRunning - Flag indicating if the timer is currently running.
13
+ * @param {boolean} options.parameters.canPauseResume - Flag indicating if pause/resume actions are enabled.
14
+ * @param {number} options.parameters.recordChangeSeconds - The time after which pause/resume actions are enabled.
15
+ * @param {Function} options.parameters.updateRecordStartTime - Function to update the recording start time.
16
+ * @param {Function} options.parameters.updateRecordTimerInterval - Function to update the recording timer interval.
17
+ * @param {Function} options.parameters.updateIsTimerRunning - Function to update the timer running state.
18
+ * @param {Function} options.parameters.updateCanPauseResume - Function to update the pause/resume state.
19
+ *
20
+ * @returns {Promise<void>} A promise that resolves when the timer is started.
21
+ *
22
+ * @remarks
23
+ * This function initializes the recording start time and sets up an interval to update the timer every second.
24
+ * It also manages the state of the timer, including enabling and disabling pause/resume actions.
25
+ * The timer is stopped if the recording is paused, stopped, or if the room name is invalid.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const options: RecordStartTimerOptions = {
30
+ * parameters: {
31
+ * recordStartTime: Date.now(),
32
+ * recordTimerInterval: null,
33
+ * isTimerRunning: false,
34
+ * canPauseResume: false,
35
+ * recordChangeSeconds: 15,
36
+ * recordPaused: false,
37
+ * recordStopped: false,
38
+ * roomName: 'room1',
39
+ * updateRecordStartTime: (time) => { },
40
+ * updateRecordTimerInterval: (interval) => { },
41
+ * updateIsTimerRunning: (isRunning) => { },
42
+ * updateCanPauseResume: (canPause) => {},
43
+ * getUpdatedAllParams: () => { },
44
+ * },
45
+ * };
46
+ * await recordStartTimer(options);
47
+ * ```
48
+ */
4
49
  export class RecordStartTimer {
5
50
  RecordUpdateTimerService;
6
51
  constructor(RecordUpdateTimerService) {
@@ -86,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
86
131
  providedIn: 'root',
87
132
  }]
88
133
  }], ctorParameters: () => [{ type: i1.RecordUpdateTimer }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXN0YXJ0LXRpbWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9yZWNvcmRpbmctbWV0aG9kcy9yZWNvcmQtc3RhcnQtdGltZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFnQzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDUDtJQUFwQixZQUFvQix3QkFBMkM7UUFBM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFtQjtJQUFHLENBQUM7SUFFbkU7Ozs7T0FJRztJQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFFSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQXVCLEVBQWlCLEVBQUU7UUFDOUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBRW5DLElBQUksRUFDRixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBRW5CLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixHQUFHLFVBQVUsQ0FBQztRQUVmOztXQUVHO1FBQ0gsU0FBUyxpQkFBaUI7WUFDeEIsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLGVBQWUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsNEJBQTRCO1lBQ3BFLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3JDLG9EQUFvRDtnQkFDcEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDO29CQUM5QyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsaUJBQWlCO29CQUMvQyxlQUFlLEVBQUUsZUFBZTtvQkFDaEMsdUJBQXVCLEVBQUUsVUFBVSxDQUFDLHVCQUF1QjtvQkFDM0QsMkJBQTJCLEVBQUUsVUFBVSxDQUFDLDJCQUEyQjtpQkFDcEUsQ0FBQyxDQUFDO2dCQUVILFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO2dCQUVuQyw0RUFBNEU7Z0JBQzVFLElBQ0UsVUFBVSxDQUFDLFlBQVk7b0JBQ3ZCLFVBQVUsQ0FBQyxhQUFhO29CQUN4QixVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUU7b0JBQ3pCLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxFQUMzQixDQUFDO29CQUNELGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNuQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3JDLGNBQWMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1QseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyx5Q0FBeUM7WUFDakUsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtREFBbUQ7UUFDekcsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0E1RlMsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjb3JkVXBkYXRlVGltZXIgfSBmcm9tICcuL3JlY29yZC11cGRhdGUtdGltZXIuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkU3RhcnRUaW1lclBhcmFtZXRlcnMge1xuICByZWNvcmRTdGFydFRpbWU6IG51bWJlcjtcbiAgcmVjb3JkVGltZXJJbnRlcnZhbD86IE5vZGVKUy5UaW1lb3V0IHwgbnVsbDtcbiAgaXNUaW1lclJ1bm5pbmc6IGJvb2xlYW47XG4gIGNhblBhdXNlUmVzdW1lOiBib29sZWFuO1xuICByZWNvcmRDaGFuZ2VTZWNvbmRzOiBudW1iZXI7XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RvcHBlZDogYm9vbGVhbjtcbiAgcm9vbU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHVwZGF0ZVJlY29yZFN0YXJ0VGltZTogKHRpbWU6IG51bWJlcikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbDogKGludGVydmFsOiBOb2RlSlMuVGltZW91dCB8IG51bGwpID0+IHZvaWQ7XG4gIHVwZGF0ZUlzVGltZXJSdW5uaW5nOiAoaXNSdW5uaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVDYW5QYXVzZVJlc3VtZTogKGNhblBhdXNlOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIC8vIE1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBSZWNvcmRTdGFydFRpbWVyUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZFN0YXJ0VGltZXJPcHRpb25zIHtcbiAgcGFyYW1ldGVyczogUmVjb3JkU3RhcnRUaW1lclBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFJlY29yZFN0YXJ0VGltZXJUeXBlID0gKG9wdGlvbnM6IFJlY29yZFN0YXJ0VGltZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkU3RhcnRUaW1lciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgUmVjb3JkVXBkYXRlVGltZXJTZXJ2aWNlOiBSZWNvcmRVcGRhdGVUaW1lcikge31cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gICAqIEBmdW5jdGlvblxuICAgKiBAcGFyYW0ge1JlY29yZFN0YXJ0VGltZXJPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IGNvbnRhaW5pbmcgbmVjZXNzYXJ5IHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLlxuICAgKi9cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIHJlY29yZGluZyB0aW1lciBhbmQgbWFuYWdlcyBpdHMgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVjb3JkU3RhcnRUaW1lck9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3Igc3RhcnRpbmcgdGhlIHJlY29yZGluZyB0aW1lci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMgLSBGdW5jdGlvbiB0byBnZXQgdXBkYXRlZCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFN0YXJ0VGltZSAtIFRoZSBzdGFydCB0aW1lIG9mIHRoZSByZWNvcmRpbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFRpbWVySW50ZXJ2YWwgLSBUaGUgaW50ZXJ2YWwgSUQgZm9yIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzVGltZXJSdW5uaW5nIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB0aW1lciBpcyBydW5uaW5nLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5jYW5QYXVzZVJlc3VtZSAtIEZsYWcgaW5kaWNhdGluZyBpZiBwYXVzZS9yZXN1bWUgYWN0aW9ucyBhcmUgZW5hYmxlZC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRDaGFuZ2VTZWNvbmRzIC0gVGhlIHRpbWUgYWZ0ZXIgd2hpY2ggcGF1c2UvcmVzdW1lIGFjdGlvbnMgYXJlIGVuYWJsZWQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRTdGFydFRpbWUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZGluZyBzdGFydCB0aW1lLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkaW5nIHRpbWVyIGludGVydmFsLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlSXNUaW1lclJ1bm5pbmcgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHRpbWVyIHJ1bm5pbmcgc3RhdGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVDYW5QYXVzZVJlc3VtZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcGF1c2UvcmVzdW1lIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGltZXIgaXMgc3RhcnRlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgcmVjb3JkaW5nIHN0YXJ0IHRpbWUgYW5kIHNldHMgdXAgYW4gaW50ZXJ2YWwgdG8gdXBkYXRlIHRoZSB0aW1lciBldmVyeSBzZWNvbmQuXG4gICAqIEl0IGFsc28gbWFuYWdlcyB0aGUgc3RhdGUgb2YgdGhlIHRpbWVyLCBpbmNsdWRpbmcgZW5hYmxpbmcgYW5kIGRpc2FibGluZyBwYXVzZS9yZXN1bWUgYWN0aW9ucy5cbiAgICogVGhlIHRpbWVyIGlzIHN0b3BwZWQgaWYgdGhlIHJlY29yZGluZyBpcyBwYXVzZWQsIHN0b3BwZWQsIG9yIGlmIHRoZSByb29tIG5hbWUgaXMgaW52YWxpZC5cbiAgICovXG5cbiAgcmVjb3JkU3RhcnRUaW1lciA9IGFzeW5jICh7IHBhcmFtZXRlcnMgfTogeyBwYXJhbWV0ZXJzOiBhbnkgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGxldCB7IGdldFVwZGF0ZWRBbGxQYXJhbXMgfSA9IHBhcmFtZXRlcnM7XG4gICAgcGFyYW1ldGVycyA9IGdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcblxuICAgIGxldCB7XG4gICAgICByZWNvcmRTdGFydFRpbWUsXG4gICAgICByZWNvcmRUaW1lckludGVydmFsLFxuICAgICAgaXNUaW1lclJ1bm5pbmcsXG4gICAgICBjYW5QYXVzZVJlc3VtZSxcbiAgICAgIHJlY29yZENoYW5nZVNlY29uZHMsXG5cbiAgICAgIHVwZGF0ZVJlY29yZFN0YXJ0VGltZSxcbiAgICAgIHVwZGF0ZVJlY29yZFRpbWVySW50ZXJ2YWwsXG4gICAgICB1cGRhdGVJc1RpbWVyUnVubmluZyxcbiAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lLFxuICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgLyoqXG4gICAgICogVXRpbGl0eSBmdW5jdGlvbiB0byBlbmFibGUgcGF1c2UvcmVzdW1lIGFjdGlvbnMgYWZ0ZXIgYSBzcGVjaWZpZWQgdGltZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlbmFibGVQYXVzZVJlc3VtZSgpIHtcbiAgICAgIGNhblBhdXNlUmVzdW1lID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lKGNhblBhdXNlUmVzdW1lKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVGltZXJSdW5uaW5nKSB7XG4gICAgICByZWNvcmRTdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcFxuICAgICAgdXBkYXRlUmVjb3JkU3RhcnRUaW1lKHJlY29yZFN0YXJ0VGltZSk7XG4gICAgICByZWNvcmRUaW1lckludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAvLyBVcGRhdGUgdGhlIHRpbWVyIGV2ZXJ5IHNlY29uZCAoMTAwMCBtaWxsaXNlY29uZHMpXG4gICAgICAgIHRoaXMuUmVjb3JkVXBkYXRlVGltZXJTZXJ2aWNlLnJlY29yZFVwZGF0ZVRpbWVyKHtcbiAgICAgICAgICByZWNvcmRFbGFwc2VkVGltZTogcGFyYW1ldGVycy5yZWNvcmRFbGFwc2VkVGltZSxcbiAgICAgICAgICByZWNvcmRTdGFydFRpbWU6IHJlY29yZFN0YXJ0VGltZSxcbiAgICAgICAgICB1cGRhdGVSZWNvcmRFbGFwc2VkVGltZTogcGFyYW1ldGVycy51cGRhdGVSZWNvcmRFbGFwc2VkVGltZSxcbiAgICAgICAgICB1cGRhdGVSZWNvcmRpbmdQcm9ncmVzc1RpbWU6IHBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHJlY29yZGluZyBpcyBwYXVzZWQgb3Igc3RvcHBlZCwgYW5kIGNsb3NlIHRoZSBpbnRlcnZhbCBpZiBuZWVkZWRcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmFtZXRlcnMucmVjb3JkUGF1c2VkIHx8XG4gICAgICAgICAgcGFyYW1ldGVycy5yZWNvcmRTdG9wcGVkIHx8XG4gICAgICAgICAgcGFyYW1ldGVycy5yb29tTmFtZSA9PSAnJyB8fFxuICAgICAgICAgIHBhcmFtZXRlcnMucm9vbU5hbWUgPT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHJlY29yZFRpbWVySW50ZXJ2YWwpO1xuICAgICAgICAgIHVwZGF0ZVJlY29yZFRpbWVySW50ZXJ2YWwobnVsbCk7XG4gICAgICAgICAgaXNUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB1cGRhdGVJc1RpbWVyUnVubmluZyhpc1RpbWVyUnVubmluZyk7XG4gICAgICAgICAgY2FuUGF1c2VSZXN1bWUgPSBmYWxzZTtcbiAgICAgICAgICB1cGRhdGVDYW5QYXVzZVJlc3VtZShjYW5QYXVzZVJlc3VtZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMDApO1xuICAgICAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbChyZWNvcmRUaW1lckludGVydmFsKTtcbiAgICAgIGlzVGltZXJSdW5uaW5nID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZUlzVGltZXJSdW5uaW5nKGlzVGltZXJSdW5uaW5nKTtcbiAgICAgIGNhblBhdXNlUmVzdW1lID0gZmFsc2U7IC8vIERpc2FibGUgcGF1c2UvcmVzdW1lIGFjdGlvbnMgaW5pdGlhbGx5XG4gICAgICB1cGRhdGVDYW5QYXVzZVJlc3VtZShjYW5QYXVzZVJlc3VtZSk7XG4gICAgICBzZXRUaW1lb3V0KGVuYWJsZVBhdXNlUmVzdW1lLCByZWNvcmRDaGFuZ2VTZWNvbmRzKTsgLy8gRW5hYmxlIHBhdXNlL3Jlc3VtZSBhY3Rpb25zIGFmdGVyIHNwZWNpZmllZCB0aW1lXG4gICAgfVxuICB9O1xufVxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXN0YXJ0LXRpbWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9yZWNvcmRpbmctbWV0aG9kcy9yZWNvcmQtc3RhcnQtdGltZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUE2QjNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUtILE1BQU0sT0FBTyxnQkFBZ0I7SUFDUDtJQUFwQixZQUFvQix3QkFBMkM7UUFBM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUFtQjtJQUFHLENBQUM7SUFFbkU7Ozs7T0FJRztJQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FxQkc7SUFFSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQXVCLEVBQWlCLEVBQUU7UUFDOUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBRW5DLElBQUksRUFDRixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxjQUFjLEVBQ2QsbUJBQW1CLEVBRW5CLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixHQUFHLFVBQVUsQ0FBQztRQUVmOztXQUVHO1FBQ0gsU0FBUyxpQkFBaUI7WUFDeEIsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLGVBQWUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsNEJBQTRCO1lBQ3BFLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3JDLG9EQUFvRDtnQkFDcEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDO29CQUM5QyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsaUJBQWlCO29CQUMvQyxlQUFlLEVBQUUsZUFBZTtvQkFDaEMsdUJBQXVCLEVBQUUsVUFBVSxDQUFDLHVCQUF1QjtvQkFDM0QsMkJBQTJCLEVBQUUsVUFBVSxDQUFDLDJCQUEyQjtpQkFDcEUsQ0FBQyxDQUFDO2dCQUVILFVBQVUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO2dCQUVuQyw0RUFBNEU7Z0JBQzVFLElBQ0UsVUFBVSxDQUFDLFlBQVk7b0JBQ3ZCLFVBQVUsQ0FBQyxhQUFhO29CQUN4QixVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUU7b0JBQ3pCLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxFQUMzQixDQUFDO29CQUNELGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO29CQUNuQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEMsY0FBYyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3JDLGNBQWMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO1lBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1QseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyx5Q0FBeUM7WUFDakUsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtREFBbUQ7UUFDekcsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0E1RlMsZ0JBQWdCOzJHQUFoQixnQkFBZ0IsY0FGZixNQUFNOzsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjb3JkVXBkYXRlVGltZXIgfSBmcm9tICcuL3JlY29yZC11cGRhdGUtdGltZXIuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkU3RhcnRUaW1lclBhcmFtZXRlcnMge1xuICByZWNvcmRTdGFydFRpbWU6IG51bWJlcjtcbiAgcmVjb3JkVGltZXJJbnRlcnZhbD86IE5vZGVKUy5UaW1lb3V0IHwgbnVsbDtcbiAgaXNUaW1lclJ1bm5pbmc6IGJvb2xlYW47XG4gIGNhblBhdXNlUmVzdW1lOiBib29sZWFuO1xuICByZWNvcmRDaGFuZ2VTZWNvbmRzOiBudW1iZXI7XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RvcHBlZDogYm9vbGVhbjtcbiAgcm9vbU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHVwZGF0ZVJlY29yZFN0YXJ0VGltZTogKHRpbWU6IG51bWJlcikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbDogKGludGVydmFsOiBOb2RlSlMuVGltZW91dCB8IG51bGwpID0+IHZvaWQ7XG4gIHVwZGF0ZUlzVGltZXJSdW5uaW5nOiAoaXNSdW5uaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVDYW5QYXVzZVJlc3VtZTogKGNhblBhdXNlOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIC8vIE1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBSZWNvcmRTdGFydFRpbWVyUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZFN0YXJ0VGltZXJPcHRpb25zIHtcbiAgcGFyYW1ldGVyczogUmVjb3JkU3RhcnRUaW1lclBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFJlY29yZFN0YXJ0VGltZXJUeXBlID0gKG9wdGlvbnM6IFJlY29yZFN0YXJ0VGltZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIFN0YXJ0cyB0aGUgcmVjb3JkaW5nIHRpbWVyIGFuZCBtYW5hZ2VzIGl0cyBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0ge1JlY29yZFN0YXJ0VGltZXJPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFN0YXJ0VGltZSAtIFRoZSBzdGFydCB0aW1lIG9mIHRoZSByZWNvcmRpbmcuXG4gKiBAcGFyYW0ge05vZGVKUy5UaW1lb3V0IHwgbnVsbH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFRpbWVySW50ZXJ2YWwgLSBUaGUgaW50ZXJ2YWwgSUQgZm9yIHRoZSByZWNvcmRpbmcgdGltZXIuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5pc1RpbWVyUnVubmluZyAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgdGltZXIgaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5jYW5QYXVzZVJlc3VtZSAtIEZsYWcgaW5kaWNhdGluZyBpZiBwYXVzZS9yZXN1bWUgYWN0aW9ucyBhcmUgZW5hYmxlZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkQ2hhbmdlU2Vjb25kcyAtIFRoZSB0aW1lIGFmdGVyIHdoaWNoIHBhdXNlL3Jlc3VtZSBhY3Rpb25zIGFyZSBlbmFibGVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZFN0YXJ0VGltZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkaW5nIHN0YXJ0IHRpbWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkaW5nIHRpbWVyIGludGVydmFsLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUlzVGltZXJSdW5uaW5nIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB0aW1lciBydW5uaW5nIHN0YXRlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUNhblBhdXNlUmVzdW1lIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBwYXVzZS9yZXN1bWUgc3RhdGUuXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRpbWVyIGlzIHN0YXJ0ZWQuXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHJlY29yZGluZyBzdGFydCB0aW1lIGFuZCBzZXRzIHVwIGFuIGludGVydmFsIHRvIHVwZGF0ZSB0aGUgdGltZXIgZXZlcnkgc2Vjb25kLlxuICogSXQgYWxzbyBtYW5hZ2VzIHRoZSBzdGF0ZSBvZiB0aGUgdGltZXIsIGluY2x1ZGluZyBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHBhdXNlL3Jlc3VtZSBhY3Rpb25zLlxuICogVGhlIHRpbWVyIGlzIHN0b3BwZWQgaWYgdGhlIHJlY29yZGluZyBpcyBwYXVzZWQsIHN0b3BwZWQsIG9yIGlmIHRoZSByb29tIG5hbWUgaXMgaW52YWxpZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb3B0aW9uczogUmVjb3JkU3RhcnRUaW1lck9wdGlvbnMgPSB7XG4gKiAgIHBhcmFtZXRlcnM6IHtcbiAqICAgICByZWNvcmRTdGFydFRpbWU6IERhdGUubm93KCksXG4gKiAgICAgcmVjb3JkVGltZXJJbnRlcnZhbDogbnVsbCxcbiAqICAgICBpc1RpbWVyUnVubmluZzogZmFsc2UsXG4gKiAgICAgY2FuUGF1c2VSZXN1bWU6IGZhbHNlLFxuICogICAgIHJlY29yZENoYW5nZVNlY29uZHM6IDE1LFxuICogICAgIHJlY29yZFBhdXNlZDogZmFsc2UsXG4gKiAgICAgcmVjb3JkU3RvcHBlZDogZmFsc2UsXG4gKiAgICAgcm9vbU5hbWU6ICdyb29tMScsXG4gKiAgICAgdXBkYXRlUmVjb3JkU3RhcnRUaW1lOiAodGltZSkgPT4geyAgfSxcbiAqICAgICB1cGRhdGVSZWNvcmRUaW1lckludGVydmFsOiAoaW50ZXJ2YWwpID0+IHsgIH0sXG4gKiAgICAgdXBkYXRlSXNUaW1lclJ1bm5pbmc6IChpc1J1bm5pbmcpID0+IHsgfSxcbiAqICAgICB1cGRhdGVDYW5QYXVzZVJlc3VtZTogKGNhblBhdXNlKSA9PiB7fSxcbiAqICAgICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiB7IH0sXG4gKiAgIH0sXG4gKiB9O1xuICogYXdhaXQgcmVjb3JkU3RhcnRUaW1lcihvcHRpb25zKTtcbiAqIGBgYFxuICovXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZWNvcmRTdGFydFRpbWVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBSZWNvcmRVcGRhdGVUaW1lclNlcnZpY2U6IFJlY29yZFVwZGF0ZVRpbWVyKSB7fVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIHJlY29yZGluZyB0aW1lci5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7UmVjb3JkU3RhcnRUaW1lck9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgY29udGFpbmluZyBuZWNlc3NhcnkgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuXG4gICAqL1xuICAvKipcbiAgICogU3RhcnRzIGEgcmVjb3JkaW5nIHRpbWVyIGFuZCBtYW5hZ2VzIGl0cyBzdGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmRTdGFydFRpbWVyT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBzdGFydGluZyB0aGUgcmVjb3JkaW5nIHRpbWVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RhcnRUaW1lIC0gVGhlIHN0YXJ0IHRpbWUgb2YgdGhlIHJlY29yZGluZy5cbiAgICogQHBhcmFtIHtudW1iZXIgfCBudWxsfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkVGltZXJJbnRlcnZhbCAtIFRoZSBpbnRlcnZhbCBJRCBmb3IgdGhlIHJlY29yZGluZyB0aW1lci5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuaXNUaW1lclJ1bm5pbmcgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHRpbWVyIGlzIHJ1bm5pbmcuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmNhblBhdXNlUmVzdW1lIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHBhdXNlL3Jlc3VtZSBhY3Rpb25zIGFyZSBlbmFibGVkLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZENoYW5nZVNlY29uZHMgLSBUaGUgdGltZSBhZnRlciB3aGljaCBwYXVzZS9yZXN1bWUgYWN0aW9ucyBhcmUgZW5hYmxlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZFN0YXJ0VGltZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkaW5nIHN0YXJ0IHRpbWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRUaW1lckludGVydmFsIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSByZWNvcmRpbmcgdGltZXIgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVJc1RpbWVyUnVubmluZyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdGltZXIgcnVubmluZyBzdGF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUNhblBhdXNlUmVzdW1lIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBwYXVzZS9yZXN1bWUgc3RhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0aW1lciBpcyBzdGFydGVkLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSByZWNvcmRpbmcgc3RhcnQgdGltZSBhbmQgc2V0cyB1cCBhbiBpbnRlcnZhbCB0byB1cGRhdGUgdGhlIHRpbWVyIGV2ZXJ5IHNlY29uZC5cbiAgICogSXQgYWxzbyBtYW5hZ2VzIHRoZSBzdGF0ZSBvZiB0aGUgdGltZXIsIGluY2x1ZGluZyBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHBhdXNlL3Jlc3VtZSBhY3Rpb25zLlxuICAgKiBUaGUgdGltZXIgaXMgc3RvcHBlZCBpZiB0aGUgcmVjb3JkaW5nIGlzIHBhdXNlZCwgc3RvcHBlZCwgb3IgaWYgdGhlIHJvb20gbmFtZSBpcyBpbnZhbGlkLlxuICAgKi9cblxuICByZWNvcmRTdGFydFRpbWVyID0gYXN5bmMgKHsgcGFyYW1ldGVycyB9OiB7IHBhcmFtZXRlcnM6IGFueSB9KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgbGV0IHsgZ2V0VXBkYXRlZEFsbFBhcmFtcyB9ID0gcGFyYW1ldGVycztcbiAgICBwYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgbGV0IHtcbiAgICAgIHJlY29yZFN0YXJ0VGltZSxcbiAgICAgIHJlY29yZFRpbWVySW50ZXJ2YWwsXG4gICAgICBpc1RpbWVyUnVubmluZyxcbiAgICAgIGNhblBhdXNlUmVzdW1lLFxuICAgICAgcmVjb3JkQ2hhbmdlU2Vjb25kcyxcblxuICAgICAgdXBkYXRlUmVjb3JkU3RhcnRUaW1lLFxuICAgICAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbCxcbiAgICAgIHVwZGF0ZUlzVGltZXJSdW5uaW5nLFxuICAgICAgdXBkYXRlQ2FuUGF1c2VSZXN1bWUsXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICAvKipcbiAgICAgKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGVuYWJsZSBwYXVzZS9yZXN1bWUgYWN0aW9ucyBhZnRlciBhIHNwZWNpZmllZCB0aW1lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVuYWJsZVBhdXNlUmVzdW1lKCkge1xuICAgICAgY2FuUGF1c2VSZXN1bWUgPSB0cnVlO1xuICAgICAgdXBkYXRlQ2FuUGF1c2VSZXN1bWUoY2FuUGF1c2VSZXN1bWUpO1xuICAgIH1cblxuICAgIGlmICghaXNUaW1lclJ1bm5pbmcpIHtcbiAgICAgIHJlY29yZFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOyAvLyBHZXQgdGhlIGN1cnJlbnQgdGltZXN0YW1wXG4gICAgICB1cGRhdGVSZWNvcmRTdGFydFRpbWUocmVjb3JkU3RhcnRUaW1lKTtcbiAgICAgIHJlY29yZFRpbWVySW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgdGltZXIgZXZlcnkgc2Vjb25kICgxMDAwIG1pbGxpc2Vjb25kcylcbiAgICAgICAgdGhpcy5SZWNvcmRVcGRhdGVUaW1lclNlcnZpY2UucmVjb3JkVXBkYXRlVGltZXIoe1xuICAgICAgICAgIHJlY29yZEVsYXBzZWRUaW1lOiBwYXJhbWV0ZXJzLnJlY29yZEVsYXBzZWRUaW1lLFxuICAgICAgICAgIHJlY29yZFN0YXJ0VGltZTogcmVjb3JkU3RhcnRUaW1lLFxuICAgICAgICAgIHVwZGF0ZVJlY29yZEVsYXBzZWRUaW1lOiBwYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZEVsYXBzZWRUaW1lLFxuICAgICAgICAgIHVwZGF0ZVJlY29yZGluZ1Byb2dyZXNzVGltZTogcGFyYW1ldGVycy51cGRhdGVSZWNvcmRpbmdQcm9ncmVzc1RpbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBhcmFtZXRlcnMgPSBnZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgcmVjb3JkaW5nIGlzIHBhdXNlZCBvciBzdG9wcGVkLCBhbmQgY2xvc2UgdGhlIGludGVydmFsIGlmIG5lZWRlZFxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFyYW1ldGVycy5yZWNvcmRQYXVzZWQgfHxcbiAgICAgICAgICBwYXJhbWV0ZXJzLnJlY29yZFN0b3BwZWQgfHxcbiAgICAgICAgICBwYXJhbWV0ZXJzLnJvb21OYW1lID09ICcnIHx8XG4gICAgICAgICAgcGFyYW1ldGVycy5yb29tTmFtZSA9PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVjb3JkVGltZXJJbnRlcnZhbCk7XG4gICAgICAgICAgdXBkYXRlUmVjb3JkVGltZXJJbnRlcnZhbChudWxsKTtcbiAgICAgICAgICBpc1RpbWVyUnVubmluZyA9IGZhbHNlO1xuICAgICAgICAgIHVwZGF0ZUlzVGltZXJSdW5uaW5nKGlzVGltZXJSdW5uaW5nKTtcbiAgICAgICAgICBjYW5QYXVzZVJlc3VtZSA9IGZhbHNlO1xuICAgICAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lKGNhblBhdXNlUmVzdW1lKTtcbiAgICAgICAgfVxuICAgICAgfSwgMTAwMCk7XG4gICAgICB1cGRhdGVSZWNvcmRUaW1lckludGVydmFsKHJlY29yZFRpbWVySW50ZXJ2YWwpO1xuICAgICAgaXNUaW1lclJ1bm5pbmcgPSB0cnVlO1xuICAgICAgdXBkYXRlSXNUaW1lclJ1bm5pbmcoaXNUaW1lclJ1bm5pbmcpO1xuICAgICAgY2FuUGF1c2VSZXN1bWUgPSBmYWxzZTsgLy8gRGlzYWJsZSBwYXVzZS9yZXN1bWUgYWN0aW9ucyBpbml0aWFsbHlcbiAgICAgIHVwZGF0ZUNhblBhdXNlUmVzdW1lKGNhblBhdXNlUmVzdW1lKTtcbiAgICAgIHNldFRpbWVvdXQoZW5hYmxlUGF1c2VSZXN1bWUsIHJlY29yZENoYW5nZVNlY29uZHMpOyAvLyBFbmFibGUgcGF1c2UvcmVzdW1lIGFjdGlvbnMgYWZ0ZXIgc3BlY2lmaWVkIHRpbWVcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -1,5 +1,37 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * Updates the recording timer and progress time.
5
+ * @function
6
+ * @param {RecordUpdateTimerOptions} options - The options object containing necessary variables and functions.
7
+ */
8
+ /**
9
+ * Updates the recording timer by calculating the elapsed time since the recording started
10
+ * and formatting it in HH:MM:SS format.
11
+ *
12
+ * @param {Object} options - The options object.
13
+ * @param {number} options.recordElapsedTime - The elapsed recording time in seconds.
14
+ * @param {number} options.recordStartTime - The timestamp when the recording started.
15
+ * @param {Function} options.updateRecordElapsedTime - Callback to update the elapsed recording time.
16
+ * @param {Function} options.updateRecordingProgressTime - Callback to update the formatted recording time.
17
+ * @returns {void}
18
+ *
19
+ * @remarks
20
+ * This function calculates the elapsed time since the recording started and formats it into
21
+ * a string in HH:MM:SS format. It updates both the elapsed time in seconds and the formatted
22
+ * time via the provided callback functions.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const options: RecordUpdateTimerOptions = {
27
+ * recordElapsedTime: 0,
28
+ * recordStartTime: Date.now(),
29
+ * updateRecordElapsedTime: (elapsedTime) => { console.log(`Elapsed Time: ${elapsedTime} seconds`); },
30
+ * updateRecordingProgressTime: (formattedTime) => { console.log(`Formatted Time: ${formattedTime}`); },
31
+ * };
32
+ * recordUpdateTimer(options);
33
+ * ```
34
+ */
3
35
  export class RecordUpdateTimer {
4
36
  /**
5
37
  * Updates the recording timer and progress time.
@@ -45,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
45
77
  providedIn: 'root',
46
78
  }]
47
79
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXVwZGF0ZS10aW1lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvcmVjb3JkaW5nLW1ldGhvZHMvcmVjb3JkLXVwZGF0ZS10aW1lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7Ozs7T0FJRztJQUNIOzs7Ozs7Ozs7O09BVUc7SUFFSCxpQkFBaUIsQ0FBQyxFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLHVCQUF1QixFQUN2QiwyQkFBMkIsR0FDRjtRQUN6Qjs7OztXQUlHO1FBQ0gsU0FBUyxTQUFTLENBQUMsTUFBYztZQUMvQixPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsNEJBQTRCO1FBQ3RFLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7UUFDaEgsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUzQyxxQ0FBcUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0YsMkJBQTJCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQzt1R0E1Q1UsaUJBQWlCOzJHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkVXBkYXRlVGltZXJPcHRpb25zIHtcbiAgcmVjb3JkRWxhcHNlZFRpbWU6IG51bWJlcjtcbiAgcmVjb3JkU3RhcnRUaW1lOiBudW1iZXI7XG4gIHVwZGF0ZVJlY29yZEVsYXBzZWRUaW1lOiAoZWxhcHNlZFRpbWU6IG51bWJlcikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lOiAoZm9ybWF0dGVkVGltZTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBSZWNvcmRVcGRhdGVUaW1lclR5cGUgPSAob3B0aW9uczogUmVjb3JkVXBkYXRlVGltZXJPcHRpb25zKSA9PiB2b2lkO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkVXBkYXRlVGltZXIge1xuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVjb3JkaW5nIHRpbWVyIGFuZCBwcm9ncmVzcyB0aW1lLlxuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtSZWNvcmRVcGRhdGVUaW1lck9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QgY29udGFpbmluZyBuZWNlc3NhcnkgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuXG4gICAqL1xuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVjb3JkaW5nIHRpbWVyIGJ5IGNhbGN1bGF0aW5nIHRoZSBlbGFwc2VkIHRpbWUgc2luY2UgdGhlIHJlY29yZGluZyBzdGFydGVkXG4gICAqIGFuZCBmb3JtYXR0aW5nIGl0IGluIEhIOk1NOlNTIGZvcm1hdC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnJlY29yZEVsYXBzZWRUaW1lIC0gVGhlIGVsYXBzZWQgcmVjb3JkaW5nIHRpbWUgaW4gc2Vjb25kcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucmVjb3JkU3RhcnRUaW1lIC0gVGhlIHRpbWVzdGFtcCB3aGVuIHRoZSByZWNvcmRpbmcgc3RhcnRlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVSZWNvcmRFbGFwc2VkVGltZSAtIENhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgZWxhcHNlZCByZWNvcmRpbmcgdGltZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVSZWNvcmRpbmdQcm9ncmVzc1RpbWUgLSBDYWxsYmFjayB0byB1cGRhdGUgdGhlIGZvcm1hdHRlZCByZWNvcmRpbmcgdGltZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuXG4gIHJlY29yZFVwZGF0ZVRpbWVyKHtcbiAgICByZWNvcmRFbGFwc2VkVGltZSxcbiAgICByZWNvcmRTdGFydFRpbWUsXG4gICAgdXBkYXRlUmVjb3JkRWxhcHNlZFRpbWUsXG4gICAgdXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lLFxuICB9OiBSZWNvcmRVcGRhdGVUaW1lck9wdGlvbnMpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIHBhZCBzaW5nbGUtZGlnaXQgbnVtYmVycyB3aXRoIGxlYWRpbmcgemVyb3MuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciAtIFRoZSBudW1iZXIgdG8gcGFkLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwYWRkZWQgbnVtYmVyIGFzIGEgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZE51bWJlcihudW1iZXI6IG51bWJlcikge1xuICAgICAgcmV0dXJuIG51bWJlci50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcFxuICAgIHJlY29yZEVsYXBzZWRUaW1lID0gTWF0aC5mbG9vcigoY3VycmVudFRpbWUgLSByZWNvcmRTdGFydFRpbWUpIC8gMTAwMCk7IC8vIENhbGN1bGF0ZSB0aGUgZWxhcHNlZCB0aW1lIGluIHNlY29uZHNcbiAgICB1cGRhdGVSZWNvcmRFbGFwc2VkVGltZShyZWNvcmRFbGFwc2VkVGltZSk7XG5cbiAgICAvLyBGb3JtYXQgdGhlIHRpbWUgaW4gSEg6TU06U1MgZm9ybWF0XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHJlY29yZEVsYXBzZWRUaW1lIC8gMzYwMCk7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHJlY29yZEVsYXBzZWRUaW1lICUgMzYwMCkgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHJlY29yZEVsYXBzZWRUaW1lICUgNjA7XG4gICAgY29uc3QgZm9ybWF0dGVkVGltZSA9IHBhZE51bWJlcihob3VycykgKyAnOicgKyBwYWROdW1iZXIobWludXRlcykgKyAnOicgKyBwYWROdW1iZXIoc2Vjb25kcyk7XG5cbiAgICB1cGRhdGVSZWNvcmRpbmdQcm9ncmVzc1RpbWUoZm9ybWF0dGVkVGltZSk7XG4gIH1cbn1cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXVwZGF0ZS10aW1lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvcmVjb3JkaW5nLW1ldGhvZHMvcmVjb3JkLXVwZGF0ZS10aW1lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVzNDOzs7O0dBSUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFNSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7O09BSUc7SUFDSDs7Ozs7Ozs7OztPQVVHO0lBRUgsaUJBQWlCLENBQUMsRUFDaEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsMkJBQTJCLEdBQ0Y7UUFDekI7Ozs7V0FJRztRQUNILFNBQVMsU0FBUyxDQUFDLE1BQWM7WUFDL0IsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLDRCQUE0QjtRQUN0RSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsd0NBQXdDO1FBQ2hILHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFM0MscUNBQXFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdGLDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7dUdBNUNVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZFVwZGF0ZVRpbWVyT3B0aW9ucyB7XG4gIHJlY29yZEVsYXBzZWRUaW1lOiBudW1iZXI7XG4gIHJlY29yZFN0YXJ0VGltZTogbnVtYmVyO1xuICB1cGRhdGVSZWNvcmRFbGFwc2VkVGltZTogKGVsYXBzZWRUaW1lOiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ1Byb2dyZXNzVGltZTogKGZvcm1hdHRlZFRpbWU6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgUmVjb3JkVXBkYXRlVGltZXJUeXBlID0gKG9wdGlvbnM6IFJlY29yZFVwZGF0ZVRpbWVyT3B0aW9ucykgPT4gdm9pZDtcblxuLyoqXG4gKiBVcGRhdGVzIHRoZSByZWNvcmRpbmcgdGltZXIgYW5kIHByb2dyZXNzIHRpbWUuXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7UmVjb3JkVXBkYXRlVGltZXJPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IGNvbnRhaW5pbmcgbmVjZXNzYXJ5IHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogVXBkYXRlcyB0aGUgcmVjb3JkaW5nIHRpbWVyIGJ5IGNhbGN1bGF0aW5nIHRoZSBlbGFwc2VkIHRpbWUgc2luY2UgdGhlIHJlY29yZGluZyBzdGFydGVkXG4gKiBhbmQgZm9ybWF0dGluZyBpdCBpbiBISDpNTTpTUyBmb3JtYXQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5yZWNvcmRFbGFwc2VkVGltZSAtIFRoZSBlbGFwc2VkIHJlY29yZGluZyB0aW1lIGluIHNlY29uZHMuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5yZWNvcmRTdGFydFRpbWUgLSBUaGUgdGltZXN0YW1wIHdoZW4gdGhlIHJlY29yZGluZyBzdGFydGVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVSZWNvcmRFbGFwc2VkVGltZSAtIENhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgZWxhcHNlZCByZWNvcmRpbmcgdGltZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lIC0gQ2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBmb3JtYXR0ZWQgcmVjb3JkaW5nIHRpbWUuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBlbGFwc2VkIHRpbWUgc2luY2UgdGhlIHJlY29yZGluZyBzdGFydGVkIGFuZCBmb3JtYXRzIGl0IGludG9cbiAqIGEgc3RyaW5nIGluIEhIOk1NOlNTIGZvcm1hdC4gSXQgdXBkYXRlcyBib3RoIHRoZSBlbGFwc2VkIHRpbWUgaW4gc2Vjb25kcyBhbmQgdGhlIGZvcm1hdHRlZFxuICogdGltZSB2aWEgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb3B0aW9uczogUmVjb3JkVXBkYXRlVGltZXJPcHRpb25zID0ge1xuICogICByZWNvcmRFbGFwc2VkVGltZTogMCxcbiAqICAgcmVjb3JkU3RhcnRUaW1lOiBEYXRlLm5vdygpLFxuICogICB1cGRhdGVSZWNvcmRFbGFwc2VkVGltZTogKGVsYXBzZWRUaW1lKSA9PiB7IGNvbnNvbGUubG9nKGBFbGFwc2VkIFRpbWU6ICR7ZWxhcHNlZFRpbWV9IHNlY29uZHNgKTsgfSxcbiAqICAgdXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lOiAoZm9ybWF0dGVkVGltZSkgPT4geyBjb25zb2xlLmxvZyhgRm9ybWF0dGVkIFRpbWU6ICR7Zm9ybWF0dGVkVGltZX1gKTsgfSxcbiAqIH07XG4gKiByZWNvcmRVcGRhdGVUaW1lcihvcHRpb25zKTtcbiAqIGBgYFxuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlY29yZFVwZGF0ZVRpbWVyIHtcbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlY29yZGluZyB0aW1lciBhbmQgcHJvZ3Jlc3MgdGltZS5cbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7UmVjb3JkVXBkYXRlVGltZXJPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IGNvbnRhaW5pbmcgbmVjZXNzYXJ5IHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLlxuICAgKi9cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJlY29yZGluZyB0aW1lciBieSBjYWxjdWxhdGluZyB0aGUgZWxhcHNlZCB0aW1lIHNpbmNlIHRoZSByZWNvcmRpbmcgc3RhcnRlZFxuICAgKiBhbmQgZm9ybWF0dGluZyBpdCBpbiBISDpNTTpTUyBmb3JtYXQuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5yZWNvcmRFbGFwc2VkVGltZSAtIFRoZSBlbGFwc2VkIHJlY29yZGluZyB0aW1lIGluIHNlY29uZHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnJlY29yZFN0YXJ0VGltZSAtIFRoZSB0aW1lc3RhbXAgd2hlbiB0aGUgcmVjb3JkaW5nIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlUmVjb3JkRWxhcHNlZFRpbWUgLSBDYWxsYmFjayB0byB1cGRhdGUgdGhlIGVsYXBzZWQgcmVjb3JkaW5nIHRpbWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lIC0gQ2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBmb3JtYXR0ZWQgcmVjb3JkaW5nIHRpbWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cblxuICByZWNvcmRVcGRhdGVUaW1lcih7XG4gICAgcmVjb3JkRWxhcHNlZFRpbWUsXG4gICAgcmVjb3JkU3RhcnRUaW1lLFxuICAgIHVwZGF0ZVJlY29yZEVsYXBzZWRUaW1lLFxuICAgIHVwZGF0ZVJlY29yZGluZ1Byb2dyZXNzVGltZSxcbiAgfTogUmVjb3JkVXBkYXRlVGltZXJPcHRpb25zKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogVXRpbGl0eSBmdW5jdGlvbiB0byBwYWQgc2luZ2xlLWRpZ2l0IG51bWJlcnMgd2l0aCBsZWFkaW5nIHplcm9zLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgLSBUaGUgbnVtYmVyIHRvIHBhZC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcGFkZGVkIG51bWJlciBhcyBhIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWROdW1iZXIobnVtYmVyOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBudW1iZXIudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7IC8vIEdldCB0aGUgY3VycmVudCB0aW1lc3RhbXBcbiAgICByZWNvcmRFbGFwc2VkVGltZSA9IE1hdGguZmxvb3IoKGN1cnJlbnRUaW1lIC0gcmVjb3JkU3RhcnRUaW1lKSAvIDEwMDApOyAvLyBDYWxjdWxhdGUgdGhlIGVsYXBzZWQgdGltZSBpbiBzZWNvbmRzXG4gICAgdXBkYXRlUmVjb3JkRWxhcHNlZFRpbWUocmVjb3JkRWxhcHNlZFRpbWUpO1xuXG4gICAgLy8gRm9ybWF0IHRoZSB0aW1lIGluIEhIOk1NOlNTIGZvcm1hdFxuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihyZWNvcmRFbGFwc2VkVGltZSAvIDM2MDApO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChyZWNvcmRFbGFwc2VkVGltZSAlIDM2MDApIC8gNjApO1xuICAgIGNvbnN0IHNlY29uZHMgPSByZWNvcmRFbGFwc2VkVGltZSAlIDYwO1xuICAgIGNvbnN0IGZvcm1hdHRlZFRpbWUgPSBwYWROdW1iZXIoaG91cnMpICsgJzonICsgcGFkTnVtYmVyKG1pbnV0ZXMpICsgJzonICsgcGFkTnVtYmVyKHNlY29uZHMpO1xuXG4gICAgdXBkYXRlUmVjb3JkaW5nUHJvZ3Jlc3NUaW1lKGZvcm1hdHRlZFRpbWUpO1xuICB9XG59XG4iXX0=
@@ -2,6 +2,56 @@ import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./record-start-timer.service";
4
4
  import * as i2 from "./record-resume-timer.service";
5
+ /**
6
+ * Starts the recording process based on the provided parameters.
7
+ *
8
+ * @param {StartRecordingOptions} options - The options for starting the recording.
9
+ * @param {object} options.parameters - The parameters required for starting the recording.
10
+ * @param {string} options.parameters.roomName - The name of the room where recording is to be started.
11
+ * @param {object} options.parameters.userRecordingParams - User-specific recording parameters.
12
+ * @param {object} options.parameters.socket - The socket instance for communication.
13
+ * @param {function} options.parameters.updateIsRecordingModalVisible - Function to update the visibility of the recording modal.
14
+ * @param {boolean} options.parameters.confirmedToRecord - Flag indicating if the user has confirmed to record.
15
+ * @param {function} options.parameters.showAlert - Function to show alerts.
16
+ * @param {string} options.parameters.recordingMediaOptions - The media options for recording (e.g., "video", "audio").
17
+ * @param {boolean} options.parameters.videoAlreadyOn - Flag indicating if the video is already on.
18
+ * @param {boolean} options.parameters.audioAlreadyOn - Flag indicating if the audio is already on.
19
+ * @param {boolean} options.parameters.recordStarted - Flag indicating if the recording has started.
20
+ * @param {boolean} options.parameters.recordPaused - Flag indicating if the recording is paused.
21
+ * @param {boolean} options.parameters.recordResumed - Flag indicating if the recording is resumed.
22
+ * @param {boolean} options.parameters.recordStopped - Flag indicating if the recording is stopped.
23
+ * @param {boolean} options.parameters.startReport - Flag indicating if the start report is active.
24
+ * @param {boolean} options.parameters.endReport - Flag indicating if the end report is active.
25
+ * @param {boolean} options.parameters.canRecord - Flag indicating if recording is allowed.
26
+ * @param {function} options.parameters.updateClearedToRecord - Function to update the cleared to record status.
27
+ * @param {function} options.parameters.updateRecordStarted - Function to update the record started status.
28
+ * @param {function} options.parameters.updateRecordPaused - Function to update the record paused status.
29
+ * @param {function} options.parameters.updateRecordResumed - Function to update the record resumed status.
30
+ * @param {function} options.parameters.updateStartReport - Function to update the start report status.
31
+ * @param {function} options.parameters.updateEndReport - Function to update the end report status.
32
+ * @param {function} options.parameters.updateCanRecord - Function to update the can record status.
33
+ * @param {boolean} options.parameters.whiteboardStarted - Flag indicating if the whiteboard has started.
34
+ * @param {boolean} options.parameters.whiteboardEnded - Flag indicating if the whiteboard has ended.
35
+ * @param {function} options.parameters.rePort - Function to report the recording status.
36
+ * @param {function} options.parameters.captureCanvasStream - Function to capture the canvas stream.
37
+ *
38
+ * @returns {Promise<boolean | undefined>} - A promise that resolves to a boolean indicating if the recording attempt was successful, or undefined if not applicable.
39
+ *
40
+ * @remarks
41
+ * This method checks various conditions, such as whether the user has confirmed recording and whether audio or video is already on,
42
+ * before starting the recording. It updates the recording state, manages socket communication, and handles whiteboard functionality if applicable.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const options: StartRecordingOptions = { parameters: someParameters };
47
+ * const result = await startRecording(options);
48
+ * if (result) {
49
+ * console.log('Recording started successfully.');
50
+ * } else {
51
+ * console.log('Failed to start recording.');
52
+ * }
53
+ * ```
54
+ */
5
55
  export class StartRecording {
6
56
  RecordStartTimerService;
7
57
  RecordResumeTimerService;
@@ -144,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
144
194
  providedIn: 'root',
145
195
  }]
146
196
  }], ctorParameters: () => [{ type: i1.RecordStartTimer }, { type: i2.RecordResumeTimer }] });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtcmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9yZWNvcmRpbmctbWV0aG9kcy9zdGFydC1yZWNvcmRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBOEQzQyxNQUFNLE9BQU8sY0FBYztJQUVmO0lBQ0E7SUFGVixZQUNVLHVCQUF5QyxFQUN6Qyx3QkFBMkM7UUFEM0MsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFrQjtRQUN6Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQW1CO0lBQ2xELENBQUM7SUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtDRztJQUVILGNBQWMsR0FBRyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQXlCLEVBQWdDLEVBQUU7UUFDN0YsVUFBVSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTlDLElBQUksRUFDRixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLE1BQU0sRUFDTiw2QkFBNkIsRUFDN0IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDYixhQUFhLEVBQ2IsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZUFBZSxFQUVmLGlCQUFpQixFQUNqQixlQUFlO1FBRWYsb0JBQW9CO1FBQ3BCLE1BQU0sRUFDTixtQkFBbUIsR0FDcEIsR0FBRyxVQUFVLENBQUM7UUFFZixrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLHVEQUF1RDtnQkFDaEUsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxxQkFBcUIsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6RCxTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsNERBQTREO2dCQUNyRSxJQUFJLEVBQUUsUUFBUTthQUNmLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxJQUFJLHFCQUFxQixLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pELFNBQVMsRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSw0REFBNEQ7Z0JBQ3JFLElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsOEJBQThCO1FBQzlCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLElBQUksTUFBTSxHQUFHLGFBQWEsQ0FBQztRQUMzQixJQUFJLGFBQWEsSUFBSSxZQUFZLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN0RSxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxHQUFHLGFBQWEsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBRXZCLE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxNQUFNLENBQUMsSUFBSSxDQUNULE1BQU0sRUFDTixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxFQUNqQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUEwRCxFQUFFLEVBQUU7Z0JBQ3BGLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDckIsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDbkIsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDbEIsWUFBWSxHQUFHLEtBQUssQ0FBQztvQkFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFFbEIsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ25DLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMvQixlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNCLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUVqQyxJQUFJLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQzt3QkFDN0IsTUFBTSxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUM3QixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7b0JBQ3RFLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixhQUFhLEdBQUcsSUFBSSxDQUFDO3dCQUNyQixtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDbkMsTUFBTSxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQzVDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDeEUsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsK0JBQStCLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUNsRixTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNqQixXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNqQixVQUFVLEdBQUcsS0FBSyxDQUFDO29CQUVuQixlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNCLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMvQixlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7Z0JBRUQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsNEVBQTRFO1FBQzVFLElBQUksQ0FBQztZQUNILElBQ0UsVUFBVTtnQkFDVixpQkFBaUI7Z0JBQ2pCLENBQUMsZUFBZTtnQkFDaEIscUJBQXFCLEtBQUssT0FBTyxFQUNqQyxDQUFDO2dCQUNELG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO3VHQWxMUyxjQUFjOzJHQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlY29yZFN0YXJ0VGltZXIgfSBmcm9tICcuL3JlY29yZC1zdGFydC10aW1lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY29yZFJlc3VtZVRpbWVyLCBSZWNvcmRSZXN1bWVUaW1lclBhcmFtZXRlcnMgfSBmcm9tICcuL3JlY29yZC1yZXN1bWUtdGltZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuaW1wb3J0IHtcbiAgUmVQb3J0VHlwZSxcbiAgVXNlclJlY29yZGluZ1BhcmFtcyxcbiAgQ2FwdHVyZUNhbnZhc1N0cmVhbVR5cGUsXG4gIENhcHR1cmVDYW52YXNTdHJlYW1QYXJhbWV0ZXJzLFxuICBSZVBvcnRQYXJhbWV0ZXJzLFxuICBTaG93QWxlcnQsXG59IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRSZWNvcmRpbmdQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgQ2FwdHVyZUNhbnZhc1N0cmVhbVBhcmFtZXRlcnMsXG4gICAgUmVQb3J0UGFyYW1ldGVycyxcbiAgICBSZWNvcmRSZXN1bWVUaW1lclBhcmFtZXRlcnMge1xuICByb29tTmFtZTogc3RyaW5nO1xuICB1c2VyUmVjb3JkaW5nUGFyYW1zOiBVc2VyUmVjb3JkaW5nUGFyYW1zO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgdXBkYXRlSXNSZWNvcmRpbmdNb2RhbFZpc2libGU6ICh2aXNpYmxlOiBib29sZWFuKSA9PiB2b2lkO1xuICBjb25maXJtZWRUb1JlY29yZDogYm9vbGVhbjtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuICByZWNvcmRpbmdNZWRpYU9wdGlvbnM6IHN0cmluZztcbiAgdmlkZW9BbHJlYWR5T246IGJvb2xlYW47XG4gIGF1ZGlvQWxyZWFkeU9uOiBib29sZWFuO1xuICByZWNvcmRTdGFydGVkOiBib29sZWFuO1xuICByZWNvcmRQYXVzZWQ6IGJvb2xlYW47XG4gIHJlY29yZFJlc3VtZWQ6IGJvb2xlYW47XG4gIHJlY29yZFN0b3BwZWQ6IGJvb2xlYW47XG4gIHN0YXJ0UmVwb3J0OiBib29sZWFuO1xuICBlbmRSZXBvcnQ6IGJvb2xlYW47XG4gIGNhblJlY29yZDogYm9vbGVhbjtcbiAgdXBkYXRlQ2xlYXJlZFRvUmVjb3JkOiAoY2xlYXJlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkU3RhcnRlZDogKHN0YXJ0ZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZFBhdXNlZDogKHBhdXNlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkUmVzdW1lZDogKHJlc3VtZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVN0YXJ0UmVwb3J0OiAoc3RhcnRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlRW5kUmVwb3J0OiAoZW5kZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUNhblJlY29yZDogKGNhblJlY29yZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgd2hpdGVib2FyZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHdoaXRlYm9hcmRFbmRlZDogYm9vbGVhbjtcblxuICAvLyBNZWRpYXNmdSBmdW5jdGlvbnNcbiAgcmVQb3J0OiBSZVBvcnRUeXBlO1xuICBjYXB0dXJlQ2FudmFzU3RyZWFtOiBDYXB0dXJlQ2FudmFzU3RyZWFtVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBTdGFydFJlY29yZGluZ1BhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydFJlY29yZGluZ09wdGlvbnMge1xuICBwYXJhbWV0ZXJzOiBTdGFydFJlY29yZGluZ1BhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFN0YXJ0UmVjb3JkaW5nVHlwZSA9IChvcHRpb25zOiBTdGFydFJlY29yZGluZ09wdGlvbnMpID0+IFByb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTdGFydFJlY29yZGluZyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgUmVjb3JkU3RhcnRUaW1lclNlcnZpY2U6IFJlY29yZFN0YXJ0VGltZXIsXG4gICAgcHJpdmF0ZSBSZWNvcmRSZXN1bWVUaW1lclNlcnZpY2U6IFJlY29yZFJlc3VtZVRpbWVyLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgcmVjb3JkaW5nIHByb2Nlc3MgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3Igc3RhcnRpbmcgdGhlIHJlY29yZGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5yb29tTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSByb29tIHdoZXJlIHJlY29yZGluZyBpcyB0byBiZSBzdGFydGVkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVzZXJSZWNvcmRpbmdQYXJhbXMgLSBVc2VyLXNwZWNpZmljIHJlY29yZGluZyBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVJc1JlY29yZGluZ01vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgcmVjb3JkaW5nIG1vZGFsLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5jb25maXJtZWRUb1JlY29yZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgdXNlciBoYXMgY29uZmlybWVkIHRvIHJlY29yZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNob3dBbGVydCAtIEZ1bmN0aW9uIHRvIHNob3cgYWxlcnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZGluZ01lZGlhT3B0aW9ucyAtIFRoZSBtZWRpYSBvcHRpb25zIGZvciByZWNvcmRpbmcgKGUuZy4sIFwidmlkZW9cIiwgXCJhdWRpb1wiKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9BbHJlYWR5T24gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHZpZGVvIGlzIGFscmVhZHkgb24uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvQWxyZWFkeU9uIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBhdWRpbyBpcyBhbHJlYWR5IG9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdGFydGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFBhdXNlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIGlzIHBhdXNlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkUmVzdW1lZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIGlzIHJlc3VtZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFN0b3BwZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBpcyBzdG9wcGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zdGFydFJlcG9ydCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgc3RhcnQgcmVwb3J0IGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuZW5kUmVwb3J0IC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBlbmQgcmVwb3J0IGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuY2FuUmVjb3JkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHJlY29yZGluZyBpcyBhbGxvd2VkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2xlYXJlZFRvUmVjb3JkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjbGVhcmVkIHRvIHJlY29yZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRTdGFydGVkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSByZWNvcmQgc3RhcnRlZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRQYXVzZWQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZCBwYXVzZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkUmVzdW1lZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkIHJlc3VtZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlU3RhcnRSZXBvcnQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHN0YXJ0IHJlcG9ydCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVFbmRSZXBvcnQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGVuZCByZXBvcnQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2FuUmVjb3JkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjYW4gcmVjb3JkIHN0YXR1cy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMud2hpdGVib2FyZFN0YXJ0ZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHdoaXRlYm9hcmQgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRFbmRlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgd2hpdGVib2FyZCBoYXMgZW5kZWQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5yZVBvcnQgLSBGdW5jdGlvbiB0byByZXBvcnQgdGhlIHJlY29yZGluZyBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5jYXB0dXJlQ2FudmFzU3RyZWFtIC0gRnVuY3Rpb24gdG8gY2FwdHVyZSB0aGUgY2FudmFzIHN0cmVhbS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBhdHRlbXB0IHdhcyBzdWNjZXNzZnVsLCBvciB1bmRlZmluZWQgaWYgbm90IGFwcGxpY2FibGUuXG4gICAqL1xuXG4gIHN0YXJ0UmVjb3JkaW5nID0gYXN5bmMgKHsgcGFyYW1ldGVycyB9OiBTdGFydFJlY29yZGluZ09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICBsZXQge1xuICAgICAgcm9vbU5hbWUsXG4gICAgICB1c2VyUmVjb3JkaW5nUGFyYW1zLFxuICAgICAgc29ja2V0LFxuICAgICAgdXBkYXRlSXNSZWNvcmRpbmdNb2RhbFZpc2libGUsXG4gICAgICBjb25maXJtZWRUb1JlY29yZCxcbiAgICAgIHNob3dBbGVydCxcbiAgICAgIHJlY29yZGluZ01lZGlhT3B0aW9ucyxcbiAgICAgIHZpZGVvQWxyZWFkeU9uLFxuICAgICAgYXVkaW9BbHJlYWR5T24sXG4gICAgICByZWNvcmRTdGFydGVkLFxuICAgICAgcmVjb3JkUGF1c2VkLFxuICAgICAgcmVjb3JkUmVzdW1lZCxcbiAgICAgIHJlY29yZFN0b3BwZWQsXG4gICAgICBzdGFydFJlcG9ydCxcbiAgICAgIGVuZFJlcG9ydCxcbiAgICAgIGNhblJlY29yZCxcbiAgICAgIHVwZGF0ZUNsZWFyZWRUb1JlY29yZCxcbiAgICAgIHVwZGF0ZVJlY29yZFN0YXJ0ZWQsXG4gICAgICB1cGRhdGVSZWNvcmRQYXVzZWQsXG4gICAgICB1cGRhdGVSZWNvcmRSZXN1bWVkLFxuICAgICAgdXBkYXRlU3RhcnRSZXBvcnQsXG4gICAgICB1cGRhdGVFbmRSZXBvcnQsXG4gICAgICB1cGRhdGVDYW5SZWNvcmQsXG5cbiAgICAgIHdoaXRlYm9hcmRTdGFydGVkLFxuICAgICAgd2hpdGVib2FyZEVuZGVkLFxuXG4gICAgICAvL21lZGlhc2Z1IGZ1bmN0aW9uc1xuICAgICAgcmVQb3J0LFxuICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIC8vIENoZWNrIGlmIHJlY29yZGluZyBpcyBjb25maXJtZWQgYmVmb3JlIHN0YXJ0aW5nXG4gICAgaWYgKCFjb25maXJtZWRUb1JlY29yZCkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IG11c3QgY2xpY2sgY29uZmlybSBiZWZvcmUgeW91IGNhbiBzdGFydCByZWNvcmRpbmcnLFxuICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciByZWNvcmRpbmdNZWRpYU9wdGlvbnMgZm9yIHZpZGVvXG4gICAgaWYgKHJlY29yZGluZ01lZGlhT3B0aW9ucyA9PT0gJ3ZpZGVvJyAmJiAhdmlkZW9BbHJlYWR5T24pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBtdXN0IHR1cm4gb24geW91ciB2aWRlbyBiZWZvcmUgeW91IGNhbiBzdGFydCByZWNvcmRpbmcnLFxuICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciByZWNvcmRpbmdNZWRpYU9wdGlvbnMgZm9yIGF1ZGlvXG4gICAgaWYgKHJlY29yZGluZ01lZGlhT3B0aW9ucyA9PT0gJ2F1ZGlvJyAmJiAhYXVkaW9BbHJlYWR5T24pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBtdXN0IHR1cm4gb24geW91ciBhdWRpbyBiZWZvcmUgeW91IGNhbiBzdGFydCByZWNvcmRpbmcnLFxuICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBjbGVhcmVkVG9SZWNvcmQgdG8gdHJ1ZVxuICAgIHVwZGF0ZUNsZWFyZWRUb1JlY29yZCh0cnVlKTtcblxuICAgIGxldCBhY3Rpb24gPSAnc3RhcnRSZWNvcmQnO1xuICAgIGlmIChyZWNvcmRTdGFydGVkICYmIHJlY29yZFBhdXNlZCAmJiAhcmVjb3JkUmVzdW1lZCAmJiAhcmVjb3JkU3RvcHBlZCkge1xuICAgICAgYWN0aW9uID0gJ3Jlc3VtZVJlY29yZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGlvbiA9ICdzdGFydFJlY29yZCc7XG4gICAgfVxuXG4gICAgbGV0IHJlY0F0dGVtcHQgPSBmYWxzZTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBzb2NrZXQuZW1pdChcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICB7IHJvb21OYW1lLCB1c2VyUmVjb3JkaW5nUGFyYW1zIH0sXG4gICAgICAgIGFzeW5jICh7IHN1Y2Nlc3MsIHJlYXNvbiB9OiB7IHN1Y2Nlc3M6IGJvb2xlYW47IHJlYXNvbjogc3RyaW5nOyByZWNvcmRTdGF0ZTogYW55IH0pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgcmVjb3JkU3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGFydFJlcG9ydCA9IHRydWU7XG4gICAgICAgICAgICBlbmRSZXBvcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJlY29yZFBhdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmVjQXR0ZW1wdCA9IHRydWU7XG5cbiAgICAgICAgICAgIHVwZGF0ZVJlY29yZFN0YXJ0ZWQocmVjb3JkU3RhcnRlZCk7XG4gICAgICAgICAgICB1cGRhdGVTdGFydFJlcG9ydChzdGFydFJlcG9ydCk7XG4gICAgICAgICAgICB1cGRhdGVFbmRSZXBvcnQoZW5kUmVwb3J0KTtcbiAgICAgICAgICAgIHVwZGF0ZVJlY29yZFBhdXNlZChyZWNvcmRQYXVzZWQpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uID09PSAnc3RhcnRSZWNvcmQnKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHJlUG9ydCh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuUmVjb3JkU3RhcnRUaW1lclNlcnZpY2UucmVjb3JkU3RhcnRUaW1lcih7IHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWNvcmRSZXN1bWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkUmVzdW1lZChyZWNvcmRSZXN1bWVkKTtcbiAgICAgICAgICAgICAgYXdhaXQgcmVQb3J0KHsgcmVzdGFydDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5SZWNvcmRSZXN1bWVUaW1lclNlcnZpY2UucmVjb3JkUmVzdW1lVGltZXIoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaG93QWxlcnQ/Lih7IG1lc3NhZ2U6IGBSZWNvcmRpbmcgY291bGQgbm90IHN0YXJ0IC0gJHtyZWFzb259YCwgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgICAgICAgICBjYW5SZWNvcmQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhcnRSZXBvcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGVuZFJlcG9ydCA9IHRydWU7XG4gICAgICAgICAgICByZWNBdHRlbXB0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHVwZGF0ZUNhblJlY29yZChjYW5SZWNvcmQpO1xuICAgICAgICAgICAgdXBkYXRlU3RhcnRSZXBvcnQoc3RhcnRSZXBvcnQpO1xuICAgICAgICAgICAgdXBkYXRlRW5kUmVwb3J0KGVuZFJlcG9ydCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIENhcHR1cmUgY2FudmFzIHN0cmVhbSBpZiByZWNvcmRpbmcgaXMgc3VjY2Vzc2Z1bCBhbmQgd2hpdGVib2FyZCBpcyBhY3RpdmVcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICByZWNBdHRlbXB0ICYmXG4gICAgICAgIHdoaXRlYm9hcmRTdGFydGVkICYmXG4gICAgICAgICF3aGl0ZWJvYXJkRW5kZWQgJiZcbiAgICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zID09PSAndmlkZW8nXG4gICAgICApIHtcbiAgICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBjYXB0dXJpbmcgY2FudmFzIHN0cmVhbTonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gU2V0IGlzUmVjb3JkaW5nTW9kYWxWaXNpYmxlIHRvIGZhbHNlXG4gICAgdXBkYXRlSXNSZWNvcmRpbmdNb2RhbFZpc2libGUoZmFsc2UpO1xuXG4gICAgcmV0dXJuIHJlY0F0dGVtcHQ7XG4gIH07XG59XG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtcmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9yZWNvcmRpbmctbWV0aG9kcy9zdGFydC1yZWNvcmRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBMkQzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlERztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBRWY7SUFDQTtJQUZWLFlBQ1UsdUJBQXlDLEVBQ3pDLHdCQUEyQztRQUQzQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO1FBQ3pDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBbUI7SUFDbEQsQ0FBQztJQUVKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0NHO0lBRUgsY0FBYyxHQUFHLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBeUIsRUFBZ0MsRUFBRTtRQUM3RixVQUFVLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFOUMsSUFBSSxFQUNGLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osYUFBYSxFQUNiLGFBQWEsRUFDYixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBRWYsaUJBQWlCLEVBQ2pCLGVBQWU7UUFFZixvQkFBb0I7UUFDcEIsTUFBTSxFQUNOLG1CQUFtQixHQUNwQixHQUFHLFVBQVUsQ0FBQztRQUVmLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsdURBQXVEO2dCQUNoRSxJQUFJLEVBQUUsUUFBUTthQUNmLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxJQUFJLHFCQUFxQixLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pELFNBQVMsRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSw0REFBNEQ7Z0JBQ3JFLElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsNENBQTRDO1FBQzVDLElBQUkscUJBQXFCLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekQsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLDREQUE0RDtnQkFDckUsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCw4QkFBOEI7UUFDOUIscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsSUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQzNCLElBQUksYUFBYSxJQUFJLFlBQVksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkIsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsTUFBTSxFQUNOLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEVBQ2pDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQTBELEVBQUUsRUFBRTtnQkFDcEYsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUNyQixXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUNuQixTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixZQUFZLEdBQUcsS0FBSyxDQUFDO29CQUNyQixVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUVsQixtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbkMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQy9CLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDM0Isa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBRWpDLElBQUksTUFBTSxLQUFLLGFBQWEsRUFBRSxDQUFDO3dCQUM3QixNQUFNLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQzdCLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDdEUsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLGFBQWEsR0FBRyxJQUFJLENBQUM7d0JBQ3JCLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUNuQyxNQUFNLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzt3QkFDNUMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUN4RSxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSwrQkFBK0IsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ2xGLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLFVBQVUsR0FBRyxLQUFLLENBQUM7b0JBRW5CLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDM0IsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQy9CLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztnQkFFRCxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDO1lBQ0gsSUFDRSxVQUFVO2dCQUNWLGlCQUFpQjtnQkFDakIsQ0FBQyxlQUFlO2dCQUNoQixxQkFBcUIsS0FBSyxPQUFPLEVBQ2pDLENBQUM7Z0JBQ0QsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELHVDQUF1QztRQUN2Qyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7dUdBbExTLGNBQWM7MkdBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjb3JkU3RhcnRUaW1lciB9IGZyb20gJy4vcmVjb3JkLXN0YXJ0LXRpbWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjb3JkUmVzdW1lVGltZXIsIFJlY29yZFJlc3VtZVRpbWVyUGFyYW1ldGVycyB9IGZyb20gJy4vcmVjb3JkLXJlc3VtZS10aW1lci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5pbXBvcnQge1xuICBSZVBvcnRUeXBlLFxuICBVc2VyUmVjb3JkaW5nUGFyYW1zLFxuICBDYXB0dXJlQ2FudmFzU3RyZWFtVHlwZSxcbiAgQ2FwdHVyZUNhbnZhc1N0cmVhbVBhcmFtZXRlcnMsXG4gIFJlUG9ydFBhcmFtZXRlcnMsXG4gIFNob3dBbGVydCxcbn0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFydFJlY29yZGluZ1BhcmFtZXRlcnNcbiAgZXh0ZW5kcyBDYXB0dXJlQ2FudmFzU3RyZWFtUGFyYW1ldGVycyxcbiAgICBSZVBvcnRQYXJhbWV0ZXJzLFxuICAgIFJlY29yZFJlc3VtZVRpbWVyUGFyYW1ldGVycyB7XG4gIHJvb21OYW1lOiBzdHJpbmc7XG4gIHVzZXJSZWNvcmRpbmdQYXJhbXM6IFVzZXJSZWNvcmRpbmdQYXJhbXM7XG4gIHNvY2tldDogU29ja2V0O1xuICB1cGRhdGVJc1JlY29yZGluZ01vZGFsVmlzaWJsZTogKHZpc2libGU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGNvbmZpcm1lZFRvUmVjb3JkOiBib29sZWFuO1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG4gIHJlY29yZGluZ01lZGlhT3B0aW9uczogc3RyaW5nO1xuICB2aWRlb0FscmVhZHlPbjogYm9vbGVhbjtcbiAgYXVkaW9BbHJlYWR5T246IGJvb2xlYW47XG4gIHJlY29yZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkUmVzdW1lZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RvcHBlZDogYm9vbGVhbjtcbiAgc3RhcnRSZXBvcnQ6IGJvb2xlYW47XG4gIGVuZFJlcG9ydDogYm9vbGVhbjtcbiAgY2FuUmVjb3JkOiBib29sZWFuO1xuICB1cGRhdGVDbGVhcmVkVG9SZWNvcmQ6IChjbGVhcmVkOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRTdGFydGVkOiAoc3RhcnRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkUGF1c2VkOiAocGF1c2VkOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRSZXN1bWVkOiAocmVzdW1lZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlU3RhcnRSZXBvcnQ6IChzdGFydGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVFbmRSZXBvcnQ6IChlbmRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlQ2FuUmVjb3JkOiAoY2FuUmVjb3JkOiBib29sZWFuKSA9PiB2b2lkO1xuICB3aGl0ZWJvYXJkU3RhcnRlZDogYm9vbGVhbjtcbiAgd2hpdGVib2FyZEVuZGVkOiBib29sZWFuO1xuXG4gIC8vIE1lZGlhc2Z1IGZ1bmN0aW9uc1xuICByZVBvcnQ6IFJlUG9ydFR5cGU7XG4gIGNhcHR1cmVDYW52YXNTdHJlYW06IENhcHR1cmVDYW52YXNTdHJlYW1UeXBlO1xuXG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IFN0YXJ0UmVjb3JkaW5nUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0UmVjb3JkaW5nT3B0aW9ucyB7XG4gIHBhcmFtZXRlcnM6IFN0YXJ0UmVjb3JkaW5nUGFyYW1ldGVycztcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgU3RhcnRSZWNvcmRpbmdUeXBlID0gKG9wdGlvbnM6IFN0YXJ0UmVjb3JkaW5nT3B0aW9ucykgPT4gUHJvbWlzZTxib29sZWFuIHwgdW5kZWZpbmVkPjtcblxuLyoqXG4gKiBTdGFydHMgdGhlIHJlY29yZGluZyBwcm9jZXNzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSB7U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJvb21OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJvb20gd2hlcmUgcmVjb3JkaW5nIGlzIHRvIGJlIHN0YXJ0ZWQuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVzZXJSZWNvcmRpbmdQYXJhbXMgLSBVc2VyLXNwZWNpZmljIHJlY29yZGluZyBwYXJhbWV0ZXJzLlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycy5zb2NrZXQgLSBUaGUgc29ja2V0IGluc3RhbmNlIGZvciBjb21tdW5pY2F0aW9uLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUlzUmVjb3JkaW5nTW9kYWxWaXNpYmxlIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSByZWNvcmRpbmcgbW9kYWwuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5jb25maXJtZWRUb1JlY29yZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgdXNlciBoYXMgY29uZmlybWVkIHRvIHJlY29yZC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5zaG93QWxlcnQgLSBGdW5jdGlvbiB0byBzaG93IGFsZXJ0cy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nTWVkaWFPcHRpb25zIC0gVGhlIG1lZGlhIG9wdGlvbnMgZm9yIHJlY29yZGluZyAoZS5nLiwgXCJ2aWRlb1wiLCBcImF1ZGlvXCIpLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9BbHJlYWR5T24gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHZpZGVvIGlzIGFscmVhZHkgb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5hdWRpb0FscmVhZHlPbiAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgYXVkaW8gaXMgYWxyZWFkeSBvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFN0YXJ0ZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBoYXMgc3RhcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFBhdXNlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIGlzIHBhdXNlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFJlc3VtZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBpcyByZXN1bWVkLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RvcHBlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIGlzIHN0b3BwZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zdGFydFJlcG9ydCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgc3RhcnQgcmVwb3J0IGlzIGFjdGl2ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmVuZFJlcG9ydCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgZW5kIHJlcG9ydCBpcyBhY3RpdmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5jYW5SZWNvcmQgLSBGbGFnIGluZGljYXRpbmcgaWYgcmVjb3JkaW5nIGlzIGFsbG93ZWQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2xlYXJlZFRvUmVjb3JkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjbGVhcmVkIHRvIHJlY29yZCBzdGF0dXMuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkU3RhcnRlZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkIHN0YXJ0ZWQgc3RhdHVzLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZFBhdXNlZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkIHBhdXNlZCBzdGF0dXMuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkUmVzdW1lZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkIHJlc3VtZWQgc3RhdHVzLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVN0YXJ0UmVwb3J0IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBzdGFydCByZXBvcnQgc3RhdHVzLlxuICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUVuZFJlcG9ydCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgZW5kIHJlcG9ydCBzdGF0dXMuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2FuUmVjb3JkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjYW4gcmVjb3JkIHN0YXR1cy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRTdGFydGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB3aGl0ZWJvYXJkIGhhcyBzdGFydGVkLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMud2hpdGVib2FyZEVuZGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB3aGl0ZWJvYXJkIGhhcyBlbmRlZC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5yZVBvcnQgLSBGdW5jdGlvbiB0byByZXBvcnQgdGhlIHJlY29yZGluZyBzdGF0dXMuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuY2FwdHVyZUNhbnZhc1N0cmVhbSAtIEZ1bmN0aW9uIHRvIGNhcHR1cmUgdGhlIGNhbnZhcyBzdHJlYW0uXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBhdHRlbXB0IHdhcyBzdWNjZXNzZnVsLCBvciB1bmRlZmluZWQgaWYgbm90IGFwcGxpY2FibGUuXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyB2YXJpb3VzIGNvbmRpdGlvbnMsIHN1Y2ggYXMgd2hldGhlciB0aGUgdXNlciBoYXMgY29uZmlybWVkIHJlY29yZGluZyBhbmQgd2hldGhlciBhdWRpbyBvciB2aWRlbyBpcyBhbHJlYWR5IG9uLFxuICogYmVmb3JlIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcuIEl0IHVwZGF0ZXMgdGhlIHJlY29yZGluZyBzdGF0ZSwgbWFuYWdlcyBzb2NrZXQgY29tbXVuaWNhdGlvbiwgYW5kIGhhbmRsZXMgd2hpdGVib2FyZCBmdW5jdGlvbmFsaXR5IGlmIGFwcGxpY2FibGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9wdGlvbnM6IFN0YXJ0UmVjb3JkaW5nT3B0aW9ucyA9IHsgcGFyYW1ldGVyczogc29tZVBhcmFtZXRlcnMgfTtcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0YXJ0UmVjb3JkaW5nKG9wdGlvbnMpO1xuICogaWYgKHJlc3VsdCkge1xuICogICBjb25zb2xlLmxvZygnUmVjb3JkaW5nIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LicpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBzdGFydCByZWNvcmRpbmcuJyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTdGFydFJlY29yZGluZyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgUmVjb3JkU3RhcnRUaW1lclNlcnZpY2U6IFJlY29yZFN0YXJ0VGltZXIsXG4gICAgcHJpdmF0ZSBSZWNvcmRSZXN1bWVUaW1lclNlcnZpY2U6IFJlY29yZFJlc3VtZVRpbWVyLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgcmVjb3JkaW5nIHByb2Nlc3MgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3Igc3RhcnRpbmcgdGhlIHJlY29yZGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5yb29tTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSByb29tIHdoZXJlIHJlY29yZGluZyBpcyB0byBiZSBzdGFydGVkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVzZXJSZWNvcmRpbmdQYXJhbXMgLSBVc2VyLXNwZWNpZmljIHJlY29yZGluZyBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVJc1JlY29yZGluZ01vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgcmVjb3JkaW5nIG1vZGFsLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5jb25maXJtZWRUb1JlY29yZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgdXNlciBoYXMgY29uZmlybWVkIHRvIHJlY29yZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNob3dBbGVydCAtIEZ1bmN0aW9uIHRvIHNob3cgYWxlcnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZGluZ01lZGlhT3B0aW9ucyAtIFRoZSBtZWRpYSBvcHRpb25zIGZvciByZWNvcmRpbmcgKGUuZy4sIFwidmlkZW9cIiwgXCJhdWRpb1wiKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9BbHJlYWR5T24gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHZpZGVvIGlzIGFscmVhZHkgb24uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvQWxyZWFkeU9uIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBhdWRpbyBpcyBhbHJlYWR5IG9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdGFydGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFBhdXNlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIGlzIHBhdXNlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkUmVzdW1lZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIGlzIHJlc3VtZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFN0b3BwZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBpcyBzdG9wcGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zdGFydFJlcG9ydCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgc3RhcnQgcmVwb3J0IGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuZW5kUmVwb3J0IC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBlbmQgcmVwb3J0IGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuY2FuUmVjb3JkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHJlY29yZGluZyBpcyBhbGxvd2VkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2xlYXJlZFRvUmVjb3JkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjbGVhcmVkIHRvIHJlY29yZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRTdGFydGVkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSByZWNvcmQgc3RhcnRlZCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRQYXVzZWQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZCBwYXVzZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkUmVzdW1lZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVjb3JkIHJlc3VtZWQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlU3RhcnRSZXBvcnQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHN0YXJ0IHJlcG9ydCBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVFbmRSZXBvcnQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGVuZCByZXBvcnQgc3RhdHVzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ2FuUmVjb3JkIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjYW4gcmVjb3JkIHN0YXR1cy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMud2hpdGVib2FyZFN0YXJ0ZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHdoaXRlYm9hcmQgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRFbmRlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgd2hpdGVib2FyZCBoYXMgZW5kZWQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5yZVBvcnQgLSBGdW5jdGlvbiB0byByZXBvcnQgdGhlIHJlY29yZGluZyBzdGF0dXMuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5jYXB0dXJlQ2FudmFzU3RyZWFtIC0gRnVuY3Rpb24gdG8gY2FwdHVyZSB0aGUgY2FudmFzIHN0cmVhbS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBhdHRlbXB0IHdhcyBzdWNjZXNzZnVsLCBvciB1bmRlZmluZWQgaWYgbm90IGFwcGxpY2FibGUuXG4gICAqL1xuXG4gIHN0YXJ0UmVjb3JkaW5nID0gYXN5bmMgKHsgcGFyYW1ldGVycyB9OiBTdGFydFJlY29yZGluZ09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0+IHtcbiAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICBsZXQge1xuICAgICAgcm9vbU5hbWUsXG4gICAgICB1c2VyUmVjb3JkaW5nUGFyYW1zLFxuICAgICAgc29ja2V0LFxuICAgICAgdXBkYXRlSXNSZWNvcmRpbmdNb2RhbFZpc2libGUsXG4gICAgICBjb25maXJtZWRUb1JlY29yZCxcbiAgICAgIHNob3dBbGVydCxcbiAgICAgIHJlY29yZGluZ01lZGlhT3B0aW9ucyxcbiAgICAgIHZpZGVvQWxyZWFkeU9uLFxuICAgICAgYXVkaW9BbHJlYWR5T24sXG4gICAgICByZWNvcmRTdGFydGVkLFxuICAgICAgcmVjb3JkUGF1c2VkLFxuICAgICAgcmVjb3JkUmVzdW1lZCxcbiAgICAgIHJlY29yZFN0b3BwZWQsXG4gICAgICBzdGFydFJlcG9ydCxcbiAgICAgIGVuZFJlcG9ydCxcbiAgICAgIGNhblJlY29yZCxcbiAgICAgIHVwZGF0ZUNsZWFyZWRUb1JlY29yZCxcbiAgICAgIHVwZGF0ZVJlY29yZFN0YXJ0ZWQsXG4gICAgICB1cGRhdGVSZWNvcmRQYXVzZWQsXG4gICAgICB1cGRhdGVSZWNvcmRSZXN1bWVkLFxuICAgICAgdXBkYXRlU3RhcnRSZXBvcnQsXG4gICAgICB1cGRhdGVFbmRSZXBvcnQsXG4gICAgICB1cGRhdGVDYW5SZWNvcmQsXG5cbiAgICAgIHdoaXRlYm9hcmRTdGFydGVkLFxuICAgICAgd2hpdGVib2FyZEVuZGVkLFxuXG4gICAgICAvL21lZGlhc2Z1IGZ1bmN0aW9uc1xuICAgICAgcmVQb3J0LFxuICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIC8vIENoZWNrIGlmIHJlY29yZGluZyBpcyBjb25maXJtZWQgYmVmb3JlIHN0YXJ0aW5nXG4gICAgaWYgKCFjb25maXJtZWRUb1JlY29yZCkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IG11c3QgY2xpY2sgY29uZmlybSBiZWZvcmUgeW91IGNhbiBzdGFydCByZWNvcmRpbmcnLFxuICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciByZWNvcmRpbmdNZWRpYU9wdGlvbnMgZm9yIHZpZGVvXG4gICAgaWYgKHJlY29yZGluZ01lZGlhT3B0aW9ucyA9PT0gJ3ZpZGVvJyAmJiAhdmlkZW9BbHJlYWR5T24pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBtdXN0IHR1cm4gb24geW91ciB2aWRlbyBiZWZvcmUgeW91IGNhbiBzdGFydCByZWNvcmRpbmcnLFxuICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciByZWNvcmRpbmdNZWRpYU9wdGlvbnMgZm9yIGF1ZGlvXG4gICAgaWYgKHJlY29yZGluZ01lZGlhT3B0aW9ucyA9PT0gJ2F1ZGlvJyAmJiAhYXVkaW9BbHJlYWR5T24pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBtdXN0IHR1cm4gb24geW91ciBhdWRpbyBiZWZvcmUgeW91IGNhbiBzdGFydCByZWNvcmRpbmcnLFxuICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBjbGVhcmVkVG9SZWNvcmQgdG8gdHJ1ZVxuICAgIHVwZGF0ZUNsZWFyZWRUb1JlY29yZCh0cnVlKTtcblxuICAgIGxldCBhY3Rpb24gPSAnc3RhcnRSZWNvcmQnO1xuICAgIGlmIChyZWNvcmRTdGFydGVkICYmIHJlY29yZFBhdXNlZCAmJiAhcmVjb3JkUmVzdW1lZCAmJiAhcmVjb3JkU3RvcHBlZCkge1xuICAgICAgYWN0aW9uID0gJ3Jlc3VtZVJlY29yZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGlvbiA9ICdzdGFydFJlY29yZCc7XG4gICAgfVxuXG4gICAgbGV0IHJlY0F0dGVtcHQgPSBmYWxzZTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBzb2NrZXQuZW1pdChcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICB7IHJvb21OYW1lLCB1c2VyUmVjb3JkaW5nUGFyYW1zIH0sXG4gICAgICAgIGFzeW5jICh7IHN1Y2Nlc3MsIHJlYXNvbiB9OiB7IHN1Y2Nlc3M6IGJvb2xlYW47IHJlYXNvbjogc3RyaW5nOyByZWNvcmRTdGF0ZTogYW55IH0pID0+IHtcbiAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgcmVjb3JkU3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBzdGFydFJlcG9ydCA9IHRydWU7XG4gICAgICAgICAgICBlbmRSZXBvcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJlY29yZFBhdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmVjQXR0ZW1wdCA9IHRydWU7XG5cbiAgICAgICAgICAgIHVwZGF0ZVJlY29yZFN0YXJ0ZWQocmVjb3JkU3RhcnRlZCk7XG4gICAgICAgICAgICB1cGRhdGVTdGFydFJlcG9ydChzdGFydFJlcG9ydCk7XG4gICAgICAgICAgICB1cGRhdGVFbmRSZXBvcnQoZW5kUmVwb3J0KTtcbiAgICAgICAgICAgIHVwZGF0ZVJlY29yZFBhdXNlZChyZWNvcmRQYXVzZWQpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aW9uID09PSAnc3RhcnRSZWNvcmQnKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHJlUG9ydCh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuUmVjb3JkU3RhcnRUaW1lclNlcnZpY2UucmVjb3JkU3RhcnRUaW1lcih7IHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWNvcmRSZXN1bWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkUmVzdW1lZChyZWNvcmRSZXN1bWVkKTtcbiAgICAgICAgICAgICAgYXdhaXQgcmVQb3J0KHsgcmVzdGFydDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5SZWNvcmRSZXN1bWVUaW1lclNlcnZpY2UucmVjb3JkUmVzdW1lVGltZXIoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaG93QWxlcnQ/Lih7IG1lc3NhZ2U6IGBSZWNvcmRpbmcgY291bGQgbm90IHN0YXJ0IC0gJHtyZWFzb259YCwgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgICAgICAgICBjYW5SZWNvcmQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhcnRSZXBvcnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGVuZFJlcG9ydCA9IHRydWU7XG4gICAgICAgICAgICByZWNBdHRlbXB0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHVwZGF0ZUNhblJlY29yZChjYW5SZWNvcmQpO1xuICAgICAgICAgICAgdXBkYXRlU3RhcnRSZXBvcnQoc3RhcnRSZXBvcnQpO1xuICAgICAgICAgICAgdXBkYXRlRW5kUmVwb3J0KGVuZFJlcG9ydCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIENhcHR1cmUgY2FudmFzIHN0cmVhbSBpZiByZWNvcmRpbmcgaXMgc3VjY2Vzc2Z1bCBhbmQgd2hpdGVib2FyZCBpcyBhY3RpdmVcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICByZWNBdHRlbXB0ICYmXG4gICAgICAgIHdoaXRlYm9hcmRTdGFydGVkICYmXG4gICAgICAgICF3aGl0ZWJvYXJkRW5kZWQgJiZcbiAgICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zID09PSAndmlkZW8nXG4gICAgICApIHtcbiAgICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBjYXB0dXJpbmcgY2FudmFzIHN0cmVhbTonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gU2V0IGlzUmVjb3JkaW5nTW9kYWxWaXNpYmxlIHRvIGZhbHNlXG4gICAgdXBkYXRlSXNSZWNvcmRpbmdNb2RhbFZpc2libGUoZmFsc2UpO1xuXG4gICAgcmV0dXJuIHJlY0F0dGVtcHQ7XG4gIH07XG59XG4iXX0=
@@ -1,6 +1,44 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./record-pause-timer.service";
4
+ /**
5
+ * Stops the recording process based on the provided parameters.
6
+ *
7
+ * @param {StopRecordingOptions} options - The options for stopping the recording.
8
+ * @param {Object} options.parameters - The parameters required for stopping the recording.
9
+ * @param {string} options.parameters.roomName - The name of the room where the recording is being stopped.
10
+ * @param {Socket} options.parameters.socket - The socket instance for communication.
11
+ * @param {Function} options.parameters.showAlert - Function to show alerts.
12
+ * @param {boolean} options.parameters.startReport - Flag indicating if the start report is active.
13
+ * @param {boolean} options.parameters.endReport - Flag indicating if the end report is active.
14
+ * @param {boolean} options.parameters.recordStarted - Flag indicating if the recording has started.
15
+ * @param {boolean} options.parameters.recordPaused - Flag indicating if the recording is paused.
16
+ * @param {boolean} options.parameters.recordStopped - Flag indicating if the recording is stopped.
17
+ * @param {Function} options.parameters.updateRecordPaused - Function to update the record paused status.
18
+ * @param {Function} options.parameters.updateRecordStopped - Function to update the record stopped status.
19
+ * @param {Function} options.parameters.updateStartReport - Function to update the start report status.
20
+ * @param {Function} options.parameters.updateEndReport - Function to update the end report status.
21
+ * @param {Function} options.parameters.updateShowRecordButtons - Function to update the visibility of recording buttons.
22
+ * @param {boolean} options.parameters.whiteboardStarted - Flag indicating if the whiteboard has started.
23
+ * @param {boolean} options.parameters.whiteboardEnded - Flag indicating if the whiteboard has ended.
24
+ * @param {string} options.parameters.recordingMediaOptions - The media options for recording (e.g., "video", "audio").
25
+ * @param {Function} options.parameters.captureCanvasStream - Function to capture the canvas stream.
26
+ *
27
+ * @returns {Promise<void>} - A promise that resolves when the recording is stopped.
28
+ *
29
+ * @remarks
30
+ * This method checks if the recording has started and is not already stopped.
31
+ * It pauses the timer and emits a stop recording event via socket communication.
32
+ * If successful, it updates the recording state and alerts the user.
33
+ * Additionally, if the whiteboard feature is active, it captures the canvas stream.
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const options: StopRecordingOptions = { parameters: someParameters };
38
+ * await stopRecording(options);
39
+ * console.log('Recording stopped successfully.');
40
+ * ```
41
+ */
4
42
  export class StopRecording {
5
43
  RecordPauseTimerService;
6
44
  constructor(RecordPauseTimerService) {
@@ -71,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
71
109
  providedIn: 'root',
72
110
  }]
73
111
  }], ctorParameters: () => [{ type: i1.RecordPauseTimer }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC1yZWNvcmRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3JlY29yZGluZy1tZXRob2RzL3N0b3AtcmVjb3JkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBc0MzQyxNQUFNLE9BQU8sYUFBYTtJQUNKO0lBQXBCLFlBQW9CLHVCQUF5QztRQUF6Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO0lBQUcsQ0FBQztJQUVqRSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUF3QjtRQUN0RCxJQUFJLEVBQ0YsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsdUJBQXVCLEVBRXZCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YscUJBQXFCO1FBRXJCLG9CQUFvQjtRQUNwQixtQkFBbUIsR0FDcEIsR0FBRyxVQUFVLENBQUM7UUFFZixJQUFJLFVBQVUsQ0FBQztRQUVmLElBQUksYUFBYSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMsSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzdELElBQUksRUFBRSxJQUFJO2dCQUNWLGNBQWMsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzVDLGNBQWMsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzVDLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUzthQUNoQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQztnQkFFMUIsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUNsQyxNQUFNLENBQUMsSUFBSSxDQUNULE1BQU0sRUFDTixFQUFFLFFBQVEsRUFBRSxFQUNaLENBQUMsRUFDQyxPQUFPLEVBQ1AsTUFBTSxFQUNOLFdBQVcsR0FLWixFQUFFLEVBQUU7d0JBQ0gsSUFBSSxPQUFPLEVBQUUsQ0FBQzs0QkFDWixXQUFXLEdBQUcsS0FBSyxDQUFDOzRCQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDOzRCQUNqQixZQUFZLEdBQUcsS0FBSyxDQUFDOzRCQUNyQixhQUFhLEdBQUcsSUFBSSxDQUFDOzRCQUNyQixVQUFVLEdBQUcsSUFBSSxDQUFDOzRCQUVsQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDL0IsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDOzRCQUMzQixrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQzs0QkFDakMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7NEJBQ25DLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDOzRCQUMvRCx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDakMsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLElBQUksYUFBYSxHQUFHLDBCQUEwQixNQUFNLGdDQUFnQyxXQUFXLEVBQUUsQ0FBQzs0QkFDbEcsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDOzRCQUN4RCxVQUFVLEdBQUcsS0FBSyxDQUFDO3dCQUNyQixDQUFDO3dCQUVELE9BQU8sRUFBRSxDQUFDO29CQUNaLENBQUMsQ0FDRixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQztvQkFDSCxJQUFJLFVBQVUsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUN4RCxJQUFJLHFCQUFxQixLQUFLLE9BQU8sRUFBRSxDQUFDOzRCQUN0QyxtQkFBbUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzt3QkFDcEQsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpREFBaUQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQzt1R0E1RlUsYUFBYTsyR0FBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWNvcmRQYXVzZVRpbWVyIH0gZnJvbSAnLi9yZWNvcmQtcGF1c2UtdGltZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3BSZWNvcmRpbmdQYXJhbWV0ZXJzIHtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgc29ja2V0OiBhbnk7XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcbiAgc3RhcnRSZXBvcnQ6IGJvb2xlYW47XG4gIGVuZFJlcG9ydDogYm9vbGVhbjtcbiAgcmVjb3JkU3RhcnRlZDogYm9vbGVhbjtcbiAgcmVjb3JkUGF1c2VkOiBib29sZWFuO1xuICByZWNvcmRTdG9wcGVkOiBib29sZWFuO1xuICB1cGRhdGVSZWNvcmRQYXVzZWQ6IChwYXVzZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZFN0b3BwZWQ6IChzdG9wcGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVTdGFydFJlcG9ydDogKHN0YXJ0UmVwb3J0OiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVFbmRSZXBvcnQ6IChlbmRSZXBvcnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVNob3dSZWNvcmRCdXR0b25zOiAoc2hvdzogYm9vbGVhbikgPT4gdm9pZDtcbiAgd2hpdGVib2FyZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHdoaXRlYm9hcmRFbmRlZDogYm9vbGVhbjtcbiAgcmVjb3JkaW5nTWVkaWFPcHRpb25zOiBzdHJpbmc7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIGNhcHR1cmVDYW52YXNTdHJlYW06IChvcHRpb25zOiB7IHBhcmFtZXRlcnM6IGFueTsgc3RhcnQ/OiBib29sZWFuIH0pID0+IHZvaWQ7XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3BSZWNvcmRpbmdPcHRpb25zIHtcbiAgcGFyYW1ldGVyczogU3RvcFJlY29yZGluZ1BhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFN0b3BSZWNvcmRpbmdUeXBlID0gKG9wdGlvbnM6IFN0b3BSZWNvcmRpbmdPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3RvcFJlY29yZGluZyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgUmVjb3JkUGF1c2VUaW1lclNlcnZpY2U6IFJlY29yZFBhdXNlVGltZXIpIHt9XG5cbiAgYXN5bmMgc3RvcFJlY29yZGluZyh7IHBhcmFtZXRlcnMgfTogU3RvcFJlY29yZGluZ09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQge1xuICAgICAgcm9vbU5hbWUsXG4gICAgICBzb2NrZXQsXG4gICAgICBzaG93QWxlcnQsXG4gICAgICBzdGFydFJlcG9ydCxcbiAgICAgIGVuZFJlcG9ydCxcbiAgICAgIHJlY29yZFN0YXJ0ZWQsXG4gICAgICByZWNvcmRQYXVzZWQsXG4gICAgICByZWNvcmRTdG9wcGVkLFxuICAgICAgdXBkYXRlUmVjb3JkUGF1c2VkLFxuICAgICAgdXBkYXRlUmVjb3JkU3RvcHBlZCxcbiAgICAgIHVwZGF0ZVN0YXJ0UmVwb3J0LFxuICAgICAgdXBkYXRlRW5kUmVwb3J0LFxuICAgICAgdXBkYXRlU2hvd1JlY29yZEJ1dHRvbnMsXG5cbiAgICAgIHdoaXRlYm9hcmRTdGFydGVkLFxuICAgICAgd2hpdGVib2FyZEVuZGVkLFxuICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zLFxuXG4gICAgICAvL21lZGlhc2Z1IGZ1bmN0aW9uc1xuICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGxldCByZWNBdHRlbXB0O1xuXG4gICAgaWYgKHJlY29yZFN0YXJ0ZWQgJiYgIXJlY29yZFN0b3BwZWQpIHtcbiAgICAgIGxldCBzdG9wID0gYXdhaXQgdGhpcy5SZWNvcmRQYXVzZVRpbWVyU2VydmljZS5yZWNvcmRQYXVzZVRpbWVyKHtcbiAgICAgICAgc3RvcDogdHJ1ZSxcbiAgICAgICAgaXNUaW1lclJ1bm5pbmc6IHBhcmFtZXRlcnNbJ2lzVGltZXJSdW5uaW5nJ10sXG4gICAgICAgIGNhblBhdXNlUmVzdW1lOiBwYXJhbWV0ZXJzWydjYW5QYXVzZVJlc3VtZSddLFxuICAgICAgICBzaG93QWxlcnQ6IHBhcmFtZXRlcnMuc2hvd0FsZXJ0LFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzdG9wKSB7XG4gICAgICAgIGxldCBhY3Rpb24gPSAnc3RvcFJlY29yZCc7XG5cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICBzb2NrZXQuZW1pdChcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHsgcm9vbU5hbWUgfSxcbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MsXG4gICAgICAgICAgICAgIHJlYXNvbixcbiAgICAgICAgICAgICAgcmVjb3JkU3RhdGUsXG4gICAgICAgICAgICB9OiB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgICAgICByZWNvcmRTdGF0ZTogc3RyaW5nO1xuICAgICAgICAgICAgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHN0YXJ0UmVwb3J0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZW5kUmVwb3J0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZWNvcmRQYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWNvcmRTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZWNBdHRlbXB0ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXJ0UmVwb3J0KHN0YXJ0UmVwb3J0KTtcbiAgICAgICAgICAgICAgICB1cGRhdGVFbmRSZXBvcnQoZW5kUmVwb3J0KTtcbiAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRQYXVzZWQocmVjb3JkUGF1c2VkKTtcbiAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRTdG9wcGVkKHJlY29yZFN0b3BwZWQpO1xuICAgICAgICAgICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogJ1JlY29yZGluZyBTdG9wcGVkJywgdHlwZTogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVNob3dSZWNvcmRCdXR0b25zKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVhc29uTWVzc2FnZSA9IGBSZWNvcmRpbmcgU3RvcCBGYWlsZWQ6ICR7cmVhc29ufTsgdGhlIHJlY29yZGluZyBpcyBjdXJyZW50bHkgJHtyZWNvcmRTdGF0ZX1gO1xuICAgICAgICAgICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogcmVhc29uTWVzc2FnZSwgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgICAgICAgICAgICAgcmVjQXR0ZW1wdCA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChyZWNBdHRlbXB0ICYmIHdoaXRlYm9hcmRTdGFydGVkICYmICF3aGl0ZWJvYXJkRW5kZWQpIHtcbiAgICAgICAgICAgIGlmIChyZWNvcmRpbmdNZWRpYU9wdGlvbnMgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSh7IHBhcmFtZXRlcnMsIHN0YXJ0OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGNhcHR1cmluZyBjYW52YXMgc3RyZWFtOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzaG93QWxlcnQ/Lih7IG1lc3NhZ2U6ICdSZWNvcmRpbmcgaXMgbm90IHN0YXJ0ZWQgeWV0IG9yIGFscmVhZHkgc3RvcHBlZCcsIHR5cGU6ICdkYW5nZXInIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC1yZWNvcmRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3JlY29yZGluZy1tZXRob2RzL3N0b3AtcmVjb3JkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBbUMzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDRztBQU1ILE1BQU0sT0FBTyxhQUFhO0lBQ0o7SUFBcEIsWUFBb0IsdUJBQXlDO1FBQXpDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBa0I7SUFBRyxDQUFDO0lBRWpFLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxVQUFVLEVBQXdCO1FBQ3RELElBQUksRUFDRixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsRUFDYixZQUFZLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZix1QkFBdUIsRUFFdkIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixxQkFBcUI7UUFFckIsb0JBQW9CO1FBQ3BCLG1CQUFtQixHQUNwQixHQUFHLFVBQVUsQ0FBQztRQUVmLElBQUksVUFBVSxDQUFDO1FBRWYsSUFBSSxhQUFhLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwQyxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDN0QsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsY0FBYyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDNUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDNUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO2FBQ2hDLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDO2dCQUUxQixNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsTUFBTSxFQUNOLEVBQUUsUUFBUSxFQUFFLEVBQ1osQ0FBQyxFQUNDLE9BQU8sRUFDUCxNQUFNLEVBQ04sV0FBVyxHQUtaLEVBQUUsRUFBRTt3QkFDSCxJQUFJLE9BQU8sRUFBRSxDQUFDOzRCQUNaLFdBQVcsR0FBRyxLQUFLLENBQUM7NEJBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7NEJBQ2pCLFlBQVksR0FBRyxLQUFLLENBQUM7NEJBQ3JCLGFBQWEsR0FBRyxJQUFJLENBQUM7NEJBQ3JCLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBRWxCLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUMvQixlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7NEJBQzNCLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDOzRCQUNqQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDbkMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7NEJBQy9ELHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNqQyxDQUFDOzZCQUFNLENBQUM7NEJBQ04sSUFBSSxhQUFhLEdBQUcsMEJBQTBCLE1BQU0sZ0NBQWdDLFdBQVcsRUFBRSxDQUFDOzRCQUNsRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBQ3hELFVBQVUsR0FBRyxLQUFLLENBQUM7d0JBQ3JCLENBQUM7d0JBRUQsT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQyxDQUNGLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDO29CQUNILElBQUksVUFBVSxJQUFJLGlCQUFpQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQ3hELElBQUkscUJBQXFCLEtBQUssT0FBTyxFQUFFLENBQUM7NEJBQ3RDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO3dCQUNwRCxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlEQUFpRCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7SUFDSCxDQUFDO3VHQTVGVSxhQUFhOzJHQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlY29yZFBhdXNlVGltZXIgfSBmcm9tICcuL3JlY29yZC1wYXVzZS10aW1lci5zZXJ2aWNlJztcbmltcG9ydCB7IFNob3dBbGVydCB9IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcFJlY29yZGluZ1BhcmFtZXRlcnMge1xuICByb29tTmFtZTogc3RyaW5nO1xuICBzb2NrZXQ6IGFueTtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuICBzdGFydFJlcG9ydDogYm9vbGVhbjtcbiAgZW5kUmVwb3J0OiBib29sZWFuO1xuICByZWNvcmRTdGFydGVkOiBib29sZWFuO1xuICByZWNvcmRQYXVzZWQ6IGJvb2xlYW47XG4gIHJlY29yZFN0b3BwZWQ6IGJvb2xlYW47XG4gIHVwZGF0ZVJlY29yZFBhdXNlZDogKHBhdXNlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkU3RvcHBlZDogKHN0b3BwZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVN0YXJ0UmVwb3J0OiAoc3RhcnRSZXBvcnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUVuZFJlcG9ydDogKGVuZFJlcG9ydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlU2hvd1JlY29yZEJ1dHRvbnM6IChzaG93OiBib29sZWFuKSA9PiB2b2lkO1xuICB3aGl0ZWJvYXJkU3RhcnRlZDogYm9vbGVhbjtcbiAgd2hpdGVib2FyZEVuZGVkOiBib29sZWFuO1xuICByZWNvcmRpbmdNZWRpYU9wdGlvbnM6IHN0cmluZztcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgY2FwdHVyZUNhbnZhc1N0cmVhbTogKG9wdGlvbnM6IHsgcGFyYW1ldGVyczogYW55OyBzdGFydD86IGJvb2xlYW4gfSkgPT4gdm9pZDtcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcFJlY29yZGluZ09wdGlvbnMge1xuICBwYXJhbWV0ZXJzOiBTdG9wUmVjb3JkaW5nUGFyYW1ldGVycztcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgU3RvcFJlY29yZGluZ1R5cGUgPSAob3B0aW9uczogU3RvcFJlY29yZGluZ09wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogU3RvcHMgdGhlIHJlY29yZGluZyBwcm9jZXNzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSB7U3RvcFJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3Igc3RvcHBpbmcgdGhlIHJlY29yZGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3Igc3RvcHBpbmcgdGhlIHJlY29yZGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMucm9vbU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcm9vbSB3aGVyZSB0aGUgcmVjb3JkaW5nIGlzIGJlaW5nIHN0b3BwZWQuXG4gKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hvd0FsZXJ0IC0gRnVuY3Rpb24gdG8gc2hvdyBhbGVydHMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zdGFydFJlcG9ydCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgc3RhcnQgcmVwb3J0IGlzIGFjdGl2ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmVuZFJlcG9ydCAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgZW5kIHJlcG9ydCBpcyBhY3RpdmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdGFydGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRQYXVzZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyBpcyBwYXVzZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdG9wcGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSByZWNvcmRpbmcgaXMgc3RvcHBlZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZWNvcmRQYXVzZWQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZCBwYXVzZWQgc3RhdHVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZFN0b3BwZWQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJlY29yZCBzdG9wcGVkIHN0YXR1cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVTdGFydFJlcG9ydCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgc3RhcnQgcmVwb3J0IHN0YXR1cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVFbmRSZXBvcnQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGVuZCByZXBvcnQgc3RhdHVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVNob3dSZWNvcmRCdXR0b25zIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG9mIHJlY29yZGluZyBidXR0b25zLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMud2hpdGVib2FyZFN0YXJ0ZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHdoaXRlYm9hcmQgaGFzIHN0YXJ0ZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy53aGl0ZWJvYXJkRW5kZWQgLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHdoaXRlYm9hcmQgaGFzIGVuZGVkLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRpbmdNZWRpYU9wdGlvbnMgLSBUaGUgbWVkaWEgb3B0aW9ucyBmb3IgcmVjb3JkaW5nIChlLmcuLCBcInZpZGVvXCIsIFwiYXVkaW9cIikuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuY2FwdHVyZUNhbnZhc1N0cmVhbSAtIEZ1bmN0aW9uIHRvIGNhcHR1cmUgdGhlIGNhbnZhcyBzdHJlYW0uXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVjb3JkaW5nIGlzIHN0b3BwZWQuXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgcmVjb3JkaW5nIGhhcyBzdGFydGVkIGFuZCBpcyBub3QgYWxyZWFkeSBzdG9wcGVkLlxuICogSXQgcGF1c2VzIHRoZSB0aW1lciBhbmQgZW1pdHMgYSBzdG9wIHJlY29yZGluZyBldmVudCB2aWEgc29ja2V0IGNvbW11bmljYXRpb24uXG4gKiBJZiBzdWNjZXNzZnVsLCBpdCB1cGRhdGVzIHRoZSByZWNvcmRpbmcgc3RhdGUgYW5kIGFsZXJ0cyB0aGUgdXNlci5cbiAqIEFkZGl0aW9uYWxseSwgaWYgdGhlIHdoaXRlYm9hcmQgZmVhdHVyZSBpcyBhY3RpdmUsIGl0IGNhcHR1cmVzIHRoZSBjYW52YXMgc3RyZWFtLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcHRpb25zOiBTdG9wUmVjb3JkaW5nT3B0aW9ucyA9IHsgcGFyYW1ldGVyczogc29tZVBhcmFtZXRlcnMgfTtcbiAqIGF3YWl0IHN0b3BSZWNvcmRpbmcob3B0aW9ucyk7XG4gKiBjb25zb2xlLmxvZygnUmVjb3JkaW5nIHN0b3BwZWQgc3VjY2Vzc2Z1bGx5LicpO1xuICogYGBgXG4gKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3RvcFJlY29yZGluZyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgUmVjb3JkUGF1c2VUaW1lclNlcnZpY2U6IFJlY29yZFBhdXNlVGltZXIpIHt9XG5cbiAgYXN5bmMgc3RvcFJlY29yZGluZyh7IHBhcmFtZXRlcnMgfTogU3RvcFJlY29yZGluZ09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQge1xuICAgICAgcm9vbU5hbWUsXG4gICAgICBzb2NrZXQsXG4gICAgICBzaG93QWxlcnQsXG4gICAgICBzdGFydFJlcG9ydCxcbiAgICAgIGVuZFJlcG9ydCxcbiAgICAgIHJlY29yZFN0YXJ0ZWQsXG4gICAgICByZWNvcmRQYXVzZWQsXG4gICAgICByZWNvcmRTdG9wcGVkLFxuICAgICAgdXBkYXRlUmVjb3JkUGF1c2VkLFxuICAgICAgdXBkYXRlUmVjb3JkU3RvcHBlZCxcbiAgICAgIHVwZGF0ZVN0YXJ0UmVwb3J0LFxuICAgICAgdXBkYXRlRW5kUmVwb3J0LFxuICAgICAgdXBkYXRlU2hvd1JlY29yZEJ1dHRvbnMsXG5cbiAgICAgIHdoaXRlYm9hcmRTdGFydGVkLFxuICAgICAgd2hpdGVib2FyZEVuZGVkLFxuICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zLFxuXG4gICAgICAvL21lZGlhc2Z1IGZ1bmN0aW9uc1xuICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGxldCByZWNBdHRlbXB0O1xuXG4gICAgaWYgKHJlY29yZFN0YXJ0ZWQgJiYgIXJlY29yZFN0b3BwZWQpIHtcbiAgICAgIGxldCBzdG9wID0gYXdhaXQgdGhpcy5SZWNvcmRQYXVzZVRpbWVyU2VydmljZS5yZWNvcmRQYXVzZVRpbWVyKHtcbiAgICAgICAgc3RvcDogdHJ1ZSxcbiAgICAgICAgaXNUaW1lclJ1bm5pbmc6IHBhcmFtZXRlcnNbJ2lzVGltZXJSdW5uaW5nJ10sXG4gICAgICAgIGNhblBhdXNlUmVzdW1lOiBwYXJhbWV0ZXJzWydjYW5QYXVzZVJlc3VtZSddLFxuICAgICAgICBzaG93QWxlcnQ6IHBhcmFtZXRlcnMuc2hvd0FsZXJ0LFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzdG9wKSB7XG4gICAgICAgIGxldCBhY3Rpb24gPSAnc3RvcFJlY29yZCc7XG5cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICBzb2NrZXQuZW1pdChcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHsgcm9vbU5hbWUgfSxcbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3MsXG4gICAgICAgICAgICAgIHJlYXNvbixcbiAgICAgICAgICAgICAgcmVjb3JkU3RhdGUsXG4gICAgICAgICAgICB9OiB7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47XG4gICAgICAgICAgICAgIHJlYXNvbjogc3RyaW5nO1xuICAgICAgICAgICAgICByZWNvcmRTdGF0ZTogc3RyaW5nO1xuICAgICAgICAgICAgfSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHN0YXJ0UmVwb3J0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZW5kUmVwb3J0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZWNvcmRQYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZWNvcmRTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZWNBdHRlbXB0ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXJ0UmVwb3J0KHN0YXJ0UmVwb3J0KTtcbiAgICAgICAgICAgICAgICB1cGRhdGVFbmRSZXBvcnQoZW5kUmVwb3J0KTtcbiAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRQYXVzZWQocmVjb3JkUGF1c2VkKTtcbiAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRTdG9wcGVkKHJlY29yZFN0b3BwZWQpO1xuICAgICAgICAgICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogJ1JlY29yZGluZyBTdG9wcGVkJywgdHlwZTogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVNob3dSZWNvcmRCdXR0b25zKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVhc29uTWVzc2FnZSA9IGBSZWNvcmRpbmcgU3RvcCBGYWlsZWQ6ICR7cmVhc29ufTsgdGhlIHJlY29yZGluZyBpcyBjdXJyZW50bHkgJHtyZWNvcmRTdGF0ZX1gO1xuICAgICAgICAgICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogcmVhc29uTWVzc2FnZSwgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgICAgICAgICAgICAgcmVjQXR0ZW1wdCA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChyZWNBdHRlbXB0ICYmIHdoaXRlYm9hcmRTdGFydGVkICYmICF3aGl0ZWJvYXJkRW5kZWQpIHtcbiAgICAgICAgICAgIGlmIChyZWNvcmRpbmdNZWRpYU9wdGlvbnMgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSh7IHBhcmFtZXRlcnMsIHN0YXJ0OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGNhcHR1cmluZyBjYW52YXMgc3RyZWFtOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzaG93QWxlcnQ/Lih7IG1lc3NhZ2U6ICdSZWNvcmRpbmcgaXMgbm90IHN0YXJ0ZWQgeWV0IG9yIGFscmVhZHkgc3RvcHBlZCcsIHR5cGU6ICdkYW5nZXInIH0pO1xuICAgIH1cbiAgfVxufVxuIl19