mediasfu-angular 1.0.2 → 2.0.1

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 (281) hide show
  1. package/README.md +686 -578
  2. package/dist/README.md +677 -578
  3. package/dist/fesm2022/mediasfu-angular.mjs +5551 -2944
  4. package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
  5. package/dist/lib/@types/types.d.ts +22 -1
  6. package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +1 -0
  7. package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +153 -61
  8. package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +154 -66
  9. package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +190 -76
  10. package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +184 -70
  11. package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +192 -78
  12. package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +6 -1
  13. package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +5 -2
  14. package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +4 -2
  15. package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +71 -66
  16. package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +5 -1
  17. package/dist/lib/consumers/connect-local-ips.service.d.ts +81 -0
  18. package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +43 -11
  19. package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +87 -46
  20. package/dist/lib/consumers/connect-send-transport-video.service.d.ts +89 -43
  21. package/dist/lib/consumers/connect-send-transport.service.d.ts +5 -1
  22. package/dist/lib/consumers/create-send-transport.service.d.ts +130 -40
  23. package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +77 -40
  24. package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +48 -14
  25. package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +81 -44
  26. package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +5 -1
  27. package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +5 -1
  28. package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +54 -21
  29. package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +124 -40
  30. package/dist/lib/consumers/trigger.service.d.ts +3 -0
  31. package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +5 -1
  32. package/dist/lib/methods/recording-methods/start-recording.service.d.ts +3 -0
  33. package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +4 -1
  34. package/dist/lib/methods/recording-methods/update-recording.service.d.ts +3 -0
  35. package/dist/lib/methods/stream-methods/click-audio.service.d.ts +3 -0
  36. package/dist/lib/methods/utils/check-limits-and-make-request.service.d.ts +23 -0
  37. package/dist/lib/methods/utils/create-response-join-room.util.d.ts +33 -0
  38. package/dist/lib/methods/utils/create-room-on-media-sfu.service.d.ts +25 -0
  39. package/dist/lib/methods/utils/initial-values.util.d.ts +6 -0
  40. package/dist/lib/methods/utils/join-room-on-media-sfu.service.d.ts +52 -0
  41. package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +37 -20
  42. package/dist/lib/producers/producer-emits/join-local-room.service.d.ts +125 -0
  43. package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +7 -2
  44. package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +7 -2
  45. package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +5 -1
  46. package/dist/lib/sockets/socket-manager.service.d.ts +90 -0
  47. package/dist/public-api.d.ts +11 -1
  48. package/package.json +17 -20
  49. package/dist/esm2022/lib/@types/types.mjs +0 -2
  50. package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +0 -799
  51. package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +0 -366
  52. package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +0 -143
  53. package/dist/esm2022/lib/components/breakout-components/room-list/room-list.component.mjs +0 -40
  54. package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +0 -245
  55. package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +0 -79
  56. package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +0 -356
  57. package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +0 -80
  58. package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +0 -129
  59. package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +0 -138
  60. package/dist/esm2022/lib/components/display-components/control-buttons-component/control-buttons-component.component.mjs +0 -231
  61. package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +0 -282
  62. package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +0 -82
  63. package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +0 -65
  64. package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +0 -137
  65. package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +0 -137
  66. package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +0 -51
  67. package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +0 -101
  68. package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +0 -151
  69. package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +0 -250
  70. package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +0 -102
  71. package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +0 -140
  72. package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +0 -131
  73. package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +0 -120
  74. package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +0 -201
  75. package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +0 -115
  76. package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +0 -319
  77. package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +0 -161
  78. package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +0 -230
  79. package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +0 -126
  80. package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +0 -334
  81. package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +0 -112
  82. package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +0 -392
  83. package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +0 -106
  84. package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +0 -199
  85. package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +0 -132
  86. package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +0 -220
  87. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +0 -4238
  88. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +0 -3754
  89. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +0 -5071
  90. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +0 -5380
  91. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +0 -5068
  92. package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +0 -83
  93. package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +0 -27
  94. package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +0 -27
  95. package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +0 -125
  96. package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +0 -106
  97. package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +0 -228
  98. package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +0 -277
  99. package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +0 -130
  100. package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +0 -343
  101. package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +0 -127
  102. package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +0 -241
  103. package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +0 -82
  104. package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +0 -139
  105. package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +0 -40
  106. package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +0 -60
  107. package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +0 -124
  108. package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +0 -201
  109. package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +0 -92
  110. package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +0 -133
  111. package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +0 -90
  112. package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +0 -81
  113. package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +0 -147
  114. package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +0 -627
  115. package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +0 -391
  116. package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +0 -201
  117. package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +0 -286
  118. package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +0 -1833
  119. package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +0 -345
  120. package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +0 -109
  121. package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +0 -60
  122. package/dist/esm2022/lib/consumers/change-vids.service.mjs +0 -551
  123. package/dist/esm2022/lib/consumers/check-grid.service.mjs +0 -93
  124. package/dist/esm2022/lib/consumers/check-permission.service.mjs +0 -105
  125. package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +0 -106
  126. package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +0 -331
  127. package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +0 -106
  128. package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +0 -98
  129. package/dist/esm2022/lib/consumers/connect-ips.service.mjs +0 -154
  130. package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +0 -146
  131. package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +0 -84
  132. package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +0 -102
  133. package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +0 -99
  134. package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +0 -140
  135. package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +0 -368
  136. package/dist/esm2022/lib/consumers/control-media.service.mjs +0 -113
  137. package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +0 -172
  138. package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +0 -108
  139. package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +0 -84
  140. package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +0 -101
  141. package/dist/esm2022/lib/consumers/disp-streams.service.mjs +0 -513
  142. package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +0 -106
  143. package/dist/esm2022/lib/consumers/get-estimate.service.mjs +0 -120
  144. package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +0 -82
  145. package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +0 -79
  146. package/dist/esm2022/lib/consumers/get-videos.service.mjs +0 -91
  147. package/dist/esm2022/lib/consumers/mix-streams.service.mjs +0 -95
  148. package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +0 -103
  149. package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +0 -541
  150. package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +0 -101
  151. package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +0 -128
  152. package/dist/esm2022/lib/consumers/re-port.service.mjs +0 -114
  153. package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +0 -239
  154. package/dist/esm2022/lib/consumers/readjust.service.mjs +0 -173
  155. package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +0 -87
  156. package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +0 -69
  157. package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +0 -239
  158. package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +0 -101
  159. package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +0 -150
  160. package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +0 -103
  161. package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +0 -91
  162. package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +0 -136
  163. package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +0 -96
  164. package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +0 -100
  165. package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +0 -78
  166. package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +0 -120
  167. package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +0 -175
  168. package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +0 -185
  169. package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +0 -210
  170. package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +0 -193
  171. package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +0 -260
  172. package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +0 -120
  173. package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +0 -260
  174. package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +0 -172
  175. package/dist/esm2022/lib/consumers/trigger.service.mjs +0 -210
  176. package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +0 -135
  177. package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +0 -84
  178. package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +0 -48
  179. package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +0 -183
  180. package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +0 -46
  181. package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +0 -46
  182. package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +0 -104
  183. package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +0 -46
  184. package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +0 -194
  185. package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +0 -52
  186. package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +0 -42
  187. package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +0 -85
  188. package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +0 -44
  189. package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +0 -45
  190. package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +0 -143
  191. package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +0 -47
  192. package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +0 -98
  193. package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +0 -96
  194. package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +0 -107
  195. package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +0 -75
  196. package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +0 -72
  197. package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +0 -83
  198. package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +0 -43
  199. package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +0 -95
  200. package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +0 -69
  201. package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +0 -56
  202. package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +0 -278
  203. package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +0 -125
  204. package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +0 -67
  205. package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +0 -130
  206. package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +0 -134
  207. package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +0 -80
  208. package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +0 -197
  209. package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +0 -112
  210. package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +0 -272
  211. package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +0 -51
  212. package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +0 -84
  213. package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +0 -51
  214. package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +0 -109
  215. package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +0 -275
  216. package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +0 -75
  217. package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +0 -178
  218. package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +0 -271
  219. package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +0 -80
  220. package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +0 -116
  221. package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +0 -132
  222. package/dist/esm2022/lib/methods/utils/format-number.service.mjs +0 -57
  223. package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +0 -120
  224. package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +0 -126
  225. package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +0 -78
  226. package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +0 -90
  227. package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +0 -59
  228. package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +0 -32
  229. package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +0 -31
  230. package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +0 -379
  231. package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +0 -96
  232. package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +0 -315
  233. package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +0 -58
  234. package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +0 -87
  235. package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +0 -61
  236. package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +0 -87
  237. package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +0 -84
  238. package/dist/esm2022/lib/methods/utils/sleep.util.mjs +0 -17
  239. package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +0 -63
  240. package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +0 -49
  241. package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +0 -41
  242. package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +0 -69
  243. package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +0 -98
  244. package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +0 -44
  245. package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +0 -74
  246. package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +0 -96
  247. package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +0 -276
  248. package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +0 -152
  249. package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +0 -152
  250. package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +0 -228
  251. package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +0 -218
  252. package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +0 -57
  253. package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +0 -76
  254. package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +0 -183
  255. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +0 -50
  256. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +0 -64
  257. package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +0 -78
  258. package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +0 -150
  259. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +0 -73
  260. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +0 -47
  261. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +0 -63
  262. package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +0 -63
  263. package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +0 -54
  264. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +0 -129
  265. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +0 -152
  266. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +0 -99
  267. package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +0 -67
  268. package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +0 -134
  269. package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +0 -233
  270. package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +0 -121
  271. package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +0 -86
  272. package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +0 -60
  273. package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +0 -62
  274. package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +0 -57
  275. package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +0 -105
  276. package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +0 -66
  277. package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +0 -96
  278. package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +0 -52
  279. package/dist/esm2022/lib/sockets/socket-manager.service.mjs +0 -113
  280. package/dist/esm2022/mediasfu-angular.mjs +0 -5
  281. package/dist/esm2022/public-api.mjs +0 -187
@@ -1,152 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Service to handle the paused state of media for a producer.
5
- *
6
- * @class
7
- * @name ProducerMediaPaused
8
- * @description
9
- * Handles the actions required when media is paused for a specified producer, including UI updates, participant state handling, and managing meeting display optimizations.
10
- *
11
- * @method
12
- * producerMediaPaused
13
- *
14
- * @param {ProducerMediaPausedOptions} options - Options to specify the producer and event details:
15
- * - `producerId` {string}: The ID of the paused producer.
16
- * - `kind` {string}: The type of media paused (e.g., "audio", "video").
17
- * - `name` {string}: Name of the producer whose media is paused.
18
- * - `parameters` {ProducerMediaPausedParameters}: Configuration and state parameters for the meeting.
19
- * - `activeSounds` {string[]}: Active audio streams currently displayed.
20
- * - `meetingDisplayType` {string}: Current meeting layout type (e.g., "media", "video").
21
- * - `meetingVideoOptimized` {boolean}: Indicates if video is optimized.
22
- * - `participants` {Participant[]}: List of all meeting participants.
23
- * - `oldSoundIds` {string[]}: List of previously active audio stream IDs.
24
- * - `shared` {boolean}: Indicates if the screen is currently shared.
25
- * - `shareScreenStarted` {boolean}: Indicates if screen sharing has started.
26
- * - `updateMainWindow` {boolean}: Specifies if the main display window should update.
27
- * - `hostLabel` {string}: The label representing the host participant.
28
- * - `islevel` {string}: The access level of the participant.
29
- * - `updateActiveSounds` {Function}: Updates the list of active audio streams.
30
- * - `updateUpdateMainWindow` {Function}: Updates the status of the main display window.
31
- * - `reorderStreams` {Function}: Reorders media streams for optimized display.
32
- * - `prepopulateUserMedia` {Function}: Preloads user media based on display needs.
33
- * - `reUpdateInter` {Function}: Refreshes participant interactions on the UI.
34
- *
35
- * @returns {Promise<void>} Resolves when media pause handling is complete.
36
- *
37
- * @example
38
- * const options = {
39
- * producerId: '12345',
40
- * kind: 'audio',
41
- * name: 'Participant A',
42
- * parameters: {
43
- * activeSounds: ['Participant B'],
44
- * meetingDisplayType: 'video',
45
- * meetingVideoOptimized: false,
46
- * participants: [...],
47
- * oldSoundIds: ['Participant A'],
48
- * shared: false,
49
- * shareScreenStarted: false,
50
- * updateMainWindow: true,
51
- * hostLabel: 'Host',
52
- * islevel: '1',
53
- * updateActiveSounds: (sounds) => { ... },
54
- * updateUpdateMainWindow: (status) => { ... },
55
- * reorderStreams: ({ add, screenChanged, parameters }) => { ... },
56
- * prepopulateUserMedia: ({ name, parameters }) => { ... },
57
- * reUpdateInter: ({ name, add, force, parameters }) => { ... }
58
- * }
59
- * };
60
- *
61
- * producerMediaPausedService.producerMediaPaused(options)
62
- * .then(() => console.log('Media pause handled'))
63
- * .catch(error => console.error('Error:', error));
64
- */
65
- export class ProducerMediaPaused {
66
- /**
67
- * Handles the event when media is paused for a producer.
68
- *
69
- * @param {ProducerMediaPausedOptions} options - The options for the producer media paused event.
70
- * @param {string} options.producerId - The ID of the producer.
71
- * @param {string} options.kind - The kind of media (e.g., "audio", "video").
72
- * @param {string} options.name - The name of the producer.
73
- * @param {Parameters} options.parameters - The parameters for the event.
74
- *
75
- * @returns {Promise<void>} A promise that resolves when the media paused handling is complete.
76
- *
77
- * @description
78
- * This function handles the event when media is paused for a producer. It performs the following tasks:
79
- * - Updates the parameters.
80
- * - Iterates through participants and updates the UI based on their muted status and other conditions.
81
- * - Handles meeting display type and optimizes the UI accordingly.
82
- * - Manages audio media by updating the relevant participant's state.
83
- */
84
- producerMediaPaused = async ({ producerId, kind, name, parameters, }) => {
85
- parameters = parameters.getUpdatedAllParams();
86
- let { activeSounds, meetingDisplayType, meetingVideoOptimized, participants, oldSoundIds, shared, shareScreenStarted, updateMainWindow, hostLabel, islevel, updateActiveSounds, updateUpdateMainWindow, reorderStreams, prepopulateUserMedia, reUpdateInter, } = parameters;
87
- await Promise.all(participants.map(async (participant) => {
88
- if (participant.muted) {
89
- try {
90
- if (participant.islevel == '2' &&
91
- !participant.videoID &&
92
- !shared &&
93
- !shareScreenStarted &&
94
- islevel != '2') {
95
- updateMainWindow = true;
96
- updateUpdateMainWindow(updateMainWindow);
97
- await prepopulateUserMedia({ name: hostLabel, parameters });
98
- updateMainWindow = false;
99
- updateUpdateMainWindow(updateMainWindow);
100
- }
101
- }
102
- catch {
103
- /* handle error */
104
- }
105
- if (shareScreenStarted || shared) {
106
- if (activeSounds.includes(participant.name)) {
107
- activeSounds = activeSounds.filter((audioStream) => audioStream != participant.name);
108
- updateActiveSounds(activeSounds);
109
- }
110
- await reUpdateInter({ name: participant.name, add: false, force: true, parameters });
111
- }
112
- }
113
- }));
114
- let checker = false;
115
- if (meetingDisplayType == 'media' ||
116
- (meetingDisplayType == 'video' && !meetingVideoOptimized)) {
117
- const participant = participants.find((obj) => obj.name == name);
118
- checker = !!participant?.videoID;
119
- if (!checker && !shareScreenStarted && !shared) {
120
- await reorderStreams({ add: false, screenChanged: true, parameters });
121
- }
122
- }
123
- if (kind == 'audio') {
124
- try {
125
- const participant = participants.find((obj) => obj.audioID == producerId) ||
126
- participants.find((obj) => obj.name == name);
127
- if (participant &&
128
- ((participant.name && oldSoundIds.includes(participant.name)) ||
129
- (name && oldSoundIds.includes(name)))) {
130
- reUpdateInter({
131
- name: participant.name ?? '',
132
- add: false,
133
- force: true,
134
- parameters,
135
- });
136
- }
137
- }
138
- catch {
139
- /* handle error */
140
- }
141
- }
142
- };
143
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProducerMediaPaused, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
144
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProducerMediaPaused, providedIn: 'root' });
145
- }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProducerMediaPaused, decorators: [{
147
- type: Injectable,
148
- args: [{
149
- providedIn: 'root',
150
- }]
151
- }] });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZXItbWVkaWEtcGF1c2VkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvcHJvZHVjZXJzL3NvY2tldC1yZWNlaXZlLW1ldGhvZHMvcHJvZHVjZXItbWVkaWEtcGF1c2VkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUErQzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkRHO0FBTUgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxtQkFBbUIsR0FBRyxLQUFLLEVBQUUsRUFDM0IsVUFBVSxFQUNWLElBQUksRUFDSixJQUFJLEVBQ0osVUFBVSxHQUNpQixFQUFpQixFQUFFO1FBQzlDLFVBQVUsR0FBRyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUU5QyxJQUFJLEVBQ0YsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsT0FBTyxFQUNQLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixhQUFhLEdBQ2QsR0FBRyxVQUFVLENBQUM7UUFFZixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBZ0IsRUFBRSxFQUFFO1lBQzFDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUM7b0JBQ0gsSUFDRSxXQUFXLENBQUMsT0FBTyxJQUFJLEdBQUc7d0JBQzFCLENBQUMsV0FBVyxDQUFDLE9BQU87d0JBQ3BCLENBQUMsTUFBTTt3QkFDUCxDQUFDLGtCQUFrQjt3QkFDbkIsT0FBTyxJQUFJLEdBQUcsRUFDZCxDQUFDO3dCQUNELGdCQUFnQixHQUFHLElBQUksQ0FBQzt3QkFDeEIsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDekMsTUFBTSxvQkFBb0IsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzt3QkFDNUQsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUMzQyxDQUFDO2dCQUNILENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLGtCQUFrQjtnQkFDcEIsQ0FBQztnQkFFRCxJQUFJLGtCQUFrQixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNqQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQzVDLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUNoQyxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUN0RCxDQUFDO3dCQUNGLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNuQyxDQUFDO29CQUNELE1BQU0sYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUNFLGtCQUFrQixJQUFJLE9BQU87WUFDN0IsQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUN6RCxDQUFDO1lBQ0QsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztZQUN0RSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDeEUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQ2YsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUM7b0JBQzFELFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7Z0JBQ3BELElBQ0UsV0FBVztvQkFDWCxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDM0QsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ3ZDLENBQUM7b0JBQ0QsYUFBYSxDQUFDO3dCQUNaLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUU7d0JBQzVCLEdBQUcsRUFBRSxLQUFLO3dCQUNWLEtBQUssRUFBRSxJQUFJO3dCQUNYLFVBQVU7cUJBQ1gsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLGtCQUFrQjtZQUNwQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0FoSFMsbUJBQW1COzJHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFBhcnRpY2lwYW50LFxuICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGUsXG4gIFJlb3JkZXJTdHJlYW1zVHlwZSxcbiAgUmVVcGRhdGVJbnRlclBhcmFtZXRlcnMsXG4gIFJlVXBkYXRlSW50ZXJUeXBlLFxuICBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbn0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWNlck1lZGlhUGF1c2VkUGFyYW1ldGVyc1xuICBleHRlbmRzIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgICBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMsXG4gICAgUmVVcGRhdGVJbnRlclBhcmFtZXRlcnMge1xuICBhY3RpdmVTb3VuZHM6IHN0cmluZ1tdO1xuICBtZWV0aW5nRGlzcGxheVR5cGU6IHN0cmluZztcbiAgbWVldGluZ1ZpZGVvT3B0aW1pemVkOiBib29sZWFuO1xuICBwYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W107XG4gIG9sZFNvdW5kSWRzOiBzdHJpbmdbXTtcbiAgc2hhcmVkOiBib29sZWFuO1xuICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHVwZGF0ZU1haW5XaW5kb3c6IGJvb2xlYW47XG4gIGhvc3RMYWJlbDogc3RyaW5nO1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIHVwZGF0ZUFjdGl2ZVNvdW5kczogKGFjdGl2ZVNvdW5kczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6ICh1cGRhdGVNYWluV2luZG93OiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICByZW9yZGVyU3RyZWFtczogUmVvcmRlclN0cmVhbXNUeXBlO1xuICBwcmVwb3B1bGF0ZVVzZXJNZWRpYTogUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlO1xuICByZVVwZGF0ZUludGVyOiBSZVVwZGF0ZUludGVyVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBQcm9kdWNlck1lZGlhUGF1c2VkUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y2VyTWVkaWFQYXVzZWRPcHRpb25zIHtcbiAgcHJvZHVjZXJJZDogc3RyaW5nO1xuICBraW5kOiAnYXVkaW8nIHwgJ3ZpZGVvJyB8ICdzY3JlZW5zaGFyZScgfCAnc2NyZWVuJztcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBQcm9kdWNlck1lZGlhUGF1c2VkUGFyYW1ldGVycztcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgUHJvZHVjZXJNZWRpYVBhdXNlZFR5cGUgPSAob3B0aW9uczogUHJvZHVjZXJNZWRpYVBhdXNlZE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogU2VydmljZSB0byBoYW5kbGUgdGhlIHBhdXNlZCBzdGF0ZSBvZiBtZWRpYSBmb3IgYSBwcm9kdWNlci5cbiAqXG4gKiBAY2xhc3NcbiAqIEBuYW1lIFByb2R1Y2VyTWVkaWFQYXVzZWRcbiAqIEBkZXNjcmlwdGlvblxuICogSGFuZGxlcyB0aGUgYWN0aW9ucyByZXF1aXJlZCB3aGVuIG1lZGlhIGlzIHBhdXNlZCBmb3IgYSBzcGVjaWZpZWQgcHJvZHVjZXIsIGluY2x1ZGluZyBVSSB1cGRhdGVzLCBwYXJ0aWNpcGFudCBzdGF0ZSBoYW5kbGluZywgYW5kIG1hbmFnaW5nIG1lZXRpbmcgZGlzcGxheSBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBtZXRob2RcbiAqIHByb2R1Y2VyTWVkaWFQYXVzZWRcbiAqXG4gKiBAcGFyYW0ge1Byb2R1Y2VyTWVkaWFQYXVzZWRPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyB0byBzcGVjaWZ5IHRoZSBwcm9kdWNlciBhbmQgZXZlbnQgZGV0YWlsczpcbiAqICAgLSBgcHJvZHVjZXJJZGAge3N0cmluZ306IFRoZSBJRCBvZiB0aGUgcGF1c2VkIHByb2R1Y2VyLlxuICogICAtIGBraW5kYCB7c3RyaW5nfTogVGhlIHR5cGUgb2YgbWVkaWEgcGF1c2VkIChlLmcuLCBcImF1ZGlvXCIsIFwidmlkZW9cIikuXG4gKiAgIC0gYG5hbWVgIHtzdHJpbmd9OiBOYW1lIG9mIHRoZSBwcm9kdWNlciB3aG9zZSBtZWRpYSBpcyBwYXVzZWQuXG4gKiAgIC0gYHBhcmFtZXRlcnNgIHtQcm9kdWNlck1lZGlhUGF1c2VkUGFyYW1ldGVyc306IENvbmZpZ3VyYXRpb24gYW5kIHN0YXRlIHBhcmFtZXRlcnMgZm9yIHRoZSBtZWV0aW5nLlxuICogICAgICAtIGBhY3RpdmVTb3VuZHNgIHtzdHJpbmdbXX06IEFjdGl2ZSBhdWRpbyBzdHJlYW1zIGN1cnJlbnRseSBkaXNwbGF5ZWQuXG4gKiAgICAgIC0gYG1lZXRpbmdEaXNwbGF5VHlwZWAge3N0cmluZ306IEN1cnJlbnQgbWVldGluZyBsYXlvdXQgdHlwZSAoZS5nLiwgXCJtZWRpYVwiLCBcInZpZGVvXCIpLlxuICogICAgICAtIGBtZWV0aW5nVmlkZW9PcHRpbWl6ZWRgIHtib29sZWFufTogSW5kaWNhdGVzIGlmIHZpZGVvIGlzIG9wdGltaXplZC5cbiAqICAgICAgLSBgcGFydGljaXBhbnRzYCB7UGFydGljaXBhbnRbXX06IExpc3Qgb2YgYWxsIG1lZXRpbmcgcGFydGljaXBhbnRzLlxuICogICAgICAtIGBvbGRTb3VuZElkc2Age3N0cmluZ1tdfTogTGlzdCBvZiBwcmV2aW91c2x5IGFjdGl2ZSBhdWRpbyBzdHJlYW0gSURzLlxuICogICAgICAtIGBzaGFyZWRgIHtib29sZWFufTogSW5kaWNhdGVzIGlmIHRoZSBzY3JlZW4gaXMgY3VycmVudGx5IHNoYXJlZC5cbiAqICAgICAgLSBgc2hhcmVTY3JlZW5TdGFydGVkYCB7Ym9vbGVhbn06IEluZGljYXRlcyBpZiBzY3JlZW4gc2hhcmluZyBoYXMgc3RhcnRlZC5cbiAqICAgICAgLSBgdXBkYXRlTWFpbldpbmRvd2Age2Jvb2xlYW59OiBTcGVjaWZpZXMgaWYgdGhlIG1haW4gZGlzcGxheSB3aW5kb3cgc2hvdWxkIHVwZGF0ZS5cbiAqICAgICAgLSBgaG9zdExhYmVsYCB7c3RyaW5nfTogVGhlIGxhYmVsIHJlcHJlc2VudGluZyB0aGUgaG9zdCBwYXJ0aWNpcGFudC5cbiAqICAgICAgLSBgaXNsZXZlbGAge3N0cmluZ306IFRoZSBhY2Nlc3MgbGV2ZWwgb2YgdGhlIHBhcnRpY2lwYW50LlxuICogICAgICAtIGB1cGRhdGVBY3RpdmVTb3VuZHNgIHtGdW5jdGlvbn06IFVwZGF0ZXMgdGhlIGxpc3Qgb2YgYWN0aXZlIGF1ZGlvIHN0cmVhbXMuXG4gKiAgICAgIC0gYHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3dgIHtGdW5jdGlvbn06IFVwZGF0ZXMgdGhlIHN0YXR1cyBvZiB0aGUgbWFpbiBkaXNwbGF5IHdpbmRvdy5cbiAqICAgICAgLSBgcmVvcmRlclN0cmVhbXNgIHtGdW5jdGlvbn06IFJlb3JkZXJzIG1lZGlhIHN0cmVhbXMgZm9yIG9wdGltaXplZCBkaXNwbGF5LlxuICogICAgICAtIGBwcmVwb3B1bGF0ZVVzZXJNZWRpYWAge0Z1bmN0aW9ufTogUHJlbG9hZHMgdXNlciBtZWRpYSBiYXNlZCBvbiBkaXNwbGF5IG5lZWRzLlxuICogICAgICAtIGByZVVwZGF0ZUludGVyYCB7RnVuY3Rpb259OiBSZWZyZXNoZXMgcGFydGljaXBhbnQgaW50ZXJhY3Rpb25zIG9uIHRoZSBVSS5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgd2hlbiBtZWRpYSBwYXVzZSBoYW5kbGluZyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgb3B0aW9ucyA9IHtcbiAqICAgcHJvZHVjZXJJZDogJzEyMzQ1JyxcbiAqICAga2luZDogJ2F1ZGlvJyxcbiAqICAgbmFtZTogJ1BhcnRpY2lwYW50IEEnLFxuICogICBwYXJhbWV0ZXJzOiB7XG4gKiAgICAgYWN0aXZlU291bmRzOiBbJ1BhcnRpY2lwYW50IEInXSxcbiAqICAgICBtZWV0aW5nRGlzcGxheVR5cGU6ICd2aWRlbycsXG4gKiAgICAgbWVldGluZ1ZpZGVvT3B0aW1pemVkOiBmYWxzZSxcbiAqICAgICBwYXJ0aWNpcGFudHM6IFsuLi5dLFxuICogICAgIG9sZFNvdW5kSWRzOiBbJ1BhcnRpY2lwYW50IEEnXSxcbiAqICAgICBzaGFyZWQ6IGZhbHNlLFxuICogICAgIHNoYXJlU2NyZWVuU3RhcnRlZDogZmFsc2UsXG4gKiAgICAgdXBkYXRlTWFpbldpbmRvdzogdHJ1ZSxcbiAqICAgICBob3N0TGFiZWw6ICdIb3N0JyxcbiAqICAgICBpc2xldmVsOiAnMScsXG4gKiAgICAgdXBkYXRlQWN0aXZlU291bmRzOiAoc291bmRzKSA9PiB7IC4uLiB9LFxuICogICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6IChzdGF0dXMpID0+IHsgLi4uIH0sXG4gKiAgICAgcmVvcmRlclN0cmVhbXM6ICh7IGFkZCwgc2NyZWVuQ2hhbmdlZCwgcGFyYW1ldGVycyB9KSA9PiB7IC4uLiB9LFxuICogICAgIHByZXBvcHVsYXRlVXNlck1lZGlhOiAoeyBuYW1lLCBwYXJhbWV0ZXJzIH0pID0+IHsgLi4uIH0sXG4gKiAgICAgcmVVcGRhdGVJbnRlcjogKHsgbmFtZSwgYWRkLCBmb3JjZSwgcGFyYW1ldGVycyB9KSA9PiB7IC4uLiB9XG4gKiAgIH1cbiAqIH07XG4gKlxuICogcHJvZHVjZXJNZWRpYVBhdXNlZFNlcnZpY2UucHJvZHVjZXJNZWRpYVBhdXNlZChvcHRpb25zKVxuICogICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnTWVkaWEgcGF1c2UgaGFuZGxlZCcpKVxuICogICAuY2F0Y2goZXJyb3IgPT4gY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyb3IpKTtcbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWNlck1lZGlhUGF1c2VkIHtcbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGV2ZW50IHdoZW4gbWVkaWEgaXMgcGF1c2VkIGZvciBhIHByb2R1Y2VyLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb2R1Y2VyTWVkaWFQYXVzZWRPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBwcm9kdWNlciBtZWRpYSBwYXVzZWQgZXZlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnByb2R1Y2VySWQgLSBUaGUgSUQgb2YgdGhlIHByb2R1Y2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5raW5kIC0gVGhlIGtpbmQgb2YgbWVkaWEgKGUuZy4sIFwiYXVkaW9cIiwgXCJ2aWRlb1wiKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9kdWNlci5cbiAgICogQHBhcmFtIHtQYXJhbWV0ZXJzfSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGV2ZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWVkaWEgcGF1c2VkIGhhbmRsaW5nIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBldmVudCB3aGVuIG1lZGlhIGlzIHBhdXNlZCBmb3IgYSBwcm9kdWNlci4gSXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyB0YXNrczpcbiAgICogLSBVcGRhdGVzIHRoZSBwYXJhbWV0ZXJzLlxuICAgKiAtIEl0ZXJhdGVzIHRocm91Z2ggcGFydGljaXBhbnRzIGFuZCB1cGRhdGVzIHRoZSBVSSBiYXNlZCBvbiB0aGVpciBtdXRlZCBzdGF0dXMgYW5kIG90aGVyIGNvbmRpdGlvbnMuXG4gICAqIC0gSGFuZGxlcyBtZWV0aW5nIGRpc3BsYXkgdHlwZSBhbmQgb3B0aW1pemVzIHRoZSBVSSBhY2NvcmRpbmdseS5cbiAgICogLSBNYW5hZ2VzIGF1ZGlvIG1lZGlhIGJ5IHVwZGF0aW5nIHRoZSByZWxldmFudCBwYXJ0aWNpcGFudCdzIHN0YXRlLlxuICAgKi9cbiAgcHJvZHVjZXJNZWRpYVBhdXNlZCA9IGFzeW5jICh7XG4gICAgcHJvZHVjZXJJZCxcbiAgICBraW5kLFxuICAgIG5hbWUsXG4gICAgcGFyYW1ldGVycyxcbiAgfTogUHJvZHVjZXJNZWRpYVBhdXNlZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICBsZXQge1xuICAgICAgYWN0aXZlU291bmRzLFxuICAgICAgbWVldGluZ0Rpc3BsYXlUeXBlLFxuICAgICAgbWVldGluZ1ZpZGVvT3B0aW1pemVkLFxuICAgICAgcGFydGljaXBhbnRzLFxuICAgICAgb2xkU291bmRJZHMsXG4gICAgICBzaGFyZWQsXG4gICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQsXG4gICAgICB1cGRhdGVNYWluV2luZG93LFxuICAgICAgaG9zdExhYmVsLFxuICAgICAgaXNsZXZlbCxcbiAgICAgIHVwZGF0ZUFjdGl2ZVNvdW5kcyxcbiAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3csXG4gICAgICByZW9yZGVyU3RyZWFtcyxcbiAgICAgIHByZXBvcHVsYXRlVXNlck1lZGlhLFxuICAgICAgcmVVcGRhdGVJbnRlcixcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcGFydGljaXBhbnRzLm1hcChhc3luYyAocGFydGljaXBhbnQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAocGFydGljaXBhbnQubXV0ZWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBwYXJ0aWNpcGFudC5pc2xldmVsID09ICcyJyAmJlxuICAgICAgICAgICAgICAhcGFydGljaXBhbnQudmlkZW9JRCAmJlxuICAgICAgICAgICAgICAhc2hhcmVkICYmXG4gICAgICAgICAgICAgICFzaGFyZVNjcmVlblN0YXJ0ZWQgJiZcbiAgICAgICAgICAgICAgaXNsZXZlbCAhPSAnMidcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB1cGRhdGVNYWluV2luZG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdyh1cGRhdGVNYWluV2luZG93KTtcbiAgICAgICAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIHVwZGF0ZU1haW5XaW5kb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdyh1cGRhdGVNYWluV2luZG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSB7XG4gICAgICAgICAgICBpZiAoYWN0aXZlU291bmRzLmluY2x1ZGVzKHBhcnRpY2lwYW50Lm5hbWUpKSB7XG4gICAgICAgICAgICAgIGFjdGl2ZVNvdW5kcyA9IGFjdGl2ZVNvdW5kcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGF1ZGlvU3RyZWFtOiBhbnkpID0+IGF1ZGlvU3RyZWFtICE9IHBhcnRpY2lwYW50Lm5hbWUsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZVNvdW5kcyhhY3RpdmVTb3VuZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcmVVcGRhdGVJbnRlcih7IG5hbWU6IHBhcnRpY2lwYW50Lm5hbWUsIGFkZDogZmFsc2UsIGZvcmNlOiB0cnVlLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCBjaGVja2VyID0gZmFsc2U7XG4gICAgaWYgKFxuICAgICAgbWVldGluZ0Rpc3BsYXlUeXBlID09ICdtZWRpYScgfHxcbiAgICAgIChtZWV0aW5nRGlzcGxheVR5cGUgPT0gJ3ZpZGVvJyAmJiAhbWVldGluZ1ZpZGVvT3B0aW1pemVkKVxuICAgICkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnQgPSBwYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai5uYW1lID09IG5hbWUpO1xuICAgICAgY2hlY2tlciA9ICEhcGFydGljaXBhbnQ/LnZpZGVvSUQ7XG4gICAgICBpZiAoIWNoZWNrZXIgJiYgIXNoYXJlU2NyZWVuU3RhcnRlZCAmJiAhc2hhcmVkKSB7XG4gICAgICAgIGF3YWl0IHJlb3JkZXJTdHJlYW1zKHsgYWRkOiBmYWxzZSwgc2NyZWVuQ2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2luZCA9PSAnYXVkaW8nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJ0aWNpcGFudCA9XG4gICAgICAgICAgcGFydGljaXBhbnRzLmZpbmQoKG9iajogYW55KSA9PiBvYmouYXVkaW9JRCA9PSBwcm9kdWNlcklkKSB8fFxuICAgICAgICAgIHBhcnRpY2lwYW50cy5maW5kKChvYmo6IGFueSkgPT4gb2JqLm5hbWUgPT0gbmFtZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJ0aWNpcGFudCAmJlxuICAgICAgICAgICgocGFydGljaXBhbnQubmFtZSAmJiBvbGRTb3VuZElkcy5pbmNsdWRlcyhwYXJ0aWNpcGFudC5uYW1lKSkgfHxcbiAgICAgICAgICAgIChuYW1lICYmIG9sZFNvdW5kSWRzLmluY2x1ZGVzKG5hbWUpKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVVcGRhdGVJbnRlcih7XG4gICAgICAgICAgICBuYW1lOiBwYXJ0aWNpcGFudC5uYW1lID8/ICcnLFxuICAgICAgICAgICAgYWRkOiBmYWxzZSxcbiAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -1,99 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Service to handle resuming media for a specific participant in a meeting.
5
- *
6
- * @class
7
- * @name ProducerMediaResumed
8
- * @description Resumes media (audio only) for a participant and updates the meeting display based on the meeting layout and participant status.
9
- *
10
- * @method
11
- * producerMediaResumed
12
- *
13
- * @param {ProducerMediaResumedOptions} options - Options to control media resumption:
14
- * - `name` {string}: Name of the participant whose media is to be resumed.
15
- * - `parameters` {ProducerMediaResumedParameters}: Meeting and participant-specific configurations.
16
- * - `meetingDisplayType` {string}: Type of meeting display (e.g., "media").
17
- * - `participants` {Participant[]}: List of participants in the meeting.
18
- * - `shared` {boolean}: Indicates if the screen is currently shared.
19
- * - `shareScreenStarted` {boolean}: Indicates if screen sharing has started.
20
- * - `mainScreenFilled` {boolean}: Indicates if the main screen is filled.
21
- * - `hostLabel` {string}: Label or name of the host.
22
- * - `updateUpdateMainWindow` {Function}: Function to update the main window display.
23
- * - `reorderStreams` {Function}: Function to manage stream ordering when display changes.
24
- * - `prepopulateUserMedia` {Function}: Function to preload user media for the main screen.
25
- *
26
- * @returns {Promise<void>} Resolves when media for the specified participant has resumed.
27
- *
28
- * @example
29
- * const options = {
30
- * name: 'Participant A',
31
- * parameters: {
32
- * meetingDisplayType: 'media',
33
- * participants: [...],
34
- * shared: false,
35
- * shareScreenStarted: false,
36
- * mainScreenFilled: false,
37
- * hostLabel: 'Host',
38
- * updateUpdateMainWindow: (updateMainWindow) => { ... },
39
- * reorderStreams: ({ add, screenChanged, parameters }) => { ... },
40
- * prepopulateUserMedia: ({ name, parameters }) => { ... }
41
- * }
42
- * };
43
- *
44
- * producerMediaResumedService.producerMediaResumed(options)
45
- * .then(() => console.log('Media resumed'))
46
- * .catch(error => console.error('Error:', error));
47
- */
48
- export class ProducerMediaResumed {
49
- /**
50
- * Resumes media for a specific participant in a meeting.
51
- *
52
- * @param {ProducerMediaResumedOptions} options - The options for resuming media.
53
- * @param {string} options.name - The name of the participant whose media is to be resumed.
54
- * @param {Object} options.parameters - The parameters related to the meeting and participants.
55
- * @param {string} options.parameters.meetingDisplayType - The type of meeting display.
56
- * @param {Array} options.parameters.participants - The list of participants in the meeting.
57
- * @param {boolean} options.parameters.shared - Indicates if the screen is being shared.
58
- * @param {boolean} options.parameters.shareScreenStarted - Indicates if screen sharing has started.
59
- * @param {boolean} options.parameters.mainScreenFilled - Indicates if the main screen is filled.
60
- * @param {string} options.parameters.hostLabel - The label of the host.
61
- * @param {Function} options.parameters.updateUpdateMainWindow - Function to update the main window.
62
- * @param {Function} options.parameters.reorderStreams - Function to reorder the streams.
63
- * @param {Function} options.parameters.prepopulateUserMedia - Function to prepopulate user media.
64
- *
65
- * @returns {Promise<void>} A promise that resolves when the media has been resumed.
66
- */
67
- producerMediaResumed = async ({ name, parameters, }) => {
68
- parameters = parameters.getUpdatedAllParams();
69
- let { meetingDisplayType, participants, shared, shareScreenStarted, updateMainWindow, mainScreenFilled, hostLabel, updateUpdateMainWindow, reorderStreams, prepopulateUserMedia, } = parameters;
70
- // Update to resume the audio only of a participant
71
- // name is the name of the participant
72
- // kind is the kind of media (always audio)
73
- // Operations to update UI to optimize interest levels
74
- const participant = participants.find((obj) => obj.name == name);
75
- if (!mainScreenFilled && participant?.islevel == '2') {
76
- updateMainWindow = true;
77
- updateUpdateMainWindow(updateMainWindow);
78
- await prepopulateUserMedia({ name: hostLabel, parameters });
79
- updateMainWindow = false;
80
- updateUpdateMainWindow(updateMainWindow);
81
- }
82
- let checker;
83
- if (meetingDisplayType == 'media') {
84
- checker = participant?.videoID != null && participant.videoID !== '';
85
- if (!checker && !(shareScreenStarted || shared)) {
86
- await reorderStreams({ add: false, screenChanged: true, parameters });
87
- }
88
- }
89
- };
90
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProducerMediaResumed, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
91
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProducerMediaResumed, providedIn: 'root' });
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProducerMediaResumed, decorators: [{
94
- type: Injectable,
95
- args: [{
96
- providedIn: 'root',
97
- }]
98
- }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZXItbWVkaWEtcmVzdW1lZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL3Byb2R1Y2Vycy9zb2NrZXQtcmVjZWl2ZS1tZXRob2RzL3Byb2R1Y2VyLW1lZGlhLXJlc3VtZWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXFDM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsRUFDNUIsSUFBSSxFQUNKLFVBQVUsR0FDa0IsRUFBaUIsRUFBRTtRQUMvQyxVQUFVLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFOUMsSUFBSSxFQUNGLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osTUFBTSxFQUNOLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsY0FBYyxFQUNkLG9CQUFvQixHQUNyQixHQUFHLFVBQVUsQ0FBQztRQUVmLG1EQUFtRDtRQUNuRCxzQ0FBc0M7UUFDdEMsMkNBQTJDO1FBRTNDLHNEQUFzRDtRQUN0RCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLEVBQUUsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JELGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sb0JBQW9CLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDNUQsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxrQkFBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFFckUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0E3RFMsb0JBQW9COzJHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFBhcnRpY2lwYW50LFxuICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVBhcmFtZXRlcnMsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhVHlwZSxcbiAgUmVvcmRlclN0cmVhbXNQYXJhbWV0ZXJzLFxuICBSZW9yZGVyU3RyZWFtc1R5cGUsXG59IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjZXJNZWRpYVJlc3VtZWRQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgUHJlcG9wdWxhdGVVc2VyTWVkaWFQYXJhbWV0ZXJzLFxuICAgIFJlb3JkZXJTdHJlYW1zUGFyYW1ldGVycyB7XG4gIG1lZXRpbmdEaXNwbGF5VHlwZTogc3RyaW5nO1xuICBwYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W107XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgc2hhcmVTY3JlZW5TdGFydGVkOiBib29sZWFuO1xuICBtYWluU2NyZWVuRmlsbGVkOiBib29sZWFuO1xuICBob3N0TGFiZWw6IHN0cmluZztcbiAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdzogKHVwZGF0ZU1haW5XaW5kb3c6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIHJlb3JkZXJTdHJlYW1zOiBSZW9yZGVyU3RyZWFtc1R5cGU7XG4gIHByZXBvcHVsYXRlVXNlck1lZGlhOiBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gUHJvZHVjZXJNZWRpYVJlc3VtZWRQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjZXJNZWRpYVJlc3VtZWRPcHRpb25zIHtcbiAgbmFtZTogc3RyaW5nO1xuICBraW5kOiAnYXVkaW8nO1xuICBwYXJhbWV0ZXJzOiBQcm9kdWNlck1lZGlhUmVzdW1lZFBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFByb2R1Y2VyTWVkaWFSZXN1bWVkVHlwZSA9IChvcHRpb25zOiBQcm9kdWNlck1lZGlhUmVzdW1lZE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogU2VydmljZSB0byBoYW5kbGUgcmVzdW1pbmcgbWVkaWEgZm9yIGEgc3BlY2lmaWMgcGFydGljaXBhbnQgaW4gYSBtZWV0aW5nLlxuICpcbiAqIEBjbGFzc1xuICogQG5hbWUgUHJvZHVjZXJNZWRpYVJlc3VtZWRcbiAqIEBkZXNjcmlwdGlvbiBSZXN1bWVzIG1lZGlhIChhdWRpbyBvbmx5KSBmb3IgYSBwYXJ0aWNpcGFudCBhbmQgdXBkYXRlcyB0aGUgbWVldGluZyBkaXNwbGF5IGJhc2VkIG9uIHRoZSBtZWV0aW5nIGxheW91dCBhbmQgcGFydGljaXBhbnQgc3RhdHVzLlxuICpcbiAqIEBtZXRob2RcbiAqIHByb2R1Y2VyTWVkaWFSZXN1bWVkXG4gKlxuICogQHBhcmFtIHtQcm9kdWNlck1lZGlhUmVzdW1lZE9wdGlvbnN9IG9wdGlvbnMgLSBPcHRpb25zIHRvIGNvbnRyb2wgbWVkaWEgcmVzdW1wdGlvbjpcbiAqICAgLSBgbmFtZWAge3N0cmluZ306IE5hbWUgb2YgdGhlIHBhcnRpY2lwYW50IHdob3NlIG1lZGlhIGlzIHRvIGJlIHJlc3VtZWQuXG4gKiAgIC0gYHBhcmFtZXRlcnNgIHtQcm9kdWNlck1lZGlhUmVzdW1lZFBhcmFtZXRlcnN9OiBNZWV0aW5nIGFuZCBwYXJ0aWNpcGFudC1zcGVjaWZpYyBjb25maWd1cmF0aW9ucy5cbiAqICAgICAgLSBgbWVldGluZ0Rpc3BsYXlUeXBlYCB7c3RyaW5nfTogVHlwZSBvZiBtZWV0aW5nIGRpc3BsYXkgKGUuZy4sIFwibWVkaWFcIikuXG4gKiAgICAgIC0gYHBhcnRpY2lwYW50c2Age1BhcnRpY2lwYW50W119OiBMaXN0IG9mIHBhcnRpY2lwYW50cyBpbiB0aGUgbWVldGluZy5cbiAqICAgICAgLSBgc2hhcmVkYCB7Ym9vbGVhbn06IEluZGljYXRlcyBpZiB0aGUgc2NyZWVuIGlzIGN1cnJlbnRseSBzaGFyZWQuXG4gKiAgICAgIC0gYHNoYXJlU2NyZWVuU3RhcnRlZGAge2Jvb2xlYW59OiBJbmRpY2F0ZXMgaWYgc2NyZWVuIHNoYXJpbmcgaGFzIHN0YXJ0ZWQuXG4gKiAgICAgIC0gYG1haW5TY3JlZW5GaWxsZWRgIHtib29sZWFufTogSW5kaWNhdGVzIGlmIHRoZSBtYWluIHNjcmVlbiBpcyBmaWxsZWQuXG4gKiAgICAgIC0gYGhvc3RMYWJlbGAge3N0cmluZ306IExhYmVsIG9yIG5hbWUgb2YgdGhlIGhvc3QuXG4gKiAgICAgIC0gYHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3dgIHtGdW5jdGlvbn06IEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbWFpbiB3aW5kb3cgZGlzcGxheS5cbiAqICAgICAgLSBgcmVvcmRlclN0cmVhbXNgIHtGdW5jdGlvbn06IEZ1bmN0aW9uIHRvIG1hbmFnZSBzdHJlYW0gb3JkZXJpbmcgd2hlbiBkaXNwbGF5IGNoYW5nZXMuXG4gKiAgICAgIC0gYHByZXBvcHVsYXRlVXNlck1lZGlhYCB7RnVuY3Rpb259OiBGdW5jdGlvbiB0byBwcmVsb2FkIHVzZXIgbWVkaWEgZm9yIHRoZSBtYWluIHNjcmVlbi5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgd2hlbiBtZWRpYSBmb3IgdGhlIHNwZWNpZmllZCBwYXJ0aWNpcGFudCBoYXMgcmVzdW1lZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgb3B0aW9ucyA9IHtcbiAqICAgbmFtZTogJ1BhcnRpY2lwYW50IEEnLFxuICogICBwYXJhbWV0ZXJzOiB7XG4gKiAgICAgbWVldGluZ0Rpc3BsYXlUeXBlOiAnbWVkaWEnLFxuICogICAgIHBhcnRpY2lwYW50czogWy4uLl0sXG4gKiAgICAgc2hhcmVkOiBmYWxzZSxcbiAqICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGZhbHNlLFxuICogICAgIG1haW5TY3JlZW5GaWxsZWQ6IGZhbHNlLFxuICogICAgIGhvc3RMYWJlbDogJ0hvc3QnLFxuICogICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6ICh1cGRhdGVNYWluV2luZG93KSA9PiB7IC4uLiB9LFxuICogICAgIHJlb3JkZXJTdHJlYW1zOiAoeyBhZGQsIHNjcmVlbkNoYW5nZWQsIHBhcmFtZXRlcnMgfSkgPT4geyAuLi4gfSxcbiAqICAgICBwcmVwb3B1bGF0ZVVzZXJNZWRpYTogKHsgbmFtZSwgcGFyYW1ldGVycyB9KSA9PiB7IC4uLiB9XG4gKiAgIH1cbiAqIH07XG4gKlxuICogcHJvZHVjZXJNZWRpYVJlc3VtZWRTZXJ2aWNlLnByb2R1Y2VyTWVkaWFSZXN1bWVkKG9wdGlvbnMpXG4gKiAgIC50aGVuKCgpID0+IGNvbnNvbGUubG9nKCdNZWRpYSByZXN1bWVkJykpXG4gKiAgIC5jYXRjaChlcnJvciA9PiBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcikpO1xuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y2VyTWVkaWFSZXN1bWVkIHtcbiAgLyoqXG4gICAqIFJlc3VtZXMgbWVkaWEgZm9yIGEgc3BlY2lmaWMgcGFydGljaXBhbnQgaW4gYSBtZWV0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb2R1Y2VyTWVkaWFSZXN1bWVkT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZXN1bWluZyBtZWRpYS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwYXJ0aWNpcGFudCB3aG9zZSBtZWRpYSBpcyB0byBiZSByZXN1bWVkLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgbWVldGluZyBhbmQgcGFydGljaXBhbnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLm1lZXRpbmdEaXNwbGF5VHlwZSAtIFRoZSB0eXBlIG9mIG1lZXRpbmcgZGlzcGxheS5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5wYXJhbWV0ZXJzLnBhcnRpY2lwYW50cyAtIFRoZSBsaXN0IG9mIHBhcnRpY2lwYW50cyBpbiB0aGUgbWVldGluZy5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVkIC0gSW5kaWNhdGVzIGlmIHRoZSBzY3JlZW4gaXMgYmVpbmcgc2hhcmVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zaGFyZVNjcmVlblN0YXJ0ZWQgLSBJbmRpY2F0ZXMgaWYgc2NyZWVuIHNoYXJpbmcgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLm1haW5TY3JlZW5GaWxsZWQgLSBJbmRpY2F0ZXMgaWYgdGhlIG1haW4gc2NyZWVuIGlzIGZpbGxlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5ob3N0TGFiZWwgLSBUaGUgbGFiZWwgb2YgdGhlIGhvc3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVVcGRhdGVNYWluV2luZG93IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBtYWluIHdpbmRvdy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlb3JkZXJTdHJlYW1zIC0gRnVuY3Rpb24gdG8gcmVvcmRlciB0aGUgc3RyZWFtcy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnByZXBvcHVsYXRlVXNlck1lZGlhIC0gRnVuY3Rpb24gdG8gcHJlcG9wdWxhdGUgdXNlciBtZWRpYS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG1lZGlhIGhhcyBiZWVuIHJlc3VtZWQuXG4gICAqL1xuICBwcm9kdWNlck1lZGlhUmVzdW1lZCA9IGFzeW5jICh7XG4gICAgbmFtZSxcbiAgICBwYXJhbWV0ZXJzLFxuICB9OiBQcm9kdWNlck1lZGlhUmVzdW1lZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICBsZXQge1xuICAgICAgbWVldGluZ0Rpc3BsYXlUeXBlLFxuICAgICAgcGFydGljaXBhbnRzLFxuICAgICAgc2hhcmVkLFxuICAgICAgc2hhcmVTY3JlZW5TdGFydGVkLFxuICAgICAgdXBkYXRlTWFpbldpbmRvdyxcbiAgICAgIG1haW5TY3JlZW5GaWxsZWQsXG4gICAgICBob3N0TGFiZWwsXG4gICAgICB1cGRhdGVVcGRhdGVNYWluV2luZG93LFxuICAgICAgcmVvcmRlclN0cmVhbXMsXG4gICAgICBwcmVwb3B1bGF0ZVVzZXJNZWRpYSxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIC8vIFVwZGF0ZSB0byByZXN1bWUgdGhlIGF1ZGlvIG9ubHkgb2YgYSBwYXJ0aWNpcGFudFxuICAgIC8vIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIHBhcnRpY2lwYW50XG4gICAgLy8ga2luZCBpcyB0aGUga2luZCBvZiBtZWRpYSAoYWx3YXlzIGF1ZGlvKVxuXG4gICAgLy8gT3BlcmF0aW9ucyB0byB1cGRhdGUgVUkgdG8gb3B0aW1pemUgaW50ZXJlc3QgbGV2ZWxzXG4gICAgY29uc3QgcGFydGljaXBhbnQgPSBwYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai5uYW1lID09IG5hbWUpO1xuXG4gICAgaWYgKCFtYWluU2NyZWVuRmlsbGVkICYmIHBhcnRpY2lwYW50Py5pc2xldmVsID09ICcyJykge1xuICAgICAgdXBkYXRlTWFpbldpbmRvdyA9IHRydWU7XG4gICAgICB1cGRhdGVVcGRhdGVNYWluV2luZG93KHVwZGF0ZU1haW5XaW5kb3cpO1xuICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnMgfSk7XG4gICAgICB1cGRhdGVNYWluV2luZG93ID0gZmFsc2U7XG4gICAgICB1cGRhdGVVcGRhdGVNYWluV2luZG93KHVwZGF0ZU1haW5XaW5kb3cpO1xuICAgIH1cblxuICAgIGxldCBjaGVja2VyO1xuICAgIGlmIChtZWV0aW5nRGlzcGxheVR5cGUgPT0gJ21lZGlhJykge1xuICAgICAgY2hlY2tlciA9IHBhcnRpY2lwYW50Py52aWRlb0lEICE9IG51bGwgJiYgcGFydGljaXBhbnQudmlkZW9JRCAhPT0gJyc7XG5cbiAgICAgIGlmICghY2hlY2tlciAmJiAhKHNoYXJlU2NyZWVuU3RhcnRlZCB8fCBzaGFyZWQpKSB7XG4gICAgICAgIGF3YWl0IHJlb3JkZXJTdHJlYW1zKHsgYWRkOiBmYWxzZSwgc2NyZWVuQ2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -1,67 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Service to re-initiate recording in a specific room, considering administrative restrictions.
5
- *
6
- * @class
7
- * @name ReInitiateRecording
8
- * @description Attempts to re-initiate recording if administrative restrictions permit.
9
- *
10
- * @method
11
- * reInitiateRecording
12
- *
13
- * @param {ReInitiateRecordingOptions} options - Configuration options for re-initiating recording:
14
- * - `roomName` {string}: The name of the room to start recording in.
15
- * - `member` {string}: The name of the member initiating the recording.
16
- * - `socket` {Socket}: The socket instance for server communication.
17
- * - `adminRestrictSetting` {boolean}: Flag indicating if the admin restrict setting is active, preventing re-initiation.
18
- *
19
- * @returns {Promise<void>} Resolves if recording is successfully re-initiated; otherwise, it throws an error if re-initiation fails.
20
- *
21
- * @example
22
- * const options = {
23
- * roomName: 'Room101',
24
- * member: 'Alice',
25
- * socket: mySocketInstance,
26
- * adminRestrictSetting: false
27
- * };
28
- * reInitiateRecordingService.reInitiateRecording(options)
29
- * .then(() => console.log('Recording re-initiated'))
30
- * .catch(error => console.error(error.message));
31
- */
32
- export class ReInitiateRecording {
33
- /**
34
- * Re-initiates recording based on specific conditions.
35
- * @async
36
- * @function
37
- * @param {ReInitiateRecordingOptions} options - The options for re-initiating recording.
38
- * @param {string} options.roomName - The name of the room to re-initiate recording.
39
- * @param {string} options.member - The member re-initiating the recording.
40
- * @param {Socket} options.socket - The socket instance for communication.
41
- * @param {boolean} options.adminRestrictSetting - Indicates whether the admin restrict setting is enabled.
42
- * @returns {Promise<void>} A promise that resolves when the recording is re-initiated.
43
- */
44
- reInitiateRecording = async ({ roomName, member, socket, adminRestrictSetting, }) => {
45
- if (!adminRestrictSetting) {
46
- await new Promise((resolve, reject) => {
47
- socket.emit('startRecordIng', { roomName, member }, ({ success }) => {
48
- if (success) {
49
- resolve();
50
- }
51
- else {
52
- reject(new Error('Failed to re-initiate recording.'));
53
- }
54
- });
55
- });
56
- }
57
- };
58
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ReInitiateRecording, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
59
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ReInitiateRecording, providedIn: 'root' });
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ReInitiateRecording, decorators: [{
62
- type: Injectable,
63
- args: [{
64
- providedIn: 'root',
65
- }]
66
- }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmUtaW5pdGlhdGUtcmVjb3JkaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvcHJvZHVjZXJzL3NvY2tldC1yZWNlaXZlLW1ldGhvZHMvcmUtaW5pdGlhdGUtcmVjb3JkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7Ozs7Ozs7O09BVUc7SUFFSCxtQkFBbUIsR0FBRyxLQUFLLEVBQUUsRUFDM0IsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sb0JBQW9CLEdBQ08sRUFBaUIsRUFBRTtRQUM5QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQXdCLEVBQUUsRUFBRTtvQkFDeEYsSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDWixPQUFPLEVBQUUsQ0FBQztvQkFDWixDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztvQkFDeEQsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0E5QlMsbUJBQW1COzJHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlSW5pdGlhdGVSZWNvcmRpbmdPcHRpb25zIHtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgbWVtYmVyOiBzdHJpbmc7XG4gIHNvY2tldDogU29ja2V0O1xuICBhZG1pblJlc3RyaWN0U2V0dGluZzogYm9vbGVhbjtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgUmVJbml0aWF0ZVJlY29yZGluZ1R5cGUgPSAob3B0aW9uczogUmVJbml0aWF0ZVJlY29yZGluZ09wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogU2VydmljZSB0byByZS1pbml0aWF0ZSByZWNvcmRpbmcgaW4gYSBzcGVjaWZpYyByb29tLCBjb25zaWRlcmluZyBhZG1pbmlzdHJhdGl2ZSByZXN0cmljdGlvbnMuXG4gKlxuICogQGNsYXNzXG4gKiBAbmFtZSBSZUluaXRpYXRlUmVjb3JkaW5nXG4gKiBAZGVzY3JpcHRpb24gQXR0ZW1wdHMgdG8gcmUtaW5pdGlhdGUgcmVjb3JkaW5nIGlmIGFkbWluaXN0cmF0aXZlIHJlc3RyaWN0aW9ucyBwZXJtaXQuXG4gKlxuICogQG1ldGhvZFxuICogcmVJbml0aWF0ZVJlY29yZGluZ1xuICpcbiAqIEBwYXJhbSB7UmVJbml0aWF0ZVJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHJlLWluaXRpYXRpbmcgcmVjb3JkaW5nOlxuICogICAtIGByb29tTmFtZWAge3N0cmluZ306IFRoZSBuYW1lIG9mIHRoZSByb29tIHRvIHN0YXJ0IHJlY29yZGluZyBpbi5cbiAqICAgLSBgbWVtYmVyYCB7c3RyaW5nfTogVGhlIG5hbWUgb2YgdGhlIG1lbWJlciBpbml0aWF0aW5nIHRoZSByZWNvcmRpbmcuXG4gKiAgIC0gYHNvY2tldGAge1NvY2tldH06IFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIHNlcnZlciBjb21tdW5pY2F0aW9uLlxuICogICAtIGBhZG1pblJlc3RyaWN0U2V0dGluZ2Age2Jvb2xlYW59OiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIGFkbWluIHJlc3RyaWN0IHNldHRpbmcgaXMgYWN0aXZlLCBwcmV2ZW50aW5nIHJlLWluaXRpYXRpb24uXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IFJlc29sdmVzIGlmIHJlY29yZGluZyBpcyBzdWNjZXNzZnVsbHkgcmUtaW5pdGlhdGVkOyBvdGhlcndpc2UsIGl0IHRocm93cyBhbiBlcnJvciBpZiByZS1pbml0aWF0aW9uIGZhaWxzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBvcHRpb25zID0ge1xuICogICByb29tTmFtZTogJ1Jvb20xMDEnLFxuICogICBtZW1iZXI6ICdBbGljZScsXG4gKiAgIHNvY2tldDogbXlTb2NrZXRJbnN0YW5jZSxcbiAqICAgYWRtaW5SZXN0cmljdFNldHRpbmc6IGZhbHNlXG4gKiB9O1xuICogcmVJbml0aWF0ZVJlY29yZGluZ1NlcnZpY2UucmVJbml0aWF0ZVJlY29yZGluZyhvcHRpb25zKVxuICogICAudGhlbigoKSA9PiBjb25zb2xlLmxvZygnUmVjb3JkaW5nIHJlLWluaXRpYXRlZCcpKVxuICogICAuY2F0Y2goZXJyb3IgPT4gY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKSk7XG4gKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVJbml0aWF0ZVJlY29yZGluZyB7XG4gIC8qKlxuICAgKiBSZS1pbml0aWF0ZXMgcmVjb3JkaW5nIGJhc2VkIG9uIHNwZWNpZmljIGNvbmRpdGlvbnMuXG4gICAqIEBhc3luY1xuICAgKiBAZnVuY3Rpb25cbiAgICogQHBhcmFtIHtSZUluaXRpYXRlUmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZS1pbml0aWF0aW5nIHJlY29yZGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucm9vbU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcm9vbSB0byByZS1pbml0aWF0ZSByZWNvcmRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm1lbWJlciAtIFRoZSBtZW1iZXIgcmUtaW5pdGlhdGluZyB0aGUgcmVjb3JkaW5nLlxuICAgKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5zb2NrZXQgLSBUaGUgc29ja2V0IGluc3RhbmNlIGZvciBjb21tdW5pY2F0aW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuYWRtaW5SZXN0cmljdFNldHRpbmcgLSBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYWRtaW4gcmVzdHJpY3Qgc2V0dGluZyBpcyBlbmFibGVkLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVjb3JkaW5nIGlzIHJlLWluaXRpYXRlZC5cbiAgICovXG5cbiAgcmVJbml0aWF0ZVJlY29yZGluZyA9IGFzeW5jICh7XG4gICAgcm9vbU5hbWUsXG4gICAgbWVtYmVyLFxuICAgIHNvY2tldCxcbiAgICBhZG1pblJlc3RyaWN0U2V0dGluZyxcbiAgfTogUmVJbml0aWF0ZVJlY29yZGluZ09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoIWFkbWluUmVzdHJpY3RTZXR0aW5nKSB7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNvY2tldC5lbWl0KCdzdGFydFJlY29yZEluZycsIHsgcm9vbU5hbWUsIG1lbWJlciB9LCAoeyBzdWNjZXNzIH06IHsgc3VjY2VzczogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHJlLWluaXRpYXRlIHJlY29yZGluZy4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -1,134 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Service for receiving and processing messages, including handling group and direct messages, filtering banned senders, and updating message states.
5
- *
6
- * @class
7
- * @name ReceiveMessage
8
- * @description Manages incoming messages, appends them to the existing messages array, filters out banned senders, and updates message badge visibility as needed.
9
- *
10
- * @method
11
- * receiveMessage
12
- *
13
- * @param {ReceiveMessageOptions} options - Options for handling a received message:
14
- * - `message` {Message}: The new message object to process.
15
- * - `messages` {Message[]}: The current list of messages.
16
- * - `participantsAll` {Participant[]}: All participants in the chat.
17
- * - `member` {string}: The current member's name.
18
- * - `eventType` {EventType}: The type of event (e.g., "broadcast" or "chat").
19
- * - `islevel` {string}: The level of the current user.
20
- * - `coHost` {string}: The name of the co-host.
21
- * - `updateMessages` {Function}: A function to update the messages list.
22
- * - `updateShowMessagesBadge` {Function}: A function to toggle the visibility of the message badge.
23
- *
24
- * @returns {Promise<void>} Resolves when the message processing and updates are complete.
25
- *
26
- * @example
27
- * const message = { sender: 'Alice', receivers: ['Bob'], message: 'Hello!', timestamp: Date.now(), group: false };
28
- * const options = {
29
- * message,
30
- * messages: [],
31
- * participantsAll: [{ name: 'Alice' }, { name: 'Bob' }],
32
- * member: 'Bob',
33
- * eventType: 'chat',
34
- * islevel: '1',
35
- * coHost: 'Charlie',
36
- * updateMessages: (updatedMessages) => console.log('Messages updated:', updatedMessages),
37
- * updateShowMessagesBadge: (show) => console.log('Show badge:', show)
38
- * };
39
- * receiveMessageService.receiveMessage(options);
40
- */
41
- export class ReceiveMessage {
42
- /**
43
- * Receives and processes a message, updating the messages array and handling
44
- * various message types and events.
45
- *
46
- * @param {ReceiveMessageOptions} options - The options for receiving the message.
47
- * @param {Object} options.message - The message object containing sender, receivers, content, timestamp, and group.
48
- * @param {Function} options.getUpdatedAllParams - Function to get updated parameters.
49
- * @param {Array} options.messages - Array of current messages.
50
- * @param {Array} options.participantsAll - Array of all participants.
51
- * @param {string} options.member - The current member.
52
- * @param {string} options.eventType - The type of event (e.g., "broadcast", "chat").
53
- * @param {string} options.islevel - The level of the current member.
54
- * @param {string} options.coHost - The co-host of the event.
55
- * @param {Function} options.updateMessages - Function to update the messages array.
56
- * @param {Function} options.updateShowMessagesBadge - Function to update the visibility of the messages badge.
57
- *
58
- * @returns {Promise<void>} A promise that resolves when the message has been processed.
59
- */
60
- receiveMessage = async ({ message, messages, participantsAll, member, eventType, islevel, coHost, updateMessages, updateShowMessagesBadge, }) => {
61
- // Add the received message to the messages array
62
- const { sender, receivers, message: content, timestamp, group } = message;
63
- let oldMessages = messages;
64
- messages = [...messages, { sender, receivers, message: content, timestamp, group }];
65
- // Filter out messages with banned senders in the participants array
66
- if (eventType !== 'broadcast' && eventType !== 'chat') {
67
- messages = messages.filter((message) => participantsAll.some((participant) => participant.name === message.sender && !participant.isBanned));
68
- }
69
- else {
70
- messages = messages.filter((message) => {
71
- const participant = participantsAll.find((participant) => participant.name === message.sender);
72
- return !participant || !participant.isBanned;
73
- });
74
- }
75
- updateMessages(messages);
76
- // Separate group and direct messages
77
- const oldGroupMessages = oldMessages.filter((message) => message.group);
78
- const oldDirectMessages = oldMessages.filter((message) => !message.group);
79
- // Render and update counts for group messages
80
- const groupMessages = messages.filter((message) => message.group);
81
- if (eventType !== 'broadcast' && eventType !== 'chat') {
82
- // Check if oldGroupMessages length is different from groupMessages length
83
- if (oldGroupMessages.length !== groupMessages.length) {
84
- // Identify new messages
85
- const newGroupMessages = groupMessages.filter((message) => !oldGroupMessages.some((oldMessage) => oldMessage.timestamp === message.timestamp));
86
- // Check if newGroupMessages sender is the member or receivers include the member
87
- const newGroupMessages2 = newGroupMessages.filter((message) => message.sender === member || message.receivers.includes(member));
88
- // Check if member is the sender of any newGroupMessages
89
- const newGroupMessages3 = newGroupMessages2.filter((message) => message.sender === member);
90
- // Check if member is the receiver of any newGroupMessages
91
- if (newGroupMessages.length > 0 && newGroupMessages.length !== newGroupMessages3.length) {
92
- updateShowMessagesBadge(true);
93
- }
94
- }
95
- }
96
- // Render and update counts for direct messages
97
- const directMessages = messages.filter((message) => !message.group);
98
- if (eventType !== 'broadcast' && eventType !== 'chat') {
99
- // Check if oldDirectMessages length is different from directMessages length
100
- if (oldDirectMessages.length !== directMessages.length) {
101
- // Identify new direct messages
102
- const newDirectMessages = directMessages.filter((message) => !oldDirectMessages.some((oldMessage) => oldMessage.timestamp === message.timestamp));
103
- // Check if newDirectMessages sender is the member or receivers include the member
104
- const newDirectMessages2 = newDirectMessages.filter((message) => message.sender === member || message.receivers.includes(member));
105
- // Check if member is the sender of any newDirectMessages
106
- const newDirectMessages3 = newDirectMessages2.filter((message) => message.sender === member);
107
- if ((newDirectMessages.length > 0 && newDirectMessages2.length > 0) ||
108
- (newDirectMessages.length > 0 && islevel === '2') ||
109
- coHost === member) {
110
- if (islevel === '2' || coHost === member) {
111
- if (newDirectMessages.length !== newDirectMessages3.length) {
112
- updateShowMessagesBadge(true);
113
- }
114
- }
115
- else {
116
- if (newDirectMessages2.length > 0 &&
117
- newDirectMessages.length !== newDirectMessages3.length) {
118
- updateShowMessagesBadge(true);
119
- }
120
- }
121
- }
122
- }
123
- }
124
- };
125
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ReceiveMessage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
126
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ReceiveMessage, providedIn: 'root' });
127
- }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ReceiveMessage, decorators: [{
129
- type: Injectable,
130
- args: [{
131
- providedIn: 'root',
132
- }]
133
- }] });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWl2ZS1tZXNzYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvcHJvZHVjZXJzL3NvY2tldC1yZWNlaXZlLW1ldGhvZHMvcmVjZWl2ZS1tZXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBTUgsTUFBTSxPQUFPLGNBQWM7SUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBRUgsY0FBYyxHQUFHLEtBQUssRUFBRSxFQUN0QixPQUFPLEVBQ1AsUUFBUSxFQUNSLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULE9BQU8sRUFDUCxNQUFNLEVBQ04sY0FBYyxFQUNkLHVCQUF1QixHQUNELEVBQWlCLEVBQUU7UUFDekMsaURBQWlEO1FBQ2pELE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMxRSxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDM0IsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFcEYsb0VBQW9FO1FBQ3BFLElBQUksU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FDOUMsZUFBZSxDQUFDLElBQUksQ0FDbEIsQ0FBQyxXQUFnQixFQUFF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QUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO3VHQXBJUyxjQUFjOzJHQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50VHlwZSwgTWVzc2FnZSwgUGFydGljaXBhbnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpdmVNZXNzYWdlT3B0aW9ucyB7XG4gIG1lc3NhZ2U6IE1lc3NhZ2U7XG4gIG1lc3NhZ2VzOiBNZXNzYWdlW107XG4gIHBhcnRpY2lwYW50c0FsbDogUGFydGljaXBhbnRbXTtcbiAgbWVtYmVyOiBzdHJpbmc7XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIGNvSG9zdDogc3RyaW5nO1xuICB1cGRhdGVNZXNzYWdlczogKG1lc3NhZ2VzOiBNZXNzYWdlW10pID0+IHZvaWQ7XG4gIHVwZGF0ZVNob3dNZXNzYWdlc0JhZGdlOiAoc2hvd0JhZGdlOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBSZWNlaXZlTWVzc2FnZVR5cGUgPSAob3B0aW9uczogUmVjZWl2ZU1lc3NhZ2VPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHJlY2VpdmluZyBhbmQgcHJvY2Vzc2luZyBtZXNzYWdlcywgaW5jbHVkaW5nIGhhbmRsaW5nIGdyb3VwIGFuZCBkaXJlY3QgbWVzc2FnZXMsIGZpbHRlcmluZyBiYW5uZWQgc2VuZGVycywgYW5kIHVwZGF0aW5nIG1lc3NhZ2Ugc3RhdGVzLlxuICpcbiAqIEBjbGFzc1xuICogQG5hbWUgUmVjZWl2ZU1lc3NhZ2VcbiAqIEBkZXNjcmlwdGlvbiBNYW5hZ2VzIGluY29taW5nIG1lc3NhZ2VzLCBhcHBlbmRzIHRoZW0gdG8gdGhlIGV4aXN0aW5nIG1lc3NhZ2VzIGFycmF5LCBmaWx0ZXJzIG91dCBiYW5uZWQgc2VuZGVycywgYW5kIHVwZGF0ZXMgbWVzc2FnZSBiYWRnZSB2aXNpYmlsaXR5IGFzIG5lZWRlZC5cbiAqXG4gKiBAbWV0aG9kXG4gKiByZWNlaXZlTWVzc2FnZVxuICpcbiAqIEBwYXJhbSB7UmVjZWl2ZU1lc3NhZ2VPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgaGFuZGxpbmcgYSByZWNlaXZlZCBtZXNzYWdlOlxuICogICAtIGBtZXNzYWdlYCB7TWVzc2FnZX06IFRoZSBuZXcgbWVzc2FnZSBvYmplY3QgdG8gcHJvY2Vzcy5cbiAqICAgLSBgbWVzc2FnZXNgIHtNZXNzYWdlW119OiBUaGUgY3VycmVudCBsaXN0IG9mIG1lc3NhZ2VzLlxuICogICAtIGBwYXJ0aWNpcGFudHNBbGxgIHtQYXJ0aWNpcGFudFtdfTogQWxsIHBhcnRpY2lwYW50cyBpbiB0aGUgY2hhdC5cbiAqICAgLSBgbWVtYmVyYCB7c3RyaW5nfTogVGhlIGN1cnJlbnQgbWVtYmVyJ3MgbmFtZS5cbiAqICAgLSBgZXZlbnRUeXBlYCB7RXZlbnRUeXBlfTogVGhlIHR5cGUgb2YgZXZlbnQgKGUuZy4sIFwiYnJvYWRjYXN0XCIgb3IgXCJjaGF0XCIpLlxuICogICAtIGBpc2xldmVsYCB7c3RyaW5nfTogVGhlIGxldmVsIG9mIHRoZSBjdXJyZW50IHVzZXIuXG4gKiAgIC0gYGNvSG9zdGAge3N0cmluZ306IFRoZSBuYW1lIG9mIHRoZSBjby1ob3N0LlxuICogICAtIGB1cGRhdGVNZXNzYWdlc2Age0Z1bmN0aW9ufTogQSBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIG1lc3NhZ2VzIGxpc3QuXG4gKiAgIC0gYHVwZGF0ZVNob3dNZXNzYWdlc0JhZGdlYCB7RnVuY3Rpb259OiBBIGZ1bmN0aW9uIHRvIHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbWVzc2FnZSBiYWRnZS5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgd2hlbiB0aGUgbWVzc2FnZSBwcm9jZXNzaW5nIGFuZCB1cGRhdGVzIGFyZSBjb21wbGV0ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbWVzc2FnZSA9IHsgc2VuZGVyOiAnQWxpY2UnLCByZWNlaXZlcnM6IFsnQm9iJ10sIG1lc3NhZ2U6ICdIZWxsbyEnLCB0aW1lc3RhbXA6IERhdGUubm93KCksIGdyb3VwOiBmYWxzZSB9O1xuICogY29uc3Qgb3B0aW9ucyA9IHtcbiAqICAgbWVzc2FnZSxcbiAqICAgbWVzc2FnZXM6IFtdLFxuICogICBwYXJ0aWNpcGFudHNBbGw6IFt7IG5hbWU6ICdBbGljZScgfSwgeyBuYW1lOiAnQm9iJyB9XSxcbiAqICAgbWVtYmVyOiAnQm9iJyxcbiAqICAgZXZlbnRUeXBlOiAnY2hhdCcsXG4gKiAgIGlzbGV2ZWw6ICcxJyxcbiAqICAgY29Ib3N0OiAnQ2hhcmxpZScsXG4gKiAgIHVwZGF0ZU1lc3NhZ2VzOiAodXBkYXRlZE1lc3NhZ2VzKSA9PiBjb25zb2xlLmxvZygnTWVzc2FnZXMgdXBkYXRlZDonLCB1cGRhdGVkTWVzc2FnZXMpLFxuICogICB1cGRhdGVTaG93TWVzc2FnZXNCYWRnZTogKHNob3cpID0+IGNvbnNvbGUubG9nKCdTaG93IGJhZGdlOicsIHNob3cpXG4gKiB9O1xuICogcmVjZWl2ZU1lc3NhZ2VTZXJ2aWNlLnJlY2VpdmVNZXNzYWdlKG9wdGlvbnMpO1xuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlY2VpdmVNZXNzYWdlIHtcbiAgLyoqXG4gICAqIFJlY2VpdmVzIGFuZCBwcm9jZXNzZXMgYSBtZXNzYWdlLCB1cGRhdGluZyB0aGUgbWVzc2FnZXMgYXJyYXkgYW5kIGhhbmRsaW5nXG4gICAqIHZhcmlvdXMgbWVzc2FnZSB0eXBlcyBhbmQgZXZlbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY2VpdmVNZXNzYWdlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZWNlaXZpbmcgdGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm1lc3NhZ2UgLSBUaGUgbWVzc2FnZSBvYmplY3QgY29udGFpbmluZyBzZW5kZXIsIHJlY2VpdmVycywgY29udGVudCwgdGltZXN0YW1wLCBhbmQgZ3JvdXAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMubWVzc2FnZXMgLSBBcnJheSBvZiBjdXJyZW50IG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcnRpY2lwYW50c0FsbCAtIEFycmF5IG9mIGFsbCBwYXJ0aWNpcGFudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm1lbWJlciAtIFRoZSBjdXJyZW50IG1lbWJlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgZXZlbnQgKGUuZy4sIFwiYnJvYWRjYXN0XCIsIFwiY2hhdFwiKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuaXNsZXZlbCAtIFRoZSBsZXZlbCBvZiB0aGUgY3VycmVudCBtZW1iZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmNvSG9zdCAtIFRoZSBjby1ob3N0IG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVNZXNzYWdlcyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbWVzc2FnZXMgYXJyYXkuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlU2hvd01lc3NhZ2VzQmFkZ2UgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1lc3NhZ2VzIGJhZGdlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuXG4gICAqL1xuXG4gIHJlY2VpdmVNZXNzYWdlID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIG1lc3NhZ2VzLFxuICAgIHBhcnRpY2lwYW50c0FsbCxcbiAgICBtZW1iZXIsXG4gICAgZXZlbnRUeXBlLFxuICAgIGlzbGV2ZWwsXG4gICAgY29Ib3N0LFxuICAgIHVwZGF0ZU1lc3NhZ2VzLFxuICAgIHVwZGF0ZVNob3dNZXNzYWdlc0JhZGdlLFxuICB9OiBSZWNlaXZlTWVzc2FnZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAvLyBBZGQgdGhlIHJlY2VpdmVkIG1lc3NhZ2UgdG8gdGhlIG1lc3NhZ2VzIGFycmF5XG4gICAgY29uc3QgeyBzZW5kZXIsIHJlY2VpdmVycywgbWVzc2FnZTogY29udGVudCwgdGltZXN0YW1wLCBncm91cCB9ID0gbWVzc2FnZTtcbiAgICBsZXQgb2xkTWVzc2FnZXMgPSBtZXNzYWdlcztcbiAgICBtZXNzYWdlcyA9IFsuLi5tZXNzYWdlcywgeyBzZW5kZXIsIHJlY2VpdmVycywgbWVzc2FnZTogY29udGVudCwgdGltZXN0YW1wLCBncm91cCB9XTtcblxuICAgIC8vIEZpbHRlciBvdXQgbWVzc2FnZXMgd2l0aCBiYW5uZWQgc2VuZGVycyBpbiB0aGUgcGFydGljaXBhbnRzIGFycmF5XG4gICAgaWYgKGV2ZW50VHlwZSAhPT0gJ2Jyb2FkY2FzdCcgJiYgZXZlbnRUeXBlICE9PSAnY2hhdCcpIHtcbiAgICAgIG1lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlOiBNZXNzYWdlKSA9PlxuICAgICAgICBwYXJ0aWNpcGFudHNBbGwuc29tZShcbiAgICAgICAgICAocGFydGljaXBhbnQ6IGFueSkgPT4gcGFydGljaXBhbnQubmFtZSA9PT0gbWVzc2FnZS5zZW5kZXIgJiYgIXBhcnRpY2lwYW50LmlzQmFubmVkLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZXMgPSBtZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3QgcGFydGljaXBhbnQgPSBwYXJ0aWNpcGFudHNBbGwuZmluZChcbiAgICAgICAgICAocGFydGljaXBhbnQ6IGFueSkgPT4gcGFydGljaXBhbnQubmFtZSA9PT0gbWVzc2FnZS5zZW5kZXIsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAhcGFydGljaXBhbnQgfHwgIXBhcnRpY2lwYW50LmlzQmFubmVkO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHVwZGF0ZU1lc3NhZ2VzKG1lc3NhZ2VzKTtcblxuICAgIC8vIFNlcGFyYXRlIGdyb3VwIGFuZCBkaXJlY3QgbWVzc2FnZXNcbiAgICBjb25zdCBvbGRHcm91cE1lc3NhZ2VzID0gb2xkTWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlOiBNZXNzYWdlKSA9PiBtZXNzYWdlLmdyb3VwKTtcbiAgICBjb25zdCBvbGREaXJlY3RNZXNzYWdlcyA9IG9sZE1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZTogTWVzc2FnZSkgPT4gIW1lc3NhZ2UuZ3JvdXApO1xuXG4gICAgLy8gUmVuZGVyIGFuZCB1cGRhdGUgY291bnRzIGZvciBncm91cCBtZXNzYWdlc1xuICAgIGNvbnN0IGdyb3VwTWVzc2FnZXMgPSBtZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IG1lc3NhZ2UuZ3JvdXApO1xuXG4gICAgaWYgKGV2ZW50VHlwZSAhPT0gJ2Jyb2FkY2FzdCcgJiYgZXZlbnRUeXBlICE9PSAnY2hhdCcpIHtcbiAgICAgIC8vIENoZWNrIGlmIG9sZEdyb3VwTWVzc2FnZXMgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGdyb3VwTWVzc2FnZXMgbGVuZ3RoXG4gICAgICBpZiAob2xkR3JvdXBNZXNzYWdlcy5sZW5ndGggIT09IGdyb3VwTWVzc2FnZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIElkZW50aWZ5IG5ldyBtZXNzYWdlc1xuICAgICAgICBjb25zdCBuZXdHcm91cE1lc3NhZ2VzID0gZ3JvdXBNZXNzYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKG1lc3NhZ2U6IE1lc3NhZ2UpID0+XG4gICAgICAgICAgICAhb2xkR3JvdXBNZXNzYWdlcy5zb21lKFxuICAgICAgICAgICAgICAob2xkTWVzc2FnZTogTWVzc2FnZSkgPT4gb2xkTWVzc2FnZS50aW1lc3RhbXAgPT09IG1lc3NhZ2UudGltZXN0YW1wLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBuZXdHcm91cE1lc3NhZ2VzIHNlbmRlciBpcyB0aGUgbWVtYmVyIG9yIHJlY2VpdmVycyBpbmNsdWRlIHRoZSBtZW1iZXJcbiAgICAgICAgY29uc3QgbmV3R3JvdXBNZXNzYWdlczIgPSBuZXdHcm91cE1lc3NhZ2VzLmZpbHRlcihcbiAgICAgICAgICAobWVzc2FnZTogTWVzc2FnZSkgPT4gbWVzc2FnZS5zZW5kZXIgPT09IG1lbWJlciB8fCBtZXNzYWdlLnJlY2VpdmVycy5pbmNsdWRlcyhtZW1iZXIpLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIG1lbWJlciBpcyB0aGUgc2VuZGVyIG9mIGFueSBuZXdHcm91cE1lc3NhZ2VzXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwTWVzc2FnZXMzID0gbmV3R3JvdXBNZXNzYWdlczIuZmlsdGVyKFxuICAgICAgICAgIChtZXNzYWdlOiBNZXNzYWdlKSA9PiBtZXNzYWdlLnNlbmRlciA9PT0gbWVtYmVyLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIG1lbWJlciBpcyB0aGUgcmVjZWl2ZXIgb2YgYW55IG5ld0dyb3VwTWVzc2FnZXNcbiAgICAgICAgaWYgKG5ld0dyb3VwTWVzc2FnZXMubGVuZ3RoID4gMCAmJiBuZXdHcm91cE1lc3NhZ2VzLmxlbmd0aCAhPT0gbmV3R3JvdXBNZXNzYWdlczMubGVuZ3RoKSB7XG4gICAgICAgICAgdXBkYXRlU2hvd01lc3NhZ2VzQmFkZ2UodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW5kZXIgYW5kIHVwZGF0ZSBjb3VudHMgZm9yIGRpcmVjdCBtZXNzYWdlc1xuICAgIGNvbnN0IGRpcmVjdE1lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlOiBNZXNzYWdlKSA9PiAhbWVzc2FnZS5ncm91cCk7XG5cbiAgICBpZiAoZXZlbnRUeXBlICE9PSAnYnJvYWRjYXN0JyAmJiBldmVudFR5cGUgIT09ICdjaGF0Jykge1xuICAgICAgLy8gQ2hlY2sgaWYgb2xkRGlyZWN0TWVzc2FnZXMgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGRpcmVjdE1lc3NhZ2VzIGxlbmd0aFxuICAgICAgaWYgKG9sZERpcmVjdE1lc3NhZ2VzLmxlbmd0aCAhPT0gZGlyZWN0TWVzc2FnZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIElkZW50aWZ5IG5ldyBkaXJlY3QgbWVzc2FnZXNcbiAgICAgICAgY29uc3QgbmV3RGlyZWN0TWVzc2FnZXMgPSBkaXJlY3RNZXNzYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKG1lc3NhZ2U6IE1lc3NhZ2UpID0+XG4gICAgICAgICAgICAhb2xkRGlyZWN0TWVzc2FnZXMuc29tZShcbiAgICAgICAgICAgICAgKG9sZE1lc3NhZ2U6IE1lc3NhZ2UpID0+IG9sZE1lc3NhZ2UudGltZXN0YW1wID09PSBtZXNzYWdlLnRpbWVzdGFtcCxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgbmV3RGlyZWN0TWVzc2FnZXMgc2VuZGVyIGlzIHRoZSBtZW1iZXIgb3IgcmVjZWl2ZXJzIGluY2x1ZGUgdGhlIG1lbWJlclxuICAgICAgICBjb25zdCBuZXdEaXJlY3RNZXNzYWdlczIgPSBuZXdEaXJlY3RNZXNzYWdlcy5maWx0ZXIoXG4gICAgICAgICAgKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IG1lc3NhZ2Uuc2VuZGVyID09PSBtZW1iZXIgfHwgbWVzc2FnZS5yZWNlaXZlcnMuaW5jbHVkZXMobWVtYmVyKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBtZW1iZXIgaXMgdGhlIHNlbmRlciBvZiBhbnkgbmV3RGlyZWN0TWVzc2FnZXNcbiAgICAgICAgY29uc3QgbmV3RGlyZWN0TWVzc2FnZXMzID0gbmV3RGlyZWN0TWVzc2FnZXMyLmZpbHRlcihcbiAgICAgICAgICAobWVzc2FnZTogTWVzc2FnZSkgPT4gbWVzc2FnZS5zZW5kZXIgPT09IG1lbWJlcixcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKG5ld0RpcmVjdE1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgbmV3RGlyZWN0TWVzc2FnZXMyLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgKG5ld0RpcmVjdE1lc3NhZ2VzLmxlbmd0aCA+IDAgJiYgaXNsZXZlbCA9PT0gJzInKSB8fFxuICAgICAgICAgIGNvSG9zdCA9PT0gbWVtYmVyXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChpc2xldmVsID09PSAnMicgfHwgY29Ib3N0ID09PSBtZW1iZXIpIHtcbiAgICAgICAgICAgIGlmIChuZXdEaXJlY3RNZXNzYWdlcy5sZW5ndGggIT09IG5ld0RpcmVjdE1lc3NhZ2VzMy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdXBkYXRlU2hvd01lc3NhZ2VzQmFkZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbmV3RGlyZWN0TWVzc2FnZXMyLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgbmV3RGlyZWN0TWVzc2FnZXMubGVuZ3RoICE9PSBuZXdEaXJlY3RNZXNzYWdlczMubGVuZ3RoXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdXBkYXRlU2hvd01lc3NhZ2VzQmFkZ2UodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl19